SourceMod
Ten artykuł jest niepełny i wymaga uzupełnienia. Jeżeli jesteś w stanie - postaraj się go uzupełnić.. Pamiętaj, że nawet najmniejsza zmiana jest cenna i pomocna :) |
Spis treści |
Opis
SourceMod jest dodatkiem do serwerów Source, którego funkcjonalność ma być podobna jak AMX Mod X pod serwery Half-Life. Czyli umożliwia pisanie skryptów bazujących na języku Small/PAWN podobnie jak AMX Mod X. Jednakże nie będzie to AMX Mod X, tylko coś działającego na tej zasadzie.
Wymagania
- SourceMod wymaga do działania zainstalowanego Metamod:Source w wersji co najmniej 1.4.2 lub wyższej.
Instalacja
Właściwie to cały proces instalacji sprowadza się do wrzucenia zawartości ściągniętego archiwum (trzeba pamiętać że archiwum .zip jest przeznaczone dla Windows a archiwum .tar.gz dla Linuxa) do folderu z grą, cstrike dla Counter-Strike: Source, dod dla Day of Defeat: Source, itp. itd.
Sprawdzanie Instalacji
Struktura folderów na serwerze powinna wyglądać mniej więcej tak:
- [mod] - Folder twojego moda (cstrike, dod, itp.)
- addons
- metamod - Metamod:Source
- sourcemod.vdf
- sourcemod - SourceMod
- bin
- configs
- data
- extensions
- gamedata
- logs
- plugins
- scripting
- translations
- ... - Ewentualne inne mody
- metamod - Metamod:Source
- addons
Gdy już wykonałeś(aś) poprzednie części instalacji trzeba teraz wyłączyć i włączyć serwer ponownie. Gdy serwer już się obudzi trzeba sprawdzić czy instalacja zakończyła się pomyślnie.
Po pierwsze w konsoli serwera trzeba wpisać:
meta list
Jeśli wszystko jest ok powinno wyświetlić się mniej więcej coś takiego:
] meta list -Id- Name Version Author Status [01] SourceMod (1.1.0.2004) by AlliedModders LLC
Teraz będzie można używać głównych komend SourceModa, które można zobaczyć wpisując:
sm
Dla przykładu:
] sm version SourceMod Version Information: SourceMod Version: 1.1.0.2004 JIT Version: JIT (x86), 1.1.0.1997 JIT Settings: Generic i686 http://www.sourcemod.net/
Konfiguracja
Dodawanie Adminów
SourceMod posiada szczegółowy oraz skalowalny system administracji, który na pierwszy rzut oka może być nieco przerażający. Jednakże jakby mu się dokładniej przyjrzeć jest bardzo prosty i logiczny. Wszystko opiera się na "flagach" dostępu, dzięki którym można nadać specyficzne przywileje administratorom.
W tej chwili są trzy sposoby przechowywania adminów. Pierwszy sposób to "płaski" plik (tak jak w AMX i AMXX, drugi, bardziej kompleksowy, za pomocą pliku ze strukturą drzewa (tak jak w Mani Admin Plugin) oraz ostatni sposób, baza SQL (patrz SourceBans).
SourceMod wspiera standardowo trzy metody autoryzacji adminów:
- SteamID (unikatowy dla kont Steam)
- Adres IP (pół unikatowy, najlepszy dla sieci LAN)
- Nick (wymaga ustawiania hasła)
Poziomy
Wpierw zobaczmy jak wyglądają flagi dostępu:
Nazwa Flaga Cel użycia rezerwacja a Zapewnia dostęp do zarezerwowanego slotu. Ogólna b Admin ogólny; flaga wymagana aby mieć admina. kopanie c Można kopać innych graczy. banowanie d Można banować innych graczy. odbanowanie e Usuwanie banów. zgładzenie f Natychmiastowe zabicie innych graczy. zmiana mapy g Możliwość zmiany mapy i niektórych opcji gry. cvar (zmienna) h Możliwość zmiany większości cvarów (zmiennych). konfigi i Możliwość wczytywania plików konfiguracyjnych (konfigów). chat j Możliwość używania pisania na środku ekranu itp. głosowania k Rozpoczynanie i tworzenie głosowań. hasło l Możliwość ustawienia hasła na serwer. rcon m Możliwość użycia komend RCON. oszustwa n Możliwość zmiany wartości opcji sv_cheats. root z W magiczny sposób zawiera wszystkie powyższe flagi dostępu.
Immunitet
W SourceMod, system immunitetów bazowany jest na poziomach immunitetów. Każdy admin może mieć przypisany różny poziom immunitetu. Admin z wyższym poziomem immunitetu nie może byc celem admina o niższym poziomie.
Obrazowo można to przedstawić w następujący sposób. Admin #1 ma poziom immunitetu ustawiony na "3", Admin #2 ma immunitet ustawiony na "10. Admin #2 może wykopać/zbanować/zgładzić bez najmniejszych problemów Admina #1. Natomiast Admin #1 nie może nic zrobić adminowi #2. Liczby jakie są stosowane w poziomach immunitetu muszą być większe lub równe zeru, przy czym zero oznacza zawsze brak immunitetu.
Standardowo admini z tym samym poziomem immunitetu nie mogą sobie na wzajem nic zrobić. Opcja ta może zostać zmieniona za pomocą sm_immunity_mode w cfg/sourcemod.cfg.
Hasła
Aby hasła działały administrator serwera musi najpierw ustawić "PassInfoVar" w addons/sourcemod/configs/core.cfg. Na przykład:
"PassInfoVar" "_sm1337"Następnie jeśli admin posiada hasło musi je ustawić za pomocą setinfow konsoli. Na przykład, używając przykładu znajdującego się nieco niżej, BAILOPAN będzie musiał wpisać:
setinfo "_sm1337" "Gab3n"
Aby nie trzeba było nic wpisywać w konsoli gry przed połączeniem się do serwera można stworzyć plik "autoexec.cfg" w folderze gry. Plik powinien się znaleźć w katalogu SteamApps\Nazwa Konta\Nazwa Gry\Skrócona nazwa gry\cfg, czyli na przykład:
- C:\program files\steam\steamapps\bailopan\counter-strike source\cstrike\cfg
Prości admini (Sposób "płaski")
Najprostszą drogą dodania administratorów prowadzi przez plik configs/admins_simple.ini. Wpis do "płaskiego" pliku jest o tyle prosty że wymaga on podania tylko dwóch parametrów na admina: informacji o autoryzacji oraz flag. Wpis z flagami jest na pewien sposób skalowalny i może wyglądać na jeden z poniższych sposobów:
- Opcjonalna wartość poziomu immunitetu, poprzedzona znakiem dwukropka (':');
- Ciąg liter z flagami;
lub
- Nazwa grupy, poprzedzona symbolem '@'.
Poniżej kila przykładów:
"STEAM_0:1:16" "bce" //kop, ban, zgładzenie. bez immunitetu "!127.0.0.1" "5:z" //wszystkie flagi dla tego IP, poziom immunitetu 5. "BAILOPAN" "abc" "Gab3n" //Nick BAILOPAN, hasło "Gab3n" (patrz rozdział Hasła): dostaje rezerwacje, kopy i bany.
Dokładni admini (plik ze strukturą drzewa)
Drugim sposobem jest dodanie adminów za pomocą pliku configs/admins.cfg, który jest bardziej zaawansowanym sposobem przechowywania kont administratorów. Każdy admin posiada tutaj swój blok wewnątrz głównego bloku "Admin". Format taki prezentuje się następująco:
Admins { "Nazwa Admina" { "auth" "[steam|nick|ip]" "identity" "[unikalne id]" "[opcja1]" "[wartość1]" "[opcja2]" "[wartość2]" /* .... */ } }
Dostępne są następujące opcje:
- auth: Wymagane. musi być jednym z następujących typów steam, name lub ip które mówią SourceMod jak ma interpretować wartość identity.
- identity: Wymagane. Unikalna wartość pozwalająca nadać uprawnienia admina danej osobie.
- password: Opcjonalne. Ustawia jakie hasło będzie wymagane aby nadać admina.
- group: Opcjonalne. Precyzuje do jakiej grupy należny admin. Admin może należeć do kilku grup jednocześnie. Przed nazwą grup nie może być już symbol '@'.
- flags: Opcjonalna. Domyslne flagi jakie otrzyma admin.
- immunity: Opcjonalna. Domyslny poziom immunitetu jaki otrzyma admin.
Przykład:
Admins { "BAILOPAN" { "auth" "steam" "identity" "STEAM_0:1:2345" "flags" "abcdef" "immunity" "5" "group" "Niesamowici Admini" } "Niebieski Krab" { "auth" "steam" "identity" "STEAM_0:1:666" "flags" "z" "immunity" "99" } }
Rezerwacja Slotów
Komendy
- sm_reserve_type <0|1|2>
- sm_reserve_slots <#>
- sm_hide_slots <0|1>
- sm_reserve_maxadmins <#>
- sm_reserve_kicktype <0|1|2>
Typ Rezerwacji
sm_reserve_type <0|1>
Ta zmienna kontroluje w jaki sposób rezerwacja slotów działa na serwerze (standardowo ustawiona jest na 0).
- sm_reserve_type 0
Sloty publiczne będą zajmowane przed slotami zarezerwowanymi, natomiast sloty zarezerwowane będą zwalniane jako pierwsze. Raz zajęty slot będzie "okupowany" przez gracza póki nie wyjdzie on z gry, nikt na serwerze nie będzie dostawał kopów aby zrobić miejsce. Jeśli serwer jest pełny i wszystkie sloty zarezerwowane zajęte to osoba która mimo posiadania rezerwacji slota nie połączy się.
- sm_reserve_type 1
Jeśli ktoś z rezerwacją slota połączy się, gracz z najwyższym pingiem i bez rezerwacji slota zostanie wykopany (na pierwszy ogień idą obserwatorzy) aby zwolnić miejsce. W tym wypadku zarezerwowane sloty są zawsze wolne, dzięki temu na serwer w każdej chwili może wejść osoba z rezerwacją slota.
- sm_reserve_type 2 - Dostępne tylko w wersji testowej SourceMod 1.1.
W zasadzie to samo co sm_reserve_type 1 za wyjątkiem tego że jeśli wyczerpie się ilość slotów (patrz sm_reserve_maxadmins), plugin przestanie wykopywać graczy i zacznie się zachowywać jak sm_reserve_type 0.
Zarezerwowane Sloty
sm_reserve_slots <#>
Ta zmienna kontroluje ile slotów ma być zarezerwowanych (standardowo 0)
W użyciu z sm_reserve_type 0 ustawia ile osób może podłączyć się z serwerem gdy będą zapełnione sloty publiczne. W użyciu z sm_reserve_type 1 ustawia ile slotów jest zarezerwowanych dla przełączania adminów (możesz potrzebować więcej niż jednego).
Ukryte Sloty
sm_hide_slots <0|1>
Kontroluje czy plugin ma ukrywać zarezerwowane sloty (standardowo 0).
Jeśli ukrywanie slotów jest włączone to sloty ukryte nie są widoczne w przeglądarce serwerów. Na przykład jeśli serwer ma 24 sloty, z czego są 2 zarezerwowane to w przeglądarce serwerów będzie widoczny jak by miał 22 sloty. Aby połączyć się z takim serwerem trzeba w konsoli wpisać 'connect ip:port' (np. 'connect 192.168.1.100:27015')
Niestety nie ma możliwość zrobienia aby slot był ukryty dla zwykłego gracza a widoczny dla admina. Autoryzacja admina odbywa się dopiero gdy ten się w pełni połączy z serwerem i SourceMod może sprawdzić SteamID. Z tego powodu lepiej jest ukrywać sloty, zapobiegnie to łączeniu się a później wykopaniu zwykłych graczy oraz umożliwi w pełni używanie funkcji ‘autojoin’.
Ilość Adminów
sm_reserve_maxadmins <#> - Dostępne tylko w wersji testowej SourceMod 1.1.
Ta zmienna kontroluje ile adminów może się połączyć na zarezerwowany slot (tylko w przypadku ustawienia sm_reserve_type 2).
Sposób Usuwania z Serwera
sm_reserve_kicktype <0|1|2> - Dostępne tylko w wersji testowej SourceMod 1.1.
Ta zmienna kontroluje na jakiej podstawie gracze będą usuwani z serwera (tylko dla sm_reserve_type 1 i 2).
0 - Najwyższy Ping 1 - Najdłużej Grający 2 - Losowy Gracz
Gracze z rezerwacją slota oraz gracze posiadający 'sm_reskick_immunity' nie mogą zostać wykopani. Obserwatorzy są wykopywani zawsze przed grającymi.
Immunitet
Aby uniemożliwić wykopanie gracza z powodu rezerwacji slotów trzeba my nadać/nadpisać dostęp do 'sm_reskick_immunity' (użytkownicy z flagą 'root' i rezerwacją slotów są już "odporni").
Notka: Ma to zastosowanie tylko przy sm_reserve_type 1 i 2.
Można bardzo łatwo nadpisać dostęp używając admin_overrides.cfg (np. "sm_reskick_immunity" "o" - aby dać wszystkim użytkownikom z flagą 'o' (własna flaga 1) immunitet na rezerwacje slota).
Lub
Nadać dostęp grupie przez dopisanie w admin_groups.cfg (np. "sm_reskick_immunity" "allow")
Lista Pluginów
Poniżej jest przedstawiona lista standardowych pluginów jakie oferuje SourceMod.
Pluginy z wytłuszczoną nazwą nie myszą być wyłączane podczas trwania meczy, nie przeszkadzają w niczym ani nie dają przewagi.
Standardowe Pluginy
Plugin | Opis Pluginu |
admin-flatfile | Ładuje listę adminów z pliku konfiguracyjnego. |
adminhelp | Udostępnia komendę sm_help (lista wszystkich komend wraz z opisem). |
adminmenu | Zapewnia menu admina oraz główne funkcje. |
antiflood | Zapobiega spamowaniu na chacie w grze przez graczy. |
basebans | Zapewnia podstawowe komendy banowania oraz menu banowania. |
basechat | Zapewnia komendy do pisania na ekranie. |
basecomm | Umożliwia zarządzanie komunikacją głosową graczy. |
basecommands | Zapewnia podstawowe komendy administracyjne (np. zmianę mapy, zmianę ustawień, kopanie graczy). |
basetriggers | Odpowiada za obsłygę zdarzeń na chacie takich jak "nextmap", "thetime" i "timeleft". |
basevotes | Zapewnia podstawowe komendy do głosowania (np na zmianę mapy). |
funcommands | Zapewnia "śmieszne" komendy np. slapowanie. |
funvotes | Zapewnia głosowania na "śmieszne" dla zabawy. |
nextmap | Pozwala adminom lub innym pluginom na dynamiczne zarządzanie mapcyklem. |
reservedslots | Udostępnia zarezerwowane sloty dla adminów (lub uprzywilejowanych graczy). |
Ekstra Pluginy
Poniższe pluginy są standardowo wyłączone i znajdują się w addons/sourcemod/plugins/disabled, aby ich użyć trzeba je wkleić do folderu z pluginami.
Plugin | Opis Pluginu |
admin-sql-prefetch | Ładuje adminów z bazy SQL podczas zmiany mapy. Jeśli ten plugin jest włączony to admin-sql-threaded musi być wyłączony. |
admin-sql-threaded | Ładuje adminów z bazy SQL dynamicznie, podczas połączenia się gracza z serwerem. Jeśli ten plugin jest włączony to admin-sql-prefetch musi być wyłączony. |
mapchooser | Zapewnia automatyczny system głosowań na następną mapę. |
randomcycle | Losuje nastepną mapę z mapcyklu. |
rockthevote | Zapewnia system głosowań na mapę zainicjowany przez graczy. |
Tłumaczenie
Tłumaczenie SourceModa wykonane przez Zuko i Trawiatora znajduje się w oficjalne bazie językowej SourceModa, ma ono zostać dodane do finalnej wersji SourceMod 1.1.
Niekompletne tłumaczenie jest tutaj: SourceMod tlumaczenie