Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobieranie informacji o serwerze CS (Counter Strike), Jak połączyć się z serwerem CS`a i pobrać potrzebne informacje?
Ronnie8
post 20.01.2013, 21:15:21
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.01.2013

Ostrzeżenie: (0%)
-----


Witam smile.gif

Zacznę może od opisania skryptu który mam w planach stworzyć wink.gif

1.Skrypt ma współpracować z bazą danych w której będzie 9 pół (id, ip, nazwa, graczy, mapa, active, inne1, inne2, inne3) pola inne to na pola które będą zawierały informacje nie związane z samym skryptem np "liczba" która będzie decydowała o kolejności wyświetlania rekordów na liście smile.gif
Oczywiście etap pierwszy to utworzenie bazy danych i jej zapełnienie a to nie stanowi problemu smile.gif
2. Skrypt php który będzię uruchamiał się dajmy na to co 15 minut i będzie aktualizował informacje smile.gif

samo auto uruchamianie skryptu i aktualizowanie informacji nie jest problemem jednak nie wiem jak połączyć się z danym serwerem, odczytać interesujące mnie informacje (nazwe, ilość graczy, mape i czy serwer jest aktywny)?
W internecie znalazłem multum rozbudowanych skryptów które rozwiązywały powyższe problemy z tym że były oparte na plikach i nie przystosowane do pracy z bazami danych a raczej ja nie umiałbym ich odpowiednio zmodyfikkować tongue.gif
Dlatego pisze do Was z proźbą o wytłumaczenie mi jak nawiązać połączenie z danym serwerem, odebrać porządane informacje?
będę wdzięczny za poradniki, linki i tym podobne smile.gif


Z góry dziękuje za jakąkolwiek pomoc smile.gif
Go to the top of the page
+Quote Post
vifus
post 21.01.2013, 00:03:41
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 13
Dołączył: 7.04.2012

Ostrzeżenie: (10%)
X----


Szukaj, szukaj, szukaj ;>

http://forum.php.pl/index.php?showtopic=23051


--------------------
Zlecenia PHP / MYSQL / JAVASCRIPT / C++ / CSS / HTML na PW
Go to the top of the page
+Quote Post
Ronnie8
post 22.01.2013, 21:35:23
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.01.2013

Ostrzeżenie: (0%)
-----


Nie wiem czemu ale przeoczyłem ten temat tongue.gif tak czy inaczej dziękuje za pomoc ponieważ podejrzewam że temat rozwiąże wszystkie moje problemy smile.gif

Niestety nie wszystko chyba działa tak jak należy:
  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.  
  11. function RetriveInfo ( $strServerIP = '127.0.0.1', $intServerPort = 27015 )
  12. {
  13. $connection = fsockopen( "udp://" . $strServerIP, $intServerPort );
  14. fwrite( $connection, sprintf( '%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00 ) );
  15. fread( $connection, 24 );
  16. $status = socket_get_status( $connection );
  17. if ( $status["unread_bytes"] != 0 )
  18. {
  19. $return = "";
  20. while ( $status["unread_bytes"] != 0 )
  21. {
  22. $return .= fread( $connection, 1 );
  23. $status = socket_get_status( $connection );
  24. }
  25.  
  26. $return = explode( '', $return );
  27.  
  28. $arr = array();
  29. $arr['ip'] = $intServerIP;
  30. $arr['port'] = $intServerPort;
  31. $arr['hostname'] = $return[19];
  32. $arr['game'] = $return[17];
  33. $arr['players'] = $return[5];
  34. $arr['maxplayers'] = $return[11];
  35. $arr['system'] = ( $return[25] == "w" ) ? "Windows" : "Linux";
  36. $arr['game_dir'] = $return[15];
  37. $arr['map'] = $return[21];
  38. $arr['password'] = ( $return[25] == "0" ) ? "false" : "true";
  39. $arr['secure'] = $return[29];
  40. return $arr;
  41. }
  42. else
  43. {
  44. // blad?
  45. return $arr;
  46. }
  47. }
  48. ?>
  49.  
  50.  
  51. <?php
  52. $arr = RetriveInfo("193.33.176.238", "27015"); // gdzie te parametry to IP oraz port
  53. echo "IP: " . $arr['ip'];
  54. echo "<BR>";
  55. echo "Port: " . $arr['port'];
  56. echo "<BR>";
  57. echo "Nazwa servera: " . $arr['hostname'];
  58. echo "<BR>";
  59. echo "Gra: " . $arr['game'];
  60. echo "<BR>";
  61. echo "Ilosc graczy: " . $arr['players'];
  62. echo "<BR>";
  63. echo "Max graczy: " . $arr['maxplayers'];
  64. echo "<BR>";
  65. echo "System: " . $arr['system'];
  66. echo "<BR>";
  67. echo "Cos tam: " . $arr['game_dir'];
  68. echo "<BR>";
  69. echo "Mapa: " . $arr['players'];
  70. echo "<BR>";
  71. echo "Haslo: " . $arr['password'];
  72. echo "<BR>";
  73. echo "VAC: " . $arr[secure];
  74. echo "<BR>";
  75. ?>


Powyższy kod co prawda nie zwraca żadnego błędu jednak od 10minut skrypt ten wykonuje się i niestety nic to nie daje cały czas pracuje:P

Dlatego spróbowałem z tym kodem:
  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 = '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['game_dir'] = $return[15];
  35. $arr['map'] = $return[21];
  36. $arr['secure'] = $return[29];
  37. return $arr;
  38. echo 'działa';
  39. }
  40. else
  41. {
  42. // blad?
  43. return $arr;
  44. }
  45. }
  46.  
  47. print_r( RetriveInfo( '193.33.176.238', 27015 ) );
  48. ?>


Jednak tak jak i w pierwszym przypadku skrypt wykonuje się już kilka minut i nic z tego nie wynika tongue.gif
Dodam że skrypty wrzuciłem na mój hosting w home.pl (bussines starter)

Czy macie pomysł co jest przyczyną tak długiego wykonywania się skryptu?

Macie jakieś pomysły czemu tak się dzieje? wink.gif

Ten post edytował Ronnie8 21.01.2013, 22:42:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:28