Erzabbaubot?

06/04/2014 02:40 『  』#31
Quote:
Originally Posted by Stahllegierung View Post
aber vor meiner anpassung (,waren nur die totzeiten beim einsammeln,)
lief das reibungslos. er is von allein in die goon funktion reingegangen und setzte sich dort in die schleife.
ich versuchs trotzdem mal ^^ danke dir

EDIT:
so, der compiler meint jetzt, dass am ende das WEnd fehlt xD

Code:
While 1
    Func goon()
             Sleep(1)
             Call ("movcamera")
	     call ("ZielSuchen") 		; Prozedur aufrufen
	     Sleep (150)
    EndFunc
WEnd
... der rest muss ja nicht mehr in die schleife, da er auch so aufgerufen wird, oder?
Du hast eine Func in einer Schleife, was nicht zulässlig ist in AutoIt.
Pack das
Code:
While 1

WEnd
in die Func, damit es so aussieht:
Code:
    Func goon()
While 1
             Sleep(1)
             Call ("movcamera")
	     call ("ZielSuchen") 	
	     Sleep (150)
WEnd
    EndFunc
Quote:
Originally Posted by Stahllegierung View Post
ich verstehe nicht ganz, im grunde hatte ich es doch so. nur, dass ich das in eine funktion gesteckt hab

hätte der bot nach dem, was du sagst, nicht mindestens ein mal die kamera drehen und ein pixel suchen müssen?
(hat er nicht, hätte ich vielleicht dazu sagen können, sry dafür ^^)
Du kannst keine Func in einer Schleife machen. Im grunde wird eine Func erst dann aufgerufen, wenn du sagst, dass sie aufgerufen werden soll.
Sobald du nach deinen Deklarationen eine Schleife erstellst, weiß Autoit, dass er dort in eine Schleife gehen soll und auf deine Tasten warten muss.

Hier 2 Beispiele:
Code:
HotKeySet("{F5}", "test")

While 1
Sleep(50)
WEnd

Func test()
MsgBox(0, "Test", "Hallo")
EndFunc
Du weist der Taste F5 eine Funktion (in diesem fall die "test" Func) zu. Dannach geht das Programm in die Schleife
wo er 50ms nix macht. Da das While immer 1 sein wird, wiederholt er dass und stürzt nicht ab.
Sobald du F5 drückst, zeigt es dir eine MsgBox an und wenn du dort auf OK drückst geht das Programm zu.

Code:
HotKeySet("{F5}", "test")

Func test()
MsgBox(0, "Test", "Hallo")
EndFunc
Hier weisen wir der Taste F5 wieder die "test" Func zu, jedoch beendet sich das Programm direkt wieder, da er
keine Schleife hat wo er "bleiben" könnte. Die Func wird erst aufgerufen, wenn du F5 drückst oder iwo anders
im Programm die Func aufrufst. Somit startet es und beendet sich direkt wieder ohne eine MsgBox anzuzeigen.

Quote:
Originally Posted by greenryder View Post
Ich habe versucht $i abzufragen aber es will nicht wirklich funktionieren... Wenn ich den Bot so starte sucht er ein Erz aus und visiert es an danach hängt sich der Bot allerdings auf und macht gar nichts mehr. Ich kann ihn pausieren und auch beenden aber er "greift nicht an" und dreht auch die Kamera nicht weiter.

Du hast in der Func "Farmen" folgenden Codeteil:
Code:
	While $i <= 1
		$target = PixelGetColor(913,37)			; auslesen - Gegner vorhanden ?
		if $target = "0x818181" then						; Rot im Target
			$i=1
		Else
			$i=0
		endif
	 WEnd
Kurz gesagt: Solange $i kleiner oder gleich 1 ist, soll er sich die Farbe von 913, 37 holen und überprüfen.
Ist die Farbe "#818181", dann setzte $i auf 1 ansonsten auf 0.
Erkennst du das Problem?

Deine Variable $i wird IMMER kleiner oder gleich 1 sein, da du ihr keinen größeren Wert zuweißt.
Deswegen bleibt er in diese Schleife stecken. Daher, änder die Variable $i in dieser Func zu etwas höherem
anstatt 1 oder du nimmst dort eine andere Variable.
06/04/2014 08:16 pachen123321#32
0x818181 = grau ??

ich frage immer das rote feld (hp-balken) ab, ob da noch leben ist.
solange rot ist soll er warten.
was aber aber ein problem werden kann, wenn das erz nicht erreichbar ist.
man sollte also auch eine gesamt such/killzeit im auge haben

gruss
06/04/2014 18:15 Stahllegierung#33
danke kasu, hat mir wieder sehr geholfen ^^

der bot macht soweit das, was er soll.
ich würde jetzt noch gerne wissen, wo die textur (oder was auch immer) von dem grünen balken ist. ich muss nur seine exakte farbe herausfinden, damit ich dann abfragen kann, ob der und der pixel (je nach auflösung) diese farbe hat. das soll dazu dienen, dass der bot erst in ruhe farmt, bevor er wieder neues zeug sucht ^^

wenn ich das soweit habe, werde ich bestimmt noch auf den balken klicken lassen, aber vorher soll er reibungslos laufen.

so und nach dem text nochmal der punkt:
wo finde ich die textur vom grünen balken?

_________
EDIT:

hier bin ich wieder,
nichts mit grünem balken. ich wollte jetzt über die hp-leiste des erzes gehen:
Code:
While PixelGetColor(900,35) == Hex("F70000")
		   if PixelGetColor(900,35) <> Hex("F700000") then
		 	  Break
		   endif
		WEnd
Ich will bezwecken, dass, solange gefarmt wird, auch gewartet wird. trotzdem scheint der bot die schleife nicht zu beachten, oder sie sofort wieder zu verlassen. ich nehme an, dass ersteres der fall ist.
Da ich mich nicht so gut mit der Syntax von autoit auskenne und auch bereits mehrere sachen ausprobiert habe, würde ich mich einfach nochmal an euch wenden. die frage ist, ob der bot überhaupt erst in die schleife geht, oder ich schon die bedingung falsch aufgestellt habe.