# Counter-Strike Statusscript



## MikeOverDSL (19. Juni 2003)

Hallo allerseits!

Ich suche für ein CS-Status-Script die nötigen Variablen, um aus dem Server die verbleibende Zeit und die nächste Map auszulesen.
Gibt es irgendwo eine Zusammenfassung aller Variablen, um solch ein StatusScript zu basteln?

Danke und Gruß...Michael


----------



## brÅinstorm (19. Juni 2003)

*UTFSB*



> _Original geschrieben von BomberJack _
> apric hat mich auf eine gute idee gebraucht und zwar habe ich hier ein skript was für die abfrage von Counter Strike servern benutzt wird das auch relativ schnell geht bloß mir fehlet da der überblick vieleicht kann ja mal wer anders sich das durchschauen und mit den bereits vorhanden code vergleichen das ich endlich meine abfragen machen kann .
> 
> ```
> ...


----------



## socKe|bla (20. Juni 2003)

lang lang ists her, da hab ich mich mal mit serverquerys beschäftigt 
das hier ist eins meiner ersten hl-server query scripte, nix mit funktionen oder klassen, einfach nur purer code und nicht viel 

also, hf..


```
<?php

$ip = "62.80.117.128";
$port = "27015";

$con = fsockopen("udp://".$ip, $port);
fwrite($con, sprintf('%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00));
fread($con, 24); //******** wegfiltern



$status = socket_get_status($con);
if($status["unread_bytes"] != 0){
  $data = "";
  while($status["unread_bytes"] != 0){
    $data .= fread($con, 1);
    $status = socket_get_status($con);
  }

  $data = explode("\\",$data);

  $info["players"] = $data[5];
  $info["lan"] = ($data[9]=="0") ? false : true;
  $info["maxplayers"] = $data[11];
  $info["gamedir"] = $data[13];
  $info["description"] = $data[15];
  $info["hostname"] = $data[17];
  $info["map"] = $data[19];
  $info["dedicated"] = ($data[21]=="d") ? true : false;
  $info["password"] = ($data[23]=="0") ? false : true;
  $info["os"] = ($data[25]=="w") ? "Windows" : "Linux";

  echo "Auf dem Server \"".$info["hostname"]."\" spielen zur Zeit ".$info["players"]." von ".$info["maxplayers"]."<br><br>
        OS: ".$info["os"].", Passwort: ".$info["password"].", Dedicated: ".$info["dedicated"].", Map: ".$info["map"].", Description: ".$info["description"].",
        Gamedir: ".$info["gamedir"].", Lan: ".$info["lan"];
}else{
  //Keine Verbindung
}

?>
```


----------



## Sway (22. Juni 2003)

weisst jemand rein zufällig ob man auch für Gameserver mit Q3-Engine (wie RtCW, ET, Jedi...) einen Statusscript anwenden kann?


----------



## brÅinstorm (22. Juni 2003)

natürlich kann man das.

dein spiel - welches es auch immer ist - ruft ja auch einige spieldaten ab. Diese werden angezeigt, wenn du aus der liste der server auswählst. So wars jedenfalls vor ner zeit noch... 

und da diese abfragen über bestimmte an den spielport gesendete befehle und die antworten darauf funktionieren, kannst du das gleiche auch mit php machen.

nur musst du entweder die abfragen irgendwie rausfinden. Am besten schaust du einfach mal bei google etc. nach, weil das immer jemand anderes schon vorher gemacht hat. Oft geben auch die firmen die kommandos raus.


----------



## Sway (22. Juni 2003)

Socke, kannst du mir diesen Teil hier erklären?

```
fwrite($con, sprintf('%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00));
```


----------



## socKe|bla (23. Juni 2003)

damit einem das server protocol was zurückschickt, muss man ihm halt genau das schicken, was es will. und das hl protocol erwartet erst 4 x 255 bytes (0xFF), danach einen string, was man von ihm will ("infostring", gibt auch "details" und noch ein paar) und danach ein zero byte (0x00). dann ist es zufrieden und man bekommt das zurückgeschickt, was man haben will. kannst ja mal bei google nach dem server protocol suchen, sollte es dich interessieren. so lässt sich das nämlich auch auf ut etc. übertragen.


----------



## Sway (24. Juni 2003)

Super, ich danke dir.


----------



## brÅinstorm (24. Juni 2003)

> nix mit klassen



ich mag klassen.^^


----------



## socKe|bla (25. Juni 2003)

ich mag auch klassen, nur so isses vielleicht für den anfang ein wenig einfacher, oder hast du dein erstes hl server query script mit klassen geschrieben


----------



## Bandit_profi (25. Juni 2003)

Tag,
socke könntest du bitte nochmal dein Script durchschaun, ich glaub da sind zwei Fehler drinnen. Zeile 20 und 33 bekomm ich fehler wegen den \ ... ?

Ausserdem braucht das bei mir extrem lang zum laden der Daten, woran kann das liegen?

Danke Bandit


----------



## socKe|bla (25. Juni 2003)

sry, hatte den code nicht mehr getestet, da fehlten ein paar \

```
<?php

$ip = "213.202.197.15";
$port = "27015";

$con = fsockopen("udp://".$ip, $port);
fwrite($con, sprintf('%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00));
fread($con, 24); //******** wegfiltern



$status = socket_get_status($con);
if($status["unread_bytes"] != 0){
  $data = "";
  while($status["unread_bytes"] != 0){
    $data .= fread($con, 1);
    $status = socket_get_status($con);
  }

  $data = explode("\\",$data);

  $info["players"] = $data[5];
  $info["lan"] = ($data[9]=="0") ? false : true;
  $info["maxplayers"] = $data[11];
  $info["gamedir"] = $data[13];
  $info["description"] = $data[15];
  $info["hostname"] = $data[17];
  $info["map"] = $data[19];
  $info["dedicated"] = ($data[21]=="d") ? true : false;
  $info["password"] = ($data[23]=="0") ? false : true;
  $info["os"] = ($data[25]=="w") ? "Windows" : "Linux";

  echo "Auf dem Server \"".$info["hostname"]."\" spielen zur Zeit ".$info["players"]." von ".$info["maxplayers"]."<br><br>
        OS: ".$info["os"].", Passwort: ".$info["password"].", Dedicated: ".$info["dedicated"].", Map: ".$info["map"].", Description: ".$info["description"].",
        Gamedir: ".$info["gamedir"].", Lan: ".$info["lan"];
}else{
  //Keine Verbindung
}

?>
```

und wenns so lang zum laden braucht gibts den server nicht

//Edit
oha, der fehler lag wieder mal um dummen forum, dass manchmal \ weglässt


----------



## Bandit_profi (28. Juni 2003)

Hallo,
also hab jetzt mal geschaut ob ich noch übers Hl Server Protokoll finde und hab dabei nen Script mit Klassen gefunden. Leider scheint es bei mir net zu funzen, villeicht könnte es sich mal von euch wer ansehen und mir sagen ob es bei euch villeicht funktioniert?

Tutorial - CS Sript 

P.s.: Sind zwei Scripte, das erste is auch einfach nur purer Code 

Bandit


----------



## aKraus (14. Oktober 2005)

moin,
 ich nutze die oben angegebene Class. Allerdings hab ich das problem, dass sich manche Server auslesen lassen und andere nicht!

 woran kann das liegen?

 Greatz


----------



## MikeOverDSL (14. Oktober 2005)

Danke für die Antwort, aber mittlerweile haben wir ein recht umfangreiches Statusscript gecodet, welches für nahezu alle Online-Games funktionert!

Zu sehen auf unserer Clanpage für CS 1.6: http://www.senility.de


----------

