Brauche Hilfe bei einer Errorcheck Funktion

02/02/2008 18:52 Gabba2#1
Hallo,

Ich wollte mal für einen Bot eine Funktion schreiben mit der er selbstständig erkennt wenn er einen Error hatte.
Das ganze sollte eigentlich nicht sonderlich schwer sein dachte ich mir einfach mit Texmod das Fenster um Charakter Auswahl und das Fenster auf dem normal der Eye of the North Schriftzug steht färben und dann an einer stelle halt eine Pixel Abfrage machen.

Aaaber: ich kenne mich nicht wirklich aus mit Programmieren im allgemeinen und mit AutoIT.
Und so machte das Script dann zwar was es sollte im Charakter Auswalh bereich drückte es Escape, kam so auf den Einlogscreen, logte sich ein halt so wies soll aber es macht jedesmal wenn es den Pixel gesucht hat die Reaktion wie wenn er den Pixel gefunden hat.

Also irgendwo hab ich nen total dummen Fehler drin dazu muss ich sagen, dass ich den großteils des Scripts nur abkopiert habe und ich teilweise deswegen kp von der Funktion êinzelner Sachen im Script habe z.B. beim Hex(PixelGetColor(498, 12),6) was hat da die 6 zu bedeuten :confused:

So hier dann mal die Scriptstelle und noch die TexMod Datei:

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

Code:
  
Global $password = InputBox("Password", "Please tipe your password in the box below!" , "Insert here!")

Func _errorcheck()
    	$errorcheck = Hex(PixelGetColor(498, 12),6)
	If $errorcheck = "0xFFCC00" Then
		Sleep(200)
		_errorcheck();
	ElseIf $errorcheck <> "0xFFCC00" Then
			$rndnumber = Random(200, 400)
			Sleep($rndnumber)
			Sleep(200)
		    $rndnumber = Random(4500, 5000)
		    Sleep($rndnumber)	
		    Send("{Escape}")
		    $rndnumber = Random(400, 500)
			Sleep($rndnumber)
		    Send("{Escape}")
			$rndnumber = Random(3400, 4500)
	       	Sleep($rndnumber)
		    MouseClick("left", Random(211, 461), Random(329, 338), 1, $mousespeed)
			$rndnumber = Random(400, 500)
		    Sleep($rndnumber)
			Send("{Backspace down}")
		    $rndnumber = Random(2700, 3500)
			Sleep($rndnumber)
	    	Send("{Backspace Up}")
		    $rndnumber = Random(400, 500)
	       	Sleep($rndnumber)
			Send($password, 1)
	      	$rndnumber = Random(500, 800)
      		Sleep($rndnumber)
	     	Send("{Enter}")
			$rndnumber = Random(1500, 2300)
      		Sleep($rndnumber)
	     	Send("{Enter}")
	    	$rndnumber = Random(15000, 17000)
	    	Sleep($rndnumber)
			Send("{ESC}")
			$rndnumber = Random(250, 300)
			Sleep($rndnumber)	
			Send("{ESC}")
			$rndnumber = Random(250, 300)
			Sleep($rndnumber)	
			Send("{ESC}")
			$rndnumber = Random(250, 300)
			Sleep($rndnumber)	
			Send("{ESC}")
			$rndnumber = Random(250, 300)
			Sleep($rndnumber)	
			Send("{ESC}")
			_errorcheck(); 
			$rndnumber = Random(1250, 1500)
			Sleep($rndnumber)				
			Send("g")
		Endif
ENdfunc
02/02/2008 19:09 MasteR GunneR#2
Habs zwar jetzt nur kurz überfolgen, aber wenn du Hex(expression, 6) nimmst, dann steht die "6" für die Länge der Zahl (im Hexdezimalsystem), sprich das "0x", das du vorne hast wird weggeschnitten.
Lass das "0x" also einfach mal weg und schau obs funktioniert.
Aber das ganze kommt mir bekannt vor =)

So wie es jetzt da steht, macht er wenn der Pixel die in $errorcheck angegebene Farbe hat nichts und fängt vorne an, und wenn er nicht die Farbe hat, dann loggt er sich ein, seh ich das richtig?

Code:
Global $password = InputBox("Password", "Please tipe your password in the box below!" , "Insert here!")
Global $mousespeed = 2

Func _errorcheck()
    	$errorcheck = Hex(PixelGetColor(498, 12),6)
	If $errorcheck <> "FFCC00" Then
		Sleep(200)
	ElseIf $errorcheck = "FFCC00" Then
		$rndnumber = Random(200, 400)
		Sleep($rndnumber)
		Sleep(200)
		$rndnumber = Random(4500, 5000)
		Sleep($rndnumber)	
		Send("{Escape}")
		$rndnumber = Random(400, 500)
		Sleep($rndnumber)
		Send("{Escape}")
		$rndnumber = Random(3400, 4500)
	       	Sleep($rndnumber)
		MouseClick("left", Random(211, 461), Random(329, 338), 1, $mousespeed)
		$rndnumber = Random(400, 500)
		Sleep($rndnumber)
		Send("{Backspace down}")
		$rndnumber = Random(2700, 3500)
		Sleep($rndnumber)
	    	Send("{Backspace Up}")
		$rndnumber = Random(400, 500)
	       	Sleep($rndnumber)
		Send($password, 1)
	      	$rndnumber = Random(500, 800)
      		Sleep($rndnumber)
	     	Send("{Enter}")
		$rndnumber = Random(1500, 2300)
      		Sleep($rndnumber)
	     	Send("{Enter}")
	    	$rndnumber = Random(15000, 17000)
	    	Sleep($rndnumber)
	Endif
ENdfunc

While 1
	_errorcheck();
WEnd
Meinst du sowas? Wenn du n Error hast merkt er es und loggt sich wieder ein.
Muss du dann halt überall da reinsetzen wo du den Test haben willst.
02/02/2008 20:01 Gabba2#3
Ähm ja er macht die Folge des errorchecks immer also egal ob der Pixel da war oder nicht. ( ich rede hier von der von mir geposteten Version)
Deine probiere ich dann gleich mal aus und, dass es dir bekannt vorkommt ich sag ja größtenteils kopiert^^
Ich wollte das dann bei deinem HFFF Script zwischen die Quest und die Reward Func setzen ein mal pro Run langt denke ich.

Und was er machen sollte ist: Wenn man nen Error kriegt landet man ja aufm Charakter Auswahl Screen. Da soll er dann den durch TexMod veränderten Pixel finden, Escape drücken wenn der Pixel da war damit er in den Einlog Screen kommt da dann PW eingeben einloggen und von da an halt normal weiter laufen.
02/02/2008 20:24 MasteR GunneR#4
Dann sollte das genau das sein was du suchst. Musst halt nur noch nach dem Einloggen die Fenster die du brauchst öffnen, das musst dir dann nochmal selber anschaun und einfügen.
02/02/2008 20:39 Gabba2#5
Jo thx grade getestet funtzt genauso wies soll.
Den rest habe ich alles schon wollt halt nur nich zuviel von dem Script hier posten vielen Dank für die Hilfe.
Wie sähe es denn aus wenn man noch ne Funktion einbauen wollen würde die nach kp 2 Fehlversuchen oder so ne std. Pause macht und dann nochmal die Versuche startet?
Das währe dann bei längeren Verbindungsabbrüchen ja sinnvoll.
(i weiss, dass ich nerv aber i hab ums verrecken nix in der Hilfe Datei von AutoIT dazu gefunden)
02/02/2008 21:08 MasteR GunneR#6
Müsste dann so aussehen, kannst ja mal testen:
Code:
Global $password = InputBox("Password", "Please tipe your password in the box below!" , "Insert here!")
Global $mousespeed = 2

Func _errorcheck()
$errorcheck = Hex(PixelGetColor(498, 12),6)
$counter = 0
$countercheck = 2
	If $errorcheck <> "FFCC00" And $counter <> $countercheck Then
		Sleep(200)
	ElseIf $errorcheck = "FFCC00" And $counter <> $countercheck Then
		$counter = $counter + 1
		$rndnumber = Random(200, 400)
		Sleep($rndnumber)
		Sleep(200)
		$rndnumber = Random(4500, 5000)
		Sleep($rndnumber)	
		Send("{Escape}")
		$rndnumber = Random(400, 500)
		Sleep($rndnumber)
		Send("{Escape}")
		$rndnumber = Random(3400, 4500)
	       	Sleep($rndnumber)
		MouseClick("left", Random(211, 461), Random(329, 338), 1, $mousespeed)
		$rndnumber = Random(400, 500)
		Sleep($rndnumber)
		Send("{Backspace down}")
		$rndnumber = Random(2700, 3500)
		Sleep($rndnumber)
	    	Send("{Backspace Up}")
		$rndnumber = Random(400, 500)
	       	Sleep($rndnumber)
		Send($password, 1)
	      	$rndnumber = Random(500, 800)
      		Sleep($rndnumber)
	     	Send("{Enter}")
		$rndnumber = Random(1500, 2300)
      		Sleep($rndnumber)
	     	Send("{Enter}")
	    	$rndnumber = Random(15000, 17000)
	    	Sleep($rndnumber)
		_errorcheck();
	ElseIf $counter = $countercheck Then	
 		$counter = $counter - 2
		Sleep(3600000)
		_errorcheck();
	Endif
ENdfunc

While 1
	_errorcheck();
WEnd
02/03/2008 20:34 Atheuz#7
Man kann auch über AutoIT einfach über eine adresse auslesen ob ein Fehler angezeigt wird oder nicht. Bzw nach Strings suchen.