Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

ROZWIĄZANY: Pomoc w stworzeniu tabeli serwerów


Golus

Rekomendowane odpowiedzi

Witam,

Mam do Państwa (userów) takie pytanie, jako że nie znam się na budowie ipb a chcę dodać tabele serwerów na stronę główną to muszę się zwrócić do Państwa o pomoc.

Mianowicie chodzi o kod php, mam kod ale nie wiem gdzie (do jakiego pliku) i w które miejsce (miejsce w pliku) go dodać tak aby działał prawidłowo.

Oto i kod:

// serwerki
define('MAPS_DIR',	'images/cs_maps/');
require_once ($phpbb_root_path . 'includes/class_hlsocket.' . $phpEx);

$s1_status  = new HLSocket('195.42.112.111', '27015');
$s1_info	= $s1_status->details();

$template->assign_vars(array(
	//	--	Server pierwszy ($s1_info)	- BEGIN
	'S1_HOSTNAME'		=> $s1_info['hostname'],
	'S1_PLAYERS'		=> sprintf($lang['server_players'], $s1_info['players'], $s1_info['max']),
	'S1_PWD'			=> $s1_info['passworded'] ? '<img src="'.MAPS_DIR.'pwd_secure.png" alt="'.$lang['server_password'].'" title="'.$lang['server_password'].'" />' : '<img src="'.MAPS_DIR.'pwd_secure2.png" alt="'.$lang['server_password2'].'" title="'.$lang['server_password2'].'" />',
	'S1_MAP2'			=> sprintf($lang['server_map'], $s1_info['map']),
	'S1_MAP'			=> MAPS_DIR.$s1_info['map'].'.jpg',
	'S1_JOIN_HLSW'		=> "hlsw://{$s1_status->host}:{$s1_status->port}",
	'S1_JOIN_STEAM'		=> "steam://{$s1_status->host}:{$s1_status->port}",
	'S1_GM_STATUS'		=> "http://www.gametracker.com/server_info/{$s1_status->host}:{$s1_status->port}/",
	'S1_FORUM'			=> append_sid("index.php?c=1"),
	//	--	Server pierwszy ($s1_info)	- END
));

$s1_status->close();

Po dodaniu tego kodu do pliku .php należy dodać taki kod na główną stronę:

{S1_HOSTNAME} = nazwa serwera, {S1_PLAYERS} - ilu gra / max  itp., itd.

Jeżeli mieli by Państwo czas i chęci to prosiłbym o pomoc w tym zakresie.

Z góry dzięki,

Piotr Łapczyński.

Zapomniałem dodać załącznika.

tabela_serverww.zip

Edytowane przez Golus
Odnośnik do komentarza
Udostępnij na innych stronach

Proponował stworzenie odpowiedniego hook'a do tego.

Zrobić pętle po wszystkich serwerach a ich parametry wstawić do tablicy. Tablicę następnie przekazać jako parametr do bitu skina i wyświetlić w założonym miejscu.

Do tego dorzucić cache wyników(bo zapytanie do kilku serwerów przy każdym wczytaniu strony dobrym pomysłem nie jest).

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Nie o to mi chodzi, poprostu trzeba mi wiedzieć gdzie wrzucić plik p.php tak aby to działało

Mam taką linijkę :

<?php include('p.php'); ?>

I co zrobić żeby np wyglądało to tak:

<?php include('http://head-masters.pl/status/p.php'); ?>

Tylko tak żeby to nadal działało bo w ten sposób nie działa !

I do tego potrzebuję miejsce znajdowania się pliku globalTemplate

Odnośnik do komentarza
Udostępnij na innych stronach

Jakiś czas temu stworzyłem taką tabelę na swoim forum. Nie znam się za bardzo na PHP, więc prawdopodobnie mój sposób nie należy do najlepszych ale spełnia funkcje, które chciałem.

Chciałem, aby tabelka wyświetlała się na stronie głównej forum, więc zgodnie z tym tutorialem:

http://forum.invisionize.pl/topic/7506-wlasna-tabela-na-stronie-glownej/

utworzyłem tabelę w HTMLu w bicie boardindexTemplate w edycji stylu na forum.

Potem znalazłem skrypt na internecie, który musiałem lekko przerobić:

http://www.forums.wiaderko.com/poradniki-do-hlds/159988-status-serwera-na-www-wszystkie-dane-47-48-a.html

Ostatecznie, doszedłem do takiej zawartości plików jak w tej paczce:

http://www.onlinegamers.pl/pliki/status.zip

status1.php i status2.php to odpowiednio statusy pierwszego i drugiego serwera (można byłoby użyć tylko jednego pliku, ale ja nie potrafię php na tyle dobrze). Są to też pliki, które edytujesz.

<?php
$ip = "91.204.161.25:27030"; // IP:PORT serwera
require_once("class_PQ.php");
$pq_data = PQ::Create(Array());
$data = $pq_data->query_info($ip);  
$out = $data["totalplayers"]; // pobiera liczbę graczy online
$out2 = $data["maxplayers"]; // pobiera maksymalną liczbę graczy
$map1 = $data["map"]; // pobiera nazwę mapy
?>

Te informacje wyciągane są z pliku \PQ\halflife.php, więc jeśli chcesz aby skrypt wyciągał jeszcze jakieś inne dane, to dodajesz to do status1/status2.php

Przykładowo, jeśli chcesz aby skrypt pobrał nazwę serwera, to w status1/status2.php dodajesz przed ?> takie coś:

$name1 = data["name"];

I tak dalej.

Zawartość status.zip wrzucasz do głównego katalogu forum.

Teraz wracamy do bitu boardindexTemplate.

Na samym początku kodu dodaj:

<php>
require_once('status1.php');
require_once('status2.php');
</php>

A teraz do naszej tabelki. Zakładam, że już ją zrobiłeś (w HTMLu, sama tabelka bez żadnej treści), a jeśli nie to poczytaj to:

http://www.kurshtml.edu.pl/html/struktura_tabeli,tabele.html

W odpowiednich wierszach i kolumnach tabeli parsujesz dane z plików status1.php i status2.php (lub więcej/mniej w zależności od serwerów).

Przykładowo w określonym wierszu pod kolumną "Mapa" wpisujesz:

{$map1}

I w tym miejscu pojawi się nazwa mapy na danym serwerze. Identycznie robisz z innymi polami.

Jeżeli chcesz zrobić bardziej rozbudowany status, to będziesz musiał się wgłębić w zawartość podesłanych przeze mnie plików.

Co do statusu Online/Offline (na zielono i czerwono), to w moim przypadku po użyciu $fsockopen, który był opisywany w kilku poradnikach, zawsze wyświetlał się status Offline, więc wymyśliłem trochę inny sposób.

Utworzyłem warunek, który w zależności od tego czy nazwa mapy wyświetla się w tabelce, będzie określał czy serwer jest włączony czy wyłączony. Wygląda to tak:

<if test="$map1"><span style="color: green; font-weight: bold;">Online</span><else /><span style="color: red; font-weight: bold;">Offline</span></if>

Dodam, że gdy serwer padnie, to pole z nazwą mapy jest puste więc jest on na 99% prawidłowy.

U mnie tabelka ostatecznie wygląda tak:

http://www.onlinegamers.pl/pliki/przyklad.jpg

Mam nadzieję, że w jakimś stopniu Ci pomogłem :P

  • Lubię to 2
Odnośnik do komentarza
Udostępnij na innych stronach

Poi dodaniu tej lini:

<php>
require_once('status1.php');
require_once('status2.php');
</php>

Wyskoczyły takie błędy:

Strict Standards: Assigning the return value of new by reference is deprecated in /home/tycoon/domains/head-masters.pl/public_html/class_PQ.php on line 90

Strict Standards: Non-static method PQ::create() should not be called statically, assuming $this from incompatible context in/home/tycoon/domains/head-masters.pl/public_html/status1.php on line 4

Strict Standards: Declaration of PQ_halflife::query_rcon() should be compatible with that of PQ_PARENT::query_rcon() in/home/tycoon/domains/head-masters.pl/public_html/PQ/halflife.php on line 734

Strict Standards: Non-static method PQ::create() should not be called statically, assuming $this from incompatible context in/home/tycoon/domains/head-masters.pl/public_html/status2.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /home/tycoon/domains/head-masters.pl/public_html/class_PQ.php:90) in /home/tycoon/domains/head-masters.pl/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 114

Warning: Cannot modify header information - headers already sent by (output started at /home/tycoon/domains/head-masters.pl/public_html/class_PQ.php:90) in /home/tycoon/domains/head-masters.pl/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 127

Warning: Cannot modify header information - headers already sent by (output started at /home/tycoon/domains/head-masters.pl/public_html/class_PQ.php:90) in /home/tycoon/domains/head-masters.pl/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 136

Warning: Cannot modify header information - headers already sent by (output started at /home/tycoon/domains/head-masters.pl/public_html/class_PQ.php:90) in /home/tycoon/domains/head-masters.pl/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 137

Warning: Cannot modify header information - headers already sent by (output started at /home/tycoon/domains/head-masters.pl/public_html/class_PQ.php:90) in /home/tycoon/domains/head-masters.pl/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 141

Odnośnik do komentarza
Udostępnij na innych stronach

Zamień:

<php>
require_once('status1.php');
require_once('status2.php');
</php>

na:

<php>
require_once('status/status1.php');
require_once('status/status2.php');
</php>

i zobacz czy działa, bo z tego co widzę utworzyłeś dodatkowy katalog.

@down

To zaczekaj aż ktoś mądrzejszy się wypowie, bo ja prawie nie znam PHP i nie chciałbym jeszcze bardziej namieszać.

A u mnie skrypt działa w takiej formie jak wysłałem.

Edytowane przez Akiro
Odnośnik do komentarza
Udostępnij na innych stronach

Powiem Panu szczerze że bardzo mi Pan pomógł dodając ten skrypt.

W moim kodzi brakowało mi tylko jednego znacznika php i za pomocą Pańskiej porady podłączyłem swój skrypt pod stronę.

Wielkie dzięki.

Edytowane przez Golus
Odnośnik do komentarza
Udostępnij na innych stronach

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

Nasz kolega już siedział za piracką wersję IPB, Ty też możesz
† Będziemy bronić SB po kres naszych sił †
Nie ma bolca na izolca!!!
Tłumaczes Power

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.