ControlClick

12/07/2008 02:07 aLasca#1
Hi Leute,

Also, ich wollte mal einen Bot schreiben der im Hintergrund läuft, sodass ich nebenbei auf einem anderen Account spielen kann. Nun habe ich folgendes Problem:

Quote:
While 1
Opt("SendKeyDownDelay", 15)
Opt("WinTitleMatchMode", 3)
ControlSend("Guild Wars", "", "", "{.}")
Sleep(1000)
ControlClick("Guild Wars", "", "", "left", 2, 200, 29)
Sleep(5000)

Wend
Die Idee war folgende: ich wollte den Bot ganz einfach alle Taschen des Inventars öffnen lassen und ihn dann per ControlClick wieder schließen lassen.
Dies soll für mich erstmal eine Art Übung sein, um später eine Sellfunc. drauß zu machen. Nun ist meine Frage.. Wieso passiert da nichts? Er öffnet nur das Inventar, schließt es aber nicht wieder :(
12/07/2008 02:27 kknb#2
Opt("SendKeyDownDelay", 15)

noch davor.

wenns denn nicht geht dann hab ich kein plan, am code liegts nicht, evtl noch koords falsch?!
12/07/2008 02:59 DaAlex#3
ganz einfach ControlClick funzt bei gw nicht:p
sonst wären ja bots die im hintergrund laufen zu einfach

EDIT: außerdem ist das nicht das falsche subforum?
12/07/2008 03:04 Trashy#4
Wenn du das Window während des Ausführen des Scriptes verkleinert hast, um eben zu sehen, ob sich das Inventar öffnet oder schließt, könnte es noch sein, dass die Koordinaten bei ControlClick vielleicht relativ behandelt werden.
Ansonsten sind diese aber bei Opt("CaretCoordMode", 0), also relativ, mit dem AutoIt Window Info auch nicht ganz stimmig, da dieser die Titelleiste bei "Coord Mode -> Window" noch dazuberechnet, was ControlClick bekanntlich nicht tut.
Habe denselben Code auch noch einmal bei maximiertem Window getestet, und
Code:
Opt("SendKeyDownDelay", 15)
Opt("WinTitleMatchMode", 3)
WinActivate("Guild Wars")
Sleep(5000)
While 1
ControlSend("Guild Wars", "", "", "i")
Sleep(6000)
ControlClick("Guild Wars", "", "", "left", 1, 134, 10)
Sleep(5000)
WEnd
funktioniert soweit eigentlich.
12/07/2008 06:49 DaAlex#5
ja du kannst aber mit controlclick in guild wars wenig machen(ident funktioniert nicht etc..)
außerdem funktioniert controlclick nicht in einem minimierten fenster
12/07/2008 10:31 blauwiggle#6
Quote:
Originally Posted by DaAlex View Post
ja du kannst aber mit controlclick in guild wars wenig machen(ident funktioniert nicht etc..)
außerdem funktioniert controlclick nicht in einem minimierten fenster
falsch ;)
12/07/2008 11:54 aLasca#7
Also, es gibt immernoch nicht wirklich, zeitweise hat es aber schon geklappt

Quote:
While 2
Opt("SendKeyDownDelay", 15)
Opt("WinTitleMatchMode", 3)
sleep(500)
ControlSend("Guild Wars", "", "", "{enter}")
Sleep(500)
ControlSend("Guild Wars", "","", "{up}")
sleep(500)
ControlSend("Guild Wars", "", "", "{enter}")
sleep(4500)
ControlClick ("Guild Wars","","","left", 1, 316, 256 ) ;zum Außenposten
sleep(9000)
Wend
Bitte nicht lachen, ich bekomme mit Controlsend irgendwie keine resignfunc hin, also dachte ich mir lass ich ihn einfach einmal nach oben drücken^^
Naja trotzdem klickt er nicht dahin wo er hinklicken soll, also sprich auf 'Zurück zum Außenposten'. Kann da jemand helfen?

€: Einzeln geht der Code, aber wenn ich ihn in den anderen einfüge, also sprich nach dem Fightscript, will das ganze nicht mehr funktionieren
12/07/2008 14:02 blauwiggle#8
Quote:
Originally Posted by aLasca View Post
Also, es gibt immernoch nicht wirklich, zeitweise hat es aber schon geklappt



Bitte nicht lachen, ich bekomme mit Controlsend irgendwie keine resignfunc hin, also dachte ich mir lass ich ihn einfach einmal nach oben drücken^^
Naja trotzdem klickt er nicht dahin wo er hinklicken soll, also sprich auf 'Zurück zum Außenposten'. Kann da jemand helfen?

€: Einzeln geht der Code, aber wenn ich ihn in den anderen einfüge, also sprich nach dem Fightscript, will das ganze nicht mehr funktionieren
Wieso sollte man lachen? Ich freu mich, dass ich vermutlich nicht der einzige bin, der auf die Idee gekommen ist und sie schon längers einsetzt ^^

Ich würd dir ja gerne die Lösung verraten, aber mach doch folgendes. Schau dir das AutoIT Info Tool genauers an.
12/07/2008 14:13 aLasca#9
Gut, Problem habe ich gelöst :) Nun bin ich soweit, das er den Boss killt und solch spielerein, da sich meine GH nicht eignet, lasse ich ihn zum verkaufen nach Ran Musu Gärten reisen, verkaufen klappt gut - das identifizieren nicht

Quote:
;-Start Identification Click Script
ControlClick("Guild Wars", "", "","left", 2, 40, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 35, 78) ;-Reihe 1 Platz 1
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 40, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 76, 82) ;-Reihe 1 Platz 2
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 40, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 115, 79) ;-Reihe 1 Platz 3
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 40, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 158, 80) ;-Reihe 1 Platz 4
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 40, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 200, 80) ;-Reihe 1 Platz 5
Sleep(1000)
ControlClick("Guild Wars", "", "","left", 2, 82, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 37, 129) ;Reihe 2 Platz 1
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 82, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 79, 129) ;Reihe 2 Platz 2
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 82, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 118, 129) ;Reihe 2 Platz 3
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 82, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 159 , 129) ;Reihe 2 Platz 4
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 82, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 200 , 129) ;Reihe 2 Platz 5
Sleep(1000)
ControlClick("Guild Wars", "", "","left", 2, 124, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 37, 181) ;Reihe 3 Platz 1
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 124, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 79, 181) ;Reihe 3 Platz 2
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 124, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 118, 181) ;Reihe 3 Platz 3
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 124, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 159 , 181) ;Reihe 3 Platz 4
Sleep(500)
ControlClick("Guild Wars", "", "","left", 2, 124, 381)
Sleep(500)
ControlClick("Guild Wars", "", "","left", 1, 200 , 181) ;Reihe 3 Platz 5
;-Ende Identification Click Script
Irgendwie habe ich das Gefühl, das zwar der Mausklick auf den Slot geht, aber das Identkit nicht 'triggert', sprich das das Item nicht identifiziert wird da der sichtbare Mauszeiger nicht über dem Slot ist, gibt es dafür eine Lösung?
12/07/2008 14:43 i4mSoH34Vy#10
Das Problem hatten schon einige hier im Forum.Man kann es über die user32 identifizieren.
12/07/2008 14:45 Term!nX#11
Quote:
Originally Posted by j199207 View Post
Das Problem hatten schon einige hier im Forum.Man kann es über die user32 identifizieren.
Könntest du mir bitte einen link zu einem entsprechenden Thread schicken, bzw. das Problem hier näher erläutern? Meinst du, dass man für Identkit WinAPI Funktionen braucht?

Thx
12/07/2008 14:46 aLasca#12
Wie meinst du über die user32? mit Memorys kenn ich mich nicht aus :/
12/07/2008 15:07 i4mSoH34Vy#13
Vielleicht hilft euch der Thread.
[Only registered and activated users can see links. Click Here To Register...]
200 = Move
201 = MouseDown
202 = MouseUp
12/07/2008 15:32 aLasca#14
Hilft mir nicht wirklich, sowie viele anderen auch hab ich mitm runterladen, "GEHTNICHT!", umschreiben angefangen, das heißt das mir dieses ganze zeugs mit $hWnd und so nix sagt, und wenn man googelt bzw. F1 drückt versteht man das mit nem schlechten english nicht wirklich^^
12/07/2008 15:34 emtec22#15
Controlsend kommt zu 100 % in gw an wenn man es richtig macht