[Tutorial] Angelbot mit AutoIt

08/07/2009 23:28 atze19#1
Ich schreib hier mal ein Tutorial für einen Angelbot mit vielen optionalen Funktionen. Ich weiß, es gibt schon n paar Tuts dazu, aber die gefallen mir nicht so (ist meine Meinung).

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.

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

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

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

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:

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

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.

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

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:

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

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:

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

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:

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


Beim 2. Slot ist dann die erste Zahl nicht 1 sondern 2. usw.
Also so:

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


Es fehlt noch unsere notierte Farbe. Diese deklarieren wir mit einer Variable:

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


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.

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

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


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

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)


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

Wenn also die If-Bedingung von oben zutrifft, wird $i (also die Slot Nummer) zurückgegeben.


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

Dann noch If und die For-Schleife beenden.


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

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.

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


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.

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


Diesen müssen wir auch noch in der _Main Funktion angeben. Also:

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

So kann dann der von _KoederSuche zurückgegebene Wert in _NimmKoeder verwendet werden.
Jetzt zum Inhalt der Funktion _NimmKoeder:

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

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:

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

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.

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

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

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

Für die "?" wieder den Wert eintragen.

Die Funktion _BlaseWarten sieht so aus:

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

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:

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

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.
08/08/2009 12:18 atze19#2
Zusätzliche Funktionen


Zu den Grundfunktionen kann man jetzt noch zusätzliche Sachen einbauen.

Fischkiller

Der Fischkiller soll die Fische, die geangelt wurden sofort töten, sodass mehr Platz im Inventar bleibt und es so gut wie nie voll werden kann.
Dazu brauchen wir wieder unser Window Info Tool. Wir müssen für jeden Fisch den wir killen wollen eine Farbe scanen. Dazu geht ihr mit eurer Maus auf die Mitte eines lebendigen Fisches und freezt den Wert. Dann den Wert notieren und weiter mit dem nächsten Fisch. Es darf keine Farbe doppelt vorkommen! Wenn ihr alle Fische habt (oder nur einen Teil, ihr könnt weitere auch nachträglich hinzufügen) dann müssen wir diese Farbwerte noch deklarieren. Wieder so wie bei den Slots mit einem Array.

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

Statt dem "?" gebt ihr die Anzahl der verschiedenen Fische + 1 ein. Warum + 1? Weil ja ein Array bei 0 beginnt, wir aber der Einfachheit halber mit 1 anfangen.
Dann könnt ihr eure Farbwerte eintragen:

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

Statt den ? wieder den Farbwert eintragen und dahinter am Besten als Kommentar den Name des Fisches (z.B Zander).
Wenn ihr das bei allen Fischen habt, müssen wir nurnoch die Funktion schreiben. Die sieht folgendermaßen aus:

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

Die Koordinaten für den Pixelsearch müsst ihr noch suchen. Nehmt einfach die obere linke und die untere rechte Ecke des Itembereichs im Inventar.

Wenn ein Pixel mit der Farbe eines Fischs gefunden wird, dann klickt der Bot mit der rechten Maustaste drauf. Nun muss die Funktion nurnoch in der _Main Funktion aufgerufen werden. Setzt einfach _FischeToeten() zwischen _Rausziehen() und unser Sleep am ende der While 1 Schleife.
Jetzt werden die Fische auch gleich getötet und das Inventar wird so gut wie nicht voll.

Weitere Funktionen folgen noch!

Falls ihr Fehler findet oder etwas nicht funktioniert, bitte hier sagen, damit ichs ändern kann.

Feedback ist erwünscht :bandit:
08/08/2009 12:24 InelienCewq#3
sieht ganz gut aus
bekommst thx für die arbeit
08/09/2009 20:41 atze19#4
*PUSH*

Schade, dass so wenige hier posten.
08/19/2009 13:20 Rayser9119#5
ich find das auch eingelungenes Tut. ich kann aber schon ganz gut mit autoit weiß also was da für mühen hinter stecken! von mir gibts ein THX
10/03/2009 12:47 S-youth#6
danke mein erster angel bot (:

thx
12/17/2009 18:59 DraaaKe#7
könnte man das nicht kürzer fassen? Also eigentlich muss der ja nur F3 drücken dann ZB F4 für das angelsymbol oder enter^^ Dann nach dem farbwert der blase scannen und sobald dieser kommt 2000millisekunden warten und dann enter dann 3sek warten und von vorne beginnen?
12/18/2009 21:57 Cheat-Penner#8
Quote:
Originally Posted by atze19 View Post
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...

Quote:
Originally Posted by atze19 View Post
Es fehlt noch unsere notierte Farbe. Diese deklarieren wir mit einer Variable:




Statt den "?" setzt ihr natürlich euren gefundenen Farbwert ein.
1. Solln wir jetzt alles machen wie Angel werfen oder so?

2. Wir sollten 2 Farbwerte messen welcher kommt rein?
12/19/2009 01:38 eXcalibur93#9
Also ich find den bot auch gut, wäre aber nicht schlecht, wenn du den gesamten code noch reinstellen würdest, damitr man seinen abgleichen kann.
12/19/2009 11:56 Cheat-Penner#10
ich habe es genau so gemacht wie du und das hier kam raus (nur zur häflte):

Code:
#cs ----------------------------------------------------------------------------

 Angelbot by Cheat-Penner
 Author: Cheat-Penner

 Script Function:
	Dieser Bot angelt für euch!

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
Opt("MouseCoordMode",2)
Opt("PixelCoordMode",2)

Func __Main()
EndFunc
_Main()

Func _Main()
	$KoederSlot = _KoederSuche()

EndFunc

Func _KoederSuche()
EndFunc

Func _Main()
	_Koeder benutzen()
	_NimmKoeder($KoederSlot)


EndFunc

Func _Koeder benutzen()
EndFunc

Func _Main()
	_Angel werfen()
EndFunc

Func _Angel werfen()
EndFunc

Func _Main()
	_Auf Blase warten()
EndFunc

Func _Auf Blase warten()
EndFunc

Func _Main()
	_Angel herausziehen()
EndFunc

Func _Angel herausziehen()
EndFunc

Func _Main()
	_Fisch toeten()
EndFunc

Func _Fisch toeten()
EndFunc

#include <Array.au3>
Global $Slot[8][2]
$Slot[1][0] = X
$Slot[1][1] = Y
$Slot[2][0] = X
$Slot[2][1] = Y
$Slot[3][0] = X
$Slot[3][1] = Y
$Slot[4][0] = X
$Slot[4][1] = Y
$Slot[5][0] = X
$Slot[5][1] = Y
$Slot[6][0] = X
$Slot[6][1] = Y
$Slot[7][0] = X
$Slot[7][1] = Y
$Slot[8][0] = X
$Slot[8][1] = Y
_ArrayDisplay($Array, $Angelbot) 

$Koeder = 0x32,108

For $i = 1 to UBound($Slot) - 1

	For $i = 2 to UBound($Slot) - 1
		For $i = 3 to UBound($Slot) - 1
			For $i = 4 to UBound($Slot) - 1
				For $i = 5 to UBound($Slot) - 1
					For $i = 6 to UBound($Slot) - 1
						For $i = 7 to UBound($Slot) - 1
							If PixelGetColor($Slot[$i][0],$Slot[$i[1]) = $Koeder Then
								Return $1
							EndIf
						Next
						Return 0
12/27/2009 23:51 eXcalibur93#11
Also hallo, ich hab den Bot auch einmal nach diesem TuT geschieben, jetzt hab ich das problem, dass ich immer eine errormeldung bekomme. Ich weis nicht warum Scite da ein Error sendet:

C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(61 ,20) : ERROR: syntax error
ElseIf $Slotnr = 0
~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(67 ,31) : ERROR: syntax error
Send ("{" & $Taste & " DOWN}")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(69 ,29) : ERROR: syntax error
Send ("{" & $Taste & " UP}")
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(80 ,60) : ERROR: syntax error
$Coord = PixelSearch ( 336, 52, 400, 95, $Fischblase, 5 )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(82 ,12) : ERROR: 'ExitLoop' not allowed outside loop.
ExitLoop
~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(85 ,2) : ERROR: syntax error
WEnd
^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3 - 6 error(s), 0 warning(s)

Alos z.B. warum kommt ein Error bei exitloop?, da darf kein Error kommen.
Würde mich über etwas Hilfe freuen, kenn mich mit AutoIt nicht so sehr aus.
12/30/2009 01:03 Quade#12
Quote:
Originally Posted by eXcalibur93 View Post

C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(61 ,20) : ERROR: syntax error
ElseIf $Slotnr = 0 Then



C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(67 ,31) : ERROR: syntax error
Send ("{" & $Taste & " DOWN}")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(69 ,29) : ERROR: syntax error
Send ("{" & $Taste & " UP}")

Klappt bei mir... $Taste nicht definiert?


C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(80 ,60) : ERROR: syntax error
$Coord = PixelSearch ( 336, 52, 400, 95, $Fischblase, 5 )

Bin mir nicht sicher, aber wahrscheinlich hast du Fischblase nicht definiert.

C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(82 ,12) : ERROR: 'ExitLoop' not allowed outside loop.
ExitLoop

Wahrscheinlich ein Exitloop außerhalb einer Schleife angebracht? :D


C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(85 ,2) : ERROR: syntax error
WEnd

WEnd ohne While? :D
Vllt??:D
01/05/2010 12:38 eXcalibur93#13
Naja hier der Bot, hab noch den Fischkiller reingemacht. Also das mit dem Then hab ich vergessen mein fehler.
Aber die $taste is ja mit
PHP Code:
$Taste "F" & ( $Slotnr 
eigentlich definiert oder?
Fischblase is au definiert, und Exitloop is in einer While 1 schleife.....
Und naja das WEnd steht au mit einem While...

PHP Code:
Opt "MouseCoordMode")
Opt "PixelCoordMode")
WinActivate "METIN2" )
WinWaitActive "METIN2" )
Global 
$Slot[8][2]
$Slot[1][0] = 443
$Slot
[1][1] = 751
$Slot
[2][0] = 475
$Slot
[2][1] = 751
$Slot
[3][0] = 507
$Slot
[3][1] = 751
$Slot
[4][0] = 539
$Slot
[4][1] = 751
$Slot
[5][0] = 585
$Slot
[5][1] = 751
$Slot
[6][0] = 617
$Slot
[6][1] = 751
$Slot
[7][0] = 649
$Slot
[7][1] = 751
$Slot
[8][0] = 0
$Slot
[8][1] = 0
Global $Fisch[21]
;
$Fisch[1] = ;Aal
;$Fisch[2] = ;Ayu
$Fisch
[3] = 0x212018 ;Bachforelle
;$Fisch[4] = ;Barsch
;$Fisch[5] = ;Flussforelle
;$Fisch[6] = ;Goldfisch
$Fisch
[7] = 0x8C8673 ;Graskarpfen
$Fisch
[8] = 0xFFFFFF ;Grosserzander
$Fisch
[9] = 0xB58A84 ;Karpfen
;$Fisch[10] = ;Katzenfisch
$Fisch
[11] = 0x9C9A84 ;Lachs
;$Fisch[12] = ;Lotusfisch
$Fisch
[13] = 0x4A3418 ;Mandarinfisch
$Fisch
[14] = 0x5A5142 ;Regenbogenforelle
$Fisch
[15] = 0xFFFFF7 ;Rotfeder
;$Fisch[16] = ;Schmerle
;$Fisch[17] = ;Shiri
;$Fisch[18] = ;Spiegelkarpfen
;$Fisch[19] = ;Stint
;$Fisch[20] = ;Tenchi
$Fisch
[21] = 0xF7EBAD ;Zander
$Koeder 
0x422415
$Fischblase 
0xFcF8Fc
$Min 
InputBox "Angelbot""Minimale Zeit in ms?" )
$Max InputBox "Angelbot""Maximale Zeit in ms?" )

_Main()

Func _Main()
    
$Koederslot _Koedersuche()
    
_Nimmkoeder($Koederslot)
    
_Angelhinein()
    
_Blasewarten()
    
_Fischtoeten()
    
_Rausziehen()
EndFunc

    Func _Koedersuche
()
        For 
$i 1 to UBound $Slot ) - 1
            
If PixelGetColor $Slot[$i][0], $Slot[$i][1] ) = $Koeder Then
                
Return $i
            
EndIf
        
Next
        
Return 0
    EndFunc

Func _Nimmkoeder
($Slotnr)
    If 
$Slotnr 4 Then
        $Taste 
"F" & ( $Slotnr )
    ElseIf 
$Slotnr 0 Then
        MsgBox 
0"Angelbot""Keine Köder mehr!" )
        Exit
    Else
        
$Taste $Slotnr
    
EndIf
    
Send ("{" $Taste " DOWN}")
    
Sleep 500 )
    
Send ("{" $Taste " UP}")
EndFunc

Func _Angelhinein
()
    
Send "{F4 DOWN}" )
    
Sleep 500 )
    
Send "{F4 UP}" )
EndFunc

Func _Blasewarten
()
    While 
1
        $Coord 
PixelSearch 3365240095$Fischblase)
        If 
Not @error Then
            ExitLoop
        
EndIf
        
Sleep 100 )
    
WEnd ; @@@@@@@@@ dieses WEnd war gemeintda is aber nen While!
EndFunc

Func _Rausziehen
()
    
$Wartezeit Random $Min$Max)
    
Sleep $Wartezeit )
    
Send "{F4 DOWN}" )
    
Sleep 500 )
    
Send "{F4 UP}" )
EndFunc

Func _Fischtoeten
()
    For 
$e 1 To UBound $Fisch ) -1
        $Coord2 
PixelSearch 8774501005578$Fisch[$e], 032 )
        If 
Not @error Then
            MouseClick 
"right"$Coord2[0], $Coord2[1], 1)
        EndIf
    
Next
EndFunc 
01/09/2010 16:32 Loveskill#14
Danke hat mir geholfen THX kriegste ;)
01/09/2010 16:38 freddy2001#15
Quote:
Originally Posted by eXcalibur93 View Post
Also hallo, ich hab den Bot auch einmal nach diesem TuT geschieben, jetzt hab ich das problem, dass ich immer eine errormeldung bekomme. Ich weis nicht warum Scite da ein Error sendet:

C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(61 ,20) : ERROR: syntax error
ElseIf $Slotnr = 0
~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(67 ,31) : ERROR: syntax error
Send ("{" & $Taste & " DOWN}")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(69 ,29) : ERROR: syntax error
Send ("{" & $Taste & " UP}")
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(80 ,60) : ERROR: syntax error
$Coord = PixelSearch ( 336, 52, 400, 95, $Fischblase, 5 )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(82 ,12) : ERROR: 'ExitLoop' not allowed outside loop.
ExitLoop
~~~~~~~~^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3(85 ,2) : ERROR: syntax error
WEnd
^
C:\Dokumente und Einstellungen\Konrad\Desktop\AutoIt\epvpbot.au3 - 6 error(s), 0 warning(s)

Alos z.B. warum kommt ein Error bei exitloop?, da darf kein Error kommen.
Würde mich über etwas Hilfe freuen, kenn mich mit AutoIt nicht so sehr aus.
Würde mich wundern wenn das alle fehler wären :o

Ich hab im Anhand mal eine Datei hochgeladen die eure AutiIT scripts überprüft, nach Fehlern absucht und die Zeile und den Fehler im Script makiert. Es werden immer BackUp's von eurem Script erstellt ;)

So ist die Fehlersuche einfacher :)


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