Frage zu PixelCheckSum

12/18/2008 16:52 aLasca#1
Hi Leute,

Ich habe ein Problem, unzwar wollte ich mit PixelCheckSum die Spawnpunkte im Lutgardis Wintergarten überprüfen lassen, da ich mit PixelCheckSum gerade erst anfange habe ich mal ein eine Art Testscript gemacht, bei dem ich immer die gleiche antwort bekomme.. 'nö'

Quote:
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
WinWait("Guild Wars","")
If Not WinActive("Guild Wars","") Then WinActivate("Guild Wars","")
WinWaitActive("Guild Wars","")
Sleep(5000)

Global $kurzick = 1530081671
$spawnpoint = PixelCheckSum(392, 23, 612, 39)

func spawnpoint()

$spawnpoint = PixelCheckSum(392, 23, 612, 39)

If $spawnpoint = $kurzick Then

MsgBox(0, "Jo", "Jo")

Else

MsgBox(0, "Nö", "Nö")

EndIf
EndFunc

spawnpoint()
Weiß jemand woran es liegt?
12/18/2008 17:09 Hokler#2
Nimm diese Funktion hatt bei mir super hingehauen =)

PHP Code:
func WayoutWahl()
    
Send ("v")
    
Sleep (2000)
    
$target PixelChecksum(48231,77450)
    
select
        
case $target == 2459110228 ;Torhüter
            wayout1
()
        case 
$target == 2830194190 ;Bei Fertigkeits Händler
            wayout2
()
        case 
$target == 81563287 ;Bei Gefolgsleuten
            wayout3
()
        case Else
            
MsgBox (16"NPC-PIXEL-ERROR""Pixel Neu Checken ")
    
EndSelect
EndFunc 
die Cheksums sind auch shcon von Lutgardis
braúchst die Auflösung 1280x1024
und interface auf Größer

/edit: Zu deinem Problem : Von welchen bereich nimmst du die cheksums ???
12/18/2008 17:26 aLasca#3
Obere linke ecke rot vom npc namen und untere ecke rechts rot vom npc namen.. mir ist allerdings aufgefallen das ich mich bei einer koordinate vertippt habe und dadurch die Checksum im grauen lag / jede runde anders war^^
12/18/2008 19:21 NBA#4
Da eh schon ein Thread dazu da ist: Von wo bis wo muss ich eigentlich das rechteck ziehen(pixelchecksum) damit diese immer gleich bleibt?
12/18/2008 19:47 Read Me#5
Alles im roten Bereich ist fest, der schwarze Rand rings herum ist immer anders->also Vorsicht^^
12/18/2008 19:52 NBA#6
Gilt das auch für Ortschilder?
12/18/2008 20:19 | Moep |#7
Quote:
Originally Posted by NBA View Post
Gilt das auch für Ortschilder?
Nein! Da sich bei der Auswahl eines Schildes der Hintergrund der Zielanzeige Schwarz färbt. Diesr Hintergrund ist jedoch leicht Transparent, daher ergeben sich jedesmal andere Werte.
12/18/2008 20:28 aLasca#8
Also ursprüngliches Problem ist geklärt... nun habe ich ein anderes Problem.. nämlich wird das W Down / R irgendwie am anfang aufgerufen.. das heißt er macht nicht wirklich das was er soll - wenn ich nun aber _bossway() entferne geht alles wieder.. Weiß da jemand woran das liegt?

Hier mein Code:
Quote:
#cs ----------------------------------------------------------------------------

AutoIt Version: 3.2.12.1
Author: myName

Script Function:
Template AutoIt script.

#ce ----------------------------------------------------------------------------
;-Settings
; Script Start - Add your code below heres
Global $eve = 837645776
Global $kurzick = 721397200
Global $tor = 314364460

$spawnpoint = PixelCheckSum(392, 23, 612, 39)
;-Start Sleep Zeiten
Global $s0 = 350
Global $s1 = 1000
Global $s2 = 2000
Global $s3 = 3000
Global $s4 = 4000
Global $s5 = 5000
Global $s7 = 7000
Global $s8 = 8000
Global $s9 = 9000
Global $s10 = 10000
Global $s11 = 11000
Global $s15 = 15000
Global $s20 = 20000
;-Ende Sleep Zeiten

;-Ende Settings
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
WinWait("Guild Wars","")
If Not WinActive("Guild Wars","") Then WinActivate("Guild Wars","")
WinWaitActive("Guild Wars","")
Sleep(5000)

;- START HOTKEY mit F8 beendet ihr das Script
hotkeyset("{F8}", "end")

func end()
Exit
EndFunc
;- ENDE HOTKEY mit F8 beendet ihr das Script

;-Start Functionen RandomSleep
func RandomSleep($min, $max)
$time = Random($min, $max)
Sleep($time)
endfunc
;-Ende Functionen RandomSleep

;------------------------------------Start Mainscript-----------------------------------

;-Start Spawnscript Func Check
$spawnpoint = PixelCheckSum(394, 24, 610, 34)

Func _spawnpoint() ;-Wayout Pixelchecksum

Send("{v}")

$spawnpoint = PixelCheckSum(394, 24, 610, 34)

If $spawnpoint = $kurzick Then ;-Kurzick Bürokrat [Belohnungen]

Sleep($s1)

Send("{r}")
Sleep(3800)
Send("{r}")
Send("{a down}")
Sleep(600)
Send("{a up}")
Send("{r}")
Sleep($s5)
Send("{r}")
Send("{a down}")
Sleep(500)
Send("{a up}")
Send("{r}")
Sleep($s20)

Else

If $spawnpoint = $eve Then ;-Eve [Gefolgsfrau]

Sleep($s1)

Send("{q down}")
Sleep(3090)
Send("{q up}")
Sleep($s0)
Send("{r}")
Sleep(8700)
Send("{r}")
Sleep($s0)
Send("{a down}")
Sleep(700)
Send("{a up}")
Send("{r}")
Sleep($s2)
Send("{a down}")
Sleep(800)
Send("{a up}")
Sleep($s20)

Else

If $spawnpoint = $tor Then ;-Kurzick-Torhüter

Sleep($s1)

Send("{d down}")
Sleep(600)
Send("{d up}")
Sleep($s0)
Send("{r}")
Sleep($s3)
Send("{r}")
Send("{a down}")
Sleep(600)
Send("{a up}")
Send("{r}")
Sleep($s3)
Send("{d down}")
Sleep(700)
Send("{d up}")
Sleep(2000)
Send("{a down}")
Sleep(400)
Send("{a up}")
Sleep($s2)
Send("{d down}")
Sleep(400)
Send("{d up}")
Sleep($s15)


EndIf
Endif
EndIf
EndFunc



Func _bossway();- Bossway

Send("{r}")
Sleep(5000)
Send("{r}")
Endfunc

Do
Call("_spawnpoint")
Call("_bossway")
$j = 0
$j = $j + 1
Until $j = 999999999


;-Ende Spawnpunkt Script Check
12/18/2008 20:52 | Moep |#9
Quote:
Originally Posted by aLasca View Post
Also ursprüngliches Problem ist geklärt... nun habe ich ein anderes Problem.. nämlich wird das W Down / R irgendwie am anfang aufgerufen.. das heißt er macht nicht wirklich das was er soll - wenn ich nun aber _bossway() entferne geht alles wieder.. Weiß da jemand woran das liegt?

Hier mein Code:
1. Lass mal Tidy über dein Script laufen (Rechtsklick auf dass Script)

2. Wieso verschachtelst du soviele if...then...endif Anweisung? Machs doch einfach mit einer if...elseif...endif. Oder ganz einfacht mit select...case...endselect.

3. Wenn ich deiner Problembeschreibung folge, denke ich du hast die Falsche Checksum bzw die falschen Eckpunkte angegeben. Da er ja anscheidnend die Spawnfunktion überspringt. Falls dass nicht der Fall ist, dann setz ma zwischen dem "send v" und dem ersten check n sleep ein...
12/18/2008 21:08 aLasca#10
Checksums falsch angegeben hab ich nicht, da ja die _spawnpoint() alleinstehend funktioniert, nur das problem ist, das das Send("{r}")
von der 2. Func ausgeführt wird, zummindest hab ich das gefühl..

Rechtsklick -> Open/Compile/Run/Edit.. nix Tidy

:/edit, noch nie Elseif benutzt - wie würde das dann aussehen mal so als bsp?
12/18/2008 21:35 | Moep |#11
Quote:
Rechtsklick -> Open/Compile/Run/Edit.. nix Tidy
bei mir is der 6te von oben tidy, was für ne autoit version hast du?

Quote:
Checksums falsch angegeben hab ich nicht, da ja die _spawnpoint() alleinstehend funktioniert, nur das problem ist, das das Send("{r}")
von der 2. Func ausgeführt wird, zummindest hab ich das gefühl..
Schoma n "sleep(2000)" nach dem "send("{v}")" eingesezt?

Quote:
:/edit, noch nie Elseif benutzt - wie würde das dann aussehen mal so als bsp?
Nö, denn dann würd sich ja kein richtiger Lerneffekt bei dir einstellen ;)
Frag doch einfach mal die [Only registered and activated users can see links. Click Here To Register...].

kleiner tipp: "else" springt immer nur dann ein, wenn bei "if" bzw "elseif" der Ausdruck false ist.
12/18/2008 21:49 aLasca#12
Hab ich doch schon.. aber das ist komisch beziehungsweise unzureichend erklärt^^
Der Lerneffekt ist dann vorhanden, wenn mir auskommentiert wird was wo wie und warum wirkt^^ und das mit else wusst ich ^^ Autoit Version siehe Code: 3.2.12.1

und ich habe nach dem send v vorhin nachdem du das das erste mal sagtest ein Sleep($s2), also 2000 eingesetzt
12/18/2008 22:24 | Moep |#13
Quote:
Autoit Version siehe Code: 3.2.12.1
Hmm, mach ma aufn Desktop n Rechtsklick -> Neu -> AutoIt v3 Script. Auf dass nun erzeugte Script wieder n Rechtsklick, dann müsst da irgendwo Tidy zu Auswahl stehen... Falls nicht, kann ich dir da auch nicht weiterhelfen :confused:

Quote:
Hab ich doch schon.. aber das ist komisch beziehungsweise unzureichend erklärt^^
Der Lerneffekt ist dann vorhanden, wenn mir auskommentiert wird was wo wie und warum wirkt^^
Nagut, da ja bald Weinachten ist...

PHP Code:
$roll Random(161) ;Schreibt einen Zufallswert von 1 bis 6 in die Variabel $roll

If $roll 1 Then Falls die Variabel §roll den Wert 1 hat
    MsgBox
(0"Würfel""Du hast eine 1 gewürfelt")
    
ElseIf 
$roll 3 Then Falls die Variabel §roll den Wert 3 hat
    MsgBox
(0"Würfel""Du hast eine 3 gewürfelt")
    
ElseIf 
$roll 6 Then Falls die Variabel §roll den Wert 6 hat
    MsgBox
(0"Würfel""Du hast eine 6 gewürfelt")
    
Else ; 
Falls die Variabel §roll weder den Wert 1,3,6 hat
    MsgBox
(0"Würfel""Weder 1, 3 noch 6 gewürfelt")
EndIf 
Starten tust du so eine Anweisung immer mit dem "if", falls die expression dahinter falsch ist, gehts weiter.
In dem Fall wäre dass der "Elseif" Zweig, im Grunde hat er die gleichen Rechte wie der "if" Zweig, da er allerdings die Anweisung nicht initialisiert hat, bekommt er ein else davor verpasst.
Falls die expression dahinter nun immer noch Falsch sein sollte, springt dass Script wieder weiter zum nächsten Zweig, usw. Falls alle expressions false sind wird der "Else" Zweig ausgeführt.
Falls mehrere richtig sind, wird der erste richtige Zweig von oben ausgeführt.
Sobald eine expression true ist oder alle expressions false sind verlässt dass Script die Schleife und macht mit den darunterstehenden Srcipt weiter...
12/18/2008 23:06 aLasca#14
kann man Tidy zusätlich irgendwo laden? achja.. wäre auch interessant zu wissen was Tidy bewirkt, Google finde ich ncihts
12/18/2008 23:15 | Moep |#15
Schön dass ich dir helfen konnte.

Tidy extra laden, hmm... Sollte eigentlich in den Standart Autoit Paket, was man überall laden kann dabei sein. Hab mir mal ne Autoit Portabel Version gezogen, da wars nicht dabei. Bewirken tuts eigentlich nur, dass es dein Script eine "schönere" Struktur verpasst, so dass es leichter zu lesen ist. Sprich, es Schreibt alles groß was groß soll, setzt tabs und leerzeichen, zeigt syntaxfehler usw...
Durchsuch mal deinen PC nach "Tidy", sollte eigentlich irgendwo im Autoit bzw Scite Ordner liegen.