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
Post #1





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

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


Witam (IMG:style_emoticons/default/smile.gif)

Zacznę może od opisania skryptu który mam w planach stworzyć (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Oczywiście etap pierwszy to utworzenie bazy danych i jej zapełnienie a to nie stanowi problemu (IMG:style_emoticons/default/smile.gif)
2. Skrypt php który będzię uruchamiał się dajmy na to co 15 minut i będzie aktualizował informacje (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)


Z góry dziękuje za jakąkolwiek pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
vifus
post
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
Go to the top of the page
+Quote Post
Ronnie8
post
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 (IMG:style_emoticons/default/tongue.gif) tak czy inaczej dziękuje za pomoc ponieważ podejrzewam że temat rozwiąże wszystkie moje problemy (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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? (IMG:style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.08.2025 - 14:42