1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. VinceA

Beiträge von VinceA

  • Unterstützung bei Script

    • VinceA
    • 25. März 2014 um 19:22

    Als ich den Thread schrieb habe ich aus Versehen auf Absenden geklickt, darum hast du warscheinlich nur den Anfang gesehen. Wollte dich keinesfalls dumm hinstellen oder sowas ähnliches ich wollte nur das es aufmerksam durchgelesen wird bevor es als Spiele-Automatisierung abgestempelt wird.

    Danke für deinen Vorschlag :) ich werds gleich ausprobieren.

  • Unterstützung bei Script

    • VinceA
    • 25. März 2014 um 15:52

    Bitte liess den Thread aufmerksam durch das hat nichts mit Spiele-Automatisierung zu tun, es ist eine Funktion von meinem Admin Tool.

  • Unterstützung bei Script

    • VinceA
    • 25. März 2014 um 15:37

    Hallo Leute
    Meine Funktion sucht per StringRegExp in der Log Datei meines Game Servers nach Admin Befehle die der Admin eingibt im Spiel, in diesem Beispiel ist es "akick [PLayer Name] M(Misbahavior)"
    Ich habe eine Datei AdminDatabase.txt ( Namen und ID's werden über die Gui hinzugefügt )

    Code
    Djallo|0xDC9EE9355C18BDCF
    Blobo|0xDC9EE9355C18BD7F
    Tunaa|0x3B93DBD5A37A35DB


    und eine Datei JoinedPlayers.txt

    Code
    Blub|0x24F0130C63AC9332
    Blab|0xD5587ED243EFD307
    Djallo|0xDC9EE9355C18BDCF
    Bleb|0x25E614D594216068
    Hansi885|0x12205521E5C94EC9
    migOla|0x3EB29A4934D6F82E
    Blobo|0xDC9EE9355C18BD7F
    michaela23|0x1EF8E215AAB409D1
    MATTFISKia|0xFBF4AF35F3DE3619
    Acuntha30|0x47D43B87C1F066D2
    killerol66613|0x3DC0BE2AADA335D7
    Scattles293|0x28AF90E430C3B5D6
    OldTown4|0xD68F4241B1E55485
    Tunaa|0x3B93DBD5A37A35DB
    SilverStar|0x1D7246191B0C462B
    Yralist|0x93257A935AE8E1A5
    conence2015|0xAE6C465EC104E55A
    electrosystem|0x4A08FF9FF9334F3D
    michaelPutz|0x434FD5C9FB2C8FAF
    GearRead|0xE193222CE87715E8
    gggdu56|0x543E62D3C6D8A4F1
    Alles anzeigen


    Nun soll als erstes überprüft werden ob der der den Admin Befehl eingegeben hat auch Admin ist und dann soll überprüft werden ob Name und ID (AdminDatabase.txt) des Admins auch mit Namen und ID In der JoinedPlayers.txt übereinstimmt dann wird überprüft ob der Spieler der gekickt werden soll auch in der in der JoinedPlayers.txt vorhanden ist, wenn alles übereinstimmt wird der Kick Befehl an den Server gesendet.
    Nach meheren Versuchen hab ich das dann so hingekriegt, war ein richtiger Murks aber es funktioniert fürs erste.

    Spoiler anzeigen
    [autoit]

    Func ReadAdminCommands()
    Local $commandkickM
    Local $aFileb = ""
    Local $aFile = ""
    _FileReadToArray(@ScriptDir & "\AdminsDatabase.txt", $aFile)
    _FileReadToArray(@ScriptDir & "\JoinedPlayers.txt", $aFileb)
    $commandkickM = StringRegExp($newReadLine, "message\:\s(.*)\s\(All\)\:\s(akick)\s(.*)\s(M)", 3)
    If IsArray($commandkickM) Then
    Local $a2D[$aFile[0]][2]
    Local $a2D2[$aFileb[0]][2]
    For $i = 1 To $aFile[0]
    $aSplit = StringSplit($aFile[$i], "|")
    $a2D[$i - 1][0] = $aSplit[1]
    $a2D[$i - 1][1] = $aSplit[2]
    If $a2D[$i - 1][0] == $commandkickM[0] Then
    _FileWriteLog($reportsFile, "Admin " & $commandkickM[0] & " message: " & $commandkickM[1] & " " & $commandkickM[2] & " " & $commandkickM[3], -1)
    For $i2 = 1 To $aFileb[0]
    $aSplit = StringSplit($aFileb[$i2], "|")
    $a2D2[$i2 - 1][0] = $aSplit[1]
    $a2D2[$i2 - 1][1] = $aSplit[2]
    If $a2D2[$i2 - 1][0] & $a2D2[$i2 - 1][1] == $a2D[$i - 1][0] & $a2D[$i - 1][1] Then
    For $i3 = 1 To $aFileb[0]
    $aSplit = StringSplit($aFileb[$i3], "|")
    $a2D2[$i3 - 1][0] = $aSplit[1]
    $a2D2[$i3 - 1][1] = $aSplit[2]
    If $a2D2[$i3 - 1][0] == $commandkickM[2] Then
    StdinWrite($fc2, "tell " & $commandkickM[2] & " You have been Kicked " & $commandkickM[2] & @CRLF)
    Sleep(2000)
    StdinWrite($fc2, "net_kickclient " & $commandkickM[2] & @CRLF)
    StdinWrite($fc2, "say " & $commandkickM[2] & " was kicked by Admin." & @CRLF)
    StdinWrite($fc2, "say " & "Reason: Misbehavior." & @CRLF)
    _FileWriteLog($reportsFile, "Admin " & $commandkickM[0] & " kicked " & $commandkickM[2] & " for Misbehavior.", -1)
    _FileWriteLog($bannedPlayersFile, "Admin " & $commandkickM[0] & " kicked " & $commandkickM[2] & " for Misbehavior.", -1)
    ;~ Else
    ;~ StdinWrite($fc2, "tell " & $commandkickM[0] & " Player Not Found" & @CRLF)
    ;~ _FileWriteLog($reportsFile, "Return message to " & $commandkickM[0] & ": Player Not Found", -1)
    EndIf
    Next
    EndIf
    Next
    EndIf
    Next
    EndIf
    EndFunc ;==>ReadAdminCommands

    [/autoit]


    Bin ich auf dem richtigen weg oder ist alles nur ein Murks?

  • Hi :)

    • VinceA
    • 26. Oktober 2013 um 21:18

    Hoi :)

  • Problem: Bildschirm-Lupe Script reagiert nach einiger Zeit nicht mehr und hängt sich auf

    • VinceA
    • 26. Oktober 2013 um 21:10

    Sonst kannst du unter Programmieranfragen, Mit Gegenleistung.... dein Glück versuchen..
    Vielleicht schreibt dir ein Profi so ein Tool...

  • Problem: Bildschirm-Lupe Script reagiert nach einiger Zeit nicht mehr und hängt sich auf

    • VinceA
    • 26. Oktober 2013 um 20:55

    Das liegt nicht an deinem Windows 7...das Script hat Bugs..

    Wenn du den Thread Bildschirm-Lupe genauer durchliest wirst du erkennen das das Script Bugs hat.

    Innerhalp der Lupe wird unendlich gezoomt bis nichts mehr zusehen ist... somit geht nichts mehr.

    In dem Fall einfach in der Taskleiste auf das Icon des Fensters rechtsklicken und Fentser schliessen

  • Problem: Bildschirm-Lupe Script reagiert nach einiger Zeit nicht mehr und hängt sich auf

    • VinceA
    • 26. Oktober 2013 um 19:28

    Dann benutz doch Lupe von Windows7...ich weiss nicht ob Jemand hier bereit ist für dich nach der Ursache zu suchen warum das Script plötzlich nicht mehr funktioniert.....

  • Problem: Bildschirm-Lupe Script reagiert nach einiger Zeit nicht mehr und hängt sich auf

    • VinceA
    • 26. Oktober 2013 um 19:09

    Hallo
    also wenn du gar keine Ahnung von Autoit hast schau hier vorbei.
    Autoit Buch

  • Hallo

    • VinceA
    • 26. Oktober 2013 um 01:24

    Hallo :)

  • Buttons für Tab zusammenfassen

    • VinceA
    • 26. Oktober 2013 um 01:21
    Zitat von Mockingjay

    Ein Kartenspiel. Ich kann mich mit Cursor zwischen meinen Karten auf dem Feld bewegen. Drücke ich nun Tab wechsle ich mit dem Cursor auf die Spielfeldseite des Gegners und kann mich dort mit den Pfeiltasten zwischen den Karten meines Gegners bewegen. Drücke ich wieder Tab, bin ich wieder auf meiner Spielfeldseite...

    Was ist das für ein Kartenspiel wo man die Karten des Gegners sieht? Ist das nicht unfair?

  • AdlibRegister

    • VinceA
    • 26. Oktober 2013 um 00:59

    alpines danke für dein Support :)

  • AdlibRegister

    • VinceA
    • 25. Oktober 2013 um 23:59

    Ok StdOutRead wird mit AdlibRegister auch permanent ausgelesen.

    Da ich dein Tip nicht umsetzen konnte habe ich eine andere Lösung gefunden

    Das ist die originale Funktion

    [autoit]

    AdlibRegister("_Messages", 60000)

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

    Func _Messages()
    Local $readCon, $aStarted, $aEnded, $readInput

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

    $readCon = GUICtrlRead($Edit1, "")
    $aStarted = StringRegExp($readCon, "message:\s(Match\sstarted\!)")
    $aEnded = StringRegExp($readCon, "message:\s(Match\sended\!)")
    If $aStarted = True Then
    $readInput = GUICtrlRead($Input3)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput & @CRLF)
    If $aEnded = True Then
    AdlibUnRegister("_Messages")
    EndIf
    EndIf
    EndFunc ;==>_Messages

    [/autoit]

    So habe ich es gelöst, ist zwar etwas umständlich aber funktioniert Tip Top

    Spoiler anzeigen
    [autoit]

    AdlibRegister("_Started")

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

    Func _Started()
    Local $readCon, $aStarted
    $readCon = GUICtrlRead($Edit1)
    $aStarted = StringRegExp($readCon, "message:\s(Match\started\!)")
    If $aStarted = True Then
    _sendMessages()
    _replaceStarted()
    _Ended()
    AdlibUnRegister("_Started")
    EndIf
    EndFunc ;==>_Started
    Func _replaceStarted()
    Local $aStarted, $startedLine, $combineStarted
    For $i = 0 To _GUICtrlEdit_GetLineCount($Edit1) - 1
    $startedLine = _GUICtrlEdit_GetLine($Edit1, $i)
    $aStarted = StringRegExp($startedLine, "(\d{1,6})(\s\W\sGame message: Match started!)", 3)
    If Not @error Then
    $combineStarted = $aStarted[0] & $aStarted[1]
    If $startedLine = $combineStarted Then
    GUICtrlSetData($Edit1, StringReplace(GUICtrlRead($Edit1), _GUICtrlEdit_GetLine($Edit1, $i) & @CRLF, $aStarted[0] & " - Line deleted by GITM Tool" & @CRLF))
    _GUICtrlEdit_LineScroll($Edit1, 0, _GUICtrlEdit_GetLineCount($Edit1))
    EndIf
    EndIf
    Next
    EndFunc ;==>_replaceStarted
    Func _Ended()
    Local $readCon, $aEnded
    AdlibRegister("_Ended")
    $readCon = GUICtrlRead($Edit1)
    $aEnded = StringRegExp($readCon , "message:\s(Match\sended\!)")
    If $aEnded = True Then
    _replaceEnded()
    AdlibUnRegister("_sendMessages")
    AdlibUnRegister("_Ended")
    Return AdlibRegister("_Started")
    EndIf
    EndFunc ;==>_Ended
    Func _replaceEnded()
    Local $aEnded, $endedLine, $combineEnded
    For $i = 0 To _GUICtrlEdit_GetLineCount($Edit1) - 1
    $endedLine = _GUICtrlEdit_GetLine($Edit1, $i)
    $aEnded = StringRegExp($endedLine , "(\d{1,6})(\s\W\sGame message: Match ended!)", 3)
    If Not @error Then
    $combineEnded = $aEnded[0] & $aEnded[1]
    If $endedLine = $combineEnded Then
    GUICtrlSetData($Edit1, StringReplace(GUICtrlRead($Edit1), _GUICtrlEdit_GetLine($Edit1, $i) & @CRLF, $aEnded[0] & " - Line deleted by GITM Tool" & @CRLF))
    _GUICtrlEdit_LineScroll($Edit1, 0, _GUICtrlEdit_GetLineCount($Edit1))
    EndIf
    EndIf
    Next
    EndFunc ;==>_replaceEnded
    Func _sendMessages()
    Local $readInput3, $readInput6
    AdlibRegister("sendMessages", GUICtrlRead($Combo1)) ;$Combo1, hier kann der User auswählen in welchen Zeitabständen die Nachricht gesended wird. zbsp. 1 min, 2min...etc....
    $readInput3 = GUICtrlRead($Input3)
    $readInput6 = GUICtrlRead($Input6)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput3 & @CRLF)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput6 & @CRLF)

    [/autoit]


    Muss noch lernen den Code zu kommentieren...
    Ich habe noch ne andere Lösung die geht über die Log-Datei....

  • AdlibRegister

    • VinceA
    • 15. Oktober 2013 um 21:25

    Sry für die späte Antwort..

    Zitat von alpines

    Du schreibst doch Zeile für Zeile rein, dann setz wenn du eine Zeile drinne hast einfach ein @CRLF und dann die nächste Zeile.
    Du sicherst vorher den alten Eintrag und vergleichst ihn mit dem neuen, wenn es ungleich ist dann nimmst du den neuen Eintrag als alten Eintrag und vergleichst wieder, und bei jedem Unterschied immmer davor ein @CRLF rein.

    Ich habs versucht umzusetzen aber ich denke so wie es aussieht...

    [autoit]


    $fc2 = Run("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Func Start()
    $line = StdoutRead($fc2)
    If @error Then Exit
    If $line <> "" Then
    GUICtrlSetData($Edit1, $line, 1)
    EndIf
    $line = StderrRead($fc2)
    If @error Then Exit

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

    EndFunc ;==>Start

    [/autoit]


    wird es nicht Zeile für Zeile rein geschrieben...aber verstehe nicht viel von StdoutRead.

    Ich habs dann über die Log-Datei probiert..

    [autoit]

    #include <EditConstants.au3>
    #include <GuiEdit.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 400, 400, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 0, 5, 398, 387)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $file = FileOpen("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\dedicated_log.txt", 0)
    Global $line

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

    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    While 1
    $newline =FileReadLine($file)& @CRLF
    If @error = -1 Then ExitLoop
    If $line <> $newline Then
    GUICtrlSetData($Edit1,$line,1)
    ;~ MsgBox(0, "Line read:", $line)
    $line = $newline
    EndIf
    Sleep(10)
    WEnd

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

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

    FileClose($file)

    [/autoit]


    aber ich weiss nicht wie ich @CRLF nach jeder Zeile anfügen kann.

  • AdlibRegister

    • VinceA
    • 12. Oktober 2013 um 16:25

    ok ich glaube jetzt verstehe ich es.

    Wenn ich den Text mit @CRLF in die Editbox einfüge funktioniert es so aber leider nützt mir das nichts da mein Text in der Editbox kein @CRLF hat so wie es aussieht.

    Vielleicht sollte ich es als Text Datei speichern und dann so auslesen.

  • AdlibRegister

    • VinceA
    • 12. Oktober 2013 um 14:57
    Zitat von alpines
    [autoit]

    $sText = GUICtrlRead($Edit1)

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

    MsgBox(64, "Text", StringTrimLeft($sText, StringInStr($sText, @CRLF, 1, -1)))

    [/autoit]

    Leider funktioniert es nicht, MsgBox ist leer zeigt nichts an aber wenn ich anstatt -1 die 1 nehme zeigt es den Text an.
    Der Text wird genau so angezeigt wie es in der Editbox geschrieben ist.

    Hier ein Beispiel des Textes aus der Editbox.

    Spoiler anzeigen

    311 - ID : 0x9DFAA5E4E14911DD
    312 - IP : XX.XX.99.107:9003
    313 - Creator info : Anonymous (0x24F0130C63AC9332)
    314 - Private ID : 0
    315 - Is arbitrated : false
    316 - Max public slots : 17
    317 - Max private slots : 0
    318 - Type : E_SESSION_TYPE_ONLINE
    319 - --------------------------------------------
    320 - Game message: Entering lobby!
    321 - SLOTS - Non-host, no private slots available, will try to use public slot
    322 - SLOTS - Non-host, no private slots available, will use public slot
    323 - SessionManager accepting new connection at XX.XX.99.107:9001
    324 - SLOTS - Non-host, no private slots available, will try to use public slot
    325 - SLOTS - Non-host, no private slots available, will use public slot
    326 - SessionManager : before : using public slot for new connection with user: dc9ee9355c18bdcf (current public open slot: 16)
    327 - SessionManager : after : using public slot for new connection (current public open slot: 15)
    328 - Client joined (Peterli, 0xDC9EE9355C18BDCF, 192.168.1.2:0, PeerId: 1, Seq: 1, Data size : 4) - Session ID: 0x9DFAA5E4E14911DD
    329 - Game message: Peterli connected to the server.
    330 - Game message: Leaving lobby!
    331 - Game message: Pre-round started!
    332 - Game message: Pre-round ended!
    333 - Game message: Team Deathmatch
    334 - Game message: Match started!
    335 - Game message: Peterli committed suicide.
    336 - Vote system: Peterli wants to end match.
    337 - Vote system: Vote Results: Positive
    338 - Game message: Match ended!
    339 - MESSAGE BOX: Retrieving personal statistics…
    340 - Game message: Entering lobby!
    341 - Client left (Peterli, 0xDC9EE9355C18BDCF, 192.168.1.2:0, PeerId: 1, Seq: 1, Data size : 4) - Session ID: 0x9DFAA5E4E14911DD
    342 - Game message: Peterli disconnected from the server.
    343 - Deleted game connection towards client for 192.168.1.2:0, reason ()

  • AdlibRegister

    • VinceA
    • 11. Oktober 2013 um 20:53

    Kannst du mir das mit dem Trimmen näher erklären? Hab da noch keine Erfahrung.

  • AdlibRegister

    • VinceA
    • 10. Oktober 2013 um 23:54

    @dfgherH ....damit hilfst du mir nicht. ?(


    Zitat von alpines

    Dann achte mal lieber drauf, dass wenn du ein Game Started verarbeitest, es aus dem Log auch löscht, bzw. den Index verrechnest.
    Weil es im Log noch drinne steht wird er natürlich es wieder senden, aber sollte eigentlich abbrechen.

    Hab das mit dem Log getestet...

    [autoit]

    Func Messages()
    Local $readCon, $aStarted, $aEnded, $readInput

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

    $readCon = GUICtrlRead($Edit1, "")
    $aStarted = StringRegExp($readCon, "message:\s(Match\sstarted\!)")
    $aEnded = StringRegExp($readCon, "message:\s(Match\sended\!)")
    If $aStarted = True Then
    $readInput = GUICtrlRead($Input3)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput & @CRLF)
    If $aEnded = True Then
    ;~ AdlibUnRegister("Messages")
    _GUICtrlEdit_SetText($Edit1, "")
    Return AdlibRegister("Messages",60000)
    EndIf
    EndIf
    EndFunc ;==>Messages

    [/autoit]


    Den Inhalt des Editbox zu löschen ist natürlich keine Lösung für mich. Aber so funktioniert es tip top.
    Also muss ich eine andere Methode finden, zum Beispiel immer nur die Letzte Zeile des Editbox zu lesen oder andere wege...

  • AdlibRegister

    • VinceA
    • 10. Oktober 2013 um 20:20

    Die Funktion funktioniert ..wird alles angezeigt.
    Ich habe mich vielleicht total falsch ausgedrückt...das problem vielleicht nicht verständlich erklärt.

    Die Funktion liesst aus dem Edit1 und wennn die Zeile ...Match started!.... kommt, wird der Text aus dem input gelesen und an den Game-Server gesendet.
    Die Nachricht wird nun alle 1 Minute gesendet.
    Wenn dann im Edit1 die Zeile ..Match ended!.... gelesen wird soll die Nachricht nicht mehr gesendet werden.

    Damit die Nachricht nicht mehr gesendet wird habe ich es mit ...AdlibUnRegister("Messages")...gelöst.
    Aber somit ist ja auch die Funktion beendet und somit kann auch keine Nachricht mehr gesendet werden.

    [autoit]

    Func Messages()
    Local $readCon, $aStarted, $aEnded, $readInput

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

    $readCon = GUICtrlRead($Edit1, "")
    $aStarted = StringRegExp($readCon, "message:\s(Match\sstarted\!)")
    $aEnded = StringRegExp($readCon, "message:\s(Match\sended\!)")
    If $aStarted = True Then
    $readInput = GUICtrlRead($Input3)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput & @CRLF)
    If $aEnded = True Then
    AdlibUnRegister("Messages")
    EndIf
    EndIf
    EndFunc ;==>Messages

    [/autoit]


    Nun meine Frage ist, wie kann ich das lösen, wie kann ich es machen damit die Funktion die Arbeit wieder aufnimmt?

    Also so sollte es funktionieren:
    Wenn Ein Match beginnt,wird eine ServerNachricht an den Server gesendet wie zum Beispiel No Hacks,Cheats Insults oder Hacker = Ban For Ever.
    Ein Match dauert je nach Einstellung ca 20min.
    Am Ende des Matches wird die Nachricht nicht mehr gesendet soll quasi pausieren bis der nächste Match beginnt also wird die nachricht weiter gesendet
    bis zum nächsten Matchende.

  • AdlibRegister

    • VinceA
    • 10. Oktober 2013 um 14:57

    Der Text wird geschrieben ist auch im Spiel sichtbar und kommt jede Minute aber es sollte nicht mehr gesendet werden wenn das spiel beendet ist das wird ja mit

    [autoit]

    AdlibUnRegister("Messages")

    [/autoit]


    erreicht..nur sendet es nicht mehr wenn das Spiel beginnt.

    Hier ist mein Script

    Spoiler anzeigen
    [autoit]

    ;GiTMFC2ServerTool.au3
    #include <GuiEdit.au3>
    #include <Constants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 835, 650)
    $MenuItem1 = GUICtrlCreateMenu("Config")
    $MenuItem2 = GUICtrlCreateMenuItem("MessagesConfig", $MenuItem1)
    $Edit1 = GUICtrlCreateEdit("", 419, 215, 398, 387, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetColor(-1, 0xFFFF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Edit2 = GUICtrlCreateEdit("", 70, 215, 300, 200)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Button1 = GUICtrlCreateButton("Start", 151, 60, 75, 25)
    $Button2 = GUICtrlCreateButton("Execute", 650, 600, 75, 25)
    $Button3 = GUICtrlCreateButton("ReStart", 70, 60, 75, 25)
    $Stop = GUICtrlCreateButton("Stop", 230, 60, 75, 25)
    $Message = GUICtrlCreateButton("Message", 25, 120, 75, 25)
    $InputExecute = GUICtrlCreateInput("", 419, 600, 222, 21)
    $Input2 = GUICtrlCreateInput("", 6, 170, 120, 30, -1, 0)
    GUICtrlSetBkColor(-1, 0xefefef)
    $Input3 = GUICtrlCreateInput("", 100, 120, 222, 21)
    $Input4 = GUICtrlCreateInput("", 100, 95, 222, 21)
    $Label1 = GUICtrlCreateLabel("Offline", 500, 150, 55, 25, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_SUNKEN))
    GUICtrlSetBkColor(-1, 0xff0000)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    $Timer = 30
    Global $countdown = 0.5 ;45 minutes
    Global $seconds = $countdown * 60

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    If WinActivate("[C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "") Then ExitLoop
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "quit" & @CRLF)
    Sleep(300)
    Exit

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

    Case $Button1
    AdlibRegister("CountDown", 1000)
    GUICtrlSetState($Button1, $GUI_DISABLE)
    $fc2 = Run("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    AdlibRegister("Start")
    ServerOnline()
    AdlibRegister("Messages", 60000)
    AdlibRegister("Chat")

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

    Case $Button2
    $read1 = GUICtrlRead($InputExecute)
    ;~ WinActivate("[Class:ConsoleWindowClass]")
    ;~ WinWaitActive("[Class:ConsoleWindowClass]")
    ;~ Send($read1 & "{Enter}")
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", $read1 & @CRLF)

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

    Case $Button3
    AdlibRegister("CountDown", 1000)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "quit" & @CRLF)
    Sleep(300)
    _GUICtrlEdit_SetText($Edit1, "")
    $fc2 = Run("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    AdlibRegister("Start")
    $Label1 = GUICtrlSetBkColor(-1, 0xff0000) & GUICtrlSetData(-1, "Offline")
    ServerOnline()

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

    Case $Stop
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "quit" & @CRLF)
    Sleep(700)
    _GUICtrlEdit_SetText($Edit1, "")
    GUICtrlSetState($Button1, $GUI_ENABLE)
    $Label1 = GUICtrlSetBkColor(-1, 0xff0000) & GUICtrlSetData(-1, "Offline")
    GUICtrlSetData($Input2, "")
    AdlibUnRegister("Start")
    EndSwitch
    WEnd

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

    Func Start()
    $line = StdoutRead($fc2)
    If @error Then Exit
    If $line <> "" Then
    GUICtrlSetData($Edit1, $line, 1)
    EndIf
    $line = StderrRead($fc2)
    If @error Then Exit

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

    EndFunc ;==>Start

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

    Func ServerOnline()

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

    While 1
    $read2 = GUICtrlRead($Edit1, "")
    $aResult = StringRegExp($read2, "(Game message: Entering lobby!)", 0)
    If $aResult = True Then
    GUICtrlSetData(-1, $Label1, "Online" & GUICtrlSetBkColor(-1, 0x00CC00))
    ExitLoop
    EndIf
    WEnd
    EndFunc ;==>ServerOnline
    Func Chat()
    Local $readCon, $aALL, $all

    $readCon = GUICtrlRead($Edit1, "")
    $aALL = StringRegExp($readCon, "\:\s(.*\(All\).*)", 3)
    ;~ _ArrayDisplay($cResult)
    For $i = 0 To UBound($aALL) - 1
    $all &= $aALL[$i] & @CRLF
    Next
    GUICtrlSetData($Edit2, $all & @CRLF)

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

    EndFunc ;==>Chat
    Func CountDown()

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

    Local Static $sTimer = $Timer
    $sTimer -= 1
    GUICtrlSetData($Input2, "Start Timeout: " & $sTimer & " sec")
    If _GUICtrlEdit_GetLine($Edit1, "320") = "320 - Game message: Entering lobby!" Then
    $EndTimer = True
    $sTimer = $Timer
    AdlibUnRegister("CountDown")
    Else
    If $sTimer < 1 Then
    ;~ WinClose("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "")
    AdlibUnRegister("CountDown")
    $EndTimer = True
    $sTimer = $Timer
    EndIf
    ;~ EndIf
    EndIf
    EndFunc ;==>CountDown
    Func Messages()
    Local $readCon, $aStarted, $aEnded, $readInput

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

    $readCon = GUICtrlRead($Edit1, "")
    $aStarted = StringRegExp($readCon, "message:\s(Match\sstarted\!)")
    $aEnded = StringRegExp($readCon, "message:\s(Match\sended\!)")
    If $aStarted = True Then
    $readInput = GUICtrlRead($Input3)
    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput & @CRLF)
    If $aEnded = True Then
    AdlibUnRegister("Messages")
    EndIf
    EndIf
    EndFunc ;==>Messages

    [/autoit]


    Es geht erst mal nur um die Funktion Messages()

  • AdlibRegister

    • VinceA
    • 10. Oktober 2013 um 01:58

    Das schlafen kann warten.

    Bei mir funktioniert

    [autoit]

    ControlSend("C:\Program Files (x86)\Ubisoft\Far Cry 2\bin\FC2ServerLauncher.exe", "", "", "say " & $readInput & @CRLF)

    [/autoit]


    und

    [autoit]

    ControlSend("[CLASS:ConsoleWindowClass]", "", "", "say " & $readInput & @CRLF)

    [/autoit]

    Mein Script funktionert aber leider nicht so wie ich will :(

    Das mit dem Local werde ich anpassen ,danke für den Tip :)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™