Battleknight

  • Hallo Leute!

    Ich bin auf Autoit gestoßen durch googlen, habe allerdings für die Rubrik Battleknight, nichts fertiges, oder auch nur ansatzweise etwas gefunden. Wer kann mir ein Script basteln, dass den vollen Umfang von battleknight ausschöpfen kann. (Einloggen, Quest machen, Sold abholen, Arbeiten gehen, Sold abholen, und jemand angreifen)

    Fürst Rammstein

  • Du kannst das. Und wenn nicht, lernst du's =).

    Einmal editiert, zuletzt von huggy (5. Juli 2007 um 10:23)

  • LoL ^^ Ich find das immer lustig. "Kann mir mal jemand was Scripten?"

    Hier hilft dir sicher gerne jeder bei dem Projekt aber das heiß nicht das wir es für dich machen :P


    MfG

    akira2012

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

  • naja im Grunde genommen habe ich ja schon einen Ansatz fürs Angriffsscript... jedoch gibt es auf der Seite wo er es eintragen soll, gleich 2 Button, die sich "abschicken" nennen und als Typ "submit", und den Feldnamen "Submit" tragen. Beide laufen auch noch auf Form1. Mit anderen Worten er nimmt immer den ersten Submit Button statt den zweiten...
    Hier den Code den ich bisher habe:

    [autoit]


    ;Internet Explorer öffnen und Module laden
    #include <IE.au3>
    #include <String.au3>
    #include <Inet.au3>
    #include <Array.au3>
    #include <String.au3>
    ;Module laden ende------------------------
    HotKeySet("1", "_beenden")
    Dim $i

    [/autoit][autoit][/autoit][autoit]

    ;Anmelden bei BattleKnight--------------------------------------------
    $sUsername = "beate"
    $sPassword = "kamille"
    $sUrl = "http://www.battleknight.de"
    $oIE = _IECreate ($sUrl)
    $oHWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState ($oHWND, "", @SW_MAXIMIZE )
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oUsername = _IEFormElementGetObjByName ($oForm, "user_name")
    $oPassword = _IEFormElementGetObjByName ($oForm, "user_password")
    _IEFormElementSetValue ($oUsername, $sUsername)
    _IEFormElementSetValue ($oPassword, $sPassword)
    $oSubmit = _IEGetObjByName ($oIE, "Submit")
    _IEAction ($oSubmit, "click")
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")
    ;Anmelden ende------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    $oForm = _IEFormGetCollection ($oIE, 0)
    _IENavigate ($oIE, "http://s1.battleknight.de/bk.php?loc=raid")
    $oSubmit = _IEGetObjByName ($oIE, "Submit")
    $i = 0
    $j = 100
    While $i <= $j
    For $i = 1 to $j
    $file = FileOpen(@ScriptDIR&"\BK.txt",0)
    $Auswahl = FileReadLine($file,$i)
    $i = $i

    [/autoit][autoit][/autoit][autoit]

    $rN = _IEGetObjById ($oIE, "button")
    $sB = _IEGetObjByName ($oIE, "Submit")

    [/autoit][autoit][/autoit][autoit]

    _IEFormElementSetValue ($rN, $Auswahl)
    _IEAction ($oSubmit, "click")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _beenden()
    Winclose ( "Ende", "Das Script wurde beendet!!!")
    Exit
    EndFunc

    [/autoit]

    Ihr könnt das Script ja mal ausführen...
    achja... denkt dann ich braucht die textdatei BK.txt im Scriptverzeichnis... reicht wenn ihr in dieser Textdatei einfach einen Benutzername aus der Highscore angebt... oder auch Beate ;)

    Fürst Rammstein

  • kleine anmerkung:


    Func _beenden()
    Winclose ( "Ende", "Das Script wurde beendet!!!")
    Exit
    EndFunc


    *lol*

    Sieh die mal syntax an^^

    WinClose ( "title" [, "text"] )

    und jetzt, was es macht:

    This function sends a close message to a window, the result depends on the window (it may ask to save data, etc.). To force a window to close, use the WinKill function. If multiple windows match the criteria, the window that was most recently active is closed.


    und jetzt sieh dir an, wie man es nehmen kann:


    WinClose("Untitled - Notepad", "")


    mfg^^

  • ist aber nicht die Lösung meines Problems oder?
    Zumal das nur ausgeführt wenn man die Taste 1 drückt :P

  • du könntest vielleicht ein imageclick machen oder über den Index auf die Buttons zugreifen also nicht Text

  • Wäre an sich eine Gute Idee, jedoch besteht dieser Button nicht wirklich aus einem Image...

    <input type="submit" name="Submit" value="abschicken" id="submit">
    so sieht der Quelltext vom 2. "fenster" unten links aus...

    <input type="submit" name="Submit" value="abschicken" id="submit">
    und so der Quelltext vom 1. "fenster", also quasi das obere

    mit anderen Worten die beiden Buttons heißen genau gleich...

  • hey probier es mal so:

    [autoit]

    $oSubmit = _IEGetObjByName ($oIE, "Submit", 1)

    [/autoit]

    #include <IE.au3>

    [autoit]

    _IEGetObjByName ( ByRef $o_object, $s_Id [, $i_index = 0] )

    [/autoit]

    Parameters

    $o_object Object variable of an InternetExplorer.Application, Window or Frame object
    $s_Id Specifies name or id of the object you wish to match
    $i_index Optional: If name of id occurs more than once, specifies instance by 0-based index
    0 (Default) or positive integer returns an indexed instance
    -1 returns a collection of the specified objects

  • Super leviathan
    das war der Entscheidende Befehl!
    Vielen lieben herzlichen Dank!

    Fürst Rammstein

  • ich muss nochmal dieses thema hier aufrollen...
    es geht sich jetzt allerdings darum, dass wenn die funktion in Zeile 56/57 nicht ausgeführt werden kann, bricht er da Script mit einer Fehlermeldung ab. Ist ja auch kein Wunder, da er dann nicht den Button Submit finden kann, denn er existiert dann garnicht (sonst schon, nur halt in einem bestimmten Fall halt nicht). Deswegen soll er aber nicht gleich das Script abbrechen, sondern einfach wieder in Zeile 39 gehen und dort aus der Textdatei den nächsten Namen nehmen... Das script soll solange dann laufen, bis man es abbricht...
    Mit den "Func" funktionen funzt das nicht wirklich irgendwie... da kommt dann immer, dass er kein next hat, was aber ja in Zeile 73 steht.
    Ich hatte auch versucht den String auszulesen aus der HTML Datei, jedoch gibt er dort immer nur die "0" aus, wenn ich ihn mit in einer MsgBox anzeigen lasse. Könnte mir da jemand ein wenig unter die Arme greifen dass er sich wie oben schon erwähnt einfach den nächsten Namen nimmt?

    Danke schonmal im voraus,
    Fürst Rammstein

    [autoit][/autoit][autoit][/autoit][autoit]

    ;Internet Explorer öffnen und Module laden
    #include <IE.au3>
    #include <String.au3>
    #include <Inet.au3>
    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    ;Module laden ende------------------------

    [/autoit][autoit][/autoit][autoit]

    HotKeySet("1", "_beenden")
    Dim $i

    [/autoit][autoit][/autoit][autoit]

    ;Anmelden bei BattleKnight--------------------------------------------
    $sUsername = "beate"
    $sPassword = "kamille"
    $sUrl = "http://www.battleknight.de"
    $oIE = _IECreate ($sUrl)
    $oHWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState ($oHWND, "", @SW_MAXIMIZE )
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oUsername = _IEFormElementGetObjByName ($oForm, "user_name")
    $oPassword = _IEFormElementGetObjByName ($oForm, "user_password")
    _IEFormElementSetValue ($oUsername, $sUsername)_IEFormElementSetValue ($oPassword, $sPassword)
    $oSubmit = _IEGetObjByName ($oIE, "Submit")
    _IEAction ($oSubmit, "click")
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")

    [/autoit][autoit][/autoit][autoit]

    ;Anmelden ende--------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    ;Andere Ritter über TXT-Datei angreifen (to-fight.txt)

    [/autoit][autoit][/autoit][autoit]

    _IENavigate ($oIE, "http://s1.battleknight.de/bk.php?loc=raid")
    ;Hier beginnt die Schleife
    $i = 0
    $j = 400

    [/autoit][autoit][/autoit][autoit]

    While $i <= $j
    For $i = 1 to $j
    $file = FileOpen(@ScriptDIR&"\BK.txt",0)
    $Auswahl = FileReadLine($file,$i)
    $i = $i
    ;Hier wird das Feld für den Rittername einzugeben und der Submit-Button gesucht
    $rN = _IEGetObjById ($oIE, "button")
    $oSubmit = _IEGetObjByName ($oIE, "Submit", 1)

    [/autoit][autoit][/autoit][autoit]

    ;Hier wird der Name des Ritters eingetragen, der aus der Liste gesucht wurde
    ;und wird dann zur Gegenüberstellung ausgewählt
    _IEFormElementSetValue ($rN, $Auswahl)
    $oSubmit.click
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")

    [/autoit][autoit][/autoit][autoit]

    ;Hier wird der Button zum starten des Kampfes gedrückt
    $oSubmit = _IEGetObjByName ($oIE, "Submit", 0)
    $oSubmit.click
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")
    ;Wechsel auf die Seite Raid um...
    ;a) das Kampfergebnis zu löschen
    ;b) die Zeit zu sehen bis der nächste angegriffen werden kann
    _IENavigate ($oIE, "http://s1.battleknight.de/bk.php?loc=raid")

    [/autoit][autoit][/autoit][autoit]

    ;Schlafen wür 5 Minuten und Seitenrefresh um den Ablauf der Session zu unterbinden
    Sleep(300000)
    _IEAction($oIE,"refresh")

    [/autoit][autoit][/autoit][autoit]

    ;weitere 5 Minuten und refresh
    Sleep(300000)
    _IEAction($oIE,"refresh")

    [/autoit][autoit][/autoit][autoit]

    next
    WEnd
    Func _beenden()
    Winclose ( "Ende", "Das Script wurde beendet!!!")
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ;Andere Ritter angreifen ende-----------------------------------------------------

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Internet Explorer öffnen und Module laden
    #include <IE.au3>
    #include <String.au3>
    #include <Inet.au3>
    #include <Array.au3>

    ;Module laden ende------------------------

    HotKeySet("1", "_beenden")
    Dim $i

    ;Anmelden bei BattleKnight--------------------------------------------
    $sUsername = "beate"
    $sPassword = "kamille"
    $sUrl = "http://www.battleknight.de"
    $oIE = _IECreate ($sUrl)
    $oHWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState ($oHWND, "", @SW_MAXIMIZE )
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oUsername = _IEFormElementGetObjByName ($oForm, "user_name")
    $oPassword = _IEFormElementGetObjByName ($oForm, "user_password")
    _IEFormElementSetValue ($oUsername, $sUsername)_IEFormElementSetValue ($oPassword, $sPassword)
    $oSubmit = _IEGetObjByName ($oIE, "Submit")
    _IEAction ($oSubmit, "click")
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")

    ;Anmelden ende--------------------------------------------------------

    ;Andere Ritter über TXT-Datei angreifen (to-fight.txt)

    _IENavigate ($oIE, "http://s1.battleknight.de/bk.php?loc=raid")
    ;Hier beginnt die Schleife
    $i = 0
    $j = 400

    While $i <= $j
    For $i = 1 to $j
    $file = FileOpen(@ScriptDIR&"\BK.txt",0)
    $Auswahl = FileReadLine($file,$i)
    $i = $i
    ;Hier wird das Feld für den Rittername einzugeben und der Submit-Button gesucht
    $rN = _IEGetObjById ($oIE, "button")
    $oSubmit = _IEGetObjByName ($oIE, "Submit", 1)

    ;Hier wird der Name des Ritters eingetragen, der aus der Liste gesucht wurde
    ;und wird dann zur Gegenüberstellung ausgewählt
    _IEFormElementSetValue ($rN, $Auswahl)
    $oSubmit.click
    If @Error Then
    MsgBox(0,"Error", "Couldn't Submit"); oder gar nichts hier stehen lassen
    Else
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")
    ;Hier wird der Button zum starten des Kampfes gedrückt
    $oSubmit = _IEGetObjByName ($oIE, "Submit", 0)
    $oSubmit.click
    If @Error Then
    MsgBox(0,"Error", "Couldn't Submit 2nd")
    Else
    _IELoadWait ($oIE)
    WinWait("BattleKnight - Microsoft Internet Explorer", "Fertig")
    ;Wechsel auf die Seite Raid um...
    ;a) das Kampfergebnis zu löschen
    ;b) die Zeit zu sehen bis der nächste angegriffen werden kann
    _IENavigate ($oIE, "http://s1.battleknight.de/bk.php?loc=raid")
    ;Schlafen wür 5 Minuten und Seitenrefresh um den Ablauf der Session zu unterbinden
    Sleep(300000)
    _IEAction($oIE,"refresh")
    ;weitere 5 Minuten und refresh
    Sleep(300000)
    _IEAction($oIE,"refresh")
    EndIf
    EndIf
    Next
    WEnd
    Func _beenden()
    Winclose ( "Ende", "Das Script wurde beendet!!!")
    Exit
    EndFunc

    ;Andere Ritter angreifen ende-----------------------------------------------------

    [/autoit]

    ungetestet aber probiere es halt mal aus kannst die MsgBox dann auch einfach raustüdeln(siehe skript)

    Einmal editiert, zuletzt von leviathan (9. Juli 2007 um 14:06)

  • nope, das hat nichts gebracht, er bringt immer noch die selbe Fehlermeldung...
    Er kann den Button einfach nicht finden, und spuckt dann die Fehlermeldung aus, OBWOHL er ja bei einem Error (den müsste er ja bekommen haben den Fehler) rausspringen, bzw, dann wieder zum auslesen des nächsten Namens springen soll...

  • So, mal was anderes... ich wollte mal wissen wie man diesen login teil zusammen bekommt, da ich nicht weiss wie ich herrausfinde welchen namen die log in felder haben...

    hab schon in der deutschen hilfe datei gesucht aber nichts gefunden...
    auch autoit wiki hat mir nicht weiter geholfen :(

    wäre sehr nett wenn man mir das mal in kleinen schritten beschreibt

    MFG monkey

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • Anscheinen werde ich ignoriert....

    wäre aber trotzdem nett wenn mal wer antworten würde.

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    Einmal editiert, zuletzt von monkey (23. Juli 2007 um 21:47)

  • man geht auf die Seite und macht Rechtsklick -> Seitenquelltext anzeigen

    wenn man dann richtig schaut kann man das hier z. B. sehen