Wiedereinmal ein Problem mit einem Script

03/21/2008 01:32 Gabba2#1
Hallo,
Ich muss schon wieder nerfen. Und schon wieder wgn. einer soo simplen Sache, dass es mich selbst ärgert :mad:
Ich wollt den hfff Bot so umschreiben, dass er wenn er über die Map nicht den Ausgang findet er dann den nächsten Verbündeten anvisiert und dadurch rauskriegt wo er steht.
Soweit so gut aber ab einer bestimmten stelle macht er nich was er soll er macht das was er machen soll wenn er keinen der Verbündeten erkennt was aber nicht sein kann da die Checksumme stimmt das hab ich schon bestimmt 1 dutzend Mal nach geprüft. Warsch is n Wort falsch oder irg. so ein Driss ; /
Ich hoff auf eure Hilfe ich sitz an dem einfachen Kack schon (pls nich lachen^^) über 3std und es will mir einfach nicht gelingen.

Code:
; Das davor hab ich mal weggelassen werdet ihr denk ich nich brauchen wenn doch is das selbe wie beim MasteR GunneR bot.

        $run1 = Random(1, 20, 1) ; $run1 = Random(1, 25, 1) habs auf 20 gestellt damit ich erstmal nur die eine Variante ändern muss.
	$run2 = Random(1, 3, 1)
	
	$south = Hex(PixelGetColor(597, 338),6)
	$middle = Hex(PixelGetColor(570, 398),6)
	$north = Hex(PixelGetColor(570, 420),6)
	
	$southcheck = pixelchecksum(639,33,650,36)
	$middlecheck = pixelchecksum(639,33,650,36)
	$northcheck = pixelchecksum(639,33,650,36)
	
	$Eve = 843073034
        $Kurztor = 2235975402
	$Herzog = 414532701
	$lux = 1511866953
	$Kurz = 1511866953 ; muss geändert werden WERT IST FALSCH
	$Nika = 842221507


	Select
		Case $run1 < 21 
			Select
				Case $south = "FFFFFF"
						Send("{d down}")
						$rndnumber = Random(421, 424)
						Sleep($rndnumber)
						Send("{d up}")
						$rndnumber = Random(900, 1000)
						Sleep($rndnumber)						
						Send("{a down}")
						$rndnumber = Random(121, 124)
						Sleep($rndnumber)
						Send("{a up}")
						$rndnumber = Random(900, 1000)
						Sleep($rndnumber)	
						Send("{NUMPAD0}")
						$rndnumber = Random(200, 400)
						Sleep($rndnumber)						
						Send("{NUMPAD0}")
						$rndnumber = Random(200, 400)
						Sleep($rndnumber)
						Send("{Space}")
						$rndnumber = Random(7410, 7415)
						Sleep($rndnumber)	 
						Send("r")
						$rndnumber = Random(390, 400)
						Sleep($rndnumber)							
						Send("{a down}")
						$rndnumber = Random(101, 104)
						Sleep($rndnumber)
						Send("{a up}")
				Case $middle = "FFFFFF"
						Send("{a down}")
						$rndnumber = Random(1420, 1425)
						Sleep($rndnumber)
						Send("{a up}")
						$rndnumber = Random(900, 1000)
						Sleep($rndnumber)						
						Send("{d down}")
						$rndnumber = Random(400, 405)
						Sleep($rndnumber)
						Send("{d up}")
						$rndnumber = Random(900, 1000)
						Sleep($rndnumber)	
						Send("{NUMPAD0}")
						$rndnumber = Random(200, 400)
						Sleep($rndnumber)						
						Send("{NUMPAD0}")
						$rndnumber = Random(200, 400)
						Sleep($rndnumber)
						Send("{Space}")
						$rndnumber = Random(8000, 8225)
						Sleep($rndnumber)	
						Send("r")
				Case $north = "FFFFFF"
						Send("{a down}")
						$rndnumber = Random(1420, 1425)
						Sleep($rndnumber)
						Send("{a up}")
						$rndnumber = Random(900, 1000)
						Sleep($rndnumber)						
						Send("{d down}")
						$rndnumber = Random(300, 305)
						Sleep($rndnumber)
						Send("{d up}")
						$rndnumber = Random(900, 1000)
						Sleep($rndnumber)	
						Send("{NUMPAD0}")
						$rndnumber = Random(200, 400)
						Sleep($rndnumber)						
						Send("{NUMPAD0}")
						$rndnumber = Random(200, 400)
						Sleep($rndnumber)
						Send("{Space}")
						$rndnumber = Random(12200, 12225)
						Sleep($rndnumber)	
						Send("r")
						$rndnumber = Random(390, 400)
						Sleep($rndnumber)							
						Send("{d down}")
						$rndnumber = Random(121, 124)
						Sleep($rndnumber)
						Send("{d up}")
				Case $north <> "FFFFFF" And $middle <> "FFFFFF" And  $south <> "FFFFFF" 
						Send("{u}")	
						$rndnumber = Random(200, 400)      
						Sleep($rndnumber)
						Send("{v}")	
						$rndnumber = Random(2000, 3000)
						Sleep($rndnumber)  ; GENAU BIS HIER MACHT ER WAS ER SOLL danach geht er davon aus, dass er keinen der NPCs gefunden hat was aber nicht sein kann.
							select
								Case $southcheck = $kurztor Or $southcheck = $Herzog 
										Send("{d down}")
										$rndnumber = Random(421, 424)
										Sleep($rndnumber)
										Send("{d up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)						
										Send("{a down}")
										$rndnumber = Random(121, 124)
										Sleep($rndnumber)
										Send("{a up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)	
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)						
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)
										Send("{Space}")
										$rndnumber = Random(7410, 7415)
										Sleep($rndnumber)	 
										Send("r")
										$rndnumber = Random(390, 400)
										Sleep($rndnumber)							
										Send("{a down}")
										$rndnumber = Random(101, 104)
										Sleep($rndnumber)
										Send("{a up}")
							
								Case $middlecheck = $Lux   ; hier kommt noch  Kurzick Wächter hin	
										Send("{a down}")
										$rndnumber = Random(1420, 1425)
										Sleep($rndnumber)
										Send("{a up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)						
										Send("{d down}")
										$rndnumber = Random(400, 405)
										Sleep($rndnumber)
										Send("{d up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)	
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)						
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)
										Send("{Space}")
										$rndnumber = Random(8000, 8225)
										Sleep($rndnumber)	
										Send("r")
										
								Case $northcheck = $Eve Or $northcheck = $Nika 
										Send("{a down}")
										$rndnumber = Random(1420, 1425)
										Sleep($rndnumber)
										Send("{a up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)						
										Send("{d down}")
										$rndnumber = Random(300, 305)
										Sleep($rndnumber)
										Send("{d up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)	
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)						
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)
										Send("{Space}")
										$rndnumber = Random(12200, 12225)
										Sleep($rndnumber)	
										Send("r")
										$rndnumber = Random(390, 400)
										Sleep($rndnumber)							
										Send("{d down}")
										$rndnumber = Random(121, 124)
										Sleep($rndnumber)
										Send("{d up}")
								
								Case Else; 
										MouseClick("left", Random(1074, 1253), Random(232, 249), 1, $mousespeed)	
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)	
										Send("{Space}")
										$rndnumber = Random(15000, 15500)
										Sleep($rndnumber)
										MouseClick("left", Random(1074, 1253), Random(206, 225), 1, $mousespeed)
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)
										Send("{Space}")
										$rndnumber = Random(1200, 1300)
										Sleep($rndnumber)
										MouseClick("left", Random(1074, 1253), Random(232, 249), 1, $mousespeed)	
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)	
										Send("{Space}")
										$rndnumber = Random(1400, 1500)
										Sleep($rndnumber)	
										Send("{a down}")
										$rndnumber = Random(100, 110)
										Sleep($rndnumber)
										Send("{a up}")
										$rndnumber = Random(950, 1000)
										Sleep($rndnumber)
										Send("{d down}")
										$rndnumber = Random(100, 110)
										Sleep($rndnumber)
										Send("{d up}")
										$rndnumber = Random(900, 1000)
										Sleep($rndnumber)							
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)
										Send("{NUMPAD0}")
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)
										Send("{Space}")
										$rndnumber = Random(10000, 10010)
										Sleep($rndnumber)	
										Send("r")
										$rndnumber = Random(5, 10)
										Sleep($rndnumber)	
										Send("{a down}")
										$rndnumber = Random(998, 1008)
										Sleep($rndnumber)
										Send("{a up}")	
										$rndnumber = Random(1390, 1400)
										Sleep($rndnumber)
										Send("{a down}")
										$rndnumber = Random(100, 110)
										Sleep($rndnumber)
										Send("{a up}")	
							
							EndSelect			
				
			endselect		
						_travelcheck1kurzick();

; Danach kommt dann die andere Variante + das Ende der Func hab ich jetzt auch mal weggelassen.
Ich baue auf eure Hilfe vielen Dank schonmal.
03/21/2008 11:10 Azunai#2
ich wunder mich nur das du die ganze geschichte mit select/switch /case machst 0o

wäre es nicht viel einfacher es mit

if
elseif
elseif
elseif
else
end

zu machen???

ps: ich weiß nichteinmal ob man case so überhaupt mit erfolg nutzen kann xD
03/21/2008 11:35 MasteR GunneR#3
Ob man nun If-Abfragen nimmt oder das ganze mit select/case macht ist afaik eigentlich egal.
Kommt aufs selbe hinaus.
03/21/2008 12:13 Gabba2#4
Boa kp ob das geht oder nicht^^ da das Script die Stelle irg wie überspringt oder falsche Werte ausliest KP^^ Wer ne Idee wie ich rauskriegen könnt woran genau es liegt?^^ An den Werten ja eigentlich nicht da ich zig mal versucht hab ob sie noch stimmen.
Das mitm If kann i probieren obs was ändert thx schonmal.
03/21/2008 12:39 Jacob_G#5
bau am besten mal tooltip in die stelle ein wo du denkst das diese übersprungen wird
irgentwie so if @error then msgbox blalba if not @error then msgbox blabla
03/21/2008 12:40 Azunai#6
ich würd dir raten ein kleines gui fenster zu machen welches dann schön alles auflistet, also was wo passiert :D
03/21/2008 13:56 Gabba2#7
Hmm also mit ner Umstellung auf if hat leider nichts gebracht.
Ich poste nochmal ne kurz Form des Scripts vlt seht ihr ja doch den Fehler aufm ersten Blick. Im Script hab ich eig alle erklärungen was er machen soll und was er letzendlich macht.

Code:
Func _runkurzick()
	
	$south = Hex(PixelGetColor(597, 338),6)
	$middle = Hex(PixelGetColor(570, 398),6)
	$north = Hex(PixelGetColor(570, 420),6)
	
	$southcheck = pixelchecksum(639,33,650,36)
	$middlecheck = pixelchecksum(639,33,650,36)
	$northcheck = pixelchecksum(639,33,650,36)
	
	$Eve = 843073034
        $Kurztor = 2235975402
	$Herzog = 414532701
	$lux = 1511866953
	$Kurz = 2595767890 
	$Nika = 842221507

		Select
				; andere Select Möglichkeiten
				; ...
				Case $north <> "FFFFFF" And $middle <> "FFFFFF" And  $south <> "FFFFFF" ; Hier macht ers noch richtig sendet also U und V.
						Send("{u}")	
						$rndnumber = Random(200, 400)      
						Sleep($rndnumber)
						Send("{v}")	
						$rndnumber = Random(2000, 3000)
						Sleep($rndnumber)  ; GENAU BIS HIER MACHT ER WAS ER SOLL 
								if $southcheck = $kurztor Or $southcheck = $Herzog Then ; hier soll er ja für ne anvisierten Verbündeten ne Checksumme erstellen und abgleichen. 
										Send("{d down}"); Die Werte müssen stimmen da ich in nem kurzen SCript was nur zum testen der Werte da ist mit exact den selben Werten aufs richtige Ergebniss komme.
										;Hier macht er halt noch mehr tut aber nix zur Sache deswegen gekürzt.
							
								Elseif $middlecheck = $Lux Or $middlecheck = $Kurz	Then
										Send("{a down}")
										; ...
										
								Elseif  $northcheck = $Eve Or $northcheck = $Nika Then
										Send("{a down}")
										;...
										
								else    
										MouseClick("left", Random(1074, 1253), Random(232, 249), 1, $mousespeed)	
										$rndnumber = Random(200, 400)
										Sleep($rndnumber)	
										;... 
										; Das hier sollte er ja eigentlich nur machen wenn er bei dem If und den 2 ElseIf nichts gefunden hat oder? Er macht es aber immer.
										; Dies kann ich mir eig nur so vorstellen, dass entwededer die Werte falsch sind, was ich ausschliessen kann da es mitm andren Script funct
										; Oder, dass das Script n Fehler in der Überprüfung macht bzw es gar nüscht überprüft.
										
							
							Endif			
				
					
						_travelcheck1kurzick();
		
		EndSelect	
						
EndFunc
Er macht also immer die Else Variante ob er den NPC anvisiert hat oder nicht.
Also erkennt er irg wie die Checksumme nicht oder er überspringt den Abgleich der Checksumme einfach oO

Was das mit der GUI angeht mit GUIs kenn ich mich noch absolut 0 aus kp wie ich das machen soll :o





€: So hab das Prob jetzt gelöst. Ich hatte ja
Code:
$southcheck = pixelchecksum(639,33,650,36)
	$middlecheck = pixelchecksum(639,33,650,36)
	$northcheck = pixelchecksum(639,33,650,36)
	
	$Eve = 843073034
        $Kurztor = 2235975402
	$Herzog = 414532701
	$lux = 1511866953
	$Kurz = 2595767890 
	$Nika = 842221507

Und dem entsprechend dann auch
Elseif $middlecheck = $Lux Or $middlecheck = $Kurz	Then; etc.
Irg ging das so wie ichs gemacht hab nicht/Ich habs falsch gemacht/das Script hat sich dran verschluckt. Jetzt hab ich die Daten immer selbst eingetragen und es geht *GG* ty aber für alle Hilf Vorschläge :D