[Hilfe] Log In Script

07/28/2009 01:06 flexis#1
Hey

Ja nochmal ich ^^

Wollte fragen ob sich jemand mal dieses script angucken kann und mir sagen kann warum das ab nem gewissen punkt nicht das macht was es soll ...

Hab alles mögliche probiert schon seit 4std -_-

Weiß nicht mehr was ich machen soll =X

Code:
Global $Paused
HotKeySet("{F9}", "Pause") 
HotKeySet("{F12}", "Terminate")
;Hotkeys werden festgelegt

$Login = IniRead(@ScriptDir & "/Settings.ini","Account","Login","Default")
$Pass = IniRead(@ScriptDir & "/Settings.ini","Account","Password","Default")
;Ini File wird ausgelesen und als Variable festgelegt

Send("{F9}") ;Script wird gestoppt

While 1
Run("C:\Programme\silkroad\silkroad.exe")
Sleep(1000)
Run("C:\Dokumente und Einstellungen\****\Desktop\SibiPrecincts2\SibiPrecincts.exe")
WinActivate("SibiPrecincts")
ExitLoop
WEnd
;Silkroad und SibiBot werden gestartet

Sleep(100)
WinActivate("SibiPrecincts ToMBaLaCi46 Beta")
WinWaitActive("SibiPrecincts ToMBaLaCi46 Beta")

Sleep(100)
While 1
	If PixelGetColor(832,485)=0xB4B4B4 Then
		Sleep(100)
       MouseClick("left", 838, 470, 1, 0)
ExitLoop
EndIf
WEnd
;SibiBot wird auf Bereitschaft überprüft und gestartet

Sleep(100)
WinActivate("Silkroad Online Launcher")
WinWaitActive("Silkroad Online Launcher")

While 1
	If PixelGetColor(837, 639) = 0x978359 Then
		Sleep(100)
       MouseClick("left", 837, 639, 1, 0)
ExitLoop
EndIf
WEnd
;Silkroad Launcher wird aktiviert und auf aktivität überprüft - Start Button wird geklickt

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~ Ab hier passiert nichts mehr ~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sleep(5000)

WinActivate("sro_client")
WinWaitActive("sro_client")

While 1
sleep(100)
If PixelGetColor(796, 412) = 0xC09A5F Then
Sleep(100)
MouseClick("left", 830, 473, 20, 0)  
ExitLoop
EndIf
WEnd
;Silkroad Ladebildschirm wird weggeklickt

Sleep(100)

While 1
sleep(100)
If PixelGetColor(521,519) = 0x424231 Then
Sleep(100)
MouseClick("left", 674, 551, 5, 0)
	Send($Login)
	Sleep(100)
	Send("{Tab}")
	Sleep(100)
	Send($Pass)
	Sleep(100)
	Send("{ENTER}")
ExitLoop
EndIf
WEnd
;Login Fenster wird überprüft; Daten werden eingegeben; Enter Taste wird gedrückt

Sleep(1000)

While 1
If PixelGetColor(1235,934)=0xFFFFFF Then
	Sleep(100)
	MsgBox(0, "Login", "Log In erfolgreich!")
EndIf
ExitLoop
WEnd
;Überprüfung auf erfolgreichen Login

While 1
If PixelGetColor(9,931)=0xFF671D Then
	Sleep(100)
	MsgBox(0, "Fehler", "Falsche Log In Daten!")
	Sleep(3000)
	ProcessClose("sro_client.exe")
	Sleep(100)
	ProcessClose("sibiprecincts.exe")
	Sleep(1000)	
	Exit
EndIf
ExitLoop
WEnd
;Login Daten werden ausgewertet; Beendung bei falschen Daten


;;;;;;;;;;;;;;Funktionen;;;;;;;;;;;;;;;


;Pause
Func Pause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is Paused',0,0)
    WEnd
	ToolTip("")
EndFunc			

;Beenden
Func Terminate()
    Exit 0
EndFunc


******Edit*******

Ok... ich habs jz mit Controls erweitert aber mein Problem ist, das ich das Au3 Info Tool keine Informationen anzeigt wenn das spiel gestartet ist...
Also keine ID´s und Classnames usw...
nur die Infos unter >>>Mouse<<< werden angezeigt und bei Handle

Was kann ich tun? =/
07/28/2009 18:27 | Moep |#2
Die IDs bekommste nicht so einfach mitn info tool raus.
Entweder du arbeitest mit pixeln, oder mit memorys.
Für den anfang würd ich dir aber die pixel variante empfehlen. Schau dir dazu Befehle wie pixegetcolor oder pixelsearch in der au3 hilfe an.
07/28/2009 20:06 flexis#3
ja das mit den pixel zeug habsch schon gemacht... funktioniert aber plotzlich nicht mehr

Wenn ich dieses Script starte und dann Silkroad manuell starte kommt eine msg box

Code:
While 1
If Pixelgetcolor(695, 510) = 0x3F3B05 Then
		MsgBox(0, " ", "hier klappts -_-")
ExitLoop
EndIf
WEnd




Wenn ich jedoch das script hier starte mit genau dem gleichen drin nur noch mit dem start automatisch, kommt keine msg box =(

Code:
Global $Paused
HotKeySet("{F9}", "Pause") 
HotKeySet("{F12}", "Terminate")
;Hotkeys werden festgelegt

$Login = IniRead(@ScriptDir & "/Settings.ini","Account","Login","Default")
$Pass = IniRead(@ScriptDir & "/Settings.ini","Account","Password","Default")
$hwnd1 = "Silkroad Online Launcher"
$hwnd2 = "sro_client"
$hwnd3 = "SibiPrecincts ToMBaLaCi46 Beta"
$click1 = MouseClick("left")
$psearch1 = PixelSearch(1, 1, 1, 1, 0xFFFFFF)
;Variablen

Send("{F9}") ;Script wird gestoppt

While 1
Run("C:\Programme\silkroad\silkroad.exe")
Sleep(50)
Run("C:\Dokumente und Einstellungen\Alex\Desktop\SibiPrecincts2\SibiPrecincts.exe")
ExitLoop
WEnd
;Silkroad und SibiBot werden gestartet

Sleep(100)
ControlClick($hwnd3, "Login", "TButton2") 
;SibiBot wird auf Bereitschaft überprüft und gestartet

Sleep(100)

ControlClick($hwnd1, "", "[ID:1000]") 
Sleep(50)
ControlClick($hwnd1, "", "[ID:1002]") 
;Silkroad Launcher wird aktiviert und auf aktivität überprüft - Start Button wird geklickt

Sleep(500)

WinActivate("sro_client")
WinWaitActive("sro_client")

[COLOR="Red"]While 1
If Pixelgetcolor(695, 510) = 0x3F3B05 Then
		MsgBox(0, " ", "hier klappts nicht -_-")
ExitLoop
EndIf
WEnd[/COLOR]
;Silkroad Ladebildschirm wird weggeklickt
warum????
07/28/2009 20:52 | Moep |#4
hmm... würd dafür ne do until schleife nehmen.
diese soll solange nach der farbe schauen bis sie richtig ist...
07/28/2009 20:58 flexis#5
klappt auch nicht mit der until schleife ^^

und auch das erklärt nicht warum das obere geklappt hat und das untere nicht

ich hasse fehlersuche

>_<
07/28/2009 21:03 | Moep |#6
schick mal deine do until schleife pls

Edit: Fehlersuche ist das beste am proggen...
07/31/2009 12:03 flexis#7
ich weiß jz was los ist ^^
keine ahnung wie ich das lösen kann aber immer
wenn das script silkroad und sibi startet ist das sro_client fenster zwar offen und aktiv, das script aber beobachtet anscheinen nicht die pixel in dem silkroad fenster sondern vom desktop
>_<

hab alles probiert... reinstallieren mit winactivate usw... nichts klappt
-_-

ich weiß nicht was los ist...


(PS: selbst die einfachsten aufgaben löst das script dann nicht mehr, da es ja anscheinen nicht das sro_client fenster beobachtet)

Was kann man da tun?
08/03/2009 17:08 Xereon#8
In den Helpfile gucken:
Quote:
hwnd [optional] Window handle to be used.
Dh. du besorgst dir zuerst den Handle von Silkroad:
Code:
$hwnd = WinGetHandle("Silkroad")
Und dann benutzt du halt:
Code:
PixelGetColor(342,576,$hwnd)
(Die Werte waren frei erfunden)
08/03/2009 18:18 | Moep |#9
schreib in dein script oben das hin:
Opt("CaretCoordMode", 2)
Opt("MouseCoordMode", 2)

dann stell in deinem window info tool Options > Coord Mode > Client ein und such die coords neu.

Wenns funktioniert hat, dann schau in die Hilfe und sag mir warum...^^
08/03/2009 18:29 Xereon#10
Quote:
Originally Posted by | Moep | View Post
schreib in dein script oben das hin:
Opt("CaretCoordMode", 2)
Opt("MouseCoordMode", 2)

dann stell in deinem window info tool Options > Coord Mode > Client ein und such die coords neu.

Wenns funktioniert hat, dann schau in die Hilfe und sag mir warum...^^
Das ändert jedoch nur wie die Koordinaten interpretiert werden, nicht die Farben.