probleme beim login in browsergame

04/03/2011 02:45 deepware#1
hi,
ich hab probleme mich beim browsergame darkorbit einzuloggen,
das heisst ich logg mich zwar ein aber die serverauswahl funzt nicht.
ich probiere das jetzt schon ca. 3 wochen hintereinander aus.
ich hoffe das mir jemand weiterhelfen kann !
der letzte stand des codes sieht so aus:

Code:
#include <IE.au3>
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <String.au3>







Dim $username=InputBox("username", "gib bitte deinen Usernamen ein:")
Dim $passwort=InputBox("password", "gib bitte dein Password ein:")
Dim $servername=InputBox("server", "gib bitte deinen Server ein:")  ;z.B.  Deutschland, Deutschland 3


$oIE= _IECreateEmbedded()
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 625, 445, 255, 218)
$h_object = GUICtrlCreateObj($oIE,0,0,625,445)
GuiCtrlSetResizing($h_object,$GUI_DOCKAUTO)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_IENavigate($oIE,"http://www.darkorbit.de/")
$oquerry=_IEGetObjById($oIE,"loginForm_default")

$oquerry2 = _IEFormElementGetObjByName($oquerry, "loginForm_default_username") ; inputfeld Name
_IEFormElementSetValue($oquerry2, $username )

$oquerry3 = _IEFormElementGetObjByName($oquerry, "loginForm_default_password") ;inputfeld Passwort
_IEFormElementSetValue($oquerry3, $passwort)


_IEFormSubmit($oquerry)
_IELoadWait($oIE)

;diesen teil verstehe ich nur halbwegs und hab den eigentlich kopiert und meinen bedürfnissen angepasst leider logt er sich nicht auf dem server ein

$s_readhtml=_IEBodyReadHTML($oIE)
$a_splithtml=_StringBetween($s_readhtml, '<div id="instanceSelectionBox">','<div id="chooseInstanceFooter">Hast Du Fragen oder Probleme?<br>Wende Dich bitte an unseren <a href="index.es?action=support" target="_blank">Support</a>!</div>')
if @error Then
    MsgBox(64,"Info","Konnte Seite nicht einlesen")
    _IEQuit($oIE)
    Exit
EndIf
$a_splitserveractive=_StringBetween($a_splithtml[0],'class="instanceRow existingInstance"',' class="play"')
if @error Then
    MsgBox(64,"Info","Fehler beim Laden der Server")
    _IEQuit($oIE)
    Exit
EndIf
$a_splitserverainactive=_StringBetween($a_splithtml[0],'class="instanceRow newInstance"',' class="play"')
if @error Then
    MsgBox(64,"Info","Fehler beim Laden der Server")
    _IEQuit($oIE)
    Exit
EndIf
_ArrayConcatenate($a_splitserveractive,$a_splitserverainactive)

for $i=0 to UBound($a_splitserveractive)-1
$search=StringInStr($a_splitserveractive[$i],$servername)
if $search<>0 then ExitLoop
Next
if $search=0 Then
        MsgBox(64,"Info","Server nicht gefunden")
        _IEQuit($oIE)
        Exit
    EndIf
;;;~ MsgBox(64,"",$search)
;;;~ _ArrayDisplay($a_splitserveractive)
;;;~ MsgBox(64,$search,$a_splitserveractive[$i])
$a_loginlink=_StringBetween($a_splitserveractive[$i],'onclick="','">')
$a_loginlink=StringReplace($a_loginlink[0],"ref_sid","")
;;;~ MsgBox(64,"",$a_loginlink)
_IENavigate($oIE,$a_loginlink);eingeloggt
$server=_StringBetween($a_loginlink,'http://','.darkorbit')
$server="'http://"&$server[0]&".darkorbit.bigpoint.com/.*?')"
_IENavigate($oIE,$server)
;;;http://int1.darkorbit.bigpoint.com/indexInternal.es?action=internalMap


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
04/05/2011 18:49 Meikbrosoft#2
es zeigt ja bei der serverauswahl immer die die glaub ich frei sind oder so und du musst auf diesem roten Button klicken. Deshalb würde ich mal sagen Pixelsearch und dann die position des roten button was du dann anklickst, falls das immer die selben sind, musst das mit einer If Funktion machen, so ungefähr:
PHP Code:
If $servername "Deutschland 5" Then
Pixelsearch
(......)
Else 
If 
$servername "...." Then
Else
If..... 
Also immer so weiter,so würd ich es mal probieren.
Achte darauf, wie viele If Funktionen benutzt, weil am Ende brauchst du für jede den Befehl
PHP Code:
EndIf 
04/05/2011 19:13 deepware#3
dank dir aber ich wollte das schon mit der IE.au3 lösen, es ist ja auch immer nur ein teil der sich beim server ändert .
ich hab den interen code schon halbwegs verstanden und fehler ausgebügelt nur weis ich nicht wo ich teile des links herbekomme da ich nicht weis wo die herkommen.
die sid kann man ja extrahieren aber es ändern sich noch 2 weiter werte im serverlink.
oder gibts da ne wildcad funktion bei autoit wo es reicht den teil der sich nicht ändert einzutragen und der rest is halt egal?

bei batches und win kann man nach dateien suchen lassen mit platzhaltern wie *.txt oder *.* gibt es sowas auch bei autoit?

so long
04/05/2011 20:03 Serraniel#4
einfach nach roten pixel suchen ist nicht gut, weil der server auf den man sich reinloggen will ja nicht unbedingt in der reihenfolge in der gesucht wird als erstes kommt....
04/08/2011 20:08 Meikbrosoft#5
stell den bot doch einfach um das der immer in den ersten Server geht, dass man sich das nicht aussuchen kann. Ist ja eigentlich nicht tragisch.
Einfach dann einfach mit
PHP Code:
Mouseclick 
oder so und sollte ja dann eigentlich funktionieren, weil man ja die größe des fensters nicht ändern kann.