Frage zu pixelchecksum

10/04/2010 17:18 h0fi00#1
Hallo zusammen

Es geht um einen kleinen Bot für ein Online game.
Er klickt dabei auf einen Stein, um Erze abzubauen. Danach soll er checken, ob eins im Inventar ist. Wenn ja dann soll er zur nächsten Funktion. Wenn nicht, dann soll er an Anfang zurück. (Hab die Stelle rot markiert!)
Aber irgend etwas geht nicht.
Hier mal den Code:

Code:
Func abbau()
	While 1
		$eisen = PixelSearch(579, 263, 1094, 597, 0x4E342B)
		If IsArray($eisen) = True Then
			MouseClick("left", $eisen[0], $eisen[1])
			Sleep (Random (3000, 500))

			$check = PixelChecksum (1127,468, 1169,499)
			While $check = PixelChecksum (1127,468, 1169,499)
				Sleep (200)
				WEnd
			If $check = True Then
				drop()

				ElseIf $check = False Then [COLOR="Red"];wenn nach ... Zeit noch nichts da ist, soll er zur func abbau gehen.[/COLOR]
				abbau()
		EndIf
	EndIf
WEnd
EndFunc   ;==>abbau
ich hoffe ihr könnt mir helfen.

Gruss H0fi00
10/04/2010 17:33 BlackHybrid#2
Ich würde mal sagen du musst die Func abbau erstmal beenden bevor du sie erneut öffnen kannst. Ansonsten poste mal alles oner schick es mir mal wenn du nicht willst ich kann ja mal drüber kuggen weil is so schwer zu sagen

ElseIf $check = False Then
abbau()
Return
10/04/2010 17:37 omer36#3
bin mir nicht ganz sicher, aber vllt gehts ja so:

PHP Code:

Func abbau
()
    
Local $zeit
    $zeit 
TimerInit()
    While 
1
        $eisen 
PixelSearch(57926310945970x4E342B)
        If 
IsArray($eisen) = True Then
            MouseClick
("left"$eisen[0], $eisen[1])
            
Sleep(Random(3000500))

            
$check PixelChecksum(11274681169499)
            While 
$check PixelChecksum(11274681169499)
                
Sleep(200)
            
WEnd
            
If $check True Then
                drop
()
            Else
                If 
TimerDiff($zeit) >= 60000 Then ;zb nach 1min.
                    
abbau()
                EndIf
            EndIf
        EndIf
    
WEnd
EndFunc   
;==>abbau 
10/04/2010 17:52 lolkop#4
$check beinhaltet doch die pixel checksumme. wie kann denn check true oder false sein?
10/04/2010 17:57 BlackHybrid#5
Man kann dafür auch auch True und False benutzen probiers doch aus ;)

$checksum = PixelChecksum(0,0, 50,50)

While $checksum = PixelChecksum(0,0, 50, 50)
Sleep(100)
WEnd
if $checksum = true then
MsgBox(0, "", $checksum)
endif
10/04/2010 18:23 h0fi00#6
also ich habs jetzt mal so gemacht:

Code:
Func abbau()
	While 1
		$eisen = PixelSearch(579, 263, 1094, 597, 0x4E342B)
		If IsArray($eisen) = True Then
			MouseClick("left", $eisen[0], $eisen[1])
		abbau2()

	EndIf
WEnd
EndFunc   ;==>abbau

Func abbau2()
	 Local $zeit
    $zeit = TimerInit()
	$check = PixelChecksum (1127,468, 1169,499)
			While $check = PixelChecksum (1127,468, 1169,499)
				Sleep (200)
				WEnd
			If $check = True Then
				drop()
			Else

				If TimerDiff($zeit) >= 5000 Then
                    abbau()
				EndIf
				EndIf
		EndFunc
leider gehts immer noch nicht, weiss echt ned wieso :confused:
10/04/2010 21:57 BlackHybrid#7
Wie gesagt schicks mir mal per PN dann kann ich mal drüber kuggen weil mir bringt das jetzt auch nicht viel wenn ich des script net mal laufen lassen kann.
10/04/2010 22:11 omer36#8
Quote:
Originally Posted by BlackHybrid View Post
Wie gesagt schicks mir mal per PN dann kann ich mal drüber kuggen weil mir bringt das jetzt auch nicht viel wenn ich des script net mal laufen lassen kann.
mehr brauchst du doch eig, garnicht...

versuchs mal so: , und was genau geht den nciht?
PHP Code:
Func abbau()
    
Local $zeit
    $zeit 
TimerInit()
    While 
1
        $eisen 
PixelSearch(57926310945970x4E342B)
        If 
IsArray($eisen) = True Then
            MouseClick
("left"$eisen[0], $eisen[1])
            
Sleep(Random(3000500))
            If 
TimerDiff($zeit) >= 10000 Then
                abbau
()
            EndIf
            
$check PixelChecksum(11274681169499)
            While 
$check PixelChecksum(11274681169499)
                
Sleep(200)
            
WEnd
            drop
()
        EndIf
    
WEnd
EndFunc   
;==>abbau 
10/04/2010 23:36 lolkop#9
Quote:
Originally Posted by BlackHybrid View Post
Man kann dafür auch auch True und False benutzen probiers doch aus ;)

$checksum = PixelChecksum(0,0, 50,50)

While $checksum = PixelChecksum(0,0, 50, 50)
Sleep(100)
WEnd
if $checksum = true then
MsgBox(0, "", $checksum)
endif
das is leider nicht richtig. bei autoit ist alles was ungleich 0 (False) ist automatisch true. aber eine pixelchecksumme kann allgemein nur 0 sein, wenn alle pixel im bereich der checksumme schwarz sind. und selbst wenn das der fall ist frage ich doch nicht ob die checksumme der pixel wahr ist, sondern ich frage ob sie 0 ist oder nicht -.-