- Wstęp
- Podstawy
- Format pliku białej listy (whitelist)
- Format pliku białej listy (whitelist) - Przykład
- Format pliku białej listy (whitelist) - Atrybuty
- Format pliku białej listy (whitelist) - Standardowy plik pure_server_whitelist.txt
- Format pliku białej listy (whitelist) - Kaskada atrybutów
- Zaawansowane
- Wydajność
- Winformacje dodatkowe
^ Wstęp:
Czysty serwer ('pure server') jest to serwer na którym wszyscy grają używając tej samej zawartości plików, którą wymusza serwer. Dzięki temu gracze na serwerze nie mogą oszukiwać przez podmianę modeli, dźwięków lub innych rzeczy.
Bez opcji 'pure server' gracze mogą podmieniać swoje dźwięki, modele, tekstury aby osiągnąć przewagę w grze. Dzięki temu mogą widzieć przeciwników przez ściany, zmienić model przeciwnika na większy bądź bardziej wyrazisty lub nawet pogłośnić dźwięki chodzenia aby lepiej słyszeć przeciwnika.
^ Podstawy:
Aby używać 'pure server' na serwerze trzeba ustawić zmienną sv_pure na 1. Po zmianie mapy serwer zacznie wymuszać zawartość odpowiednich plików (modele, dźwięki, tekstury) na graczach będących na serwerze.
Lista zawartości jaką serwer ma wymuszać jest zapisana w pliku o nazwie pure_server_whitelist.txt, która jest trzymana w katalogu z grą. Listę można edytować w celu zmiany zawartości jaką klient może sobie modyfikować. Na przykład, można tak ustawić liste aby gracze mogli posiadać podmienione dźwięki ale modele i tekstury już nie. Notka: plik pure_server_whitelist.txt jest całkowicie ignorowany więc nie da się oszukac serwera przez wprowadzenie odpowiednich zmian w swoim pliku.
Serwer standardowo wywala graczy którzy używają plików o zawartości innej niżeli pozwala na to serwer. Jeśli nie chcesz aby gracze byli kopani z serwera a chcesz zobaczyć tylko informację jakich podmianek używa gracz ustaw na serwerze komendesv_pure_kick_clients na 0.
^ Format pliku białej listy (whitelist):
Plik pure_server_whitelist.txt określa atrybuty dla plików oraz całych katalogów.Każda linia w pliku określa plik ( bądź też grupe plików) i atrybuty do nich. Na przykład ta linia:
materials\... from_steam
Pierwsza część precyzuje pliki ('materials\...'). W tym przypadku został sprecyzowany cały katalog materials wraz z całą jego zawartością (pliki oraz podkatalogi). Dalsza część for_steam mówi że wszystkie pliki muszą pochodzić z pliku .gcf. Jeśli więc gracz ma w tym katalogu jakieś podmianki zostaną one po prostu zignorowane, pliki które były podmienione będą wczytane z 'cache' gry (pliki .gcf).
Są trzy drogi do sprecyzowania plików (bądź też grup plików).
1. Tylko nazwa pliku. Odnosi się tylko do jednego konkretnego pliku.
materials\models\props_italian\anzio_bell.vtf
2. Wszystkie pliki w katalogu (bez podkatalogów).
materials\models\props_italian\*.*
3. Wszystkie pliki oraz podkatalogi (i ich zawartość) poniżej zadanego katalogu.
materials\models\...
Są trzy opcje w precyzowaniu atrybutów dla zadanych plików i/lub katalogów.
1. from_steam. To ustawia czytanie zawartości z plików 'cache' gry, po prostu pliki na dysku użytkownika są ignorowane.
2. allow_from_disk. Powoduje że klient może wczytać podmianki z dysku. Ustawienie to pozwala na dowolne podmianki plików, serwer ich po prostu nie sprawdza (tak jak było to do tej pory).
3. allow_from_disk+check_crc. Jeśli ten atrybut jest nadany gracze mogą załadować podmianki z dysku lecz muszą być dokładnie takie same jak na serwerze. To jest szczególnie przydatne gdy na serwerze jest zainstalowane coś mającego zmienić sposób rozgrywki (jakiś mod).
^ Przykład:
materials\models\player\... allow_from_disk
sounds\... from_steam
models\MyMod\... allow_from_disk+check_crc
materials\MyMod\Customizable\*.* allow_from_disk
materials\models\props\cs_assault\wirepipe.vtf from_steam
sounds\... from_steam
models\MyMod\... allow_from_disk+check_crc
materials\MyMod\Customizable\*.* allow_from_disk
materials\models\props\cs_assault\wirepipe.vtf from_steam
^ Standardowe Atrybuty:
Jeśli sv_pure jest ustawione na 1 to standardowym atrybutem dla plików jest allow_from_disk. Jeśli wiec masz pusty plik pure_server_whitelist.txt i ustawione sv_pure 1 wtedy nie będzie żadnej różnicy między sv_pure 0.
^ Standardowy plik pure_server_whitelist.txt:
Standardowy plik pure_server_whitelist.txt wygląda jak ten poniżej. Jeśli chcesz dokonywać jakichś zmian możesz wziąć przykład właśnie z niego, wyżej już zostały objaśnione zasady na jakich to wszystko działa.
whitelist
{
//
// 3 modifiers are allowed on file specifications:
//
// from_steam - only check the Steam cache for the file (ignore anything on disk)
// allow_from_disk - allow the file to come from disk
// check_crc - used with allow_from_disk - server does CRC checks on the client's file to make sure it matches
//
// The default modifier on all files is allow_from_disk. Thus, all files can come from disk and don't need CRC checks unless
// allow_from_disk can be set at the same time as check_crc. Use the + character in between them to signify this: allow_from_disk+check_crc.
//
// Three types of file specifications:
//
// 1. directory\*.* - refers to all files under the directory
// 2. directory\... - refers to all files under the directory and all directories under that (recursively)
// 3. directory\filename - refers to a single file
//
// By default, when in pure server mode, most content file types are only allowed to come from Steam.
//
materials\... from_steam
models\... from_steam
sound\... from_steam
//
// Allow custom player models. Don't do CRC checks on them because the clients may all
// have different custom models and the server won't have them all.
//
models\player\... allow_from_disk
materials\models\player\... allow_from_disk
//
// (Uncomment and edit these for mods).
// Allow mod resources to come from disk.
//
// materials\mymod\... allow_from_disk+check_crc
// models\mymod\... allow_from_disk+check_crc
// sound\mymod\... allow_from_disk+check_crc
}
{
//
// 3 modifiers are allowed on file specifications:
//
// from_steam - only check the Steam cache for the file (ignore anything on disk)
// allow_from_disk - allow the file to come from disk
// check_crc - used with allow_from_disk - server does CRC checks on the client's file to make sure it matches
//
// The default modifier on all files is allow_from_disk. Thus, all files can come from disk and don't need CRC checks unless
// allow_from_disk can be set at the same time as check_crc. Use the + character in between them to signify this: allow_from_disk+check_crc.
//
// Three types of file specifications:
//
// 1. directory\*.* - refers to all files under the directory
// 2. directory\... - refers to all files under the directory and all directories under that (recursively)
// 3. directory\filename - refers to a single file
//
// By default, when in pure server mode, most content file types are only allowed to come from Steam.
//
materials\... from_steam
models\... from_steam
sound\... from_steam
//
// Allow custom player models. Don't do CRC checks on them because the clients may all
// have different custom models and the server won't have them all.
//
models\player\... allow_from_disk
materials\models\player\... allow_from_disk
//
// (Uncomment and edit these for mods).
// Allow mod resources to come from disk.
//
// materials\mymod\... allow_from_disk+check_crc
// models\mymod\... allow_from_disk+check_crc
// sound\mymod\... allow_from_disk+check_crc
}
^ Kaskada atrybutów:
Atrybuty plików w pliku pure_server_whitelist.txt są brane pod uwagę w kolejności z góry na dół. Dzięki temu możesz dowolnie zarządzać dozwoloną/zabronioną zawartością plików graczy na serwerze. Na przykład chcesz zabronić posiadania graczom własnych (podmienionych) modeli za wyjątkiem modeli broni, wystarczy wtedy dodać do pure_server_whitelist.txt następujące linijki:
models\... from_steam
models\weapons\... allow_from_disk
models\weapons\... allow_from_disk
^ Zaawansowane:
Jeśli ustawisz sv_pure na 2 wtedy serwer nie będzie czytał pliku pure_server_whitelist.txt. Wszystkim plikom w katalogach (i podkatalogach) materials, models i sounds zostanie nadany atrybut from_steam. To może być przydatne przy wszelkiego rodzaju meczach gdzie jedna ze stron jest właścicielem serwera. Drużyna która jest gościem na serwerze może zobaczyć w konsoli czy komenda sv_pure jest w rzeczywistości używana. Jeśli serwer używa sv_pure 2 drużyna gości będzie miała pewność że przeciwnicy nie używają podmianek.
Uwaga! sv_pure 2 powoduje że nie można korzystać z niestandardowego celownika, na mapach gdzie są używane jakieś niestandardowe dźwięki czy tekstury nie będą one działały.
^ Wydajność:
Są dwa przypadki gdzie komenda sv_pure wpływa na wydajność serwera.
1. Kiedy serwer ładuje po raz pierwszy mape i jest ustawione sv_pure 1, serwer przelicza sume kontrolną (CRC) dla wszystkich plików z atrybutem allow_from_disk+check_crc. Generalnie ten atrybut powinien być ustawiony na jak najmniejszą liczbę plików. Dla przykładu zrobienie czegoś takiego jest chore.
materials\... allow_from_disk+check_crc
Serwer przestanie odpowiadać na dość długi okres czasu, po prostu będzie liczył CRC dla każdego pliku znajdującego się w katalogu materials
Ustawienie sv_pure 2 nie wpływa w żaden sposób na wydajność, przy tym ustawieniu serwer nie liczy żadnej sumy kontrolnej.
2. Kiedy klient ładuje mape i na serwerze zmieni się wartość komendy sv_pure, gracz musi przeładować wszystkie pliki aby upewnić się że są 'czyste'. Jeśli więc gracz ma mnóstwo podmienionych dźwięków, modeli czy tekstur i zmienia serwer na 'pure server' z serwera który nie miał włączonej 'czystości' będzie musiał przeładować wszystkie modele, dźwięki itd.
Generalnie spadek wydajności po stronie gracza można pominąć, gracz musi tylko wyrzucić z pamięci i załadować ponownie pliki kiedy łączy się do 'czystego serwera'.
^ Informacje dodatkowe:
W większości przypadków gracze którzy mają zmodyfikowaną zawartość plików (mają podmianki) wciąż będą mogli grać na 'czystych serwerach'. Po prostu silnik Source wymusi załadowanie standardowych plików z chache gry podczas grania na czystych serwerach. W ten sposób gracze nie muszą szukać i usuwać podmianek z dysku aby zagrać na czystym serwerze.