RE:NODE

Návody12 min čtení

Soubor server.cfg ve FiveM: convary, OneSync a oprávnění ACE

Každý řádek FiveM server.cfg: endpointy, sv_maxclients, OneSync, build hry, convary, oprávnění ACE a nastavení, která stojí za změnu.

8 čtenářů

server.cfg je jediná konfigurace, kterou FXServer má. Nastavuje porty, limit hráčů, licenční klíč, název v seznamu serverů, které resources se spouštějí a v jakém pořadí, a kdo smí napsat který příkaz. Čte se jednou, shora dolů, při startu serveru - takže záleží na pořadí, chybějící uzavírací uvozovka tiše pohltí všechno za sebou a convar, který resource čte při startu, se nezmění, dokud se ten resource nerestartuje. Tento článek prochází soubor tak, jak ho prochází server.

Kde soubor leží a jak se čte#

FXServer se spouští se souborem uvedeným na příkazové řádce:

bash
$ ./run.sh +exec server.cfg

Všechno v souboru je příkaz konzole. Žádná zvláštní syntaxe, žádné sekce a žádná pravidla pro odsazení: každý řádek se provede přesně tak, jako bys ho napsal do konzole serveru. # začíná komentář. Hodnoty s mezerami potřebují dvojité uvozovky a zapomenutá uzavírací uvozovka způsobí, že parser spolkne zbytek řádku, a proto může dokonale vypadající soubor selhat s chybou ukazující na řádek o čtyřicet řádků níž.

Vnořování je podporované a vyplatí se. exec permissions.cfg na konci server.cfg natáhne druhý soubor, což je rozumné místo pro seznam identifikátorů adminů, takže můžeš server.cfg sdílet, když žádáš o pomoc, aniž bys vyzradil seznam adminů.

Pokud používáš txAdmin, drží data serveru ve vlastní složce a server.cfg upravuje přes stránku CFG Editor. Úprava stejného souboru ve správci souborů, zatímco ho má txAdmin otevřený, znamená, že vyhraje jedna ze dvou kopií. Vyber jedno místo a drž se ho.

Řádky, které potřebuje každý server#

Tohle je výchozí šablona, zkrácená na části, které nejsou volitelné, s hodnotami, které bys skutečně nastavil:

server.cfg
endpoint_add_tcp "0.0.0.0:30120"endpoint_add_udp "0.0.0.0:30120"sv_hostname "^2Northside RP ^7| ^3Whitelisted ^7| ^1ESX"sv_maxclients 48sv_licenseKey "cfxk_xxxxxxxxxxxxxxxxxxxxx_xxxxxx"sv_scriptHookAllowed 0sv_endpointprivacy truesets locale "en-GB"sets tags "roleplay, esx, whitelist, europe"load_server_icon logo.pngset mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4"ensure oxmysqlensure ox_libensure es_extendedexec permissions.cfg

endpoint_add_tcp a endpoint_add_udp ukazují na stejné číslo portu a potřebuješ oba. UDP nese herní provoz. TCP je server HTTP: při prvním připojení předává klientům soubory resources a odpovídá na /info.json, /players.json a /dynamic.json, podle nichž každý existující tracker serverů zná počet tvých hráčů. Server, ke kterému je dostupné jen TCP, se donekonečna načítá na obrazovce připojování; server, ke kterému je dostupné jen UDP, se nikdy nedostane za stahování resources. Proč obě poloviny selhávají jinak, vysvětluje porty game serverů vysvětleně.

0.0.0.0 znamená „každá adresa na tomto stroji“ a téměř vždy je to správně. Měň to jen tehdy, když má stroj několik rozhraní a víš, které chceš.

sv_hostname přijímá barevné kódy: ^1 červená, ^2 zelená, ^3 žlutá, ^4 modrá, ^5 azurová, ^6 růžová, ^7 bílá, ^8 oranžová, ^9 šedá. Použij nejvýš dva. Název, který je většinou interpunkce, není zapamatovatelný a vyhledávání v seznamu serverů pracuje s prostým textem.

sv_licenseKey je tvůj vlastní klíč z portálu Cfx.re. Vystavuje se tobě, ne tvému hostingu, a je svázaný s adresou, na které server běží - přesun na jiný hosting nebo jinou IP znamená vystavit ho znovu, ne ho zkopírovat. FXServer bez platného klíče nenaběhne a v konzoli to říká jasně.

set, sets a setr: tři různá slova pro proměnnou#

Na tomhle zakopne každý jednou. FiveM má tři příkazy, které vypadají stejně a míří na různá místa.

PříkazViditelné proK čemu ho použít
setjen serverové skriptytajné údaje, připojovací řetězce, klíče API
setsseznam serverů a klientinázev projektu, popis, tagy
setrklienti, replikovánonastavení, které musí číst klientský skript

Skript čte kterýkoli z nich pomocí GetConvar('name', 'default') nebo GetConvarInt('name', 0). Pravidlo je jednoduché a absolutní: cokoli tajného používá `set`. Heslo k databázi za sets se zveřejní v seznamu serverů, kde ho během minut seškrábou.

config
set mysql_connection_string "mysql://user:pass@host/db"   # privatesets sv_projectName "Northside RP"                        # publicsets sv_projectDesc "Serious roleplay, whitelist on Discord"setr voice_defaultRadius 25.0                             # clients read it

sets locale přijímá identifikátor jazyka jako en-GB nebo de-DE; výchozí šablona obsahuje zástupnou hodnotu root-AQ, což je Antarktida, a její ponechání je malým znamením, že soubor nikdo nečetl. sets tags je čárkou oddělený seznam, který používají filtry v seznamu serverů, a je to nejlevnější způsob, jak se nechat objevit.

load_server_icon chce PNG o rozměru 96 na 96, které leží vedle server.cfg. Jakákoli jiná velikost se odmítne, obvykle bez zprávy, které si všimneš.

OneSync a sloty pro hráče#

Základní síťování GTA končí na 32 hráčích. OneSync je náhrada od Cfx.re a vše nad 32 slotů na něm závisí:

config
set onesync onset onesync_population trueset onesync_forceMigration truesv_maxclients 64

onesync on je současný tvar a pokrývá to, čemu starší návody říkají Infinity. legacy je starší režim s nižší kapacitou a off tě vrací ke stropu 32 hráčů. S OneSync zapnutým FXServer přijme počty slotů daleko za hranicí rozumného; číslo, které bys měl nastavit, určuje tvoje CPU a seznam resources, ne limit.

onesync_population určuje, zda server spawnuje ambientní provoz a chodce. Roleplay servery to obvykle nechávají zapnuté a pak rok naříkají nad počty entit. Vypnutí odstraní velký díl zátěže sítě i CPU za cenu prázdného města a několik seriózních serverů dělá přesně to a vlastní provoz spawnuje tam, kde na něm záleží.

onesync_forceMigration přesouvá vlastnictví entity od hráče, který odchází, místo aby entitu smazal. Bez něj může vozidlo, jehož byl někdo vlastníkem, po jeho odpojení zmizet.

Změna nastavení OneSync vyžaduje úplný restart serveru, ne restart resource. Stejně tak sv_maxclients. A zvyšovat počet slotů na serveru, který už je na 100 % svého podílu CPU, jen znamená, že na jeho pomalost kouká víc lidí - CPU vs RAM pro game servery je poctivá verze té debaty.

Build hry, script hook a pure mode#

config
sv_enforceGameBuild 2802sv_scriptHookAllowed 0sv_pureLevel 1

sv_enforceGameBuild připíná každého klienta ke konkrétní aktualizaci GTA Online. Záleží na tom, protože vozidla, zbraně, oblasti mapy a oblečení přidané v daném DLC existují jen na klientech s alespoň tímto buildem. Pokud vlastní vozidlo používá assety z novějšího buildu, než vynucuješ, bude neviditelné nebo shodí klienta. Běžné hodnoty zahrnují 1604 (základní build), 2060, 2189, 2372, 2545, 2612, 2699, 2802, 2944, 3095 a pozdější. Seznam roste s každou aktualizací od Rockstaru, takže zkontroluj aktuální dokumentaci Cfx.re, místo abys opisoval číslo z příspěvku na fóru. Zvýšení nutí každého hráče stáhnout od Rockstaru novější herní data, což je pro něj jednorázové zdržení a stojí za oznámení.

sv_scriptHookAllowed 0 blokuje klientská menu založená na ScriptHookV. Nech nulu. Neexistuje roleplay server, který by to chtěl zapnuté.

sv_pureLevel 1 odmítá připojení klientů s upravenými herními soubory; 2 je přísnější a blokuje i úpravy grafiky. Pure mode je tupý nástroj: úroveň 2 odmítne naprosto nevinné hráče s vizuálními módy a není to anti-cheat. Začni na 0 nebo 1, pokud nemáš důvod.

sv_endpointprivacy true drží IP adresy hráčů mimo veřejný výstup serveru. Není důvod to mít vypnuté.

Spouštění resources#

config
ensure oxmysqlensure ox_libensure es_extendedensure ox_inventoryensure pma-voice

ensure resource spustí, nebo ho restartuje, pokud už běží. start jen spustí. stop a restart dělají, co říkají, a refresh znovu prohledá resources/ kvůli složkám, které tam nebyly při startu serveru - nový resource vždy potřebuje refresh, než ho ensure najde.

Pořadí v souboru je pořadí načítání a pořadí načítání je pořadí závislostí. Nejdřív most k databázi, potom sdílené knihovny, pak framework, pak všechno, co s frameworkem komunikuje. Resource povolání, který naběhne před jádrem, dostane nil, když si vyžádá sdílený objekt, a pak tiše nedělá nic po zbytek relace, bez chyby. Který framework patří doprostřed toho seznamu a co každý potřebuje, řeší porovnání frameworků pro FiveM.

Resource se najde jen tehdy, když jeho složka obsahuje fxmanifest.lua. Složky v hranatých závorkách, jako [core] nebo [jobs], se prohledávají jako kontejnery a nepovažují se za resources, a vnoření může jít několik úrovní hluboko. ensure vždy bere název resource, nikdy cestu.

Oprávnění ACE: kdo smí co#

Systém oprávnění FiveM jsou dva příkazy. add_principal říká, že jedna věc dědí od druhé. add_ace říká, že principalu je objekt povolen nebo zakázán.

permissions.cfg
add_ace group.admin command allowadd_ace group.admin command.quit denyadd_ace group.mod command.kick allowadd_ace group.mod command.ban allowadd_principal group.admin group.modadd_principal identifier.license:8e1f0c2a4b6d8e0f2a4b6c8d0e2f4a6b8c0d2e4f group.adminadd_principal identifier.discord:216735154273419264 group.mod

Objekty jsou hierarchické podle teček, takže povolení command povolí každé command.something a pozdější deny na konkrétním z nich vyhrává. Principaly mohou být identifikátory, skupiny nebo resources - resource.mycoolscript je skutečný principal, což je způsob, jak resource dostane právo spouštět privilegované příkazy sám.

Typy identifikátorů, které můžeš použít jako principaly: license, license2, steam, discord, fivem, xbl, live a ip. license je ten pro trvalého admina: je stabilní, nevyžaduje běžící Steam a vypíše se do konzole, když se hráč připojí. Identifikátory steam existují, jen pokud sis nastavil klíč Steam Web API pomocí set steam_webApiKey, a discord jen pokud hráč má spuštěný Discord. ip nikdy nepoužívej.

Resources je kontrolují přes IsPlayerAceAllowed(source, 'something') a objekt nemusí být příkaz - frameworky si definují vlastní, například ace pro otevření admin menu. Argument true na konci volání RegisterCommand je to, co příkaz vůbec omezí oprávněním ACE; bez něj je příkaz otevřený každému hráči na serveru.

Dvě věci, které lidé dělají špatně. Za prvé, group.admin nemá žádný význam, dokud mu něco nepřidělíš: je to obyčejný název, ne vestavěná role. Za druhé, txAdmin má vlastní oddělený seznam adminů, takže přidání někoho do txAdminu mu nedá oprávnění ACE ve hře a přidělení oprávnění ACE ho do txAdminu nepustí. Jsou to dva systémy a spravuješ oba. Obecný argument pro krátké seznamy najdeš v článku subusers a nejmenší oprávnění.

RCON a proč ho nechat vypnutý#

FXServer podporuje starý protokol RCON ve stylu Source přes rcon_password. Výchozí šablona ho obsahuje zakomentovaný a tam by měl zůstat. RCON ve FiveM posílá heslo čitelně přes UDP na stejném portu jako hra a všechno, k čemu bys ho použil - konzole, restarty, správa hráčů - už máš v konzoli panelu nebo v txAdminu. Pokud ho opravdu potřebuješ, nastav heslo, které neexistuje nikde jinde, a nejdřív si přečti RCON bezpečně.

sv_master1 "" odstraní server z veřejného seznamu serverů. Použij to pro vývojový server, který nechceš, aby našli cizí lidé, a pamatuj, že jsi to nastavil, protože „můj server se nezobrazuje v seznamu“ jinak znamená dlouhý večer.

stav, hlassoubory resources, info.jsonkonzole, restartyKlient hráčeFiveMtxAdminweb 40120UDP 30120herní provozTCP 30120endpoint HTTPFXServerresources
Co dorazí na server FiveM po jednotlivých protokolech

Řešení potíží s konfigurací, která nenaběhne#

Po upraveném řádku se nic neděje. Chybějící uzavírací uvozovka. Parser spolkl zbytek řádku, a pokud uvozovka chyběla na konci souboru, posledních několik nastavení se nikdy neprovedlo. Prohledej soubor, jestli v něm není lichý počet uvozovek.

Konzole říká, že licenční klíč je neplatný. Klíč je špatný, byl odebrán nebo se používá na jiné adrese. Klíče jsou svázané s adresou, na které běží, takže server, který se přestěhoval, potřebuje klíč vystavit znovu na portálu Cfx.re, ne zkopírovat.

Could not find resource. Název složky nesedí s řádkem ensure, složka nemá fxmanifest.lua, nebo byla složka přidána po startu serveru a nikdo nespustil refresh. Na Linuxu záleží na velikosti písmen.

Hráči navěky zůstanou na „Loading screen“. Obvykle resource, který končí chybou při spawnu nebo průchodu postavou. Sleduj konzoli, když se někdo připojuje; poslední resource, který se vypíše před tichem, je tvůj kandidát. Čtení konzole je dovednost, kterou to vyžaduje.

Hráči se nemohou připojit vůbec, ale server běží. UDP není dostupné. Ověř, že jsou přítomné endpoint_add_tcp i endpoint_add_udp a že port je ten, který ti hosting přidělil.

Klientům se říká, že server je na jiném buildu hry. sv_enforceGameBuild nesedí s tím, co má jejich hra. Musí nechat GTA aktualizovat, nebo ty musíš vynucovaný build snížit.

Server ignoruje `sv_maxclients` nad 32. OneSync je vypnuté. Nastav set onesync on a restartuj celý server.

Tarify FiveM na RE:NODE mají dva přidělené porty - jeden pro herní endpoint a jeden pro webové rozhraní txAdminu - a další můžeš přidat na záložce Network, pokud resource potřebuje vlastní. Záložka Startup drží spouštěcí proměnné, samotný server.cfg je upravitelný v prohlížeči se zvýrazněním syntaxe nebo přes SFTP a konzole je nefiltrovaná, což je jediný způsob, jak se výše popsaný problém s načítací obrazovkou kdy vyřeší. Týdenní restart ze záložky Schedules udržuje počty entit pod kontrolou; úvahu za tím má restartovací plány, které pomáhají.

FAQ#

Potřebuji endpoint_add_tcp i endpoint_add_udp?

Ano, na stejném portu. UDP nese hru, TCP obsluhuje stahování resources a koncové body JSON, které čte seznam serverů. Když jeden chybí, server vypadá, že funguje, až do chvíle, kdy se hráč pokusí připojit.

Jaký je rozdíl mezi set, sets a setr?

set je soukromé pro server, sets se zveřejňuje v seznamu serverů, setr se replikuje připojeným klientům. Hesla k databázi a klíče API patří vždy do set. Cokoli, co bys byl rád viděl na stránce trackeru, může být sets.

Kolik hráčů server FiveM unese?

Třicet dva bez OneSync. S set onesync on je strop softwaru mnohem vyšší, než co bys měl zkoušet, a skutečná odpověď je to, co unese tvůj podíl CPU a seznam resources - většina serverů najde svůj limit někde mezi 48 a 128 při běžné zátěži roleplay resources.

Jak z někoho udělám admina?

Přidej jeho identifikátor license: jako principal skupiny a skupině přiděl ace, která chceš. Jeho identifikátor licence se vypíše do konzole, když se připojí. Pokud potřebuje i txAdmin, přidej ho tam zvlášť - oba systémy oprávnění spolu nemluví.

Proč moje změna v server.cfg nemá žádný účinek?

Convary se čtou při startu resource. Úprava hodnoty a restart ničeho nezmění nic. Restartuj resource, který ji čte, a u sv_maxclients, OneSync a endpointů restartuj celý server.

Mám zapnout RCON?

Ne. Je to nešifrovaný protokol z minulé dekády a každou práci, kterou umí, už dělá konzole panelu a txAdmin. Nech rcon_password zakomentované.


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