HLSS

Od HLDS.pl
Skocz do: nawigacji, wyszukiwania

Spis treści

Opis

HLSS 2 jest skryptem w PHP do wyświetlania statusu serwera albo serwerów gry Half-Life i Source na stronie WWW. Potrafi zwracać status jako listę serwerów, jako pojedynczy serwer, może zwracać jako HTML, jako wybrany plik textowy, jako obrazek (bardzo uproszczone).

Aktualna wersja to 0.9, autor _KaszpiR_ Oryginalnie napisany po angielsku.

Przykład działania brak, albo google.

Testowane na:

  • TeamFortress 2 (2010.12.27)
  • Counter-Strike 1.6 (2010.12.27)
  • Counter-Strike: Condition Zero (2010.12.27)
  • Counter-Strike: Source (2005.08.08)
  • Half-Life2 DeathMatch (2006-03-04)
  • Day Of Defeat (2006-03-04)
  • Day Of Defeat: Source (2006-03-04)
  • Quake3 i jego klony (beta)

Download

http://kaszpir.hlds.pl/hlds.pl/hlss/hlss_0.9.zip - od jakże dawna oczekiwany ;)

Wymagania

PHP 4.3 z funkcją fsockopen() - oznacza to, że php musi być skompilowany z opcją --enable-sockets (przeważnie jest, jak instalujesz z pakietów instalacyjnych). Dodatkowo funkcja fsockopen() nie może być blokowana jako funkcja niedozwolona w php.ini, na serwerze www lepiej abyś nie miał żadnego firewall'a albo odblokowane połączenia na porty gier. Opcjonalnie biblioteka GD2 w PHP (tylko do generacji obrazków w katalogu tools/

Instalacja

  • Zrób kopie bezpieczeństwa starszej wersji :)

Osoby znające język angielski - zalecam przeczytać plik docs/readme.html

  • Rozpakuj plik .zip do katalogu na serwerze, zachowując strukturę katalogów, oraz zachowując wielkość liter w nazwach plików.
  • Upewnij się, że plik hlss2_cache.txt ma tak ustawione prawa do zapisu, że może być zapisywany przez wszystkich ( chmod 666 ).

albo ustaw $main['cache'] = ""; jeśli nie chcesz korzystać z tej opcji cache (nie używanie cahce jest nie zalecane ze względów wydajności i poprawności działania skryptu).

  • Zedytuj plik config.php - na szczęście jest tam parę przykładów które powinny ci pomóc. Warto abyś użył słownika do angielskiego bo wiele opisów dałem w tym języku.
  • Ale pare informacji naprowadzających:

$main['template'] ="list.html"; - definiuje plik do wyświetlenia standardowej listy serwerów, pliki template są w katalogu skin i mają rozszerzenie .html

Następnie konfigurujesz serwer albo serwery - chodzi o $server[] Wypełnij dane zgodnie z ustawieniami swojego serwera "ip" => "ADRES:PORT", - numer ip naszego serwera w postaci ADRES:PORT , jeśli nie ma portu (czyli jest tylko ADRES) to domyślnie będzie użyty port 27015), w nazwie adresu można podać nazwę hosta serwera

"disable" => 0, - ustawiając 1 albo 0 możemy szybko ukryć/pokazać nasz serwer przed wyświetlaniem, bez potrzeby kasowania zbędnych linii

"template" => "default.html" - plik który będzie używany do wyświetlenia detalicznego, specyficznego statusu dla tego serwera, dzięki temu możesz mieć inne pliki dla każdego serwera, np DOD, CS czy CS:Source itp. Pliki są w katalogu skins, możesz stworzyć własne bazując na już istniejących, dane dotyczące tagów są w dalszej części artykułu.

"name" => "serwer1", - ustawia nazwę serwera, jeśli nie można jej pobrać bezpośrednio - użyteczne jak serwer nie odpowiada a nie chcemy mieć pustej nazwy

"ha" => "Admin", - Imię HeadAdmina, ewentualne tag do wykorzystania w skinie

"ha_mail" => "Admin@mail.com", - mail admina, ale przy modyfikacji skina można to zmienić np na numer GG czy coś podobnego

"timeout" => 1, - czas oczekiwania na odpowiedź od serwera w sekundach, lepiej nie schodzić poniżej sekundy, ani nie zwiększać - bo wydłuża to czas ładowania strony jeśli serwer nie odpowiada.

"gameurl" => "halflife", - podaje rodzaj gry (opcja halflife albo halflife2, potem stosowana w skórkach .html

nicklength" => "29", - długość nazwy gracza, jeśli używamy tagu payer_shortname - gdy chcemy aby wygląd był w ograniczonych ramach a nicki są za długie, tutaj możesz ustawi 35 aby wyświetlić cały nick

"mapurl" => "../maps/halflife" - ścieżka do obrazków mapy, może być względna albo bezwzględna (czyli zawierająca http://), map nie ma w zipie - musisz ściągnąć je sam np ze strony psychostats, uwaga, w skinach jest jeszcze używany tag {gamerul} oraz {gamedir} - jeśli masz specyficzny mod do gry musisz stworzyć katalog o nazwie modu i tam umieścić obrazki map

"mapext" => "jpg" - rozszerzenie obrazków map - ten tag jest specyficzny dla skina

"applaunch" => "30" - rodzaj gry do uruchomienia jeśli klikniesz na numerze ip serwera, zależy od gry (http:/www.steampowered.com) oraz skina


$main['showall'] = 0; - ustaw 1 oraz w jednym z serwerów ustaw template na showall.html i zobacz co się będzie działo, mniej więcej w 80% od góry strony będą interesujące cię tagi (a tak to wszystkie dostępne tagi i nie tylko.

$main['debug'] = 0; - ustaw na 1 aby włączyć wyświetlanie błędów, dobre jak coś ci nie działa.

  • Po tym zapisujemy config, i kierujemy przeglądarkę na adres i sprawdzamy czy wszystko chodzi.

Następny punkt zawiera informacje o zastosowaniu na stronach klanowych.


Zwracanie obrazków

Od wersji 0.7 skrypt potrafi zwracać status serwera jako prosty obrazek - użyteczne na stronach głównych albo forum gdzie ni jesteś w stanie wstawić znacznika iframe.

Ten tryb działa tylko dla pojedynczego serwera - więc jeśli masz np 5 serwerów - musisz stworzyć pięć oddzielnych wpisów aby zwracały obrazki.

Tryby zwracania obrazków

  • podstawowy - zwraca tylko obrazek online/offline
  • liczbowy - zwraca obrazek w zależności od ilości graczy na serwerze
  • procentowy - zwraca obrazek w zależności od ilości zajętych slotów na serwerze w procentach.

Jak to zrobić

Musisz po prostu wywołać specyficzny adres url w tagu img src obrazka. X oznacza tutaj specyficzny serwer id ( 1 to pierwszy, 2 to drugi ...)

podstawowy

index.php?id=X&img=1

liczbowy

index.php?id=X&img=1&plr=1

procentowy

index.php?id=X&img=1&plr=2

Poniższy przykład rozwieje pewne wątpliwości - każdy jest dla innego serwera oraz każdy zwróci inny stan

<img src="index.php?id=1&img=1" />
<img src="index.php?id=2&img=1&plr=1" />
<img src="index.php?id=3&img=1&plr=2" />


Wywołanie skryptu, skiny, iframe i tagi

Zauważcie, że wywołanie pliku index.php?id=0 powoduje wyświetlenie listy serwerów, a wywołanie index.php?id=1 wyświetli pierwszy serwer, index.php?id=2 drugi serwer i tak dalej.

Polecam zajrzeć do pliku config.php i na przykład zmienić $main['template'] na nano_list.html, podobnie zmienić paru serwerom template na nano.html i zobaczyć jak wygląda wygląd statusu dla wszystkich serwerów jak i dla pojedynczego serwera. Oczywiście zajrzyjcie do tych plików .html

Iframe - połącz to ze swoją stroną Chyba najwięcej ci wyjaśni plik [url=datas/files/hlss2/hlss2/iframe.html]iframe.html[/url] (otwórz w przeglądarce na serwerze) a następnie przeanalizuj kod źródłowy. Na stronie klanowej musisz w wybranym miejscu wstawić po prostu znacznik iframe z ustawionymi parametrami. Starczy potem poprawić wygląd aby mieściło się w ramce pliku .html oraz style .css aby pasowały do reszty strony.

Zwróć uwagę na obrazki!


Tagi Dzięki tagom wyświetlamy interesującą nas zawartość na stronę. Radzę popatrzeć po prostu na różne pliki html w katalogu skins.

Wszelkie elementy typu [tag] => wartosc powinniscie traktowac jako {tag} oraz jaką wartość on zwraca


Uniwersalne użycie zmiennych z PHP Używaj {PHP.nazwa_zmiennej}, działa także z tablicami, na przykład {PHP.tablica.klucz}, na przykład {PHP._SERVER.SERVER_NAME}

najlepiej jest poeksperymentować.


Pomiędzy znacznikami PLAYERS na przykład {player_id}, {player_name}

[player_name] => [P0D]Trust Noone "(88)"
[player_id] => 5
[player_kills] => 1
[player_time] => 225
[player_time_min] => 00:03:45
[player_shortname] => [P0D]Trust...
'' => 0
[j] => 1



Pomiędzy znacznikami STATUS na przykład {template}, {skin}, {map}

	    [disable] => 0
            [ip] => 192.168.1.1
            [template] => showall.html
            [name] => Szambo
            [ha] => 
            [ha_mail] => 
            [timeout] => 0
            [id] => 4
            [skin] => showall
            [ping] => 11
            [ipport] => 192.168.1.1:27015
            [port] => 27015
            [int_ipport] => 127.0.0.1:27015
            [int_port] => 27015
            [int_ip] => 127.0.0.1
            [map] => de_nuke
            [gamedir] => cstrike
            [gamename] => Counter-Strike
            [totalplayers] => 5
            [maxplayers] => 20
            [protocol] => 47
            [servertype] => d
            [serveros] => l
            [serverlocked] => 0
            [modrunning] => 1
            [modurl] => www.counter-strike.net
            [modftp] => 
            [modver] => 1.0
            [modsize] => 184000000
            [modserveronly] => 0
            [modclientdll] => 1
            [hlss_update_time] => 1141777570
            [update_time] => 2006-03-08

Pomiędzy znacznikami STATUS z użyciem rules na przykład {rules.amx_nextmap} {rules.mp_timelimit} etc

    [_tutor_bomb_viewable_check_interval] => 0.5
    [_tutor_debug_level] => 0
    [_tutor_examine_time] => 0.5
    [_tutor_hint_interval_time] => 10.0
    [_tutor_look_angle] => 10
    [_tutor_look_distance] => 200
    [_tutor_message_character_display_time_coefficient] => 0.07
    [_tutor_message_minimum_display_time] => 1
    [_tutor_message_repeats] => 5
    [_tutor_view_distance] => 1000
    [allow_spectators] => 1
    [amx_match_deluxe] => 1.72
    [amx_nextmap] => cs_estate
    [amx_timeleft] => 17:51
    [amx_version] => 0.9.9b (5 modules)
    [atac_version] => 2.5.3
    [coop] => 0
    [deathmatch] => 1
    [decalfrequency] => 30
    [edgefriction] => 2
    [fun_version] => 0.9.9b
    [hostage_debug] => 0
    [hostage_stop] => 0
    [humans_join_team] => any
    [max_queries_sec] => 1
    [max_queries_sec_global] => 1
    [max_queries_window] => 1
    [metamod_version] => 1.17.3
    [mp_allowmonsters] => 0
    [mp_autokick] => 0
    [mp_autoteambalance] => 0
    [mp_buytime] => 0.25
    [mp_c4timer] => 35
    [mp_chattime] => 10
    [mp_consistency] => 1
    [mp_fadetoblack] => 0
    [mp_flashlight] => 1
    [mp_footsteps] => 1
    [mp_forcecamera] => 2
    [mp_forcechasecam] => 1
    [mp_fragsleft] => 0
    [mp_freezetime] => 6
    [mp_friendlyfire] => 1
    [mp_ghostfrequency] => 0.1
    [mp_hostagepenalty] => 0
    [mp_kickpercent] => 0.66
    [mp_limitteams] => 0
    [mp_logdetail] => 3
    [mp_logfile] => 1
    [mp_logmessages] => 1
    [mp_mapvoteratio] => 0.66
    [mp_maxrounds] => 0
    [mp_mirrordamage] => 0
    [mp_playerid] => 0
    [mp_roundtime] => 1.75
    [mp_startmoney] => 800
    [mp_timeleft] => 0
    [mp_timelimit] => 20
    [mp_tkpunish] => 0
    [mp_windifference] => 1
    [mp_winlimit] => 0
    [pausable] => 0
    [smyga_plugin] => ;Destuckme 2.1;
    [sv_accelerate] => 5
    [sv_aim] => 0
    [sv_airaccelerate] => 10
    [sv_airmove] => 1
    [sv_allowupload] => 1
    [sv_alltalk] => 0
    [sv_bounce] => 1
    [sv_cheats] => 0
    [sv_clienttrace] => 1
    [sv_clipmode] => 0
    [sv_contact] => 
    [sv_friction] => 4
    [sv_gravity] => 800
    [sv_logblocks] => 1
    [sv_maxrate] => 20000
    [sv_maxspeed] => 320
    [sv_minrate] => 0
    [sv_password] => 0
    [sv_proxies] => 1
    [sv_region] => 3
    [sv_restart] => 0
    [sv_restartround] => 0
    [sv_stepsize] => 18
    [sv_stopspeed] => 75
    [sv_uploadmax] => 0.5
    [sv_voiceenable] => 1
    [sv_wateraccelerate] => 10


Modyfikacje

HLSS2 phpBB mod - modyfikacja skryptu pod forum phpBB



Zakończenie

  • This software is being provided free for all users under the GNU GPL license. See the

included license.txt file for futher details. Donations are always welcome.

_KaszpiR_

Podziękowania

  • PawelS za zwracanie uwagi na CSS i HTML
  • trawiator za fazę testową na swoich serwerach i wskazanie poprawki psychoquery
  • FOMFNY za lenistwo w działaniu i nadzwyczajną aktywność w nakłanianiu mnie abym odświeżył porjekt i pokazał jak stosować iframe
  • graczu za mod phpBB
  • Assasiner za HLS - oryginalny projekt.

Changelog

0.8

- added class checking when script used as include - to avoid class redeclaration under Land down Under and Seditio and other scripts using Xtemplate
- added customizable skin directory variable in config.php - now you can have skin selswere than subdirectory of hlss
	$main['skindir'] = "skin/"; //where are stored skin template files, remember to add end slash

- disabled ob_flush() on end of index.php - should be more covenient when including on some pages.

** Upgrading
- you just need to add on top of the config.php below line (if needed customize of course):
	$main['skindir'] = "skin/"; //where are stored skin template files, remember to add end slash
- overwrite inc/functions.php with new version.

0.7

- added cache mode - speed improvement and also saves you problem with banned www server on game server
	in older versions if there were too many queries about server status from certain
	ip, then that ip got banned on game server (the game server wasignoring status request)
	that caused that you could no more get server status info
	the cache is updating server status from time to time, - increases speed and 
	decreases ban possibilty to almost zero (well unless you suddenly get over 100 hits 
	to www in one specified second when the scrit was updating server status, but tis is extremely rare)

- added option to output images
- added some tags in config for:
	mapsurl - given some examples (to suit better cs and cs:s)
	gameurl - for use in template to change path to maps images and game mod icons
	applaunch - example to activate game launch when klicking on server ip

- added special char change in player names
- added tag player_shortname if you want list with truncated nicknames
- added some small tools for image generation
- changed readme.txt
- added doc/ dir
- moved readme.txt to doc/readme.html and made it HTML
- minor typos fixed
- favicon in some .html (templates)

0.6

- rewritten config
- changed direcotry structure (cleaner)
- if calling with id=0 (that means alist all servers, server uses only one template, 
	and does not include, separate templates specfic for each server
	this was introduced for security reasons
- output buffering (i forgot :D)
- renamed .tpl to .html, better usage for morons
- few examples like nano, and nano_list
- the idea for users how and which tags to use (at the end of readme)

0.5

unreleased (or if realeased, the do not use it)
- added option to parse the GET['id'], so if you run your script like index.php? it shows all
  servers in a list, and if you run index.php?id=0 it will display only server number zero 
  that is a first server in a config.php, use respectively index.php?id=1 for second server etc.

 notice this required .tpl change.

0.4

- minor tweaks

0.3

- initial release

Powered by

html generation with templates - fast & easy
copyright (c) 2000-2001 Barnabás Debreceni [cranx@users.sourceforge.net]

latest stable & CVS versions always available @
http://sourceforge.net/projects/xtpl/

Modifcations made by Olivier "Neuro" C. (http://www.neocrome.net) :

* 10-jun-2003 :
- Function assign modified, for parsing of arrays in arrays.

* 02-feb-2004 :
- Added the function out_to_file
- Commented out the "header(content-length)".
- Commented out the error message if block do not exists.

Nie rozumiesz / Nie działa

Wejdz na Game Monitor i użyj ich modułu.

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia