Mein Antivir zeigt nix...
Beiträge von Mars
-
-
--> Äquivalent zur GDI+ könnte man auch die OpenCL Dll (s) in AutoIt einbauen,
oder zumindest eine Möglichkeit (äquivalent zu der FASM Umgebung) schaffen um mit AutoIt auf der Grafikkarte zu hantieren.
(Dann kann ich mit meiner Karte mal bissl was rausholen. die ist 10Mal schneller als mein restlicher Rechner^^)Das würde wahrscheinlich sämtliche Bemühungen AutoIt iwie auf anderem Wege grafikmäßig aufzumöbeln sinnlos machen.
Mit (Inline)Asm kann man zwar als schlechter Asm-Bastler in den meisten Fällen keine VC++ oder OpenCL Programme/Dll´s/Algorithmen schlagen,
aber AutoIt zu 99,9%, sobald man etwas auf die Reihe kriegt.
Und darum geht es den meisten Asm-Nutzern hier (auch wenn die Zahl relativ klein ist). AutoIt für Sachen nutzen für die es nicht gedacht ist und diese dann etwas Beschleunigen, damit es trotzdem geht.Mit einer 5GB Entwicklungsumgebung von C++ für die man sich anmelden muss und erstmal 3 Jahre Lernen muss, bevor man ein HalloWelt Programm hinbekommt wollen viele einfach nicht arbeiten^^
lg
Mars(i) -
-
Ich kann's mir nicht verkneifen ....
Schon 30 Beiträge in diesem Thread und noch nicht eine einzige EXE zu sehen.
Ich Nehme das Angebot mal wahr und präsentiere: Ein kleines Programm, was nix kann (hab ich grade Selbst gereimt).Oder kann es vllt doch was ?
Wenn man es betrachtet wird man feststellen, dass die Anzahl Neuzeichnungen immer variiert.
Und das bei einer Konstanten Anzahl Regentropen (10)
Im Schnitt liegt die Zahl der Neuzeichnungen deutlich unter 10. - "WOW Wie macht er das Bloß ?"Das Fenster Zeichnet sich neu und kann "angefasst" werden. - "OHA Das wollte ich schon immer mal haben... Aber Diebstahl geht ja jetzt nicht..."
Ich verrate euch aber nicht wie ich das gemacht habe
PS Dies ist kein Angriff gegen den Threadersteller, oder den vermeintlichen Sinn hinter dem Thread !
Nur Spaß
lg
Mars(i) -
Ich hab ihn gerade gehackt... wenn du auch mal willst, seine IP ist die 127.0.0.1
----
Hab ich jetzt so akut nix von gemerkt...^^
-
Nochmals optimiert:
- Nur noch eine Abfrage der Position statt 2 ( Das freut den Computer )
- 12 Zeilen, 268 Byte ( Das freut die Festplatte )Huhu
[autoit]#include<misc.au3>
[/autoit]
While _B(2) Or Sleep(9) And Not _IsPressed(2)
WEnd
Func _B($F)
Local $P=MouseGetPos()
Local Static $A=$P
If $P[0]<>$A[0] Or $P[1]<>$A[1] Then
$A[0]=$P[0]+($P[0]-$A[0])*$F
$A[1]=$P[1]+($P[1]-$A[1])*$F
MouseMove($A[0],$A[1],0)
EndIf
EndFunclg
M -
192.168.1.1
(und jetzt behaupte nicht, das sei die Falsche !) -
Um etwas als Admin zu machen musst du das PW in Windows angeben soweit ich weiß.
Damit ein Skript AdminRechte anfordert kann man #RequireAdmin benutzen.
Dann braucht man aber glaube ich auch das PW wenn die Rechte nicht vorhanden sind.
(kann ich nicht sagen. Ich bin Admin bei mir und hab kein PW^^)lg
M -
Um neben den Knallhart durchgeplanten, schnell arbeitenden, exakten Wegfindungsmaschinen auch welche zu erhalten die vllt etwas Spaß machen
Meine trifft inzwischen das ziel mit einem Umweg (im Vergleich zum Minimal nötigen Weg) von 2 - 500 px. Meistens liegt der Wert aber zwischen 10 und 20.
Festfahren tuts sich jetzt auch nicht mehr so oft. -
Habe jetzt mal einen (relativ chaotischen) Lösungsweg implementiert.
Der Lösungsweg ist komplett selbst ausgedacht und funktioniert meistens, aber nicht immer. (z.B. wenn irgendwo große Winkel sind frisst sich die Suche an den Innenecken fest. Da bin ich aber noch dran)
Ich finde es sollte als Bewertungskriterium auch andere Sachen geben wie z.B.
- Lustigste Lösungsidee
- Kreativste Lösung
(Nicht, dass ich darauf aus bin diese zu erhalten^^)Es ist zwar eine Kunst eine schon vorhandene Methode in AutoIt nachzubauen, aber es ist ebenso eine Kust eine Methode komplett selbst zu erfinden, auch wenn sie nicht so effektiv ist wie die schon bekannten Methoden.
lg
Mars(i) -
Weiß ich. Egal !
Ich find die Idee einfach geil die maus auf diesem Wege auf Kosten der Bewegungsqualität zu beschleunigen.
Die Abfragen jucken die Maus nicht glaube ich. -
Man könnte das ganze statt mit Buttons doch vllt mit GDI+ machen oder ?
Ich setze mich mal eben dran und überarbeite das Teil. Dann siehts auch viel besser aus.Ich finde die Idee gut. Auch wenn ich befürchte, dass jeder ähnliche Lösungsansätze haben wird.
.:Edit: Man kann hier auch einen Pseudozufallsalgorithmus einsetzen um die gleichen "Levels" immer wieder zu erhalten.
So kann man verschiedene Lösungsskripte mit sehr wenig Aufwand mit verschiedenen Levels konfrontieren :..:Edit2: Wenn ich versuche das ganze mit Bildern zu machen funktioniert garnichts mehr. (Gui bleibt unsichtbar. warum auch immer)
Ich müsste alles von grund auf Neu machen. Da habe ich jetzt aber keine Lust drauf :P^^ :.lg
M -
Effektiv xD
Geht aber auch kürzer und verständlicher:
[autoit]#include <misc.au3>
[/autoit][autoit][/autoit][autoit]While Sleep(10)
[/autoit][autoit][/autoit][autoit]
_Beschleunigen(2)
If _IsPressed('02') Then Exit
WEndFunc _Beschleunigen($Faktor)
[/autoit]
Local $Pos = MouseGetPos()
Local Static $Pos_Alt = $Pos
If $Pos[0] <> $Pos_Alt[0] Or $Pos[1] <> $Pos_Alt[1] Then
MouseMove($Pos[0] + ($Pos[0] - $Pos_Alt[0]) * $Faktor, $Pos[1] + ($Pos[1] - $Pos_Alt[1]) * $Faktor, 0)
$Pos_Alt = MouseGetPos()
EndIf
EndFuncWobei es immernoch iwie hackt beim Ausführen...
lg
M -
FbEdit hab ich mir heute Mittag schonmal angesehen.
Nachdem ich verstanden habe, wie man den Compiler einbindet lief es super. -
-
Was nutzt du als Free Basic IDE ?
Nach dem ganzen Kram hier ist es für mich auch auf ein Mal interessant geworden (obwohl ich normal kritische stellen mit InlineASM mache.)
Damit kann man dann auch etwas komplexere Sachen schnell in einer Kleinen Dll berechnen und diese per Memorycall direkt mitnehmen...Da sieht man wieder die Unfähigkeit der ganzen Compiler. (Außer der von FreeBasic. Obwohl 8kb doch noch ziemlich viel sind...)
Wenn man den Spaß komplett in Asm macht dürfte das unter 1000 Bytes ausfallen.
Jede Dll ist allerdings größer als die andere. Da drängt sich die Frage auf: Was machen die Dlls sonst noch außer das Berechnen ?
Bei 70KB. Da passt ein halbes Computerspiel rein...lg
Mars(i) -
-
Falls du Ideen oder Sonstiges braucht, googel mal "Thing Thing 4".
Ein extrem gutes 2D Schießspiel.
Da kannste dir einiges abgucken.lg
-
Wolltest du immer "Hunde" durch "HUNDE" ersetzen ?
Wenn ja, dann klappt das:Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
$sSource= BinaryToString(inetread("http://www.hunde.de"))$aMeineSuche = StringRegExp($sSource,'title="(.*?).de"',3)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aMeineSuche, "Array Auswertung")For $i = 0 To UBound($aMeineSuche, 1) - 1
[/autoit] [autoit][/autoit] [autoit]
$aMeineSuche[$i] = StringReplace($aMeineSuche[$i],"Hunde","HUNDE", 0, 1)
Next_ArrayDisplay($aMeineSuche, "Array Auswertung")
[/autoit]lg
Mars(i) -
Ich habe mich mal daran versucht ein Skript zu machen, was diese Auswertungen macht.
Ganz glücklich bin ich nicht, aber immerhin geht es einigermaßen...Damit konnte ich gleich meinen (Pseudo)Zufallsgenerator (den ich iwo im Netz gefunden habe. Ich weiß aber nicht mehr wo...^^) testen.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <GDIPlus.au3>Global $GDI32_DLL = DllOpen('gdi32.dll')
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()#cs
[/autoit] [autoit][/autoit] [autoit]
_RandomAuswertung(Min, Max, Durchläufe, Absolut, Array anzeigen, Breite, Höhe)
Absolut: Wenn False --> Es wird der Unterste Zufallswert als 0 benutzt
Sonst --> Der Unterste Wert ist 0
#ceIf _RandomAuswertung(0, 100, 10000, False, False, 700, 500) = -1 Then
[/autoit] [autoit][/autoit] [autoit]
ToolTip('Die Randomfunktion erfüllt die Anforderungen nicht.')
Sleep(3000)
EndIf_GDIPlus_Shutdown()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
DllClose($GDI32_DLL)Func _Random($Min, $Max)
[/autoit] [autoit][/autoit] [autoit];##### Der wird für Perlinberechnungen bei mir genutzt
[/autoit] [autoit][/autoit] [autoit]
;~ Local $Ret = 0
;~ Local Static $Nummer = @MSEC
;~ $Ret = _Zufall($Nummer) * ($Max-$Min) + $Min
;#####;#####
[/autoit] [autoit][/autoit] [autoit]
;~ Local $Ret = StringRight(__random(1000, $Min, $Max, 0), 5)/99999 * ($Max-$Min) + $Min
;#####;##### Der Hauseigene Apparat
[/autoit] [autoit][/autoit] [autoit]
Local $Ret = Random($Min, $Max)
;#####ConsoleWrite($Ret & @CRLF)
[/autoit] [autoit][/autoit] [autoit]
Return $Ret
EndFunc ;==>_RandomFunc _Zufall(ByRef $Z) ; Eine Pseudo Zufallszahl wird generiert.
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Z = Mod((7141 * $Z + 54773), 259200)
Return $Z / 259200 ; Ein Kommawert zw 0 und 1
EndFunc ;==>_Zufall2Func __random($e, $min, $max, $int)
[/autoit] [autoit][/autoit] [autoit]
SetError(0)
If $e <= 5 Then
SetError(1)
Return -1
Else
$Zahl_Alt = natural()/2
$Zahl = natural()
$Iter = $eFor $i = 1 to $Iter
[/autoit] [autoit][/autoit] [autoit]
$1 = ($Zahl/$Zahl_Alt) * 23
$2 = 10^8
$3 = 1
$Zahl = (Mod($1, ($2+$3)))
If $i > $Iter-1 Then
If $Zahl < $min Then
Do
$Zahl = $Zahl*4.123456789
Until $Zahl > $min And $Zahl < $max
If $int = 1 Then
Return Int($Zahl)
Else
Return $Zahl
EndIf
ElseIf $Zahl > $max Then
Do
$Zahl = $Zahl/4.123456789
Until $Zahl < $max And $Zahl > $min
If $int = 1 Then
Return Int($Zahl)
Else
Return $Zahl
EndIf
Else
SetError(1)
Return -1
EndIf
EndIf
Next
EndIf
EndFuncFunc natural()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$1 = TimerInit()
Sleep(1)
$2 = TimerDiff($1)
Return $2
EndFunc#Region Sonstiges
[/autoit] [autoit][/autoit] [autoit]Func _RandomAuswertung($Min, $Max, $i, $Absolut = True, $ArrayDisplay = False, $Breite = 600, $Hoehe = 400)
[/autoit] [autoit][/autoit] [autoit]
Local $Anz = $Max - $Min
Local $Array[$Anz + 1][3]
Local $Random = 0
For $o = 1 To $i Step 1
$Random = Int(_Random($Min, $Max + 1)) ; Hier die eigene Randomfunktion einsetzen
If $Random < $Min Or $Random > $Max Then Return -1
$Array[$Random - $Min][0] = $Random
$Array[$Random - $Min][1] += 1
Next
For $o = 0 To $Anz Step 1
$Array[$o][2] = ($Array[$o][1] / $i)
Next
Local $MaximalWert, $MinimalWert
__Max($Array, $Anz, $MaximalWert, $MinimalWert)
If $Absolut Then $MinimalWert = 0
Local $TeilDesMaxwertes = $MaximalWert / 15
$MaximalWert += $TeilDesMaxwertes
Local $TeilDesMinwertes = $MinimalWert / 15
$MinimalWert -= $TeilDesMinwertes
Local $Img = _CreateImage($Breite, $Hoehe)
Local $Gfx = _GDIPlus_GraphicsCreateFromHDC(DllStructGetData($Img, 1, 1))
_GDIPlus_GraphicsClear($Gfx, 0xFFFFFFFF)
Local $hPen = _GDIPlus_PenCreate(0xFF000000, 1)
Local $hFamily = _GDIPlus_FontFamilyCreate('Arial')
Local $hFont = _GDIPlus_FontCreate($hFamily, 11)
Local $tRect = _GDIPlus_RectFCreate(0, 5, 45, 15)
Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
Local $hFormat = _GDIPlus_StringFormatCreate()
_GDIPlus_StringFormatSetAlign($hFormat, 2)
_GDIPlus_GraphicsDrawLine($Gfx, 0, $Hoehe, 50, $Hoehe - 50, $hPen)
$Breite -= 60
$Hoehe -= 60
_GDIPlus_GraphicsDrawStringEx($Gfx, $MaximalWert, $hFont, $tRect, $hFormat, $hBrush)
$tRect = _GDIPlus_RectFCreate(0, $Hoehe - 3, 45, 15)
_GDIPlus_GraphicsDrawStringEx($Gfx, $MinimalWert, $hFont, $tRect, $hFormat, $hBrush)
$tRect = _GDIPlus_RectFCreate(50, $Hoehe + 15, 45, 15)
_GDIPlus_StringFormatSetAlign($hFormat, 0)
_GDIPlus_GraphicsDrawStringEx($Gfx, $Min, $hFont, $tRect, $hFormat, $hBrush)
$tRect = _GDIPlus_RectFCreate($Breite + 12, $Hoehe + 15, 45, 15)
_GDIPlus_StringFormatSetAlign($hFormat, 2)
_GDIPlus_GraphicsDrawStringEx($Gfx, $Max, $hFont, $tRect, $hFormat, $hBrush)
_GDIPlus_PenSetWidth($hPen, 1)
_GDIPlus_BrushSetSolidColor($hBrush, 0xFF00A000)
Local $b = $Breite / ($Anz + 1)
Local $h = 0
For $i = 0 To $Anz Step 1
$h = 10 + $Hoehe - (($Array[$i][2] - $MinimalWert) / ($MaximalWert - $MinimalWert) * $Hoehe)
_GDIPlus_GraphicsFillRect($Gfx, 50 + $i * $b, $h, $b, $Hoehe - $h + 10, $hBrush)
_GDIPlus_GraphicsDrawRect($Gfx, 50 + $i * $b, $h, $b, $Hoehe - $h + 10, $hPen)
Next
_GDIPlus_GraphicsDrawRect($Gfx, 50, 10, $Breite, $Hoehe, $hPen)
If $ArrayDisplay Then _ArrayDisplay($Array)
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_FontDispose($hFont)
_GDIPlus_StringFormatDispose($hFormat)
_SaveImage($Img)
_GDIPlus_GraphicsDispose($Gfx)
_DeleteImage($Img)
EndFunc ;==>_RandomAuswertungFunc __Max($A, $i, ByRef $b, ByRef $c)
[/autoit] [autoit][/autoit] [autoit]
$b = 0
$c = 100
For $o = 0 To $i Step 1
If $b < $A[$o][2] Then $b = $A[$o][2]
If $c > $A[$o][2] Then $c = $A[$o][2]
Next
EndFunc ;==>__MaxFunc _CreateImage($b, $h)
[/autoit] [autoit][/autoit] [autoit]
Local $ptr, $hDC, $hbmp
$hDC = _CreateNewBmp32($b, $h, $ptr, $hbmp)
Local $struct = DllStructCreate('int[5]')
DllStructSetData($struct, 1, $hDC, 1)
DllStructSetData($struct, 1, $b, 2)
DllStructSetData($struct, 1, $h, 3)
DllStructSetData($struct, 1, $ptr, 4)
DllStructSetData($struct, 1, $hbmp, 5)
Return $struct
EndFunc ;==>_CreateImageFunc _DeleteImage(ByRef $struct)
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_DeleteObject(DllStructGetData($struct, 1, 5))
_WinAPI_DeleteDC(DllStructGetData($struct, 1, 1))
$struct = 0
EndFunc ;==>_DeleteImageFunc _SaveImage($Img)
[/autoit] [autoit][/autoit] [autoit]
Local $pfad = FileSaveDialog('BildSpeichern', @ScriptDir, '(*,.png)', Default, Hex(Random(256, 16 ^ 3, 1), 3) & '.png')
If $pfad Then
If Not StringRight($pfad, 4) = '.png' Then $pfad &= '.png'
Local $bm = _GDIPlus_BitmapCreateFromHBITMAP(DllStructGetData($Img, 1, 5))
_GDIPlus_ImageSaveToFile($bm, $pfad)
_GDIPlus_BitmapDispose($bm)
EndIf
EndFunc ;==>_SaveImage;Von Andy
[/autoit] [autoit][/autoit] [autoit]
Func _CreateNewBmp32($iWidth, $iHeight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe DC und ptr und handle auf die Bitmapdaten
Local $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
Local $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
DllStructSetData($tBMI, "Width", $iWidth)
DllStructSetData($tBMI, "Height", -$iHeight) ;minus =standard = bottomup
DllStructSetData($tBMI, "Planes", 1)
DllStructSetData($tBMI, "BitCount", 32) ;32 Bit = 4 Bytes => AABBGGRR
Local $adib = DllCall($GDI32_DLL, 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
$hbmp = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
$ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
_WinAPI_SelectObject($hcdc, $hbmp) ;objekt hbitmap in DC
Return $hcdc ;DC der Bitmap zurückgeben
EndFunc ;==>_CreateNewBmp32#EndRegion Sonstiges
[/autoit]
Seid nicht so hart (Seid mit d. Damit es nicht so hart klingt)
Bin noch müde^^[Blockierte Grafik: http://i.imgur.com/pBV1z.png]
lg
Mars(i) -
- OpenDownload², damit exe-Dateien nach dem Download sofort starten
Das erscheint mir nicht sehr sicher...^^
Und Chrome fasse ich auch wegen des Herstellers nicht an.
Google will die Weltherrschaft. Und ich will dabei nicht unterstützend sein.lg
Mars(i) -
Benutze den AutoIt3Wrapper.
Rechtsklick auf deine au3 datei.
Compile with Options.Dann sollte man sein Icon wählen können.
Dieses bleibt dann auch in der Exe erhalten und wird auch als Programmicon verwendet.lg
Mars(i) -
Er meinte, dass jeder der mal ein Skript dekompiliert erstmal die funktionalität überprüft,
bevor er sich an die möglicherweise zahlreichen Zeilen code wendet.Und wenn man zum Test das Skript ausführt und anschließend der Computer
Softwareseitig Müll ist hat man das Ziel erreicht. Der Dekompilierte Code war nicht lesbar.Beim 2ten Anlauf wird natürlich diese Methode unwirksam, da der Dekompilierende damit rechnet.
Wir sollten und lieber aufs konstruktive statt destruktive Arbeiten vertiefen.
Es muss mal wieder ein kleiner Wettbewerb her.
(z.B. Programmiere ein Tetrisähnliches Spiel mit möglichst wenigen bytes als .a3x)
(a3x, weil dann 1. die Includes berücksichtigt werden und 2tens wenn man immer
DllstructSetData hat sind das in der au3 immer viele Zeichen. In der a3x nicht.)lg
Mars(i)