[Tutorial][AutoIt] Browsergame-Bot mit Programmieren - [Anfänger]

02/07/2012 20:42 I3oomer#1
Hi @-All,

für die nächste Zeit habe ich vor, verschiedenne AutoIt Tutorials zu posten.

Kurz zur Erläuterung des Titels:
Am Anfang des Titels kann [AutoIt] (Wie in diesem Fall), oder auch z.B. [C++] usw. stehen. Das zeigt die verwendete Programmiersprache im Tutorial.
Am Ende des Titels können folgende Schwierigkeitsgrade stehen:
  1. [Anfänger]
  2. [Fortgeschrittener]
  3. [Experte]

Und nun kommen wir zum Tutorial!


Inhalt:
  • Was ist ein "Bot"?
  • Voraussetzungen
  • Erklärung der Befehle
  • Bot programmieren

---------------------------------

Was ist ein Bot?
Ein "Bot" (vom eng. "Roboter") ist ein Computerprogramm, das sich wiederholende Aufgaben selbstständig abarbeitet, ohne dabei auf menschliche Benutzer angewiesen zu sein.

---------------------------------

Voraussetzungen
Bei dem Programmieren dieses Bots, bedarf es keiner großen Voraussetzung des könnens usw. Man sollte lediglich die "Befehle und Kontrollstrukturen" kennen, die beim Programmieren verwendet werden:
  • HotKeySet
  • Global
  • $Pause, $Pixel (Variablen)
  • While...WEnd (Kontrollstrukturen)
  • Sleep
  • Func
  • If...Then (Kontrollstrukturen)
  • ExitLoop
  • Exit
  • PixelSearch
  • IsArray
  • MouseMove
  • MouseClick

---------------------------------

Erklärung der Befehle
HotKeySet: Setzt einen HotKey, um eine selbsterstellte Funktion aufzurufen.

Global: Deklariert eine Variable, Konstante oder definiert ein Array.

$Pause, $Pixel: Variable -> Speichert Strings ein Integer (englisch für "ganze Zahl" von lat. "numerus integer")

While...WEnd: Schleife, die auf einem Ausdruck basiert.

Sleep: Pausiert die Skript Ausführung.

Func...EndFunc: Definiert eine Benutzerfunktion, die Null oder mehr Argumente aufnimmt.

If...Then...EndIf : Führt Anweisungen konditionell aus.

ExitLoop: Beendet eine While-, Do- oder For-Schleife.

Exit: Beendet das Skript.

PixelSearch: Durchsucht ein Rechteck von Pixeln nach einer vorgegebenen Farbe.

IsArray: Überprüft, ob eine Variable ein Array ist. -> Begriffserklärung Wikipedia.de

MouseMove: Bewegt den Mauszeiger.

MouseClick: Führt einen Mausklick aus.

Quelle: [Only registered and activated users can see links. Click Here To Register...]

---------------------------------

Bot Programmieren

Zu erst sollte man sich überlegen, für was der Bot zum Schluss gut sein soll:D
Ich habe mich entschieden, einen [Only registered and activated users can see links. Click Here To Register...]-Bot zu programmieren.
Fangen wir an, wie man anhand des Links der zum Spiel führt gesehen hat, muss der Bot den grünen Ball finden und diesem mit der Maus nachfahren und ggf. anklicken...

Aber als erstes, müssen wir den Bot ja irgendwie starten können, nicht?
Dafür legen wir uns drei "HotKeySet" an. Eines zum Start, eines zum pausieren und eines zum beenden des Bots:
[Only registered and activated users can see links. Click Here To Register...]

Danach müssen die Funktionen, die mit dem "HotKeySet" aufgerufen werden, auch noch erstellt werden:
[Only registered and activated users can see links. Click Here To Register...]

So, wenn man das Script nun starten würde, so würde nichts passieren.
Um das zu ändern, muss unter die "HotKeySet"-Region noch eine "While"-Schleife gebaut werden:
[Only registered and activated users can see links. Click Here To Register...]

Wenn in dieser "While"-Schleife kein "Sleep" mit 250 Millisekunden angegeben wäre, würde die CPU durch diesen Bot stark belastet werden, natürlich nur solange der Bot in dieser Schleife gehangen wäre.

Jetzt fangen wir an, die "_Start()" Funktion zu befüllen:
[Only registered and activated users can see links. Click Here To Register...]

Die "While"-Schleife in der Funktion sorgt dafür, dass mit Hilfe von "PixelSearch" immer wieder nach dem Ball gesucht wird, und mit Hilfe von "MouseMove" und "MouseClick" immer wieder dem Ball nachgefahren und dann geklickt wird.
Mit "IsArray" wird geprüft, ob die Variable "$Pixel" ein Array ist, also ob die Variable für "MouseMove" und "MouseClick" verwendet werden kann.
Das große "X" und "Y" bei "PixelSearch" sind die Positionen:
[Only registered and activated users can see links. Click Here To Register...] [Only registered and activated users can see links. Click Here To Register...]

Jetzt fehlt noch die Farbe vom Ball:
[Only registered and activated users can see links. Click Here To Register...]

ACHTUNG: Die Positionen und die Farbe, sollte nie abgeschrieben werden!

Nun zur "_Stop" Funktion, diese ist ganz leicht aufgebaut. Wenn die Funktion ausgelöst wird, beendet das Script:
[Only registered and activated users can see links. Click Here To Register...]

Nun zur "_Pause" Funktion. Zunächst muss aber nach der "HotKeySet"-Region noch das hinzugefügt werden:
[Only registered and activated users can see links. Click Here To Register...]

Das "Global" dient dazu die Variable "$Pause = 0" überall im Skript zugänglich zu machen.

Die "While"-Schleife und die "_Start()" Funktion muss noch nach der "_Pause" Funktion angepasst werden. "Warum $Pause = 0 in der Haupt-While-Schleife?" -> Ganz einfach! In der "_Start()" Funktion wird geprüft, ob die Variable "$Pause" auf 1 gesetzt ist. Wenn das der Fall ist, dann gibt die Abfrage den Befehl "ExitLoop", damit wird die laufende "While"-Schleife abgebrochen und demnach auch die "_Start()" Funktion. Nun hängt der Bot wieder in der "Haupt-While-Schleife" und hier muss die Variable "$Pause" ja schließlich wieder auf "0" gesetzt werden.
[Only registered and activated users can see links. Click Here To Register...]

Soooo, fast fertig ;) Aber was fehlt noch? :confused:
Haaajjjaaaaaa :D Natürlich noch die sehr kleine "_Pause" Funktion:
[Only registered and activated users can see links. Click Here To Register...]

Die Variable "$Pause" beim Starten dieser Funktion auf 1 gesetzt, und dieser Wert stoppt wiederum die "_Start()" Funktion!

Nun noch ein Screenshot des ganzen Scriptes:
[Only registered and activated users can see links. Click Here To Register...]


Sooo nun, is das Tutorial fertig ;)
Hoffe ihr habt was daraus gelernt, und gebt dieses Wissen auch an andere weiter :)

[Only registered and activated users can see links. Click Here To Register...]

Disclaimer/Haftungausschluss:
Hiermit hafte ich NICHT für eventuell mögliche Schäden am System!
Quellen:
  1. [Only registered and activated users can see links. Click Here To Register...]
  2. [Only registered and activated users can see links. Click Here To Register...] bzw. [Only registered and activated users can see links. Click Here To Register...]


ACHTUNG:
Dieses Tutorial darf in ungeänderter Form nicht verbreitet werden!
Ein Link hierher ist jedoch erwünscht ;)
02/07/2012 21:21 jacky919#2
1. Warum nennst du es Anfänger, Fortgeschrittener, Expert und nicht Experte?
2. Bot vom englischen Roboter und nicht "Bot" (engl. Roboter)
3. If .. Then .. Else, While etc. sind Kontrollstrukturen und keine Befehle
4. Ebenso sind $Pause und $Variablen und keine Befehle
5. Für Code kannst du PHP- oder Code-Tags benutzen ([php]..[/php] oder [code]..[/code])
6. Es bietet sich an $Pause immer auf True bzw. False zu setzen und nicht 1 bzw. 0
02/07/2012 21:34 I3oomer#3
Mag sein ;)

Aber letztendlich ist es ja jedem selbst überlassen, ober nun "True" und "False" verwendet oder "0" und "1". Wenn ein Befehl ein Fehler ausgibt, tut er dies ja auch mit "-1" oder "0", aber "True" und "False" tut es im Bereich Variablen wirklich besser ;)

Zu "PHP Code benutzen" Ich wollte halt Bilder nehmen, sieht besser aus ;)

Und btw. das is mein erstes Tut...

Gruß
02/08/2012 14:39 jacky919#4
Die Tags haben auch Syntaxhervorhebung und man kann Quelltext kopieren.
02/12/2012 15:38 Ajax1337#5
danke dir
01/20/2013 00:35 Frazer19#6
pls reup link ist down
04/06/2013 23:51 Headcliff#7
hi,
ich weiss zwar das dieser Tread alt ist, hoffe jedoch das mir jemand weiter helfen kann ^^
ich habe eig. alles wie im obigen Tutorial gemacht jedoch wen ich den Script starte kommt eine Meldung das etwas Falsch ist. Jedoch komme ich nicht dahinter was es ist...


es Steht das ich einen Fehler bei Linie 17 hab Sprich mit dem Mousmove($Pixel{0}, ....
.................................................. .................................................. .. Mousmove($Pixe l^ERROR

Danke für eine hilfe ^^
04/07/2013 00:42 omer36#8
Quote:
Originally Posted by Headcliff View Post

es Steht das ich einen Fehler bei Linie 17 hab Sprich mit dem Mousmove($Pixel{0}, ....
.................................................. .................................................. .. Mousmove($Pixe l^ERROR

Danke für eine hilfe ^^

Mousmove($Pixel[0], $Pixel[1])

wenn schon
01/22/2014 23:00 deathfrombehind_#9
Tut mir wirklich leid dass ich dieses alte Tutorial nochmal ausgraben muss...
jedoch scheinen bei mir die Hotkeys nicht richtig zu funktionieren. Glaube ich zumindestens.

PHP Code:
HotKeySet"^!1""_Start")
HotKeySet"^!2""_Pause")
HotKeySet"^!3""_Stop")

Global 
$Pause 0

while 1
    Sleep
(250)
    
$Pause 0
WEnd

Func _Start 
()
    While 
1
        
If $Pause 1 Then ExitLoop
        $Pixel 
PixelSearch(3724268748070xCBFFBD01)
        If 
IsArray($PixelThen
            MouseMove
($Pixel [0], $Pixel[1], 1)
            
MouseClick("left"$Pixel[0], $Pixel[1], 11)
        EndIf
    
WEnd
EndFunc

Func _Pause
()
    
$Pause 1
EndFunc

Func _Stop 
()
    Exit
EndFunc 

Wenn ich dann die 1 drücke um den bot zu starten passiert einfach gar nichts.
Im System Tray wird das Programm als aktiv angezeigt.
Rätsel jetzt schon eine weile damit rum.
Währe wirklich cool wenn sich jemand von euch das mal anschauen könnte.
01/23/2014 19:19 alpines#10
Der HotKey ist nicht 1 sondern Control-Alt-1.
Außerdem ist das Tutorial einfach nur schlecht, man sollte auf keinen Fall hier lernen.
01/24/2014 15:13 YatoDev#11
Quote:
Originally Posted by jacky919 View Post
6. Es bietet sich an $Pause immer auf True bzw. False zu setzen und nicht 1 bzw. 0
in autoit bietet es sich an anstatt True und False 1 und 0 zu benutzen ;)