Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Pobieranie danych z Open Tibia Server, Bardzo pilna sprawa. Proszę o pomoc.
emajl22
post 28.11.2010, 00:38:01
Post #1





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

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


Próbuję napisać skrypt, który pobierze mi dane z z serwera Open Tibia. Ma polegać to na tym, że wpisuję adres IP jakiegoś serwera i skrypt pobiera mi dane o ilości graczy online i innych, mniej ważnych rzeczach. Problem polega na tym, że nie wiem jak do tego się zabrać, dlatego zwracam się do Was z prośbą o pomoc.

Wszelkie wskazówki będą nagradzane. Z góry dzięki.



--------------------
Go to the top of the page
+Quote Post
md1988
post 28.11.2010, 00:57:56
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 27.11.2010

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


To pytanie powinno się pojawić bardziej na forum Tibii smile.gif Musisz po prostu połączyć się do serwera Tibii i odpowiednio zdobyć od serwera potrzebną Ci informacje. Przyda się więc znajomość socketów(do otwarcia połączeń) i protokołu tibii do ekstrakcji danych tongue.gif *

*to instrukcja ogólna, być może Tibia oferuje zdobywanie takich danych w przystępnej postaci.
Go to the top of the page
+Quote Post
emajl22
post 28.11.2010, 01:00:42
Post #3





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

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


Cytat(md1988 @ 28.11.2010, 00:57:56 ) *
*to instrukcja ogólna, być może Tibia oferuje zdobywanie takich danych w przystępnej postaci.

No na pewno, bo jak inaczej listy ots zdobywają te wszystkie dane?

Znalazłem w internecie coś takiego:

  1. <?php
  2.  
  3. $ip = "warots.net.pl";
  4. $port = "7171";
  5.  
  6. $info = chr(6).chr(0).chr(255).chr(255).'info';
  7. $sock = @fsockopen($ip, $port, $errno, $errstr, 1);
  8. if ($sock)
  9. {
  10. fwrite($sock, $info);
  11. $data='';
  12. while (!feof($sock))
  13. $data .= fgets($sock, 1024);
  14. fclose($sock);
  15. preg_match('/players online="(\d+)" max="(\d+)" peak="(\d+)"/', $data, $matches);
  16. print '<FONT class="uni_03">Status:</FONT><b><font face="verdana" size="2" color="#FFAA00"> Online</font></b><br>';
  17. echo '<FONT class="uni_03">Players online: </FONT></b><FONT class="uni_04">';
  18. echo $matches[1] . '/' . $matches[2];
  19. preg_match('/uptime="(\d+)"/', $data, $matches);
  20. $h = floor($matches[1] / 3600);
  21. $m = floor(($matches[1] - $h*3600) / 60);
  22.  
  23. print '<br><FONT class="uni_03">Monsters: </FONT><FONT class="uni_04">liczba online</FONT>';
  24. print "<br><FONT class='uni_03'>Uptime: </FONT<FONT class='uni_04'> $h" . ($h==1? 'h' : ($h==2||$h==3||$h==4? 'h' : 'h'));
  25. print " $m" . ($m==1? 'm' : ($m==12||$m==13||$m==14? 'm' : ($m%10==2||$m%10==3||$m%10==4? 'm' : 'm'))) . '</FONT>';
  26. print '<br><FONT class="uni_03">Klient:</FONT><FONT class="uni_04">'.$klient;'</FONT>';
  27. print '<br><FONT class="uni_03">Host:</FONT><FONT class="uni_04">'.$ip;'</FONT>';
  28. print '<br><FONT class="uni_03">Port:</FONT><FONT class="uni_04">'.$port;'</FONT>';
  29. print '<br><FONT class="uni_03">World type:</FONT><FONT class="uni_04">'.$server_type;'</FONT>';
  30. print '<br><FONT class="uni_03">Experience:</FONT><FONT class="uni_04">'.$exp;'</FONT>';
  31. $counthouse = count(glob("$dirdata/houses/*.*"));
  32. if($counthouse > 0)
  33. {
  34. print '<br><FONT class="uni_03">Houses:</FONT><FONT class="uni_04">'.$counthouse;'</FONT>';
  35. }
  36. else
  37. {
  38. print '<br><FONT class="uni_03">Houses:</FONT><FONT class="uni_04">--</FONT>';
  39. }
  40.  
  41. }
  42. else {
  43. print '<font color=silver size=2>     Status: <font color=red size=3><i>Ofline</i></center></font><br>';
  44.  
  45.  
  46. }
  47.  
  48. ?>

Odziwo działa, jednak nie do końca. Jak zmienię jakiś adres IP, wejdę na stronę to działa, ale jak już odświeżę, to już nie. Wszystko widać oprócz wyników, jedynie działa wtedy "Status". Co może być przyczyną?

Ten post edytował emajl22 28.11.2010, 01:01:03


--------------------
Go to the top of the page
+Quote Post
md1988
post 29.11.2010, 12:01:24
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 27.11.2010

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


Spróbuj wyświetlić dane które otrzymujesz z serwera.

  1. while (!feof($sock))
  2. $data .= fgets($sock, 1024);
  3. fclose($sock);
  4. echo $data;

Być może trzeba przerobić lekko parsowanie smile.gif
Interesujące powinny być dla Ciebie zwłaszcza przypadki gdy tylko status się wyświetla.

Ten post edytował md1988 29.11.2010, 12:02:08
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: 25.04.2025 - 07:01