Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Status serwera CS 1.6
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
.dragonfly
Dla wszystkich ktorzy chca pobierac status serwera gry Counter-Strike 1.6

  1. <?php
  2.  
  3. /**
  4. * pobiera informacje z serwera i zwraca tablice z tymi danymi
  5. * @param string $intServerIP Adres IP serwera
  6. * @param integer $intServerPort Port serwera
  7. * @return array
  8. */
  9. function RetriveInfo ( $strServerIP = '127.0.0.1', $intServerPort = 27015 )
  10. {
  11. $connection = fsockopen( &#092;"udp://\" . $strServerIP, $intServerPort );
  12. fwrite( $connection, sprintf( '%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, &#092;"infostring\", 0x00 ) );
  13. fread( $connection, 24 );
  14. $status = socket_get_status( $connection );
  15. if ( $status[&#092;"unread_bytes\"] != 0 )
  16. {
  17. $return = &#092;"\";
  18. while ( $status[&#092;"unread_bytes\"] != 0 )
  19. {
  20. $return .= fread( $connection, 1 );
  21. $status = socket_get_status( $connection );
  22. } 
  23.  
  24. $return = explode( '', $return );
  25.  
  26. $arr = array();
  27. $arr['ip'] = $intServerIP;
  28. $arr['port'] = $intServerPort;
  29. $arr['hostname'] = $return[19];
  30. $arr['game'] = $return[17];
  31. $arr['players'] = $return[5];
  32. $arr['maxplayers'] = $return[11];
  33. $arr['system'] = ( $return[25] == &#092;"w\" ) ? \"Windows\" : \"Linux\";
  34. $arr['game_dir'] = $return[15];
  35. $arr['map'] = $return[21];
  36. $arr['password'] = ( $return[25] == &#092;"0\" ) ? false : true;
  37. $arr['secure'] = $return[29];
  38. return $arr;
  39. } 
  40. else
  41. { 
  42. // blad?
  43. return $arr;
  44. } 
  45. } 
  46. ?>
kyno
Tak przegladajac kod smile.gif
  1. <?php
  2.  
  3. ...
  4. $arr['ip'] = $strServerIP;
  5. $arr['port'] = $intServerPort;
  6. ...
  7.  
  8. ?>
mat3usz
Mam pytanie co do tego kodu. Czy wystarczy kod wkleić na stroe i zmienić
  1. <?php
  2.  
  3. ...
  4. ( $strServerIP = '127.0.0.1', $intServerPort = 27015 )
  5. ...
  6.  
  7. ?>

Bo gdy wklejam kod i tworze plik serwer.php, nic sie nie wyswietla;/ Moze trzeba zrobic tabelke Mysql?
P.S. Na php nie znam sie zbyt dobrze, ale ogolne pojecie mam ;P
dr_bonzo
Wystarczy tyle:
  1. <?php
  2. print_r( RetriveInfo( '129.112.1.1', 6666 ) );
  3. ?>

+ dodaj oczywiscie kod tej funkcji.
Matikx
Niedziałają umnie te scrypty. worriedsmiley.gif
A jak zrobić żeby działały
Bo robie wszystko i nic

Jest to pod domena
http://matikx.no-ip.org/~matikx/stan.php
  1. <?php
  2.  
  3. /**
  4. * pobiera informacje z serwera i zwraca tablice z tymi danymi
  5. *
  6. * @param string $intServerIP Adres IP serwera
  7. * @param integer $intServerPort Port serwera
  8. * @return array
  9. */
  10. function RetriveInfo ( $strServerIP = 'matikx.no-ip.org', $intServerPort = 7171 )
  11. {
  12. $connection = fsockopen( &#092;"udp://\" . $strServerIP, $intServerPort );
  13. fwrite( $connection, sprintf( '%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, &#092;"infostring\", 0x00 ) );
  14. fread( $connection, 24 );
  15. $status = socket_get_status( $connection );
  16. if ( $status[&#092;"unread_bytes\"] != 0 )
  17. {
  18. $return = &#092;"\";
  19. while ( $status[&#092;"unread_bytes\"] != 0 )
  20. {
  21. $return .= fread( $connection, 1 );
  22. $status = socket_get_status( $connection );
  23. }
  24.  
  25. $return = explode( '', $return );
  26.  
  27. $arr = array();
  28. $arr['ip'] = $intServerIP;
  29. $arr['port'] = $intServerPort;
  30. $arr['hostname'] = $return[19];
  31. $arr['game'] = $return[17];
  32. $arr['players'] = $return[5];
  33. $arr['maxplayers'] = $return[11];
  34. $arr['system'] = ( $return[25] == &#092;"w\" ) ? \"Windows\" : \"Linux\";
  35. $arr['game_dir'] = $return[15];
  36. $arr['map'] = $return[21];
  37. $arr['password'] = ( $return[25] == &#092;"0\" ) ? false : true;
  38. $arr['secure'] = $return[29];
  39. return $arr;
  40. }
  41. else
  42. {
  43. // blad?
  44. return $arr;
  45. }
  46. }
  47. ?>

Wpisałem czy server gry jest dostepny czyli adress i port i nic
A gdzie mam wpisać ten kod
  1. <?php
  2. print_r( RetriveInfo( 'matikx.no-ip.org', 7171 ) );
  3. ?>
karolski
wszystko ladnie zwraca w postaci tablicy biggrin.gif dzieki ci bardzo tongue.gif
Matikx
ja czytałem kilka razy i sie pogubiłem niech ktoś to wszystko zleje do gupy i da mi odpowiedz na pm

co dać mam do tabel baz danych a co n a strone a co includować plx
pomocy
rolleyes.gif
smom
Czy moglby ktos zamiescic tutaj link do tego skryptu, bo cos nie chce mi dzialac. Dziekuje.
Babcia@Stefa
Funkcja bardzo fajna i przydatna, z pewnością skorzystam smile.gif

Dziękuję, Babcia@Stefa
mosh
Hej...
Wrzuci ktoś poprawną wersje tego skryptu.. bo to co jest coś nie działa...
albo może jakiś link do innej wersji questionmark.gif biggrin.gif

mnie szczególnie interesuje, coś szybkiego i wydajnego...
i co by zwracało nazwe serwera, liczbę plajerów i mapke... mi takie cóś by stykneło biggrin.gif

pozdro
johny009
Proszę o pomoc w rozwiązaniu problemu skrypt zwraca mi taki błąd

Kod
Parse error: syntax error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/users/hsqad/www/cs_stat.php on line 16
varez
LUUUUDZIE, co wy za manianę z tym odwalacie?? skrypt jest ewidentnie z..epsuty!!
przy pomocy dobrych ludzi z 4programmers.net doszedłem do takiej wersji skryptu:

  1. <?php
  2.  
  3. /**
  4. * pobiera informacje z serwera i zwraca tablice z tymi danymi
  5. * @param string $intServerIP Adres IP serwera
  6. * @param integer $intServerPort Port serwera
  7. * @return array
  8. */
  9.  
  10. function RetriveInfo ( $strServerIP = '127.0.0.1', $intServerPort = 27015 )
  11. {
  12. $connection = fsockopen( "udp://" . $strServerIP, $intServerPort );
  13. fwrite( $connection, sprintf( '%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00 ) );
  14. fread( $connection, 24 );
  15. $status = socket_get_status( $connection );
  16. if ( $status["unread_bytes"] != 0 )
  17. {
  18. $return = "";
  19. while ( $status["unread_bytes"] != 0 )
  20. {
  21. $return .= fread( $connection, 1 );
  22. $status = socket_get_status( $connection );
  23. } 
  24.  
  25. $return = explode( '', $return );
  26.  
  27. $arr = array();
  28. $arr['ip'] = $intServerIP;
  29. $arr['port'] = $intServerPort;
  30. $arr['hostname'] = $return[19];
  31. $arr['game'] = $return[17];
  32. $arr['players'] = $return[5];
  33. $arr['maxplayers'] = $return[11];
  34. $arr['system'] = ( $return[25] == "w" ) ? "Windows" : "Linux";
  35. $arr['game_dir'] = $return[15];
  36. $arr['map'] = $return[21];
  37. $arr['password'] = ( $return[25] == "0" ) ? "false" : "true";
  38. $arr['secure'] = $return[29];
  39. return $arr;
  40. } 
  41. else
  42. { 
  43. // blad?
  44. return $arr;
  45. } 
  46. } 
  47. ?>
  48.  
  49.  
  50. <?php
  51. $arr = RetriveInfo("127.0.0.1", "27015"); // gdzie te parametry to IP oraz port
  52. echo "IP: " . $arr['ip']; 
  53. echo "<BR>";
  54. echo "Port: " . $arr['port']; 
  55. echo "<BR>";
  56. echo "Nazwa servera: " . $arr['hostname']; 
  57. echo "<BR>";
  58. echo "Gra: " . $arr['game']; 
  59. echo "<BR>";
  60. echo "Ilosc graczy: " . $arr['players']; 
  61. echo "<BR>";
  62. echo "Max graczy: " . $arr['maxplayers']; 
  63. echo "<BR>";
  64. echo "System: " . $arr['system']; 
  65. echo "<BR>";
  66. echo "Cos tam: " . $arr['game_dir']; 
  67. echo "<BR>";
  68. echo "Mapa: " . $arr['players']; 
  69. echo "<BR>";
  70. echo "Haslo: " . $arr['password']; 
  71. echo "<BR>";
  72. echo "VAC: " . $arr[secure]; 
  73. echo "<BR>";
  74. ?>


Uwagi: Oczywiście nalezy to sobie juz samemu poukladac, zmienic tą linijkę
  1. <?php
  2. $arr = RetriveInfo("127.0.0.1", "27015"); // gdzie te parametry to IP oraz port
  3. ?>

no i coś wyświetlanie IP przy pomocy
  1. <?php
  2. echo "IP: " . $arr['ip'];
  3. ?>

nie dziala,ale to juz maly problem

johny009 - mialem identyczny bląd.. skrypt byl zly, uzyj tego powyzej winksmiley.jpg

a ma ktoś może skrypt zeby pobierał listę graczy,punkty i czas gry??
tiraeth
Cytat
LUUUUDZIE, co wy za manianę z tym odwalacie?? skrypt jest ewidentnie z..epsuty!!
przy pomocy dobrych ludzi z 4programmers.net doszedłem do takiej wersji skryptu:

Pierwotna wersja skryptu powstała w 2004 roku, możliwe, że coś się zmieniło w strukturze danych zwracanych przez serwer...

Cytat
a ma ktoś może skrypt zeby pobierał listę graczy,punkty i czas gry??

Może dobrzy ludzie z 4programmers.net Ci pomogą? tongue.gif A tak na poważnie, to ja się z czymś takim nie spotkałem, może trzeba pobrać jakieś pliki przez ftp z katalogu hlds?
Kamson
skrypt i jeden i drugi jest oki ... po prostu skrypt forum przy pisaniu topica wstawił \ przed " bo kolega napisał post a potem robił szybką edycje . tyle
wywalcie te backslash'e przed " i będzie śmigał tak samo
varez
hmm mam taki skrypt juz w domu (jestem w szkole), ale narazie mi zwraca jeden wielki ciag znaków (jeżeli nic nie popsuję to bedzie tu: http://free.of.pl/c/czeslav/play2.php.). musze wyłapać co jest punktami, co czasem gry i jak to rozumiec.. w oczekiwaniu jest skrypt pobierajacy wartosci CVAR z servera.. jak bede mial wszystkie gotowe to tu wrzucę smile.gif
in5ane
A czy będzie to działać do Counter Strike'a: Source?
Energy156
Witam.
Moglby mi ktos to wytlumaczyc krok po kroku co z tym zrobic co gdzie wkleic itp?
Pianandrill
Jak sie wydawało ten skrypt jest tym czego od dawna już szukam, ale....
jak go wykonuje na swoim serwerze csa to wykonuje sie bardzo długo po czym tablica socket_get_status zwraca wartość blocked jako 1 oraz unread_bytes jako 0 (co jest oczywiste)...
uzylem wiec funckji stream_set_blocking($connection, 0) która zwraca true (niby zadziałała), skrypt wykonuje sie natychmiast ale niestety, unread_bytes pozostaje 0

Dopisalem jeszcze cos takiego ze finkcja fcockopen zwraca errno oraz errstr (znaczy zaznaczylem te parametry) i zgadnijcie co, funkcja zwraca errno = 0 oraz pusty string errstr.

wiec mam dodatkowe pytania
1 jaki jest port udp z ktorego moge zczytywac dane z serwera CS 1.6 jezeli port serwera jest 1337
2 dlaczego mam puste wartosci, czy są jakies jeszcze dodatkowe rzeczy ktore musi spelniac box na ktorym jest serwer lub/i sam serwer cs'a

aha, apache ze skryptem jest na maszynie obok tej na ktorej stoi cs ale w tej samej klasie ip
3 dodatkowe pytanie: czy tym skryptem mozna odczytywac dane z dowolnego serwera w internecie (zakladam ze tak skoro sie podaje ip oraz port)

Pozdrawiam
mam nadzieje ze dla odmiany ktos odpowie na mojego posta i nie bedzie to jak zwykle ostatni post w wątku winksmiley.jpg
Piotrwusek
A znacie takie skrypty jak pracuje na gametracker.com

Taki skrypt

Kto jest online na serwerze
Zlicza ilość zabić
Sam sie aktualizuje
Zlicza ilość godzin
Pokazuje info o serwerze
varez
Cytat("Piotrwusek)
Kto jest online na serwerze -- bede robic jak bede mial czas, mam podstawe, ale trzeba ja zdekodowac
Zlicza ilość zabić -- jw
Sam sie aktualizuje -- nie rozumiem? kliknac odwiez i po problemie.. chyba ze dziala na Ajaxie czyli bez odswiezania - ale to tez do zrobienia
Zlicza ilość godzin -- jw (tzn jak 1 i 2)
Pokazuje info o serwerze -- tzn?? ale tez do zrobienia,cokolwiek masz na mysli tongue.gif
Piotrwusek
Jak tam prace?



A może ktoś zna strone z takim skryptem?

PS. A jak sie połaczyć i pobierać informacje to może sam coś napisze.
varez
Cytat(Piotrwusek @ 9.02.2008, 19:02:40 ) *
Jak tam prace?

slabo, bo mam na glowie 2 inne projekty (ale w koncu bede to musial zrobic), pozatym szkola, matura, zycie prywatne .. tak malo czasu na wszystko jeszcze nigdy nie mialem.. ale sie zrobi ;p
nawet cvary bedzie sie dalo zczytac z servera!! (tj. informacje jak grawitacja, jakiestam inne ustawienia, pozostaly czas do konca mapy, nastepna mapa itd itd)
Cytat(Piotrwusek @ 9.02.2008, 19:02:40 ) *
A może ktoś zna strone z takim skryptem?
stary, szukalem chyba z kilka tygodni - nie znalazłem.. mam tylko kawalek skryptu z jakiegos cms-a, ale cos mi nie chcial dzialac, po wycieciu go z calości..

Cytat(Piotrwusek @ 9.02.2008, 19:02:40 ) *
PS. A jak sie połaczyć i pobierać informacje to może sam coś napisze.
podstawowy skrypt masz w tym temacie tongue.gif ten w moim poscie dziala na 100% smile.gif
fredzio90
sposób KaBal-a działą, tylko niewiem jak wyciągnąć więcej informacji.. czy nieda się wiećeej questionmark.gif po kolei sprawdzałęm returny, sprawdzałem tablice i jakby niebyło nic więcej...
shark121
mi też świetnie działa skrypt kobala z tym że potrzebuje jeszcze danych o aktualniej liczbie graczy grających na serverze gdy sobie skonstrułuje funkcje pod to zamiast liczby graczy wyświetla mi się słowo cstrike:

Kod
<?php
function server_info($ip='localhost', $port=27015){
$ip=gethostbyname($ip);
$connection = fsockopen("udp://".$ip, $port);
$time_out=3;
if(function_exists('stream_set_timeout')){
stream_set_timeout($connection, $time_out);
}else if(function_exists('socket_set_timeout')){
socket_set_timeout($connection, $time_out);
}
if(!$connection){
return 0;
}
$paczka=pack("N", 0xFFFFFFFF).'TSource Engine Query'.chr(0);
fwrite($connection, $paczka);
$return=fread($connection, 100);
$status = socket_get_status( $connection );
if($status["unread_bytes"]!=0){
fclose($connection);
return przetlumacz($return);
}else{
fclose($connection);
return 0;
}
}
function przetlumacz($str){
$return = explode("\",substr($str,5));
$tablica = array();
$tablica['ipport']=$return[0];
$tablica['nazwa']=$return[1];
$tablica['mapa']=$return[2];
$tablica['gracze'] = $return[3];

return $tablica;
}
function show_info($ipport, $tytul="Server"){
list($ip_servera, $port_servera) = explode(":", $ipport);
if (!$port_servera){
$port_servera = "27015";
}
$wynik=server_info($ip_servera, $port_servera);
if($wynik!=0){
$nazwa=$wynik['nazwa'];
$ipport=$wynik['ipport'];
$mapa=$wynik['mapa'];
$gracze=$wynik['gracze'];
echo("Mapa: $mapa<br>Gracze: $gracze / 17<br>Typ gry: Counter Strike<br>Vac: Niebezpieczny<br><br>");
// wyswietla napis gdy server jest online
}else{
echo("SERWER JEST OFFLINE<br><br>");// wyswietla napis gdy server jest offline
}
}
?>


Co zmienić żeby działalo prawidłowo? http://www.shark.boo.pl/status1/
help_mee
czy
  1. <?php
  2. server_info($ip_servera, $port_servera);
  3. ?>

Ma jeszcze ilość graczy online?!
bim2
http://phpfi.com <- tutaj wrzuc kod i podaj linka na forum winksmiley.jpg
shark121
:/ wyświetla mi, że server jest offline a jest online. Jeśli dobrze wszystko przeczytałem to trzeba zmienić słowo localhost w pliku index.php na prawdziwy adres IP (w formacje ip:port) twojego servera. Gdzie jeszcze trzeba zmienić?
varez
hmm, jest taki myk, ze to sprawdza tylko statusy non-steam.. dla steam jest inny skrypt
fredzio90
ja znalazłem pewny skrypt w internecie, przykład: (pliki z modułu psyhostats)

  1. <?php
  2. include("class_PQ.php");
  3. $pq = PQ::create($conf);
  4. print_r($pq->query_info('212.180.241.143:27064'));
  5. ?>


pliki:

http://rapidshare.com/files/123139955/cs.rar.html

powyższy przykład wyświetla:

Kod
Array ( [ping] => 15 [ipport] => 212.180.241.143:27064 [port] => 27064 [ip] => 212.180.241.143 [int_ipport] => 212.180.241.143:27064 [int_port] => 27064 [int_ip] => 212.180.241.143 [name] => HashJama prawie TP | wiaderko.com @ Gradobicie.pl [map] => de_inferno [gamedir] => cstrike [gamename] => Counter-Strike [totalplayers] => 25 [maxplayers] => 26 [protocol] => 47 [servertype] => d [serveros] => l [serverlocked] => 0 [modrunning] => 1 [modurl] => www.counter-strike.net [modftp] => [modver] => 1.0 [modsize] => 184000000 [modserveronly] => 0 [modclientdll] => 1 )
macza
Bardzo dobra klasa...
Ja używam jeszcze:
  1. <?php
  2. $ip='91.121.133.17:27923';
  3. include("class_PQ.php");
  4. $pq = PQcreate($conf);
  5. print_r($pq->query_info($ip));
  6. print_r($pq->query_players($ip)); //zwraca players
  7. ?>
Watt
Witam,

Mam pytanie jak pobrać wersje engine do serwera CS 1.6. (Chodzi mi mi o rozróżnienie typu serwera: Steam, Nonsteam, Steam + Nonsteam)

Pozdrawiam
mlody69
Witam,
mógłby ktoś mi powiedzieć jak pobrać niektóre zmienne i wyświetlić je?np maxplayers.
Z góry dziękuje
mahomet91
Polecam skorzystać z tego, masz tutaj monitoring serwera i to dokładny:

http://csserwis.org/art-325_wlsany-monitor...ngu-serwera.htm
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-2024 Invision Power Services, Inc.