RE:NODE

Návody15 min čtení

Server Counter-Strike 1.6 s ReHLDS a AMX Mod X: průvodce

Jak dnes funguje server CS 1.6: ReHLDS místo původního HLDS, důležité položky server.cfg, Metamod, admini AMX Mod X, mapy, boti a porty.

19 čtenářů

Server Counter-Strike 1.6 potřebuje zhruba 256 MB paměti, jedno jádro procesoru, z něhož využije jen jediné vlákno, a jediný port UDP. To se za dvacet let nezměnilo. Změnilo se to, že původní Valve HLDS už téměř nikdo nepoužívá: servery, na kterých se skutečně hraje, běží na ReHLDS, reimplementaci enginu, s Metamodem, který nad ním načítá AMX Mod X, a právě tahle sestava je rozdíl mezi serverem, který působí jako rok 2004, a serverem, který působí jako muzeum.

Tento návod pokrývá celek: co jsou ReHLDS a ReGameDLL a proč nahradily originály, instalaci přes SteamCMD, každé nastavení v server.cfg, které stojí za změnu, Metamod a AMX Mod X, příznaky adminů a seznam příkazů, mapy a stahování, boty a upřímnou situaci s cheatováním a klienty bez Steamu. Instalace CS 1.6 na RE:NODE se dodávají s ReHLDS, AMX Mod X a Metamodem už na svém místě, takže pokud jsi na jedné z nich, čti to jako vysvětlení toho, co už tam je.

Co na serveru CS 1.6 běží: HLDS, ReHLDS a ReGameDLL#

Původní sestava má tři části. Engine (hlds_linux s engine_i686.so na Linuxu, hlds.exe s swds.dll ve Windows) řídí svět a síť. Herní knihovna (cstrike/dlls/cs.so na Linuxu, mp.dll ve Windows) implementuje samotný Counter-Strike - nákupní menu, bombu, peníze. A složka modu cstrike/ obsahuje mapy, konfigurace a vše, co budeš skutečně upravovat.

Komunita nahradila první dvě:

ČástOriginálNáhradaProč
EngineHLDSReHLDSOpravy pádů a exploitů, lepší výkon, další cvary
Herní knihovnacs.so / mp.dllReGameDLL_CSOpravené dlouholeté chyby, napevno zadrátované chování zpřístupněné jako cvary
Zavaděč pluginůžádnýMetamod, nebo Metamod-rUmožňuje AMX Mod X a dalším pluginům napojit se na hru

ReHLDS se vyměňuje jednoduše: přepíšeš binárku enginu a všechno ostatní funguje dál. ReGameDLL_CS platí totéž pro herní knihovnu a právě ten přidává většinu nových cvarů mp_, které lidé citují - režim každý proti každému, nekonečné kola, chování zbraní, které bývalo pevně v kódu. Žádný z nich ve výchozím nastavení nemění, jak se hra hraje. Oba jsou vyvíjeny na GitHubu a oba stojí za to nasadit, protože čistý HLDS nedostal smysluplnou opravu už velmi dlouho a několik jeho chyb lze spustit na dálku.

Instalace základní hry ze SteamCMD je aplikace 90, dedikovaný server Half-Life, s modem vybraným před spuštěním aktualizace:

bash
$ steamcmd +force_install_dir /home/cs16/server +login anonymous \    +app_set_config 90 mod cstrike +app_update 90 validate +quit$ cd /home/cs16/server$ ./hlds_run -game cstrike +ip 0.0.0.0 +port 27015 \    +maxplayers 24 +map de_dust2

Aplikace 90 je pověstně protivná. SteamCMD často při prvním pokusu selže s chybou předplatného nebo manifestu a při druhém či třetím stejném spuštění uspěje a +app_set_config 90 mod cstrike musí stát před +app_update, jinak dostaneš místo toho deathmatch Half-Life. GoldSrc je 32bitový, takže 64bitový Linux potřebuje před čímkoli dalším nainstalovanou 32bitovou knihovnu C. Na hostingu s panelem se to všechno už stalo a server, který dostaneš, je hotový strom souborů.

hlds_run je obalový skript, který server znovu spustí, když skončí; hlds_linux je samotná binárka. Staré návody přidávají -pingboost 1 až 2 nebo 3, což mění, jak engine mezi snímky spí. Bylo to řešení pro jádra, která už neexistují, a na ReHLDS to nech vypnuté.

Požadavky a spotřeba zdrojů#

KonfiguraceRAMCPUPoznámky
12-16 slotů, čistá hra plus AMXX256-512 MB1 jádroBěžný veřejný server
24-32 slotů, tucet pluginů512 MB - 1 GB1 jádroPočet pluginů znamená víc než sloty
Zombie Plague, CSDM, Jailbreak na 32 slotech1-2 GB1 rychlé jádroNáročné mody AMXX se stavem pro každého hráče
Dva servery na jednom strojiDvojnásobek výše uvedeného1 jádro na každýJedno vlákno užitečně sdílet nebudou

Instalace zabere pod gigabajt. Vše, co roste, je obsah, který přidáš: vlastní mapy, sprity, zvuky a modely, a právě na to je na tarifu opravdu disk.

CPU je u 1.6 neobvyklé. GoldSrc provádí celou simulaci v jednom vlákně, takže počet jader nic nedělá a vše rozhoduje taktovací frekvence. sys_ticrate nastavuje cílovou snímkovou frekvenci serveru a komunitní výchozí hodnota 1000 opravdu utrácí CPU za plynulejší pohyb a registraci zásahů. Na tarifu, který poskytuje jen zlomek jádra, je sys_ticrate 500 rozumný kompromis a rozdíl je těžké poznat; sys_ticrate 100 už ne a hráči to poznají.

Síťový provoz je na dnešní poměry nepatrný - plný server na 32 slotů je pár stovek kilobajtů za sekundu. Záleží na latenci a jitteru, protože kompenzace lagu v 1.6 je dobrá, ale ne zázračná, a server o dvě země dál je server, kde prohráváš souboje.

server.cfg řádek po řádku#

cstrike/server.cfg se čte při startu a při každé změně mapy. Tady je kompletní pro veřejný server, bez ozdob:

cstrike/server.cfg
hostname "Longship 1.6 // Classic maps // EU"rcon_password "a-long-random-string"sv_password ""sv_contact "you@example.com"sv_lan 0sv_region 3// Rounds and rulesmp_timelimit 30mp_maxrounds 0mp_winlimit 0mp_freezetime 6mp_roundtime 2.5mp_buytime 0.25mp_c4timer 35mp_startmoney 800mp_friendlyfire 0mp_tkpunish 0mp_autoteambalance 1mp_limitteams 2mp_autokick 0mp_flashlight 1mp_footsteps 1mp_forcecamera 0mp_fadetoblack 0mp_hostagepenalty 0mp_chattime 10mp_playerid 0// Physicssv_gravity 800sv_maxspeed 320sv_airaccelerate 10sv_cheats 0pausable 0// Networksys_ticrate 1000sv_maxrate 25000sv_minrate 5000sv_maxupdaterate 101sv_minupdaterate 20sv_unlag 1sv_maxunlag 0.5sv_timeout 65// Contentsv_allowupload 1sv_allowdownload 1sv_downloadurl ""mp_consistency 1// Logslog onmp_logmessages 1mp_logdetail 3sv_logbans 1sv_logecho 1exec banned.cfgexec listip.cfg
NastaveníVýchozíCo dělá
mp_roundtime5Délka kola v minutách, mezi 1 a 9. Soutěžní hra používá 1.75
mp_freezetime6Nákupní zmrazení na začátku kola, v sekundách
mp_buytime1.5Doba nákupního menu v minutách. 0.25 je patnáct sekund
mp_c4timer45Časovač bomby. 35 je soutěžní hodnota
mp_startmoney800Peníze v prvním kole, 800 až 16000
mp_friendlyfire0Zapnuté pro soutěžní hru, vypnuté pro veřejný server, který chce zůstat zalidněný
mp_autoteambalance1Na konci kola přesouvá hráče, aby se týmy vyrovnaly
mp_limitteams2Maximální rozdíl velikosti týmů, než se připojení zablokuje
mp_forcecamera01 omezí mrtvé hráče na sledování vlastního týmu
mp_fadetoblack01 zčerná obrazovku po smrti. Ochrana proti ghostingu v zápasech
mp_playerid00 jména pro všechny, 1 jen tým, 2 nikdo
sv_maxupdaterate60Snímků za sekundu na klienta. 101 je komunitní standard
sv_unlag1Kompenzace lagu. Nikdy ji nevypínej
mp_consistency1Odmítá klienty, jejichž soubory modelů a spritů nesedí

Poslední dva řádky konfigurace znamenají víc, než se zdá. banned.cfg a listip.cfg jsou soubory, do nichž engine zapisuje bany po writeid a writeip, a ne ve všech buildech se načítají automaticky - jejich spuštění přes exec ze server.cfg způsobí, že bany přežijí restart. Zapomenout na to je klasické hlášení „včera jsem ho zabanoval a je zpátky“.

Porty, RCON a připojení#

PortProtokolÚčel
27015UDPHerní provoz a dotazy Steamu, které používá prohlížeč serverů
27015UDPRCON. GoldSrc provozuje RCON přes UDP na herním portu
27020UDPHLTV, jen pokud provozuješ proxy

Ten řádek o RCON je past pro každého, kdo přichází ze hry na Source. CS:GO a CS2 mluví RCON přes TCP; GoldSrc ho vede přes UDP na stejném portu jako hra, nešifrovaně, s heslem v každém paketu. Kdokoli, kdo zachytí provoz mezi tebou a serverem, získá heslo, a neexistuje verze protokolu, která by to opravila. Používej konzoli v panelu, která se ověřuje tvým účtem, a drž rcon_password dlouhé a pravidelně měněné. Bezpečné používání RCON je obecný případ a tady platí dvojnásob.

Tarif CS 1.6 na RE:NODE přichází s jedním přidělením portu, což je přesně to, co server potřebuje. HLTV je druhý proces na druhém portu, který v případě zájmu přidáš na kartě Network.

Hráči se připojují třemi způsoby: v prohlížeči serverů ve hře pod Find Servers, z oblíbených přidaných podle adresy, nebo příkazem connect 203.0.113.10:27015 zadaným do konzole. Přímé připojení funguje, i když je hlavní seznam pomalý, a je to to, čím testovat dřív, než uvěříš, že problém je skutečný. Pokud raději rozdáváš jméno než adresu, připojení domény k herním serverům popisuje záznam A a pro 1.6 to funguje bez potíží, dokud port zůstává v adrese.

Metamod a AMX Mod X#

Metamod je vložená vrstva mezi enginem a herní knihovnou, díky níž se na hru může napojit několik pluginů najednou. AMX Mod X je platforma pluginů, kterou provozuje téměř každý server 1.6, a načítá se jako plugin Metamodu. Nic jiného ve světě 1.6 nemá ani zlomek jeho katalogu pluginů.

Metamod se instaluje tak, že na něj mod místo na herní knihovnu ukážeš. V cstrike/liblist.gam:

cstrike/liblist.gam
gamedll "addons\metamod\dlls\metamod.dll"gamedll_linux "addons/metamod/dlls/metamod_i386.so"

Metamod pak načte vše, co je uvedeno v cstrike/addons/metamod/plugins.ini, jeden plugin na řádek, s platformou na začátku:

cstrike/addons/metamod/plugins.ini
linux addons/amxmodx/dlls/amxmodx_mm_i386.sowin32 addons\amxmodx\dlls\amxmodx_mm.dll
čteno při startuplugins.iniconfigs/plugins.iniReHLDSbinárka enginuliblist.gamurčuje herní knihovnuMetamodaddons/metamodAMX Mod Xamxmodx_mm_i386.soReGameDLL_CScs.so, vlastní hraPluginysoubory .amxx
Co na serveru CS 1.6 co načítá

Spusť server a do konzole napiš meta list. Pokud se AMX Mod X ukáže jako běžící, napiš amxx version. Dva příkazy, třicet sekund, a víš, jestli sestava žije. Strom pod tím vypadá takto:

code
cstrike/addons/amxmodx/  configs/    amxx.cfg        core settings    users.ini       admins    plugins.ini     which plugins load    modules.ini     which modules load    maps.ini        the map vote list    cmds.ini        commands run at map start  plugins/          the .amxx files  modules/          engine, fun, cstrike, fakemeta, hamsandwich  data/lang/        translations  logs/             one file per day  scripting/        .sma sources and the compiler

Pluginy jsou soubory .amxx v plugins/, zapnuté přidáním jejich názvu do configs/plugins.ini. Několik pluginů nejdřív potřebuje zapnutý modul v modules.ini - obvyklými podezřelými jsou fun, cstrike, fakemeta a hamsandwich - a plugin, který se nenačte s řádkem „module not found“ v logs/, má problém téměř vždy tady. Pluginy psané v Pawnu se kompilují ze .sma na .amxx kompilátorem ve scripting/, což je dobré vědět, protože polovina užitečných pluginů pro 1.6 se zveřejňuje jako zdrojový kód.

configs/amxx.cfg obsahuje základní nastavení. amx_default_access určuje, co smí hráč bez záznamu v users.ini, a měl by zůstat prázdný. amx_show_activity 2 oznamuje akce adminů jejich jménem, což je nastavení, které drží tým adminů poctivý. amx_password_field "_pw" pojmenovává proměnnou na straně klienta, do které se zadává heslo admina, tedy řádek setinfo _pw "yourpassword", který si admin přidá do vlastní konfigurace.

Admini, příznaky a příkazy#

Admini žijí v cstrike/addons/amxmodx/configs/users.ini, jeden na řádek, ve čtyřech polích: identita, heslo, přístupové příznaky, příznaky účtu.

configs/users.ini
; identity            password     access flags            account flags"STEAM_0:1:123456"    ""           "abcdefghijklmnopqrstu" "ce""STEAM_0:0:987654"    ""           "bcdefijmnu"            "ce""Anna"                "herring42"  "bcdefij"               "a"

Příznaky účtu rozhodují, jak se admin rozpozná. c znamená, že identita je SteamID, d znamená IP adresu, e znamená, že se nevyžaduje heslo, a a odpojí každého, kdo při použití daného jména zadá špatné heslo. SteamID s ce je správná odpověď pro každého, komu věříš; jméno plus heslo je pro lidi, jejichž ID zatím nemáš, a je tak dobré, jak dobré je heslo.

Přístupové příznaky jsou jednotlivá písmena a sčítají se:

PříznakUděluje
aImunitu vůči ostatním adminům
bRezervovaný slot
camx_kick
damx_ban, amx_unban, amx_banip
eamx_slay, amx_slap
famx_map
gamx_cvar pro většinu cvarů
hamx_cfg
iamx_chat, amx_say, amx_psay, amx_tsay
jPříkazy hlasování
kPřístup k chráněným cvarům, například sv_password
lamx_rcon a rcon_password
m až tVlastní úrovně, které si definují jednotlivé pluginy
uPřístup do menu admina
zBěžný uživatel, bez práv admina

Rozdávat všem abcdefghijklmnopqrstu je způsob, jak servery 1.6 ničí jejich vlastní adminové. Moderátor potřebuje bcdefiju a nic víc; l dává RCON, tedy celý server, a patří jedné osobě.

PříkazÚčinek
amx_kick <name> [reason]Odstraní hráče
amx_ban <minutes> <name> [reason]Ban podle SteamID. 0 je trvalý
amx_banip <minutes> <name>Zabanuje adresu
amx_addban <steamid> <minutes>Zabanuje někoho, kdo není připojený
amx_unban <steamid>Zruší ban
amx_slay <name> / amx_slap <name> [damage]Zabije, nebo udeří a odhodí
amx_map <map>Změní mapu
amx_extendmap <minutes>Přidá čas aktuální mapě
amx_votemap <map...>Spustí hlasování o mapě
amx_cvar <cvar> [value]Přečte nebo nastaví cvar
amx_rcon <command>Spustí příkaz serveru
amx_whoVypíše hráče s jejich přístupem
amx_reloadadminsZnovu načte users.ini bez restartu
amx_plugins / amx_modulesCo se načetlo a co selhalo
amxmodmenuOtevře menu admina ve hře

amx_reloadadmins je příkaz k zapamatování: přidání moderátora během večera nestojí nic a nevyžaduje restart.

Mapy, cyklus map a stahování#

Mapy jsou soubory .bsp v cstrike/maps/, často vedle souboru .res, který uvádí další zvuky, sprity a modely, jež mapa potřebuje, aby klienti věděli, co stáhnout. mapcycle.txt v cstrike/ je rotace, jeden název mapy na řádek, a motd.txt je textový panel, který hráči vidí při připojení.

Rotaci na většině serverů přebírá AMX Mod X. configs/maps.ini je seznam, který nabízejí pluginy pro hlasování, a standardní pluginy mapchooser, nextmap a timeleft mezi sebou zajišťují hlasování na konci mapy, oznamují, co bude dál, a odpovídají na say timeleft. Pokud chceš pevnou rotaci, odeber mapchooser z plugins.ini a nech to na mapcycle.txt.

U vlastního obsahu servery 1.6 ztrácejí hráče. Klient, který tvou mapu nemá, ji může získat dvěma způsoby:

  1. Stahování přímo v enginu, s sv_allowdownload 1. Funguje, ale je trýznivě pomalé a 20MB mapa znamená dvě minuty zírání na ukazatel postupu. Někteří klienti to vzdají.
  2. sv_downloadurl "http://files.example.com/cstrike", ukazující na webový server, který zrcadlí strukturu složek - maps/, sound/, sprites/, models/. Soubory lze uložit komprimované bzip2 jako de_yourmap.bsp.bz2 a klient je rozbalí. Je to desítkykrát rychlejší a dělá to každý vytížený server.

Pro druhou možnost postačí jakýkoli statický webhosting, včetně malého tarifu webhostingu - je to složka souborů přes HTTP, nic chytrého. Obsah udržuj shodný s tím, co má server, protože neshodný sprite s mp_consistency 1 skončí vyhozením hráče se zprávou, které nikdo nerozumí.

Boti, cheatování a klienti bez Steamu#

CS 1.6 se dodává se ZBotem, botem převzatým z Condition Zero. bot_add, bot_add_t, bot_add_ct, bot_quota <n>, bot_difficulty 0 až 3 a bot_kick jsou celé rozhraní. Boti potřebují navigační soubor pro mapu, maps/de_dust2.nav, který oficiální mapy mají a vlastní mapy téměř nikdy. Alternativou je bot pro Metamod, například YaPB nebo POD-Bot, které si přinášejí vlastní waypointy, lépe zvládají vlastní mapy a lze je nastavit pro každou mapu zvlášť - proto téměř každý zalidněný server 1.6, který boty používá, používá jeden z těchto, a ne ZBota.

Cheatování je upřímně slabé místo hry. VAC existuje a chytí neopatrné. Obrana na straně serveru je sv_cheats 0, mp_consistency 1 a anti-cheat plugin pro AMX Mod X, který hlídá nemožné chování, plus ReAuthCheck na straně ReHLDS, který odmítá klienty předkládající cizí SteamID. Nic z toho není vyřešený problém a server, který roste, potřebuje aktivního admina víc než další plugin. Udržování modovaného serveru v čistotě je o modech, ne o cheatech, ale disciplína je stejná.

A pak je tu věc, kterou přeskakuje každý návod k 1.6. Velká část zbývající populace 1.6 hraje na buildech klienta bez Steamu a servery, které tyto hráče chtějí, instalují ReUnion, který je přijímá a vydává jim vygenerované identity. Je to skutečná křižovatka, ne detail. Přijmi je a získáš vytíženější server, neověřenou populaci a bany podle SteamID i adminy podle SteamID, které už moc neznamenají, protože zabanovaný hráč se vrátí s novou identitou. Odmítni je a zachováš sv_lan 0, skutečné ověřování přes Steam, bany, které drží, a menší okruh hráčů. Existují oba druhy serverů a oba fungují. Rozhodni se vědomě, protože dodatečná změna na zavedeném serveru znamená přestavět seznamy adminů i banů.

Řešení potíží#

SteamCMD nenainstaluje aplikaci 90. Spusť ho znovu. A znovu. Nejsi to ty; manifest aplikace 90 občas selže a stejný příkaz při pozdějším pokusu uspěje. Zkontroluj, že +app_set_config 90 mod cstrike stojí před +app_update 90.

Server naběhne, ale v prohlížeči se neobjeví. Zkontroluj sv_lan 0 a sv_region, pak vyzkoušej přímé connect podle adresy. Pokud přímé funguje, server je v pořádku a hlavní seznam je pomalý.

`meta list` neříká nic. liblist.gam stále ukazuje na původní herní knihovnu. Zkontroluj oba řádky, gamedll i gamedll_linux - upravit jen ten pro svou platformu stačí, neupravit žádný je obvyklá chyba.

AMX Mod X se načte, ale plugin ne. Přečti addons/amxmodx/logs/. Pojmenuje chybějící modul nebo chybu kompilace. Moduly se zapínají v modules.ini, pluginy v plugins.ini a samotný soubor pluginu musí existovat v plugins/.

Admini nemají práva. Buď SteamID v users.ini není přesně to, které hráč má, nebo v příznacích účtu chybí c. Spusť amx_who, zatímco jsou připojeni, abys viděl, za koho je server považuje, a pak amx_reloadadmins.

Hráči jsou vyhazováni kvůli nekonzistentním souborům. mp_consistency 1 s obsahem na serveru, který se liší od toho, co nabízí adresa ke stahování. Udělej je shodné.

Všechno sekne při 32 hráčích. Než začneš vinit pluginy, podívej se na sys_ticrate vůči limitu CPU. Server na pevném limitu CPU je pomalý, ne rozbitý, a neoznámí se jinak než snímkovou frekvencí.

FAQ#

Vyplatí se v roce 2026 ještě hostovat Counter-Strike 1.6?

Ano, v tom smyslu, že servery s komunitou se každý večer stále plní. Je to zdaleka nejlevnější hra k hostování, scéna modů má za sebou dvacet let hloubky a veškerá zbývající populace se rozhodla zůstat. Není to hra, pro kterou spustíš server a čekáš, až tě někdo najde.

Jaký je rozdíl mezi HLDS a ReHLDS?

ReHLDS je reimplementace téhož enginu, binárně kompatibilní se stávajícími mody a pluginy, s opravenými nashromážděnými pády a exploity a přidanými cvary. Je to přímá náhrada a dnes není praktický důvod provozovat původní HLDS.

Kolik RAM potřebuje server CS 1.6?

256 MB pro malý server, 512 MB pro plný server na 32 slotů s běžnou sadou pluginů a 1 GB nebo víc pro náročné herní režimy AMXX jako Zombie Plague, které drží stav každého hráče. Paměť je u 1.6 téměř nikdy limit; limitem je výkon jednoho vlákna CPU.

Jak se udělám adminem?

Přidej do cstrike/addons/amxmodx/configs/users.ini řádek se svým SteamID, bez hesla, s přístupovými příznaky, které chceš, a příznaky účtu ce. V konzoli spusť amx_reloadadmins. Pak ve hře napiš amxmodmenu.

Proč si hráči stahují mapy tak pomalu?

Protože vlastní přenos souborů v enginu je z roku 1998. Nastav sv_downloadurl na webový server se stejnými složkami maps/, sound/ a sprites/, ideálně s kopiemi komprimovanými bzip2, a stahování bude dost rychlé na to, aby lidé zůstali.

Mohou se na můj server připojit klienti bez Steamu?

Jen pokud nainstaluješ ReUnion, který je přijímá a přiděluje jim vygenerované identity. Cenou je, že bany podle SteamID a adminové založení na SteamID jsou mnohem slabší. Výchozí server s sv_lan 0 přijímá jen klienty Steamu.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000