Server Factorio se spravuje pomocí příkazů s lomítkem, které admin píše ve hře nebo do konzole serveru, jež má vždy plná práva. Admini pocházejí ze server-adminlist.json nebo z /promote; bany a záznamy whitelistu se zapisují do vlastních souborů JSON; /config mění nastavení serveru za běhu; a skupiny oprávnění, otevírané přes /permissions, určují, co smí která třída hráčů - což je skutečná obrana proti griefingu na veřejné mapě. Příkazy v Lua přes /c a /sc zvládnou skoro cokoli, za cenu trvalého vypnutí achievementů na daném savu. RCON vystavuje to všechno přes TCP pro boty a skripty. Tento článek je kompletní přehled, s nastavením oprávnění a ukázkami v Lua, které stojí za to mít.
Základy - instalace headless serveru, server-settings.json, porty a autosave - jsou v návodu na Factorio headless server. Tento článek jde hlouběji do provozu serveru, když už na něm lidé jsou.
Kdo je admin a jak se jím stane#
Admin práva lze získat třemi způsoby:
- Konzole serveru. Cokoli napsané na standardní vstup serveru - pole konzole na panelu - běží s plnými právy. Je to jediné místo, ze kterého se nikdy nemůžeš vyzamknout.
- Seznam adminů.
server-adminlist.json, předaný přes--server-adminlist, je pole JSON s uživatelskými jmény z factorio.com. Uvedení hráči jsou admini, jakmile se připojí. - `/promote`. Stávající admin nebo konzole povýší hráče. Server ho zapíše do souboru se seznamem adminů, takže to přežije restart.
["alice", "bob_builds"]Jména jsou jména účtů na factorio.com a důvěryhodná jsou jen tehdy, když je require_user_verification v server-settings.json nastaveno na true. S vypnutým ověřováním se může kdokoli připojit s libovolným jménem - včetně jména admina. Nech ho zapnuté.
Soubory se seznamy neupravuj ručně, když server běží. Server je zapisuje zpět, když použiješ /promote, /ban nebo /whitelist, a tvá úprava se přepíše.
Přehled admin příkazů#
Příkazy začínají lomítkem. V konzoli serveru je lomítko také povinné - text bez něj se pošle jako chat od <server>.
Moderace
| Příkaz | Co dělá |
|---|---|
/kick <player> <reason> | Odpojí hráče |
/ban <player> <reason> | Zabanuje a zapíše server-banlist.json |
/unban <player> | Zruší ban |
/banlist add <player> | Upraví seznam banů přímo; také remove, get, clear |
/mute <player> | Zakáže hráči psát do chatu |
/unmute <player> | Zruší to |
/mutes | Vypíše umlčené hráče |
/purge <player> | Odstraní zprávy toho hráče z logu chatu |
/whitelist add <player> | Upraví whitelist; také remove, get, clear |
Soubor whitelistu se vynucuje, jen pokud byl server spuštěn s --use-server-whitelist. Ban funguje na jméno účtu, takže zabanovaný hráč se nemůže vrátit se stejným účtem na factorio.com.
Správa adminů a hráči
| Příkaz | Co dělá |
|---|---|
/promote <player> | Udělá z hráče admina |
/demote <player> | Odebere admina |
/admins | Vypíše adminy |
/players | Vypíše hráče; /players online nebo /players count |
/admin | Otevře admin okno: hráči, bany, whitelist |
/permissions | Otevře editor skupin oprávnění |
/open <player> | Otevře inventář jiného hráče |
/swap-players <a> [b] | Prohodí postavy mezi hráči |
/delete-blueprint-library <player> | Smaže uloženou knihovnu blueprintů offline hráče |
/admin je okno, které většina adminů používá den za dnem: seznam hráčů s tlačítky pro kick, ban, mute a promote a záložky pro seznam banů a whitelist. Příkazy dělají totéž z konzole, kde žádné okno není.
/delete-blueprint-library je na jeden konkrétní problém: knihovna blueprintů každého hráče je uložena v savu a na dlouho běžícím veřejném serveru mohou stovky hráčů, kteří se stavili jednou, nafouknout save knihovnami, které už nikdo nepoužije. Funguje jen na hráče, kteří jsou offline.
Server a informace
| Příkaz | Co dělá |
|---|---|
/server-save | Uloží hned |
/config get <key> | Přečte nastavení serveru |
/config set <key> <value> | Změní ho okamžitě |
/time | Jak dlouho mapa běží |
/seed | Seed mapy |
/evolution | Evoluce nepřátel a její příčiny |
/version | Verze hry |
/help | Vypíše příkazy nebo podrobnosti o jednom |
Klíče /config používají pomlčky tam, kde soubor JSON používá podtržítka: max-players, game-password, afk-auto-kick, allow-commands, autosave-interval, max-upload-slots, only-admins-can-pause, visibility-public a další. Takže /config set game-password new-secret změní heslo pro připojení pro dalšího, kdo se připojí, bez restartu. Nastavení se nezapisuje zpět do server-settings.json, takže soubor uprav také, pokud má změna přežít.
Chat
/shout (nebo /s) pošle zprávu všem hráčům bez ohledu na tým, /whisper <player> (nebo /w) pošle soukromě a /reply (nebo /r) odpoví na poslední šepot. Admini vidí stejný chat jako všichni ostatní; žádný skrytý kanál pro personál neexistuje.
Skupiny oprávnění: skutečný nástroj proti griefingu#
Bany řeší griefera až dodatečně. Skupiny oprávnění brání novému hráči škodit hned od začátku. Každý hráč patří do právě jedné skupiny oprávnění a každá skupina povoluje nebo zakazuje jednotlivé vstupní akce - stavění, demolici, otevírání cizích inventářů, import blueprintů, úpravy jízdních řádů vlaků a asi dvě stě dalších.
Ve výchozím stavu jsou všichni ve skupině Default, která smí všechno. Běžný vzor pro veřejný server je omezit Default a lidi, kterým věříš, přesunout do skupiny, která omezená není:
| Skupina | Kdo | Co je zakázáno |
|---|---|---|
Default | Noví a neznámí hráči | Deconstruction planner, import blueprintů, úpravy vlaků a drátů |
Trusted | Štamgasti | Nic, nebo jen úprava oprávnění |
| Admins | Personál | Admini spravují skupiny přes /permissions |
Nejsnazší způsob, jak to postavit, je okno /permissions, které vypisuje každou akci jako zaškrtávací pole pro každou skupinu a umožňuje přetahovat hráče mezi skupinami. Jde to i z konzole Lua, což se hodí, když chceš novou mapu nastavit pokaždé stejně:
/sc local d = game.permissions.get_group("Default")d.set_allows_action(defines.input_action.deconstruct, false)d.set_allows_action(defines.input_action.import_blueprint_string, false)d.set_allows_action(defines.input_action.edit_permission_group, false)local t = game.permissions.create_group("Trusted")t.add_player("alice")Názvy v defines.input_action jsou interní názvy jednotlivých akcí a mezi verzemi hry se čas od času mění; aktuální sadu uvádí dokumentace Lua API Factoria. Skupina vytvořená přes create_group začíná se všemi akcemi povolenými, takže stačí věci zakazovat.
K širší otázce, jak vést personál a pravidla, viz pravidla serveru, moderace a personál.
Příkazy v Lua: /c, /sc a /mc#
/c (nebo /command) spustí řádek Lua s přístupem k celému API hry. Je to nejsilnější nástroj, který admin má, a ten, který nejspíš způsobí lítost.
| Prefix | Chování |
|---|---|
/c <lua> | Spustí Lua; příkaz se zobrazí všem hráčům |
/sc <lua> | Tichý - spustí bez oznámení příkazu |
/mc <lua> | Spustí a ohlásí, jak dlouho to trvalo |
Kdo je smí používat, řídí allow_commands v server-settings.json: true, false nebo admins-only. Všude kromě soukromé hry s kamarády by mělo být admins-only.
Pár řádků, které stojí za to znát, všechno skutečná volání API:
-- How many players are connected/sc game.print(#game.connected_players)-- Teleport a named player to a position on Nauvis/sc game.get_player("bob_builds").teleport({0, 0}, "nauvis")-- Reveal a 1000x1000 area around the origin for your force/sc game.forces.player.chart("nauvis", {{-500, -500}, {500, 500}})-- Kill all enemy units currently on the map/sc game.forces.enemy.kill_all_units()-- Remove all pollution from a surface/sc game.surfaces["nauvis"].clear_pollution()Jedna past dostane každého, kdo používá konzoli serveru: game.player znamená hráče, který příkaz napsal. Ve hře jsi to ty. V konzoli serveru nebo přes RCON takový hráč neexistuje a game.player je nil. Použij místo toho game.get_player("name").
/editor přepne admina na místě do editoru map, což je tak silné, jak to zní, a také vypíná achievementy. /cheat odemkne recepty a zapne cheat mód; jeho volby se mezi verzemi měnily, takže před použitím zkontroluj /help cheat.
RCON: příkazy ze skriptů a botů#
RCON umožňuje programu posílat serveru příkazy přes TCP. Zapíná se dvěma argumenty při spuštění:
$ ./bin/x64/factorio --start-server-load-latest \ --server-settings ./data/server-settings.json \ --rcon-port 27015 --rcon-password "a-long-random-string"--rcon-bind <address:port> naváže na konkrétní adresu. Factorio mluví standardním protokolem Source RCON, takže funguje jakýkoli klient RCON - rcon-cli, mcrcon, většina knihoven pro Discord boty - a přijme každý příkaz z tohoto článku.
| Port | Protokol | Účel |
|---|---|---|
34197 | UDP | Herní provoz |
27015 (příklad) | TCP | RCON, libovolný port, který zvolíš |
Chat poslaný přes RCON se ve hře zobrazí jako od <server>. Příkazy v Lua poslané přes RCON vypíšou svůj výstup zpět klientovi RCON, pokud používají rcon.print místo game.print:
/sc rcon.print(#game.connected_players)RCON je plnohodnotný admin kanál s heslem a ničím dalším - žádné omezení rychlosti, žádný druhý faktor. Použij dlouhé náhodné heslo, port RCON přidej, jen pokud ho skutečně něco používá, a heslo nikde jinde nepoužívej. Na RE:NODE se další porty přidávají na záložce Network, takže port RCON existuje, jen když ho přidáš. RCON bezpečně projde způsoby selhání.
Logy: vědět, co se stalo#
--console-log <file> zapisuje chat a události serveru do souboru se značkami jako [JOIN], [LEAVE], [CHAT], [KICK] a [BAN]. To je záznam, který potřebuješ, když hráč tvrdí, že byl vyhozen bez důvodu, a dobře se v něm hledá.
Pro vyšetřování griefingu existuje i logování akcí. /toggle-action-logging zapne log jednotlivých akcí hráčů - stavění, těžba, otevírání kontejnerů - zapisovaný do logu serveru. Je upovídaný, takže ho zapni, když máš problém, a vypni, když máš odpověď. Logy, které stojí za uchování popisuje, jak dlouho logy držet a proč.
Nastavení, která ušetří práci adminovi#
Pár nastavení v server-settings.json, která odstraní celé kategorie admin starostí:
| Nastavení | Doporučeno | Proč |
|---|---|---|
require_user_verification | true | Jména jsou skutečné účty na factorio.com |
allow_commands | admins-only | Žádné Lua pro běžné hráče |
only_admins_can_pause_the_game | true | Nikdo nepozastaví veřejnou hru |
afk_autokick_interval | 30 | Uvolní sloty, v minutách; 0 je vypnuto |
max_players | Nastav | Admini se připojí i na plný server |
game_password | Nastav na soukromých serverech | Snadno se mění živě přes /config |
Na RE:NODE je soubor s nastavením na místě od prvního spuštění s vygenerovaným herním heslem pro server, konzole je nefiltrovaná, takže se v ní objeví každý příkaz a každé připojení, a záložka Schedules umí posílat příkazy do konzole podle výrazu cron - například /server-save před nočním backupem. Plánované úlohy, které stojí za to mít obsahuje další vzory.
Když griefer přesto projde#
Skupiny oprávnění škody snižují; nezabrání jim úplně. Když někdo projde - železniční síť přesměrovaná do zdi, přeříznutá elektrická síť, vytrhaný hlavní bus - postupuj v tomto pořadí a neopravuj věci ručně, dokud je viník ještě online.
- Zastav škody.
/ban <player> <reason>z konzole nebo z okna/admin. Samotný kick ho pustí hned zpátky. - Zastav roboty. Pokud použil deconstruction planner, stavební roboti budou plnit rozkazy i poté, co odejde. Admin může označenou demolici zrušit vlastním plannerem, nebo se může celý tým stáhnout stranou, než se rozhodnete, jestli vrátit stav zpět.
- Rozhodni mezi opravou a návratem. Malé škody se opraví na místě rychleji, zvlášť s blueprinty postižené oblasti. Cokoli velkého se rychleji vrátí načtením autosave z doby před událostí - za cenu poctivého postupu, který mezitím vznikl.
- Vrať stav čistě. Zastav server, zkopíruj vybraný soubor
_autosavepřes hlavní save nebo ho přejmenuj tak, aby ho--start-server-load-latestvybral, a spusť znovu. Řekni to hráčům předem, protože jejich posledních pár minut zmizí. - Zavři mezeru. Podívej se, co hráč mohl dělat, a zakaž to skupině, ve které byl.
Sloty autosave umožňují krok 4 a střídají se - s výchozím nastavením pokrývá pět slotů po deseti minutách méně než hodinu. Pokud se škoda stala dřív, potřebuješ skutečný backup mimo server. Backupy, které opravdu obnovíš vysvětluje, proč se vyplatí jeden vyzkoušet dřív, než ho potřebuješ, a na RE:NODE jsou sloty záloh součástí každého tarifu Factorio a obnovují se tlačítkem.
Pomáhá také vědět, kdo byl online a kdy. S nastaveným --console-log ti řádky o připojení a odpojení dají časovou osu na sekundy a logování akcí - pokud bylo zapnuté - řekne přesně, kdo co postavil nebo odstranil. Po incidentu ho na nějakou dobu zapni, kdy je druhý pokus nejpravděpodobnější.
Řešení problémů#
Příkazy v konzoli nic nedělají. Chybí lomítko, nebo je allow_commands na false. Bez lomítka je text chat.
Admin přišel o práva. Není v souboru se seznamem adminů, nebo někdo použil /demote. Povyš ho z konzole.
`game.player` hlásí v konzoli chybu. V konzoli serveru žádný hráč není. Použij game.get_player("name").
Whitelist se ignoruje. Server byl spuštěn bez --use-server-whitelist.
Změna přes `/config set` po restartu zmizela. /config mění jen běžící server. Uprav také server-settings.json.
Achievementy jsou pryč. Někdo na tomto savu spustil /c, /editor nebo /cheat. To se vrátit nedá; starší save z doby před tím je pořád má.
FAQ#
Jak se udělám adminem na vlastním serveru Factorio?
Napiš /promote tvojejmeno do konzole serveru. Konzole má vždy plná práva a server tě zapíše do souboru se seznamem adminů, takže to vydrží.
Vypíná /sc achievementy jako /c?
Ano. Jakýkoli příkaz v Lua - /c, /sc nebo /mc - achievementy na savu vypne. Tichý znamená jen to, že ostatní hráči se to nedozvědí.
Můžu některým hráčům dát právo stavět, ale ne demolovat?
Ano, pomocí skupin oprávnění. Zakaž akci deconstruct ve skupině, do které ti hráči patří, a stavění nech povolené. /permissions ukazuje každou akci.
Jsou bany pro jeden server, nebo globální?
Pro jeden server. Ukládají se do souboru se seznamem banů toho serveru. Chceš-li sdílet seznam banů mezi svými servery, zkopíruj soubor.
Může Discord bot spouštět příkazy na serveru?
Ano, přes RCON, který přijímá každý příkaz z tohoto článku. Použij dlouhé heslo a naváž ho opatrně, protože RCON má plná admin práva.




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.