Live Status - wahke/etstats GitHub Wiki

🌐 Live-Status – Serverabfrage in Echtzeit

Die Seite live.php zeigt den aktuellen Status deines Wolfenstein: Enemy Territory Servers an – ganz ohne RCON, nur durch UDP-Abfrage.


⚙️ Wie funktioniert das?

  1. Dein ET-Server muss öffentlich erreichbar sein (IP + Port)
  2. Die Datei core/ServerQuery.php sendet per UDP den Befehl getstatus
  3. Der Server antwortet mit:
    • Hostname
    • Mapname
    • Spieleranzahl
    • Spielername, Score, Ping

🧪 Beispiel-Abfrage

ServerQuery::getETStatus("127.0.0.1", 27960);

Gibt ein Array zurück mit:

[
  'hostname' => 'ET Server',
  'mapname' => 'goldrush',
  'mod' => 'etmain',
  'maxplayers' => 16,
  'players' => [
    ['name' => 'PlayerA', 'score' => 12, 'ping' => 45],
    ...
  ]
]

🛠️ Konfiguration

Du kannst IP und Port direkt in der Datenbank speichern (Tabelle settings):

name value
server_ip 127.0.0.1
server_port 27960

Diese Werte werden mit getSetting() aus core/Helpers.php geladen und an ServerQuery::getETStatus() übergeben.


📄 Anzeige in live.php

Die Datei /pages/live.php:

  • lädt IP & Port
  • führt die Abfrage aus
  • zeigt:
    • Servername
    • Map
    • Spieler
    • Ping/Score

Wenn keine Verbindung möglich ist, erscheint eine Fehlermeldung.


❗ Voraussetzungen

  • ET-Server muss über das Internet/Netzwerk erreichbar sein
  • Firewall/Portweiterleitung muss UDP-Port (z. B. 27960) erlauben
  • Funktioniert mit etmain, etpro, nq, jaymod, etc.

🧠 Tipp: Test mit netcat

Du kannst den Befehl manuell senden:

echo -ne "\xff\xff\xff\xffgetstatus\n" | nc -u 127.0.0.1 27960

📖 Weiter zu Fehlerbehebung