Vorraussetzungen:
- sehr sinnvoll wären AutoIt Kenntnisse, ganz ohne wirds schwer werden
- AutoIt installiert haben (am besten noch einen Editor)
- Natürlich Lust auf das Tutorial
- Viel Zeit
- Und am besten etwas zum Essen und Trinken
Bemerkung:
Dieses Tutorial ist nicht dazu da, einfach ein Script abzukopieren und nicht viel dabei zu lernen. Ihr solltet dabei ja auch was lernen. Also wer sagt, "gib doch mal das gesamte Script", der soll sich erstmal (mehr) mit AutoIt beschäftigen und dann nochmal dieses Tutorial versuchen. Denn wenn ihr das Script nur kopieren solltet, dann wurde ich auch nur das Script posten und nicht ein Tutorial schreiben.
Falls ihr Befehle, usw. nicht kennt, schlagt diese am Besten in der AutoIt Hilfe nach oder fragt Google.
Das Grundscript:
So nun endlich zum Script.
Zuerst erstellt ihr euer Script und nennt es wie ihr wollt.
Wie man ein AutoIt Script erstellt werde ich wohl hier nicht mehr erklären müssen.
Wir können jetzt mit den ersten Zeilen beginnen. Wir beginnen gleich mit unserer ersten Funktion. Die Hauptfunktion. Ich nenne sie einfach mal _Main. Diese lassen wir erstmal leer.
In dieser Funktion werden dann später alle anderen Funktionen für den Bot aufgerufen. Damit die Funktion auch aufgerufen wird fügen wir noch
in unser Script ein. Wenn wir unser Script jetzt Compilen und ausführen passiert genau: Nichts. Das müssen wir natürlich ändern. Wir füllen uns unsere Hauptfunktion aber erstmal mit den Nebenfunktionen. Dafür sollte man sich Gedanken über den Ablauf des Bots machen. Mein Ablauf sieht wie folgt aus:
- Ködersuche
- Köder benutzen
- Angel hineinwerfen
- Auf die Blase warten
- Die Angel herausziehen
Natürlich könnten da noch ein paar Abläufe mehr dazukommen, aber jetzt erstmal der Grundablauf. Am besten erstellen wir für jeden Ablaufspunkt eine Funktion und fügen einen Aufruf der jeweiligen Funktion in der Hauptfunktion (_Main) ein. So in etwa:
Das macht ihr mit jeder Ablauffunktion. Wählt sinnvolle und gut beschreibende Namen.
Wenn ihr fertig seid gehts schon an die erste Nebenfunktion. Ich habe sie _KoederSuche genannt und sie soll, wer hätte es gedacht, nach Ködern suchen. Ich bevorzuge dafür die Leiste unten. Wenn wir das Angelsymbol auf ein Feld machen, dann bleiben noch 7 Felder á 200 Köder, wer jetzt gut rechnen kann weiß, wieviele das dann insgesamt sind.
OK, Spaß beiseite, also 1400 Köder sollten eigentlich reichen. Um die Köder auch zu erkennen kann man zur einfachsten Methode, die Pixel Methode greifen. Das werden wir auch tun. Dafür müssen wir erstmal die Koordinaten der Slots herausfinden. Zum Glück hat AutoIt dafür ein schlaues Tool namens "AutoIt Window Info". Ihr findet es im AutoIt Ordner als "Au3Info.exe". Wenn ihr es offen habt, solltet ihr zunächst die Optionen verändern.
Stellt wie bei 1. Zu sehen die Option Coord Mode auf -> Client und wie bei 2. zu sehen macht ihr einen Haken bei Magnify. Damit die Koordinaten dann von AutoIt auch im Client Modus benutz werden, fügt ihr am Anfang des Scripts noch diese beiden Zeilen ein:
Diese bewirken, dass AutoIt den Clientmodus (dafür steht die 2) für die Pixel und die Mausfunktionen verwendet.
Nun aber zu unseren Coords für die Köder. Dazu setzen wir uns einen Köder auf unserer Leiste unten auf die 1. Dann geht ihr mit eurer Maus ungefähr auf die Mitte des Symbols (am besten wählt ihr eine Farbe die sich stark von der Hintergrundfarbe (also wenn der Slot leer ist) unterscheidet) und drückt, während das Window Info Tool offen ist: STRG + ALT + F um die aktuellen Werte zu freezen. Jetzt geht ihr im Window Info auf den Tab Mouse und könnt dort die gefreezte Mausposition und die sich darunter befindende Farbe sehen. Notiert euch diese. Dann setzt ihr auf den 2. Slot die gleiche Köderart und drückt nocheinmal STRG + ALT + F um wieder zu entfreezen. Jetzt geht ihr mit der Maus über den Köder auf dem 2. Slot und bewegt die Maus solange ein bisschen rum bis im Window Info Tool bei Color die EXAKT gleiche Farbe wie zuvor aufgeschrieben erscheint. Dann drückt ihr erneut STRG + ALT + F und schreibt euch nun aber nur die Werte bei Position auf. Die 2. Zahl (die nach dem Komma) sollte gleich wie beim 2. Scan sein. Falls das nicht so sein sollte, dann versucht einfach nochmal zu Scannen. Nun habt ihr die ersten 2 Positionen für die Köder. Die für die Tasten 3 und 4 müsst ihr jetzt nicht mehr Scannen (wer will kanns machen), sondern könnt ihr ganz "einfach" ausrechnen.
Zuerst noch etwas zur Verständnis:
Die Position, die ihr im Window Info sehen könnt, sieht ja folgendermaßen aus: 123, 456
Dabei ist die Zahl vor dem Komma (123) die X-Koordinate und die nach dem Komma (456) die Y-Koordinate.
Nun unsere Rechnung:
2. X-Koordinate (die vom 2. Slot) - 1. X-Koordinate (die vom 1. Slot) = ???
Beispiel:
130 - 120 = 10
Das Ergebnis ist unser Abstand zwischen den Slots. Also ist die X-Coord vom 3. Slot: Die X vom 2. + unser errechneter Abstand. Genau so dann beim 4. Slot mit X vom 3. + Abstand. Die Y-Koordinate bleibt bei allen Werten gleich.
Jetzt haben wir die Koordinaten von den ersten 4 Slots. Fehlen noch die 3 letzen (F1-F3, F4 habe ich für die Angelfertigkeit vorgesehen). Dabei geht ihr einfach wie zuvor auch vor. Sollte nicht allzuschwer sein.
Wenn ihr alle Koordinaten habt, können wir sie zunächst im Script einfügen. Dazu ist ein Array sehr praktisch. Wer nicht weiß was einen Array ist, der schaut in der "AutoIt3.chm" im AutoIt Ordner nach.
Zunächst deklarieren wir unsere Array so:
Es gibt 2 Dimensionen. Die erste ist für die Anzahl unserer Koordinaten und die 2. für X und Y. Wer sich nun frägt, warum denn 8 bei der Anzahl, wir haben doch nur 7 Slots, der liegt eigentlich richtig. Da aber die Dimensionen bei Array immer bei 0 beginnen verwende ich eins mehr und benutze 0 dann bei der Anzahl nicht (es gibt ja auch kein 0. Slot). Bei X und Y ist aber X 0 und Y 1.
Der erste Slot wird so deklariert:
Beim 2. Slot ist dann die erste Zahl nicht 1 sondern 2. usw.
Also so:
Es fehlt noch unsere notierte Farbe. Diese deklarieren wir mit einer Variable:
Statt den "?" setzt ihr natürlich euren gefundenen Farbwert ein.
Da wir unsere Koordinaten und die Farbe des Köders jetzt deklariert haben, können wir sie in unserer Funktion _KoederSuche jetzt verwenden.
Um alle Slots darauf zu überprüfen, ob ein Köder vorhanden ist, verwenden wir eine For-Schleife.
Die 1. Zeile der Schleife. $i wird bei jedem Durchlauf um 1 erhöht bis einschließlich 7. Ubound gibt die Anzahl der Indexes zurück, also bei uns 8 und das - 1 ist 7
Hier wird überprüft, ob die Pixelfarbe von dem Slot gleich ist, wie die zuvor deklarierte Variable (dann ist also ein Köder auf dem Slot und er kann verwendet werden)
Wenn also die If-Bedingung von oben zutrifft, wird $i (also die Slot Nummer) zurückgegeben.
Dann noch If und die For-Schleife beenden.
Und wenn die For-Schleife durchgelaufen ist (also kein Köder mehr da ist) dann wird 0 zurückgegeben.
Somit ist unsere _KoederSuche Funktion schon fertig. Was wir noch ändern müssen ist, dass der Rückgabewert von der Funktion auch gespeichert wird. Also schreiben wir "$KoederSlot = " vor den Aufruf von der _KoederSuche Funktion in der Funktion _Main.
Jetzt zur nächsten Funktion. _NimmKoeder habe ich sie genannt. In ihr wird der zuvor gefundene Köder benutzt. Um diese Variable auch benutzen zu können fügen wir der Funktion einen Parameter hinzu.
Diesen müssen wir auch noch in der _Main Funktion angeben. Also:
So kann dann der von _KoederSuche zurückgegebene Wert in _NimmKoeder verwendet werden.
Jetzt zum Inhalt der Funktion _NimmKoeder:
Wenn die SlotNr höher als 4 ist (also mind. 5) dann muss die jeweilige F-Taste verwendet werden.
Wenn die SlotNr = 0 ist (also kein Köder gefunden wurde kommt eine MessageBox und der Bot beendet sich.
Jetzt muss auch noch der Köder genommen werden. Das geschieht so:
Die Taste wird für 500 ms gedrückt.
Der Köder wird nun genommen. Jetzt muss noch die Angel rein. Eine sehr einfache Funktion. Ich nenn sie _AngelHinein.
Ist eigentlich nichts dazu zu sagen.
Nun müssen wir auf die Angelblase warten.
Dazu ist die Funktion _BlaseWarten (bei mir, ihr könnt die Funktionen auch anderst nennen).
Dazu müssen wir die Farbe der Blase mit AutoIt Window Info suchen und freezen. Es sollte ein weißer Farbwert der Blase sein. Diesen deklarieren wir oben im Script bei den anderen Variablen
Für die "?" wieder den Wert eintragen.
Die Funktion _BlaseWarten sieht so aus:
Ihr müsst aber noch einen Bereich im Fenster, in dem ein Teil der Blase ist festlegen. Dazu nehmt ihr wieder das Window Info Tool und freezt euch einmal die linke obere Ecke eines gedachten Rechteckes und dann noch die rechte untere Ecke. Natürlich die Werte notieren. Das Rechteck sollte nicht zu groß sein und es muss ein weißer Teil der Blase darin sein, wenn die Blase erscheint. (Wer das mit der PixelSearch Funktion und den Parametern nicht versteht, der schaut sich erstmal die Funktion in Ruhe an). Das "If Not @error" bedeutet soviel wie "wenn kein Fehler ist", also wenn ein Weißer Pixel gefunden wurde, dann wird die While Schleife verlassen und es geht weiter in der _Main Funktion.
Jetzt kommt die letzte Funktion. Das Herausziehen der Angel. Bei mir: _Rausziehen()
Auch so wie das Reinwerfen sehr simpel:
Das etwas besondere ist die zufällige Zeit für das Herausziehen. Den Min- und Maxwert müssen wir noch oben im Script deklarieren. Der Wert ist in ms anzugeben (1000 ms = 1s). Wählt irgendwelche Zeiten (z.B Min= 2000 und Max=3000). Ihr könnt sie ja später noch ändern.
Nun sind alle Grunfunktionen fertig. Wenn ihr das Script nun testet sollte alles gut laufen. Nur eine Sache nicht. Es wird nur einmal geangelt. Um aber unendlich lange (bzw. solange Köder da sind) zu angeln können wir einfach eine While Schleife verwenden. Macht "While 1" (ohne "") ganz an den Anfang der Funktion _Main und "WEnd" (ohne "") ganz an das Ende der Funktion _Main. So wird alles dazwischen immer wiederholt. Damit eine Pause zwischen jedem Angelvorgang gemacht wird, schreibt ihr noch Sleep(3000) ans Ende der While 1 Schleife (also über das WEnd). Ihr könnt auch weniger oder mehr als 3s nehmen, aber 3s sind meiner Meinung ganz gut.
Somit wären wir mit den Grundfunktionen fertig.






