steam g15 bot

  • Hallo liebes autoit-Forum.
    Ich habe mal wieder angefangen bisschen rumzuprobieren, zu scripten. Ich hab auch ein Ziel:
    Ein guter Freund hat eine g15 logitech Tastatur bei sich stehen. Da er aber für Day of Defeat das Applet
    nicht manuell starten möchte, sollte ich ein script machen, das im Hintergrund läuft und automatisch
    eine Exe startet sobald Dod läuft. Soweit hab ichs auch noch hinbekommen: (ich hab app nicht, daher putty als ersatz)

    [autoit]

    While 1
    If WinActive("Day of Defeat Source")Then
    toogle()
    EndIf
    WEnd

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

    Func toogle()
    sleep(1000)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)
    EndFunc

    [/autoit]

    Probleme dabei sind aber:
    Verbraucht verdammt viel Cpu-kapazität. Bei mir lockere 50% bei amd 2x 3.1
    (Größeres Problem) Er will das sich das Applet wieder schließt, wenn Day of Defeat weg ist. Also Kurz:

    [autoit]


    While 2
    if not WinActive("Day of Defeat Source") Then
    ProcessClose("putty.exe")
    EndIf
    WEnd

    [/autoit]

    Hört sich alles schön plausibel an, als obs Funktionieren würde, da es auch keine Fehlermeldung bringt, aber:
    Sobald Dod gestartet ist "schaltet" sich das Script ab, Cpu sinkt wieder auf Standartwerte. Drum auch meine Frage:
    Wie schaff ichs das es nicht einfach durch mein while 2 geht, ohne etwas zu machen?
    Danke schon mal fürs lesen, hoffe ihr wisst was dazu ;)

    Der gelöste Code:

    [autoit]


    While 1
    While Not Winexists("Day of Defeat Source")
    sleep(10)
    Wend
    Run("C:\ssh\putty.exe","",@SW_HIDE)
    While Processexists("name.exe") ;Name der Exe-Datei von Dod einfügen
    Sleep(10)
    Wend
    Processclose("putty.exe")
    Wend

    [/autoit]

    Credits gehn an:
    Cartan12
    Fabian

    Einmal editiert, zuletzt von csupenner (8. Mai 2010 um 22:22)

  • Also, ich würd erstmal das Wort "bot" streichen...
    So, Das Problem ist (wahrscheinlich), dass du ein Sleep vergessen hast
    jetzt sollte es besser gehen

    edit: Ne doch nicht...
    Was soll das mit While 2?
    While prüft, ob eine Bedingung Wahr ist, in dem Fall ist 1, bzw. 2 immer richtig, sprich Endlosschleife

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Spoiler anzeigen
    Spoiler anzeigen
    [autoit]

    While 1
    If WinActive("Day of Defeat Source") Then
    sleep(100)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)
    EndIf
    Sleep(10) ;wegen der prozessorauslastung
    if not WinActive("Day of Defeat Source") Then
    ProcessClose("putty.exe")
    ExitLoop
    EndIf
    WEnd
    MsgBox(0,"Dod","Dod = Aus ^^")
    Exit

    [/autoit]


    so?

  • netter versuch, aber leider nicht ;)
    1. Post von dir hab ich nicht ausprobiert aber der 2. hat bisschen probleme:
    Wenn ich Script start, gibts erstmal deine msgbox aus. Wenn ich erst Dod offen hab und dann Script start, machts garnichts und Script ist aus. Bin auch schon ewig am probieren^^
    mfg csupenner

  • Machs besser so:

    [autoit]

    While not winactive("Day of Defeat Source")
    sleep(100)
    wend
    While 1
    If WinActive("Day of Defeat Source") Then
    sleep(100)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)
    Else
    ProcessClose("putty.exe")
    ExitLoop
    EndIf
    sleep(10)
    WEnd
    MsgBox(0,"Dod","Dod = Aus ^^")
    Exit

    [/autoit]


    Nochmal überarbeitet...
    Du könntest auch ProcessExists benutzen

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Dein Edit funktioniert fast. Nur gibts mir jetzt msgbox wenn ich manuell putty schließ.
    Ziel ist das putty sich selbst schliest, wenn dod weg ist. Für mich würde das dann so aussehn, obwohls nicht
    (warum auch immer) funktioniert:

    [autoit]

    While 2
    If Not WinActivate("Day of Defeat Source") Then
    WinClose("PuTTY Configurations")
    EndIf
    WEnd

    [/autoit]

    Edit: Bin bisschen langsam, hab erst jetzt gesehn das msgbox nicht in if schleife ist, sondern immer kommt :P

  • [autoit]

    WinActivate

    [/autoit]

    holt ein Fenster in den Fordergrund, kann also kaum scheitern (außer das Fenster existiert nicht).
    Du musst

    [autoit]

    WinActive

    [/autoit]

    benutzen

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Oh ja entschuldigung verschrieben :/

    hab mal was abgeändert:

    [autoit]

    While not winactive("Day of Defeat Source")
    sleep(100)
    wend
    While 1
    If WinActive("Day of Defeat Source") Then
    sleep(100)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)
    ExitLoop
    EndIf
    sleep(10)
    WEnd

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

    While 2
    If Not WinActive("Day of Defeat Source") Then
    WinClose("PuTTY Configuration")
    EndIf
    wend

    [/autoit]

    Bin am testen.
    Edit: Wäre ja zu schön gewesen :/ funktioniert auch nicht

  • [autoit]


    While not winactive("Day of Defeat Source")
    sleep(100)
    wend
    While 1
    If WinActive("Day of Defeat Source") Then
    sleep(100)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)
    ExitLoop
    EndIf
    sleep(10)
    If Not WinActive("Day of Defeat Source") Then
    WinClose("PuTTY Configuration")
    EndIf
    WEnd

    [/autoit]

    Muss auch in die While-Schleife rein :rolleyes:
    edit: Upps... Fehler behoben :rolleyes:

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Das selbe Spiel wie immer, es öffnet Putty aber von schließen nicht die Spur 8|
    Ich probier es jetzt mal mit

    [autoit]

    Processexists

    [/autoit]
  • So, jetzt aber (du darfst kein EndLoop in der ersten If-Abrage haben, sonst wird das Script direkt beendet...)

    [autoit]

    While not winactive("Day of Defeat Source")
    sleep(100)
    wend
    While 1
    If WinActive("Day of Defeat Source") Then
    sleep(100)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)
    Else
    WinClose("PuTTY Configuration")
    EndIf
    Sleep(10)
    WEnd

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • :/ Starten funktioniert ja ganz gut, blos wieder beim selben Problem. Mein Versuch mit Processexists bzw Processclose hat auch wenig geholfen. So langsam gehn mir die Ideen aus xD

  • Meine Version :)

    Spoiler anzeigen
    [autoit]

    While Not Winexists("Day of Defeat Source")
    sleep(10)
    Wend
    Run("C:\ssh\putty.exe","",@SW_HIDE)
    While Processexists("Name.exe") ;Name der Exe-Datei von Dod einfügen
    Sleep(10)
    Wend
    Processclose("putty.exe")
    Exit

    [/autoit]
  • Ach verdammt, der Fehler war echt zu offensichtlichh...
    Der startet das ding ja bei mir fast durchgehend :(

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Fabian, das ist zwar nicht genau das was ich gesucht hab, aber ich glaub ich kann was draus verwenden^^
    Danke dir schon mal und natürlich vorallem auch dir Cartan. Ich post Ergebnis.

  • Ach verdammt, der Fehler war echt zu offensichtlichh...
    Der startet das ding ja bei mir fast durchgehend :(

    Nein, es wir nicht durchgehend gestartet.

    Zitat von RunWait

    Startet ein externes Programm und pausiert die Ausführung des Autoit-Skripts, bis das externe Programm beendet ist.

    Das Skript wird einfach angehalten, bis putty.exe manuell geschlossen wird ;)

    Fabian, das ist zwar nicht genau das was ich gesucht hab, aber ich glaub ich kann was draus verwenden^^
    Danke dir schon mal und natürlich vorallem auch dir Cartan. Ich post Ergebnis.

    Was suchst du den genau ? :)

  • Zitat

    Was suchst du den genau ? :)

    Es soll einfach ein Script sein, das im Hintergrund läuft und das durchgehen. Also Autostart^^. Bewirkt: Sobald ich Day of Defeat manuell starte, soll es mir Putty starten (funktioniert). Sobald ich dann Day of Defeat wieder manuell ausschalte, meinertwegen durch prozess killen oder sonst wie, soll es Putty mit schliesen. Heist also schon mal eine Schleife um das Komplette Script, da es ja nie ausgehen soll, sondern immer weiter laufen soll ;)
    Ich hab mal deinen Post davor ausprobiert, leider ohne Erfolg. Kanns sein das AutoIT einfach dafür nicht gemacht ist, sodass es nicht funktionieren kann?

  • [autoit]

    If WinActive("Day of Defeat Source") Then
    sleep(100)
    RunWait("C:\ssh\putty.exe","",@SW_HIDE)

    [/autoit]

    Startet meines WIssens nach das Programm dauernd, solange DoD aktiv ist...
    edit: Daher kommt wohl auch die hohe CPU auslastung

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"


  • Ich hab mal deinen Post davor ausprobiert, leider ohne Erfolg. Kanns sein das AutoIT einfach dafür nicht gemacht ist, sodass es nicht funktionieren kann?

    Also wird putty.exe immer noch nicht beendet oder wie?

  • Nein startet immernoch nicht.
    @Cartan: Ne Cpu hat sich mit Pause aufgelöst. Bin gerade noch am probieren, von Grund auf ;)
    Hab jetzt erstmal Putty Processclose an sich probiert. funktioniert. Dann folgende If-Schleife:

    [autoit]

    While 1
    If ProcessExists("putty.exe") Then
    Sleep(5000)
    ProcessClose("putty.exe")
    Else
    sleep(10)
    EndIf
    WEnd

    [/autoit]

    Stück für Stück, bis ich seh, wo es hackt.