Ankündigung

Einklappen
Keine Ankündigung bisher.

Gameserver Log Datei Durchsuchen und Online Spieler finden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gameserver Log Datei Durchsuchen und Online Spieler finden

    Hallo zusammen, ich habe ein kleines Problem und in PHP bin ich nun auch nicht gerade ein Ass
    Ich möchte von meinen ARK Gameserver eine Datei Auslesen siehe weiter unten, das geht auch Prima.

    Nun aber kommen die Kopfschmerzen bei mir:

    1. Er muss nach 'Spieler Name1' joined the game. & 'Spieler Name1' left the game. suchen, kann nur mittels der Uhrzeit ermittelt werden wer noch Online ist (zb.: 00:13:12) die Log Datei löscht sich am Tag 1-2 mal wegen Neustarts.
    2. Ausgabe der Anzahl die Online sind & die Namen die Online sind zZ.



    Würde mich freuen wenn mir einer mal hier weiter helfen könnte, am liebsten natürlich ein Script wie schon gesagt PHP finde ich schon gut, aber bin leider Anfänger.



    was er unten im Script ausgibt:
    (wird als Chat Ausgabe benötigt, löscht sich bei Server Neustart Automatisch)


    00:13:12.6492 Player 'Spieler Name1' joined the game.
    00:53:12.9491 Player 'Spieler Name2' joined the game.
    01:18:46.5573 Spieler Name1 (Spieler Name1): xyz
    01:18:46.5573 Spieler Name2 (Spieler Name2): aas
    01:18:48.6114 Spieler Name1 (Spieler Name1): blablabla
    02:03:43.7169 Player 'Spieler Name1' left the game.
    03:13:12.2491 Player 'Spieler Name1' joined the game.
    usw.
    Spieler Name 1 usw sind nicht die Richtigen Namen der Spieler, ist nur ein Beispiel.

    'Spieler Name1' wird genau so ausgegeben mit: ' beim einloggen und ausloggen sonst nicht.


    Das ist meine Ausgabe für mein Chat.
    PHP-Code:
    <?php


       
    if (!file_exists("C:\gameserver\ark\server\Logs\Server 1\RCON_All.log"))
             {
                echo 
    "Log Datei nicht vorhanden.";
                exit;
             }

             
    $dz=fopen("C:\gameserver\ark\server\Logs\Server 1\RCON_All.log","r");

             if(!
    $dz)
               {
                 echo 
    "Log Datei konnte nicht geöffnet werden.";
                 exit;
               }


                 while (!
    feof($dz))
                            {    
                              
    $reihe=fgets($dz,50);
                              echo 
    "$reihe";
     
    //                         echo "<br/>"; 
                            
    }

                
    fclose($dz);

    ?>

  • #2
    1. Datei mit file() einlesen
    2. Ergebnis mit RegEx und foreach aufbereiten
    3. Aufbereitetes Ergebnis ausgeben

    Die Uhrzeit ist dabei vollkommen unerheblich, die neusten Logins stehen hinten in der Datei, insofern ist die Person immer dann noch online wenn danach kein logout für sie mehr verzeichnet ist. Du musst also alle Status Einträge nur chronologisch verarbeiten, dann passt das Ergebnis am Ende automatisch. Nach dem Serverneustart sind ja eh erst mal alle ausgeloggt.

    Kommentar


    • #3
      Zitat von Pandora Beitrag anzeigen
      Würde mich freuen wenn mir einer mal hier weiter helfen könnte, am liebsten natürlich ein Script
      Wenn Du was fertiges willst ist das hier das falsch Forum. Dazu gibt es die Scriptbörse.

      Falls Du es doch selbst programmieren willst.

      Wie Du es machst (fopen) ist OK. Hat den Vorteil gegenüber file() das nicht erst alles komplett in den Speicher geladen wird sondern nur jeweils eine Zeile.

      Auf die Zeile wendst Du am besten preg_match(…) an. Ist ja klar wie das format aussehen muss. Daraus läst sich anfängerfreundlich ein regulärer Ausdruck bilden den Du dann in preg_match nutzt

      ~^(\d{2}:\d{2}:\d{2}\.\d{1,4})\s+Player\s+(.+?)(jo ined|left)~

      $matches[ 1 ] ist dann die Zeit, $matches[ 2 ] ist der Spielername incl. den ' drumherum und $matches[ 3 ] ist joined oder left

      Ps. Aus irgendweolchen Gründen macht die Forensoftware oben im Regex aus dem joined ein jo ined
      PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

      Kommentar

      Lädt...
      X