Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Game-Monitor Data Feed


  • Zamknięty Temat jest zamknięty
1 odpowiedź w tym temacie

#1 bartek124

    Profesjonalista

  • Użytkownik

Reputacja: 30
Życzliwy

  • Postów:188
  • Lokalizacja:Kołaczyce
Offline

Napisano 27.12.2008 20:01

Witojcie

Od dawna jest prosty sposób na wyświetlenie statystyk serwera na naszej własnej stronie czy forum.
Otóż serwis Game-Monitor udostępnia nasze dane w paru postaciach, my skorzystamy z zserializowanej tablicy, a dane wyświetlimy za pomocą skryptu PHP mojego autorstwa :).

Do dzieła!

Na początku, jeśli jeszcze tego nie zrobiliśmy, dodajemy nasz serwer do serwisu Game-Monitor.
Następnie wchodzimy w jego statystyki, później w zakładkę Data Feeds, szukamy i kopiujemy link do PHP Serialized.


Poniższą funkcję wklejamy do kodu naszej strony:
function cstrike_gamemonitor($feed) {
	$data = file_get_contents($feed);

	$monitor = unserialize($data);
	if($monitor->error == 0) {
		$out = "<table align='center' width='400' cellspacing='0' cellpadding='0'>n<tr>n";
		$out .= "<td style='border:1px #000000 solid;text-align:center;padding:3px 3px 3px 3px;font-weight:bold;' colspan='2'>".$monitor->name."</td>n";
		$out .= "</tr>n<tr>n";
		$out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>IP:</td>";
		$out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".$monitor->ip.":".$monitor->port."</td>";
		$out .= "</tr>n<tr>n";
		$out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>Sloty:</td>";
		$out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".$monitor->player." / ".$monitor->maxplayer."</td>";
		$out .= "</tr>n<tr>n";
		$out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>Ping:</td>";
		$out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".$monitor->query_time."</td>";
		$out .= "</tr>n<tr>n";
		$out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>Typ:</td>";
		$out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".($monitor->premium ==1 ? "Publiczny" : "Prywatny")."</td>";
		$out .= "</tr>n</table>";
	} else {
		$out = "<table align='center' width='400' cellspacing='0' cellpadding='0'>n<tr>n";
		$out .= "<td style='border:1px #000000 solid;text-align:center;padding:3px 3px 3px 3px;font-weight:bold;' colspan='2'>Serwer nie działa</td>n";
		$out .= "</tr>n</table>";
	}
	return $out;
}

UWAGA!
Nawet jeśli chcemy monitorować wiele serwerów, powyższą funkcję wklejamy tylko raz!


Funkcję tę wywołujemy w taki sposób:
echo cstrike_gamemonitor("TUTAJ LINK, KTORY SKOPIOWALISMY")

Wklejając link skopiowany z Game-Monitor w sposób podany w kodzie.

Uwagi!
1. Jeśli masz wiele serwerów, wystarczy że powielisz ten drugi kod, wklejając link do innego serwera
2. Połączenie z Game-Monitor jest dość czasochłonnym procesem (według moich obliczeń 0.80-1.10 sekundy), więc im więcej serwerów dodasz, tym dłużej może Ci się strona ładować.
3. Ten skrypt NIE DZIAŁA na serwerach z safe_mode on lub z zablokowaną funkcją file_get_contents();

Statystyki są dość ubogie (nawet aktualnej mapy nie pokazują), ale to już intencja serwisu Game-Monitor, jakie dane chce rozprowadzać, a nie moja :).

Co do tego czasu połączenia, w sumie mogłem zrobić mały cache, jednak wydawało mi się to niepotrzebne, bo statystyki zbyt rozbudowane nie są :) (ale jeśli bardzo będzie wam przeszkadzał ten czas ładowania to coś skombinujemy ;)).

Wygląd oczywiście możecie dowolnie modyfikować (jeśli znacie html), nie ma z tym problemu.

Jeśli o czymś zapomniałem, proszę dać znać w temacie

Pozdro!!

Jeśli chcesz umieszczać ten poradnik na innej stronie, wklej wyraźny link do tego Supportu (amxx.pl) i do mojej strony (Kołaczyce Servers).
  • +
  • -
  • 0

#2 Gość__*

  • Gość

Reputacja: 0

Offline

Napisano 02.01.2009 14:41

Przykładowo musi wyglądać to tak:
<?php
function cstrike_gamemonitor($feed) {
    $data = file_get_contents($feed);

    $monitor = unserialize($data);
    if($monitor->error == 0) {
        $out = "<table align='center' width='400' cellspacing='0' cellpadding='0'>n<tr>n";
        $out .= "<td style='border:1px #000000 solid;text-align:center;padding:3px 3px 3px 3px;font-weight:bold;' colspan='2'>".$monitor->name."</td>n";
        $out .= "</tr>n<tr>n";
        $out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>IP:</td>";
        $out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".$monitor->ip.":".$monitor->port."</td>";
        $out .= "</tr>n<tr>n";
        $out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>Sloty:</td>";
        $out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".$monitor->player." / ".$monitor->maxplayer."</td>";
        $out .= "</tr>n<tr>n";
        $out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>Ping:</td>";
        $out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".$monitor->query_time."</td>";
        $out .= "</tr>n<tr>n";
        $out .= "<td style='border:1px #000000 solid;border-right:0;border-top:0;padding:3px 3px 3px 3px;'>Typ:</td>";
        $out .= "<td style='border:1px #000000 solid;border-top:0;padding:3px 3px 3px 3px;'>".($monitor->premium ==1 ? "Publiczny" : "Prywatny")."</td>";
        $out .= "</tr>n</table>";
    } else {
        $out = "<table align='center' width='400' cellspacing='0' cellpadding='0'>n<tr>n";
        $out .= "<td style='border:1px #000000 solid;text-align:center;padding:3px 3px 3px 3px;font-weight:bold;' colspan='2'>Serwer nie działa</td>n";
        $out .= "</tr>n</table>";
    }
    return $out;
}
echo cstrike_gamemonitor("http://module.game-monitor.com/91.102.118.30:27016/data/server.php")
?>
Efekt: <!-- m -->http://amxx.pl/monitor.php<!-- m -->




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych