Witam ponownie.
Tym razem przedstawiam skrypcik, którego głównym zadaniem jest pilnować broni używanych przez graczy i w zaleznosci od konfiguracji odpowiednio zadziałać
SKRYPT DO POBRANIA
TUTAJMam nadzieję, że komuś jeszcze się przyda
Mile widziane komentarze w tym topicu.
Ponizej zamieszczam szerszy opis.
Czym jest BF2 Oldschool Script? :Jest to skrypt napisany w pythonie dla serwerów Battlefield 2. Działa on zarówno na czystych serwerach dedykowanych jak i odpalanych z daemona bf2cc. Powinien rowniez poprawnie dzialac na serwerach rankingowych (nie byl testowany na rankingu, ale implementacja funkcji nie rozni sie niczym od innych sprawdzonych skryptow)
Skrypt BF2O pozwala na:
- Restrykcje broni (podzial na poziomy: medics only, medics only bez unlock'ów, KNIFE-PISTOL-SHOCK only, no unlocks oraz restrykcja claymore, c4, stacjonarek i tow)
- Wybranie sposobu ukarania gracza, który użył zakazanej broni (tylko info, natychmiastowa śmierć, wykopanie z serwera)
- Wykrywanie komendanta (czyli stara wersja mojego anticomm'a w nowej oprawie
)
- Zarządzanie skryptem poprzez rcona w grze (nowatorski system ;] ale o tym pozniej)
Jak zainstalowac?1. Wchodzimy do katalogu gdzie znajdują się pliki serwera bf2. Dalej przechodzimy do:
mods/bf2/python/game/
2. W katalogu "game" wklejamy plik bf2_oldschool.py
3. W tym samym katalogu znajduje się plik "__init__.py", przechodzimy do jego edycji (np w notatniku) i wklejamy dwie linijki tekstu:
Kod:
import bf2_oldschool
bf2_oldschool.init()
KONFIGURACJAOtwieramy skrypt w edytorze (notepad, vi, lub ide pythona).
OLDSCHOOL LEVELPierwsza rzecz jaką musimy ustawić to poziom restrykcji. W skrypcie nosi on nazwe OLDSCHOOL LEVEL
Może on przyjąć następujące wartości:
0 - Całkowite wyłączenie skyptu
1 - MEDISC ONLY (z unlockami)
2 - MEDICS ONLY (bez unlockow)
3 - KNIFE PISTOL SHOCKPADDLES ONLY (ten poziom działa jedynie z PUNISH_METHOD 2 - patrz niżej)
4 - NO UNLOCKS
5 - Nie zabraniaj żadnych głównych broni, ale sprawdź pozostałe ustawienia (jak c4, claymore czy anticommander)
Kolejna sekcja to restrykcja pozostałych broni. 0 - wyłączone 1 - włączone
NO_C4
NO_CLAYMORE
NO_MOUNTED_MGS (działa jedynie z PUNISH_METHOD 2)
NO_TOW_MISSILE (działa jedynie z PUNISH_METHOD 2)
PUNISH METHODW tym miejscu decydujemy o karze jaka czeka na nieposłusznego gracza
Do wyboru mamy trzy tryby, które przypisujemy do zmiennej PUNISH_METHOD:
0 - Żadna kara, jedynie informacja, że dana broń jest zakazana. (ten tryb może wywołać drobny spam tekstowy w grze jesli gracz bedzie zmienial bron z dozwolonej na zabroniona, z zabronionej na dozwolona i tak w kółko.)
W tym trybie możemy zmienic parametr WARNING_LVL0 - Czyli tresc ostrzezenia. W tresci mozemy uzyc symbolu: %s za ktory wstawi sie nick gracza np:
Kod:
WARNING_LVL0 = "Uwazaj %s ! Nie uzywaj tej broni! Na tym serwerze jest ona zakazana!"
1 - ZABIJ GRACZA bezpośrednio po jego respawnie z niedozwolona bronia. Jesli niedozwolone sa rowniez c4 lub claymore gracz popelni samobojstwo po przelaczeniu sie na nie za pomoca klawisza 5.
Niestety jak już wspomniałem dla tego trybu nie dzialaja stacjonarki i tow. Komunikat jaki zobaczy uśmiercony gracz znajduje sie w zmiennej WARNING_LVL1. Podobnie jak wyzej za %s wstawi sie nam nick gracza.
2 - KICKnij gracza. Tutaj możemy ustawić kilka parametrów:
HOW_MANY_KILLS_TO_KICK - Czyli ile biednych ludków musi uśmiercić gracz z zakazanej broni aby wylecieć z serwera
WARNING_AFTER_FRAG - Ten komunikat będzie ostrzegał gracza za każdym razem kiedy zaliczy fraga z zabronionej broni. Oczywiscie do czasu az nie poleci z serwa (tu mozna wstawic %s)
RESTRICTED_WEAPON_KICK_MSG - Ta zmienna przetrzymuje wiadomość jaką serwer zapoda nam kiedy wreszcie wykona wyrzucenie gracza (tu mozna wstawic %s)
RESTRICTED_WEAPON_KICK_REASON - A to juz komuniakt jaki otrzyma wykopany gracz w slicznym okienku punkbustera (aha, oczywiscie zeby dzialalo wykopywanie musi byc wlaczony punkbuster!)
RESTRICTED_WEAPON_KICK_IN_MINUTES - tutaj podajemy wartosc liczbowa okreslajaca na ile minut ma zostac wykopany gracz
ANTICOMMANDEROczywiscie nie moglo zabraknac anticomm'a ;] Konfiguracja wyglada tak:
ANTICOMMANDER - 0 wyłączony; 1 - włączony
COMMANDER_MSG - Tutaj wpisujemy komunikat jaki ma sie pojawic w grze gdy ktos wezmie commandera. (tu mozna wstawic %s)
COMMANDER_AUTOKICK - 0 wyłączony (wtedy bedzie działać tylko informacja); 1 - włączony (trzeba jeszcze sprawdzić ustawienia poniżej)
COMMANDER_KICK_TIME_IN_MINUTES - czyli na ile minut wykopać commandera
COMMANDER_KICK_MSG - Informacja dla graczy, ze wlasnie wylatuje commander
(tu mozna wstawic %s)
COMMANDER_KICK_REASON - Tutaj ustawiamy komunikat powodu jaki ma zobaczyc gracz po wykopaniu (czyli w okienku punkbustera)
ADMIN SETTINGSCzyli dodawanie administratora skryptu.
Admina dodajemy do listy wstawiajac go w " " (nazwa gracza to pelna nazwa konta wraz z prefiksem!!!). Jesli chcemy dodac wiecej niz jednego admina wstawiamy przecinki pomiedzy konczacym a rozpoczynajacym apostrofem.
Przykładowo:
Kod:
ADMIN_LIST = "[V!S] MisiekBest[PL]", "#SOF# FrYzJeR.inf"
Taki admin moze teraz wykonywac komendy na serwerze.
Komendy zaimplementowalem w dosc nowatorski sposob. Poniewaz ciagle parsowanie czestych rozmow w grze to malo wydajna metoda, pomyslalem ze warto to zrobic za pomoca rcona. Jednak uzycie metod dodawania polecen rcona nie dziala dla operacji wykonywanych z konsoli w grze. Na szczescie istnieje specjalna funkcja do przechwytywania jakichkolwiek polecen wydawanych przez zdalna konsole. Dlatego wywolanie rcona z moim parametrem wykona sie poprawnie, choc batek zwroci najpierw blad.
Tak wiec aby wywolac jakas komende nalezy najpierw otworzyc konsole (~)
a następnie wpisać:
rcon bfo <komenda> <wartosc_opcjonalna>
np:
Kod:
rcon bfo olevel 4
spowoduje ustawienie oldschool level na 4 czyli NO UNLOCKS
Ponizej lista wszystkich komend:
rcon bfo help - wygenerowanie helpa w grze. Aby przewijac tekst w konsoli uzywamy pgup pgdown
rcon bfo status - wypisuje stan wszystkich podstawowych ustawien
############## OLDSCHOOL LEVEL ##############
#############################################
olevel # Zwraca aktualny status oldschool level
olevel [value] # Ustawia oldschool level na wartosc podana w parametrze
############## PUNISH METHOD ##############
############################################
punish # Zwraca aktualny status punish method
punish [value] # Ustawia punish method na wartosc podana w parametrze
############## MISC WEAPONS ##############
##############################################
c4 #Zwraca aktualny status NO C4
c4 [value] # Włącz-wyłącz zakaz c4. 0-Wyłączony 1-Włączony
claymore # Zwraca aktualny status NO CLAYMORE
claymore [value] # Włącz-wyłącz zakaz claymore. 0-Wyłączony 1-Włączony
mgs # Zwraca aktualny status NO MGS
mgs [value] # Włącz-wyłącz zakaz mgs. 0-Wyłączony 1-Włączony
tow # Zwraca aktualny status NO TOW
tow [value] # Włącz-wyłącz zakaz tow. 0-Wyłączony 1-Włączony
############## KICKER SYSTEM (punish 2) ##############
##########################################################
kick_frags # Zwraca wartość ilości fragow po ktorych skrypt wyrzuci gracza
kick_frags [value] # Ustaw wartosc ilosci fragow na ta podana w parametrze
kick_time # Zwraca czas (minuty) okreslajace na jak dlugo gracz bedzie wyrzucony
kick_time [value] # Ustawia czas wyrzucenia gracza na ten podany w parametrze
############## ANTI COMMANDER ##############
##################################################
anticomm # Zwraca status aniticommandera
anticomm [value] # Włącz-wyłącz anticommandera. 0-Wyłączony 1-Włączony
commkick # Zwraca status anticommandera z wykopaniem gracza
commkick [value] # Włącz-wyłącz anticommandera z kopaniem. 0-Wyłączony 1-Włączony
commkick_time # Zwraca czas na jak dlugo ma byc wyrzucony komander
commkick_time [value] # Ustaw czas wykopania komandera
No i to by było tyle.
Pozdrawiam
MB