Frage zu nem "Kleinen" Script

  • Ich persönlich finde dass es absolut egal ist, um was für ein Programm es geht, MMORPG hin oder her...was wichtig ist doch, dass er sich mit seinem Problem befasst und hier im Forum um eine für ihn verständliche Lösung bittet....

    und solange nightfire0110 nicht draufgekommen ist, dass er die beiden abfragen einfach in eine While-Schleife reinkopieren muss um beide Abfragen in einem script zu haben, würde ich den Thread noch nicht schließen....

    kriegst du das hin? ;)

    Grüße

  • und das der Nette Herr über Dir die richtige lösung gepostet hatt kann sein nur ich komme mit seiner schreibweiße vom script im moment noch nicht klar da ich diese zeilen noch nie zu vor benutzt habe .


    Mit Welcher Schreib weise Meinst du den?

    Ich persönlich finde dass es absolut egal ist, um was für ein Programm es geht, MMORPG hin oder her...was wichtig ist doch, dass er sich mit seinem Problem befasst und hier im Forum um eine für ihn verständliche Lösung bittet....


    Da bin ich gleicher Meinung. Sicherlich, es ist riskannt, da man je nacht Script nie genau weiss was das wird und erst recht nicht wen man das Game nicht kennt...
    Aber, ich kenn dass Selber von Runes of Magic (Verfluchte "Error´s")
    da hab ich mir auch ein Script gebasstelt das die .exe wider ausführt sobald ein Error Passiert...und was Daran,ilegal sein soll versteh ich nicht...da man bei gewissen dingen einfach keine unnötige zeit verlieren möchte und was kann das besser berrechnen als ein Script??
    Ich bin auch gegen ein $Close

    Skilkor

  • du musst doch nur bei WinGetHandle genauer suchen:

    [autoit]

    While Sleep(50)
    $hWnd = WinGetHandle("Microsoft Windows","Ultima Online - Client funktioniert nicht mehr")
    If WinExists($hWnd) Then
    Send("{Enter}")
    WinWaitClose($hWnd,"",10) ;maximal 10 Sekunden warten
    WinKill($hWnd) ;dann grossen Hammer auspacken
    ;evtl. statt WinKill ProcessClose verwenden
    EndIf
    WEnd
    ShellExecute("C:Programme\Razor\Razor.exe")
    WinWait("Ultima Online")

    [/autoit]

    Den Text kopierst du aber aus dem AutoIt V3 Window Info Tool, da durch garantiert ist, dass er stimmt.

    Weder nen BOT noch ein CHEAT programm machen will ist es laut den forum regeln ja legal


    bis hierhin ja, sonst hätte ich ihn ja wieder deaktiviert (Sprich erneut in die Moderation geschickt)

    mfg autoBert

  • Wiso "Sleep(50)"??? @ autoBert?
    Sleep(750) reicht völlig aus, man muss ja nicht all 1/4 Secunde (Oder wv das grad sein mag X( (Peinlich)) Abfragen ob das Fenster Exisstiert

    ah und @ autoBert
    Deine "WinKill" zeilen Info find ich Genial ^^
    ";dann grossen Hammer auspacken"

    Skilkor

  • ich bin mir gerade nicht so sicher ob die zusammenlegen beider script soo nu hinhauen sollte mit dne Ifs

  • Nein, du muss noch die letzten beiden Zeilen sitzen (peinlich) an der verkehrten Stelle:

    [autoit]

    While Sleep(500)
    $hWnd = WinGetHandle("Microsoft Windows","Ultima Online - Client funktioniert nicht mehr")
    If WinExists($hWnd) Then
    Send("{Enter}")
    WinWaitClose($hWnd,"",10) ;maximal 10 Sekunden warten
    WinKill("Ultima Online") ;dann grossen Hammer auspacken
    ;evtl. statt WinKill ProcessClose verwenden
    WinWaitActive($hWnd,"",5)
    ShellExecute("C:Programme\Razor\Razor.exe")
    WinWait("Ultima Online")
    EndIf
    WEnd

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

    Edit: Skript korrigiert

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

    mit den Zeitwerten kannst du evtl. noch nach unten gehen

    Einmal editiert, zuletzt von autoBert (28. Februar 2011 um 22:37)

  • Da hat der Bert wohl ein Komma vergessen ;)


    [autoit]

    While Sleep(500)
    $hWnd = WinGetHandle("Microsoft Windows","Ultima Online - Client funktioniert nicht mehr")
    If WinExists($hWnd) Then
    Send("{Enter}")
    WinWaitClose($hWnd,"",10) ;maximal 10 Sekunden warten
    WinKill($hWnd) ;dann grossen Hammer auspacken
    ;evtl. statt WinKill ProcessClose verwenden
    WinWaitActive($hWnd,"",5)
    ShellExecute("C:Programme\Razor\Razor.exe")
    WinWait("Ultima Online")
    EndIf
    WEnd

    [/autoit]

  • okkkkk ich habe das script gerade mal gestartet ^^ und mein PC ist abgestürzt ^^ da es komishcer weiße das script knapp 20 mal gestartet hatt und jeder von denen dann gleich mal 2x die razor exe benutzt hatt

  • sooo habe mal nen bissl rumgetestet und hoffe das es so funktionieren sollte

    Edit 1:was mir aufgefallen ist wenn ich anstat While 1 .... While Sleep 500 setze haut der mir das script inerhalb von 10 sekunden 15-20 auf und führt auch genausooft den shellexecute befehl aus

    3 Mal editiert, zuletzt von nightfire0110 (1. März 2011 um 07:12)

  • ...fehlt bei dir nicht noch ein EndIf irgendwo? -> das ist wahrscheinlich der Grund wieso der so oft den ShellExecute Befehl ausführt...

    [autoit]

    While 1
    If WinExists("Ultima Online - (Keine Rückmeldung)") Then
    WinActivate("Ultima Online - (Keine Rückmeldung)")
    Send('{Enter},{UP},{ENTER}')
    Sleep(1000)
    WinKill("Ultima Online - (Keine Rückmeldung)")
    ShellExecute("C:Programme\Razor\Razor.exe") ;diese Zeile mit nach oben kopiert
    EndIf ;EndIf eingefügt, dann startet er das obrige ShellExecute nur wenn das Fehlerfenster existiert
    If WinExists('Microsoft Windows') Then
    WinActivate('Microsoft Windows')
    Send('{UP},{ENTER}')
    Sleep(1000)
    WinKill("Microsoft Windows")
    ShellExecute("C:Programme\Razor\Razor.exe") ;vor das EndIf geschoben, damit er auch hier Razor nur startet wenn es einen Fehler gab
    EndIf
    WEnd

    [/autoit]

    Grüße

  • Hey,
    Funktioniert das Script von 'r4lf' ??

    Falls nein X(
    Versuch es doch einmal mit einer Prozess abfrage... Aber ich gehe davon aus (Insovern deine Window angaben Stimmen) das 'r4lf' s Script läuft

    Skilkor

  • OKKKAYYY da lag der Wurm drinne hehe Nu Läufts wesentlich besster, was mich nu noch interressieren wüürde ist folgendes. Manchmal "Friert" der client ein DH er wirft die fehlermeldung erst aus nach dem man den Client mal Maximiert oder mit der maus anstubst, kann man sowas mit autoit machen das er ab und zu mal den client "anstubst"?


    Edit: Skilkor das Probem ist das ich NULL ahnung habe welchen Prozzes die Microsoft Windows fehlermeldung auslöst an den ProccesCLose hatte ich nämlich auch schon gedacht gibts nen weg das irgentwie rauszufindne welcher prozzes dem teil zugeschrieben ist?

    Edit2: Kann mir wer sagen Warum man bei einem TItle Für ein Fenster Mit """ und mit ' arbeiten kann was ist den da der unterschied

  • @nightfire0110

    Zitat

    Edit: Skilkor das Probem ist das ich NULL ahnung habe welchen Prozzes die Microsoft Windows fehlermeldung auslöst an den ProccesCLose hatte ich nämlich auch schon gedacht gibts nen weg das irgentwie rauszufindne welcher prozzes dem teil zugeschrieben ist?


    Wen du das wie Prozess suchen willst musst du die "Explorer.exe" Kicken..... und das würd ich mal Lieber lassen, auser du hast Win 7 ^^ dan kannst du einfach im taskManager Sagen, "Neuer Task" - Explorer.exe und es läuft wider alles ^^

    Zitat

    Edit2: Kann mir wer sagen Warum man bei einem TItle Für ein Fenster Mit """ und mit ' arbeiten kann was ist den da der unterschied


    hmm, gute Frage X( ich kanns dir nicht sagen, denke aber das es Keinen unterschied gibt

    Skilkor

  • Also das Script hatt ebend Ausgelöst als der Client Abgestürzt ist und auch das gemacht was es solle, Nur Leider erst nachdem ich das Client fenster mal hervorgeholt hatte bzw man angeklickt hatte . kann man sowas machen wie: Klicke DAS Fenster alle 10 MInuten mal AN also sowas an den start vom script ?

  • ja das ist Möglich mit

    [autoit]

    MouseClick ( "button" [, x, y [, clicks [, speed ]]] )

    [/autoit]

    Doch Sei Gewarrnt okay? VERWENDE SOWAS NUR..:WIRKLICH NUR zum Anstupsen des Fenster....
    Den sowas kann bei Vielen Games die einen BotScanner haben als Bot angegeben werden

    Am besten Verwende es Garnicht erst :S

    ***Edit***
    Wobe, es gab da eine Möglichkeit OHNE MousKlick um ein Fenster zur Meldung bringen.... Ich Denke das dürfte "WinAktivate" gewessen sein...Falls ich Falsch liege kommt mir der Befehl grad ne in kop ^^

    Skilkor

    Einmal editiert, zuletzt von Skilkor (1. März 2011 um 16:52)

  • klar geht das :)

    dazu müsstest du das fenster aber immer im Vordergrund haben (sprich den pc währenddessen nicht benutzen, sonst kanns sein dass du ihm in die quere kommst...)

    das schlüsselwort ist

    [autoit]

    MouseClick

    [/autoit]


    mit dem kannst du deine Maus irgendwo hinklicken lassen
    um das alle 10 minuten zu machen, schau dir

    [autoit]

    AdlibRegister
    ;und
    AdlibUnregister

    [/autoit]


    an...damit lässt sich eine Funktion (weißt du wie man funktionen definiert?) in bestimmten Zeitabständen ausführen lassen.

    Grüße


    Edit: da war jemand schneller :D

  • Edit2: Kann mir wer sagen Warum man bei einem TItle Für ein Fenster Mit """ und mit ' arbeiten kann was ist den da der unterschied


    Sie umschliessen sich gegenseitig , d.h. Wenn du zum Beispiel in einer Msgbox einen String mit " " ausgeben willst könntest du es so schreiben : Msgbox(0,"Test",'Das "weil" steht in Anführungszeichen')

  • Edit: da war jemand schneller :D


    HöHö ^^ Ja, aber das mit dem

    [autoit]

    AdlibRegister
    ;und
    AdlibUnregister

    [/autoit]


    wusst ich Selbst nicht ^^


    Sie umschliessen sich gegenseitig , d.h. Wenn du zum Beispiel in einer Msgbox einen String mit " " ausgeben willst könntest du es so schreiben : Msgbox(0,"Test",'Das "weil" steht in Anführungszeichen')


    Besser hätt man es Iwrklich nicht Erklären können :D

    Aber eben @nightfire0110

    Pass Wirklich auf was du mit "MoouesClick" Anstellst, Gewarrnt hab ich dich ja Bereits ^^

    Skilkor

  • ja da hast du nicht Unrecht das könnten die als BOT sehen DH lass ich davon die finger :)
    ediiiiiiiiiiiit : isses ned möglich ihm zu sagen er soll alle 30 minuten mal Den Client Maximieren und wieder Miniemieren

    edit2: also laut dem Tollen Buch Soll Sowas mit dem befehl WinSetState gehen aber ich habe KEINE ahhnung wie ich sowas in ne schleife haue das es auserhalb der fehlermeldung arbeitet....

  • Nur so als Typ wer in diesem Fall wahrscheinlich

    [autoit]

    Controlclick()

    [/autoit]

    besser da dort das betreffende Fenster nicht aktiv sein muss

    EDIT 1:

    Ups scheint falsch zu sein, dachte die x und y Koordinaten würden das bestimmen