Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Statystyki Serwera Cs - Problem
Forum PHP.pl > Forum > Przedszkole
cabana
Witam.
Od dłuższego czasu poszukuję statystyk do serwera cs.
Jedyne co udało mi się znaleźć to:

  1. function RetriveInfo ( $strServerIP = '127.0.0.1', $intServerPort = 27015 )
  2. {
  3. $connection = fsockopen ( "udp://" . $strServerIP, $intServerPort );
  4. fwrite ( $connection, sprintf ( '%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00 ) );
  5. fread ( $connection, 24 );
  6. $status = socket_get_status ( $connection );
  7. if ( $status["unread_bytes"] != 0 )
  8. {
  9. $return = "";
  10. while ( $status["unread_bytes"] != 0 )
  11. {
  12. $return .= fread ( $connection, 1 );
  13. $status = socket_get_status ( $connection );
  14. }
  15.  
  16. $return = explode ( '', $return );
  17.  
  18. $arr = array ();
  19. $arr['ip'] = $intServerIP;
  20. $arr['port'] = $intServerPort;
  21. $arr['hostname'] = $return[19];
  22. $arr['game'] = $return[17];
  23. $arr['players'] = $return[5];
  24. $arr['maxplayers'] = $return[11];
  25. $arr['system'] = ( $return[25] == "w" ) ? "Windows" : "Linux";
  26. $arr['game_dir'] = $return[15];
  27. $arr['map'] = $return[21];
  28. $arr['password'] = ( $return[25] == "0" ) ? "false" : "true";
  29. $arr['secure'] = $return[29];
  30. return $arr;
  31. }
  32. else
  33. {
  34. // blad?
  35. return $arr;
  36. }
  37. }


niedziałające, znalezione na tym forum

oraz:

  1. unction getInfo($ip = '127.0.0.1', $port = 27015)
  2. {
  3. $ip = gethostbyname($ip);
  4. $connection = fsockopen("udp://".$ip, $port);
  5. stream_set_timeout($connection, 3);
  6.  
  7. if(!$connection)
  8. {
  9. return false;
  10. }
  11. else
  12. {
  13. $pack = pack("N", 0xFFFFFFFF).'TSource Engine Query'.chr(0);
  14. fwrite($connection, $pack);
  15. $return = fread($connection, 129);
  16. $status = socket_get_status($connection);
  17.  
  18. if ($status["unread_bytes"]!=0)
  19. {
  20. fclose($connection);
  21. return translate($return);
  22. }
  23. else
  24. {
  25. fclose($connection);
  26. return false;
  27. }
  28. }
  29. }


działające ale nie pobiera mi wszystkiego czego potrzebuję to znaczy ilu jest graczy aktualnie na serwerze i ilu może być maksymalnie.
proszę o pomoc.
męczę się z tym cały dzień i nie mogę nic uradzić sad.gif
buliq
I to wszystko? A gdzie funkcja translate questionmark.gif? To co pokazałeś to tylko połączenie i odebranie danych ale inna funkcja je tłumaczy (na to wygląda)
cabana
zapomniałem przepraszam już daję:

  1. function translate($result)
  2. {
  3. $return = explode("\0", substr($result, 5));
  4. return $return;
  5. }
buliq
to dużo tongue.gif a jakie wyniki daje obecnie. Staram się uświadomić sobie jakie parametry już zwraca i dojść po nitce do kłębka jakie polecenie mu wysłać jeszcze.
cabana
zwraca tablicę:

Kod
Array ( [0] => 127.0.0.1:27015 [1] => serwer cs [2] => de_dust2 [3] => cstrike [4] => Counter-Strike [5] => [6] => /dw [7] => )


0 - ip oraz port
1 - nazwa serwera
2 - aktualna mapa
3 - folder główny gry (ale nie jestem pewien)
4 - nazwa gry
5 - nic
6 - nie wiem
7 - nic
buliq
A tutaj już byłeś ? smile.gif
starach
Poszukaj sobie PsychoQuery. O ile dobrze pamiętam to z Psychostatów się wywodziło. Na hlds.pl też było coś niecoś na ten temat. HA tej strony nawet chyba miał jakiś projekt w ten deseń. Half-Life Server Status czy jakoś tak - HLSS.

Mało prawdopodobne żeby ktoś ci z tym tutaj pomógł, bo nikomu się nie będzie chciało szukać opisu protokołu już o czytaniu takich akademickich wypocin nie wspominając. Dlatego jesteś raczej skazany na gotowce.
buliq
Z tego co pogrzebałem po tym skrypcie wyślij w pack komendę v

pack("V",, 0xFFFFFFFF) ?

Fajny skrypcik generalnie rzecz biorąc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.