TajemniczyRycerz - 2008-12-26 19:28:35

Autor: JotEmI
Źródło: link

Wstęp

Jak pewnie wielu z was wie ARSSE czyli Advanced Remote Soldat Server Enchanter to narzędzie pozwalające na zdalną administrację serwera Soldata. Nie jest to oczywiście jedyny program tego typu (pełną listę znaleźć można pod tym adresem), ale uważam że jest całkiem wydajny i prosty w obsłudze i nadaje się zarówno dla początkujących jak i doświadczonych administratorów. Program pobrać można np. stąd.
Po rozpakowaniu archiwum uruchamiamy ARSSE.exe i powinniśmy zobaczyć główne okno programu.

http://jotemi-dc.webpark.pl/PICS/ARSSE1.JPG

W prawym górnym rogu widzimy dwa przyciski: Remove i Add. Służą one do dodawania i usuwania nowych zakładek (każda zakładka to jeden serwer, który możemy administrować). Standardowo powinniśmy mieć już otwartą jedną zakładkę, klikając na niej prawym klawiszem pojawi się nam małe menu. Tam można zmienić nazwę zakładki, zduplikować zakładkę, dodać nową, itp. Na początek wypełniamy po kolei pola Host, Port i Password. Host to adres serwera (jeśli postawiliście serwer dedykowany na swoim komputerze to jako adres wpisujemy „localhost”). Port to numer portu dla połączeń przychodzących od klientów, zdefiniowany w soldat.ini. Wreszcie Password to tzw. adminlog, także definiowany w soldat.ini. Kiedy już wpiszemy poprawne dane wciskamy przycisk Connect, ARSSE połączy się z serwerem i wypisze na wstępie kilka przydatnych informacji, m.in. czy friendly fire jest włączone, jaka jest częstotliwość bonusów, procent głosów potrzebny do przegłosowania mapy, itd. Obok przycisku Connect znaduje się Manage Favourites, dzięki niemu możemy dany serwer dodać do listy ulubionych i następnym razem nie trzeba będzie wpisywać na nowo hosta, portu i hasła. Z prawej strony znajduje się jeszcze przycisk z zielonymi strzałkami. Służy on do ręcznego odświeżania informacji o serwerze. Zanim przejdziemy do wykonywania komend dobrze jest skonfigurować wpierw pewne ustawienia programu.

Konfiguracja

Klikamy przycisk Configuration.
Jak widać w opcjach konfiguracji jest kilka zakładek, opiszę je tutaj po kolei:

General

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON1.JPG


Global Settings – globalne ustawienia programu (takie same dla wszystkich serwerów)

- automatically refresh every    X seconds – co jaki okres czasu ARSSE ma odświeżać informacje o serwerze
- minimize to system tray – okresla czy ARRSE ma być minimalizowane do system tray’a
- show player numbers on tabs while connected – właczą/wyłącza wyświetlanie ilości graczy na zakładce danego serwera
- automatically sort on refresh – włącza/wyłącza sortowanie listy graczy po ilości pkt.
- automatically check for updates every  - automatyczne wyszukiwanie aktualizacji
- Admin chat name: - nick z jakim widoczni będziemy na Admin chat (więcej o nim niżej)

Server-Specific Settings – ustawienia dla aktywnego serwera (aktywnej zakładki)

- save server password – czy hasło (adminlog) ma być pamiętane przy ponownym uruchomieniu
- save message log to ... – włącza/wyłącza zapisywanie logów do pliku
- hide „Registering Server” messages – ukrywa wiadomości odnośnie rejestrowania serwera w Lobby
- hide kill messages – ukrywa wiadomości o zabójstwach
- automatically swap teams ... – włącza/wyłącza automatyczne przełączanie drużyn po każdej mapie (zmienia Alpha na Bravo i odwrotnie)
- automatically balance teams... more then X – włącza/wyłącza automatyczny balans drużyn jeśli różnica graczy jest większa niż X
- automatically send server message every X – włącza/wyłącza automatczną wiadomość wysyłaną na serwer co X sekund; wiadomość do wyświetlenia można wpisać w polu tekstowym poniżej

IRC

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON2.JPG

ARSSE ma wbudowanego klienta IRC i na tej zakładce możemy go skonfigurować.

- IRC Server: - adres serwera IRC
- Port: - port serwera IRC
- Nickname: - nasz nick
- Alternative: - jeśli wybrany nick będzie zarejestrowany użyty zostanie ten alternatywny
- Channel: - kanał IRC
- Channel Key: - hasło dla kanału

- enable AUTH/login – włączenie autoryzacji (jeśli mamy zarejestrowany nick)
- AUTH Bot: - adres bota
- AUTH Command: - polecenie dla bota
- AUTH Username: - nick do weryfikacji
- AUTH Password: - hasło

Events

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON3.JPG

Events to zdarzenia jakie może obsługiwać ARSSE. Do każdego z nich podpiąć można inny plik ze skryptami. O skryptach słów więcej w dalszej części, teraz opiszę kolejno zdarzenia, przy których skrypty mogą być wywoływane.

- OnLoad – przy starcie ARSSE
- OnExit – przy zamykaniu ARSSE
- OnConnect – przy połączeniu ARSSE z serwerem
- OnDisconnect – przy odłączaniu ARSSE od serwera
- OnJoinRequest – przy żądaniu połączenia
- OnPlayerJoin – przy dołączeniu gracza
- OnPlayerLeave – przy odejściu gracza
- OnPlayerSpeak – gdy gracz coś powie
- OnAdminConnect – przy połączeniu admina
- OnAdminDisconnect – przy odłączeniu admina
- OnTimeLeft – przy komunikacie o pozostałym czasie gry
- OnData – przy nadejściu danych z serwera (sprowadza się do tego, że wyłapuje komendy poprzedzone znakiem /)
- OnRefresh – po przyjęciu przez ARSSE pakietu REFRESHX
- OnIRCMessage – przy wiadomości na kanale IRC
- OnIRCJoin – przy dołączaniu ARSSE na kanał IRC
- OnIRCPart – przy wychodzeniu ARSSE z kanału IRC
- OnIRCConnect – przy łączeniu ARSSE z serwerem IRC
- OnIRCDisconnect – przy odłączaniu ARSSE od serwera IRC

Kiedy klikniemy prawym przyciskiem na zdarzeniu, które nie ma jeszcze przypisanego skryptu pokaże nam się małe menu.

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON3_1.JPG

- Load script – pozwala podpiąć plik ze skryptem do zdarzenia
- New Script – przechodzi do zakładki Script Editor, w której możemy napisać nowy skrypt
- Clear Script – usuwa powiązanie między zdarzeniem a plikiem skryptowym

Jeśli klikniemy prawym przyciskiem na zdarzeniu, z którym jest już związany jakiś skrypt to pojawi się bardzo podobne menu, z tą tylko różnicą, że zamiast New Script pokaże się opcja Edit Script. Jej wybranie spowoduje przejście do Script Editor, w którym będziemy mogli edytować istniejący skrypt.

Timers

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON4.JPG

Timers to nic innego jak liczniki, które możemy zdefiniować i podpiąć do nich skrypty tak samo jak pod zdarzenia.

W polu Timer możemy zmienić nazwę licznika, a zaznaczając bądź odznaczając check box włączamy lub wyłączamy dany timer. Kolumna Repeat pozwala określić ile razy licznik ma zostać zrestartowany po odliczeniu czasu określonego w Interval (nigdy nie używałem timerów i niestety nie jestem pewien czy wartość Interval podajemy w sekundach czy tickach, musicie sami sprawdzić :) ). W Script File można podpiąć plik ze skryptem na tej samej zasadzie jak w Events.

Script editor

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON5.JPG

Edytor skryptów to chyba najbardziej skomplikowana rzecz jaką możecie spotkać w ARSSE :), ale możliwości skryptowe ARSSE są dość mocno ograniczone, więc i jego obsługa nie jest niczym nadzwyczaj trudnym. Dokładniejszy opis tego jak pisać skrypty zamieszczam na samym końcu tego poradnika, tutaj skupię się tylko na podstawowej obsłudze.

W polu Script File: podać możemy ścieżkę i nazwę nowotworzonego skryptu. Commands and Wariables zawiera listę komend i zmiennych, które są implementowane przez ARSSE. Wystarczy wybrać je z lity i wcisnąć przycisk Insert, aby wstawić je do kodu (można też wpisać ręcznie). Najważniejsze pole to oczywiście Script Content:, w którym to będziemy pisać nowe skrypty (lub edytować już istniejące). Znaczenia przycisków Save, Load i New Script chyba nie musze tłumaczyć :)

Colors

http://jotemi-dc.webpark.pl/PICS/ARSSE_CON6.JPG

W tej zakładce możemy określić kolory poszczególnych typów wiadomości ukazywanych w konsoli. Po kolei:

- Main Console: - tło konsoli
- Normal text: - tekst ogólny
- Chat: - wypowiedzi graczy
- Team chat: - rozmowy na team chat
- Muted chat: - wypowiedzi graczy, którzy otrzymali mute’a
- Admin Say: - wiadomość od admina (poprzez komendę /say)
- Admin Chat: - wiadomości w admin chat
- Private Message: - prywatne wiadomości do graczy

- Font: - tutaj można wybrać czcionkę używaną w konsoli

Pola znajdujące się niżej wraz z przyciskami Add Custom Line i Delete Custom Line, służą do definiowania określonych słów i całych tekstów, które będą wyświetlane w wybranym kolorze. Z dziwnych przyczyn ta możliwość zdaje się nie działać :) być może coś źle zrobiłem, jeszcze nad tym posiedzę.

Pozostałe dwie zakładki Hotkeys i About mówią same za siebie.

Podstawowa obsługa

Kiedy podłączyliśmy się już do serwera i mamy odpowiednio skonfigurowane opcje czas wreszcie aby zacząć administrować naszym serwerem. Są na to dwa sposoby, albo wpisujemy komendy w polu Command line: (poprzedzone znakiem /) lub też wybieramy je z Command Box umieszczonego po prawej stronie. Wykonywać możemy wszystkie standardowe komendy jakie udostępnia Soldat, lecz ARSSE implementuje kilka własnych. Są to:

/kickall [haslo] – wyrzuca wszystkich graczy z naszego serwera; jeśli podamy dodatkowo hasło to zostanie ono automatycznie ustawione

/swapteams – zamienia graczy stronami, gracze z Alpha przechodzą do Bravo i na odwrót

/spectall – przenosi wszystkich graczy do Spectators

/banname [nick]  - permanentnie banuje podany nick

/unbanname [nick] – odbanowuje wcześniej zbanowany nick

/setteamall [ID] – przenosi wszystkich graczy do dużyny o podanym ID (0 – spect, 1 – alpha, 2 – bravo, itd.)

/load [script] – ładuje i wykonuje skrypt o podanej nazwie; plik ze skryptem musi znajdować się w folderze script i mieć rozszerzenie .txt

/balance – balans drużyn

Nie będę tutaj opisywał każdej z komend dostępnych w Command Box (sami sobie wypróbujcie :) ), ale pokażę wam inną przydatną rzecz. Mianowicie definiowanie własnych komend.

Zanim za bardzo się podniecicie musicie wiedzieć, że wszystkie nowe komendy muszą być oparte na już istniejących bądź to w samej grze lub też udostępnianych przez skrypty serwera. Dla tego nie posiadając odpowiedniego skryptu nie zdefiniujemy przy pomocy samego ARSSE np. komendy na god mode czy spawn broni. Mimo to warto z tej możliwości skorzystać.

Dodawanie nowych komend i edytowanie istniejących

Zobrazuję to na przykładzie, który zresztą wszystkim się na pewno przyda. Chodzi mi tutaj o automatyczne wstawianie nicku przed wiadomością admina wysyłaną na serwer.

W Command Box klikamy prawym przyciskiem myszy na komendzie Send Server Message. Pokaże nam się małe menu.

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM1.JPG

- Perform – wykonanie komendy
- Reload list – odświeża listę komend
- Edit – pozwala edytować istniejącą komendę
- Add – dodawanie nowej komendy
- Remove – usuwanie istniejącej komendy

Nas interesuje w tej chwili opcja Edit. Wybieramy ją i powinno nam się ukazać nowe okno.

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM2.JPG

W polu u góry możemy zmienić nazwę komendy na bardziej przystępniejszą, w tym przypadku "SAY".
Wypada wytłumaczyć co znaczy ten zapewne niezrozumiały dla wielu ciąg znaków.
Tak więc /say to nazwa komendy do wykonania. Dalej mamy
$INPUT(‘Send Server Message’,’Enter message:’).  Funkcja $INPUT służy do wyświetlenia małego okienka tekstowego. Jego tytuł podajemy jako pierwszy parametr funkcji, w tym przypadku jest to “Send Server Message”. Drugi argument to nazwa pola tekstowego, które będzie wyświetlone w tym oknie. A co dokładnie robi całe to polecenie? Po jego wykonaniu otworzy się nowe okienko, w którym będziemy mogli wpisać jakiś tekst. Po kliknięciu w OK tekst ten przekazany zostanie do komendy /say co skutkować będzie jego wypisaniem w konsoli (i na serwerze).

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM3.JPG

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM4.JPG

Jak widzimy nasz tekst został wypisany na serwerze, jednak tak naprawdę nie wiadomo kto go napisał. Może to nie tak ważne przy założeniu, że mamy tylko jednego admina, ale kiedy jest ich już kilku to ciężko by się połapać kto co napisał. Dla tego warto dodać do komendy SAY drobną modyfikację, która będzie wyświetlać nick przed wiadomością.

W tym celu musimy wrócić do okienka edycji komendy i dodać po /say np. [nick]:

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM5.JPG

Tak zmodyfikowana komenda będzie wyświetlać przed każdą wiadomością [JotEmI]: , oczywiście zamiast mojego wstawiacie tam swój nick :)

Dzięki ARSSE możemy nie tylko wywoływać okna z polami tekstowymi, ale także np. z poleceniami On i Off do włączania i wyłączania niektórych opcji. Przykładem może być standardowe polecenie z Command Box, Set friendly fire.

Wygląda ono tak:

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM6.JPG

A oto kod wywołujący to okienko:

http://jotemi-dc.webpark.pl/PICS/ARSSE_COM7.JPG

Jest jeszcze kilka innych tego typu możliwości, ale to już pozostawiam wam, abyście sami je odkryli :) Wystarczy, że sprawdzicie działanie poszczególnych komend w Command Boxie, a potem zobaczycie w jaki sposób uzyskano dany efekt dzięki opcji Edit.

Admin chat

Jeśli jednocześnie do serwera podłączonych jest kilka kopii ARSSE to ich użytkownicy mogą się porozumiewać ze sobą za pomocą Admin chat (tylko w nowszych wersjach programu). Aby wiadomość ukazała się innym adminom należy wpisać ją w polu Command Line: i poprzedzić jedną lub więcej spacjami. Nasz nick dla Admin chata można zdefiniować w konfiguracji programu.


Skrypty

W tej części opiszę podstawy pisania skryptów dla ARSSE, nie zamierzam jednak wyjaśniać po kolei wszystkich funkcji i zmiennych. Pokaże wam jak zacząć, a do reszty dojdziecie sami (jeśli starczy wam chęci :) ).

Od czego zacząć pisanie naszego skryptu? Wpierw nie zaszkodzi zapoznać się z już istniejącymi, standardowo dołączanymi skryptami. Znajdują się one w folderze „script” w głównym katalogu ARSSE i mają rozszerzenie .txt. Zwykle przyjmują też nazwy zdarzeń, które będą je wywoływać. Zaczniemy od najprostszego przykładu, mianowicie komendy !ping, która wyświetli ping dla gracza, który ją wpisał. Standardowo jest już ona dołączona do ARSSE więc tutaj przeanalizujemy jej składnię. Jeśli ktoś jej nie posiada, to po przeczytaniu tego fragmentu będzie mógł ją sam napisać.

Zaczynamy od otwarcia pliku OnPlayerSpeak.txt (jeśli takowego nie macie stwórzcie go) w jakimkolwiek edytorze tekstowym lub przy użyciu Script Editora w konfiguracji ARSSE. Poszukajcie linijki która zaczyna się od wyrażenia:

if $MESSAGE = !ping

(ponownie jeśli nie znajdziecie takiej linijki to po prostu ją dopiszcie gdzieś w pliku). Słowo if z angielskiego oznacza „jeśli” i jest to tzw. instrukcja warunkowa. Wszystkie skrypty będą się zaczynać właśnie od tej instrukcji.
Zmienna $MESSAGE przechowuje tekst jaki gracz wypisał na serwerze. Cała ta linijka znaczy więc tyle:

„Jeśli tekst, który jakiś gracz wypisał na serwerze to (równy jest, = ) !ping to wtedy...”

To wtedy co? W następnej linijce będziemy właśnie podawać co ma się wtedy stać. Druga linia kodu dla komendy !ping powinna wyglądać tak:

/pm $PLAYER_NUM $PLAYER_NAME ping is: $PLAYER_PING

/pm to standardowa komenda, znaczy tyle co private message czyli prywatna wiadomość. Jej składnia to: /pm id_gracza tekst. Wysyła ona wiadomość widoczną tylko dla danego gracza. Można tutaj użyć także zwykłego /say jeśli chcemy, żeby ping był widoczny także dla innych graczy na serwerze.
$PLAYER_NUM to zmienna przechowująca numer gracza, który wpisał !ping. Użyta za poleceniem /pm określa do kogo kierowana jest wiadomość (jeśli wstawimy w tym miejscu „0” to wiadomość będzie wysłana do wszystkich graczy).
$PLAYER_NAME  z kolei, jak łatwo się domyślić zawiera nick gracza. Dalej wypisujemy słowa „ping is: „ i za tym kolejna zmienna, $PLAYER_PING. Tutaj też łatwo przewidzieć co się kryje pod ta zmienną, oczywiście ping gracza.

Tak więc cała ta linia będzie skutkowała wysłaniem do gracza o numerze $PLAYER_NUM prywatnej wiadomości o treści: „Nick gracza ($PLAYER_NAME) ping is: ping gracza ($PLAYER_PING)”.

Skrypt kończymy umieszczając w następnej linijce instrukcję endif. Całość powinna wyglądać tak:

if $MESSAGE = !ping
/pm $PLAYER_NUM $PLAYER_NAME ping is: $PLAYER_PING
endif


Zapisujemy teraz plik z naszym skryptem i ostatnie co musimy zrobić to podpiąć go pod odpowiednie zdarzenie. Przy jakim zdarzeniu ma być wywoływany ten skrypt? Oczywiście przy OnPlayerSpeak, czyli w momencie gdy jakiś gracz pisze coś na serwerze. Kiedy ktoś napisze jakiś tekst na serwerze to wywołany zostanie plik ze skryptem podpięty pod to zdarzenie. Wtedy nasz krótki kawałek kodu sprawdzi czy to co napisał gracz pasuje do wzorca „!ping”, a jeśli tak to wykona odpowiednie polecenie/a.

Jeśli zrozumieliście cokolwiek do tej pory :) to przejdę do kilku informacji teoretycznych. Jak wspomniałem to była tylko analiza gotowego skryptu i choć na tej podstawie wiele już można się nauczyć to teraz powiem wam trochę więcej o samej składni.

Wiecie już, że skrypty muszą zaczynać się od instrukcji if po której następuje warunek sprawdzający. Jeśli takowy warunek jest spełniony to skrypt przechodzi do wykonywania dalszych linii. Wyżej widzieliście warunek porównania ($MESSAGE = !ping), ale prócz znaku równości pojawić się może jeszcze znak nierówności - <>. Warunek if $MESSAGE <> !ping znaczyłby: jeśli tekst nie jest równy !ping (czyli jest to dowolny inny tekst) to wtedy... „. Ja osobiście nie używałem operatora nierówności, ale może wam się przyda :). Kolejna rzecz to instrukcja else znacząca tyle co „w przeciwnym przypadku”. Jej działanie najlepiej pokazać na przykładzie.

if $PLAYER_NAME = imię_kumpla
/say Witaj stary!
else
/say Witam.
endif


Taki skrypt po podpięciu do zdarzenia OnPlayerJoin sprawdza nick dołączającego gracza i jeśli jest to imię_kumpla wita go swojskim “Witaj stary!”. Jeśli natomiast gracz, który dołączył do serwera ma inny nick to przywita go zwyczajne „Witam”.

W ARSSE istnieje także możliwość zagnieżdżania instrukcji warunkowych. Na czym to polega? Ponownie posłużę się przykładem aby to wytłumaczyć. Powiedzmy, że chcemy mieć komendę !delta, która przeniesie gracza do drużyna Delta, ale zależy nam żeby mogły z niej korzystać tylko osoby o określonym IP. W takim przypadku kod powinien wyglądać tak:

if $MESSAGE = !delta
if $PLAYER_IP = xxx.xxx.xxx.xxx
/setteam3 $PLAYER_NUM
endif
endif


Pora na analizę. Jak widzimy wykonywane są tutaj dwie instrukcje warunkowe, jedna po drugiej. Aby skrypt wykonał się pomyślnie oba te warunki muszą być spełnione. Jeśli polecenie to !delta i adres IP gracza to xxx.xxx.xxx.xxx to przeniesiony zostanie on do drużyny Delta. Należy pamiętać, że w przypadku wielu zagnieżdżonych instrukcji if, każdą trzeba zakończyć osobnym endif.

Opiszę tutaj jeszcze jeden przypadek, z którym niektórzy mogliby mieć problemy. Chodzi tu mianowicie o wyłapywanie poleceń zaczynających się od znaku „/”. Wszystko co napiszemy po tym znaku traktowane jest nie jako tekst (czyli nie trafia do zmiennej $MESSAGE), ale jako komenda (inaczej dane) serwera i przechowywane jest w zmiennej $DATA.

Przykład:

if $DATA = /witaj
/say WITAJ
endif


Kiedy wpiszemy na serwerze “/witaj” ARSSE wypisze komunikat “WITAJ”. Skrypty ze zmienną $DATA należy podpiąć pod zdarzenie OnData, a nie OnPlayerSpeak.

To tyle jeśli idzie o podstawy pisania skryptów w ARSSE. Więcej możecie nauczyć się przeglądając gotowe skrypty dołączane do programu i oczywiście samemu eksperymentując z różnymi funkcjami i zmiennymi (pełna ich lista znajduje się w Script Editorze ). Jak pewnie wielu zauważy i jak sam wcześniej wspominałem możliwości ARSSE w tej kwestii nie są zbyt wielkie. Jeśli chcecie uzyskać naprawdę ciekawe skrypty to już niestety trzeba wziąć się za naukę Pascala i napisać skrypty serwera. Być może kiedyś napiszę do tego jakiś szybki kurs.

Tak więc jeśli dobrnęliście do tego miejsca to ARSSE nie powinno mieć przed wami większych tajemnic, a nawet jeśli czegoś nie wiecie to z pewnością sami do tego dojdziecie w krótkim czasie.

www.scooterygostynteam.pun.pl www.geografia.pun.pl www.polisheliteclan.pun.pl www.forumowisko.pun.pl www.moto-skc.pun.pl