RE:NODE

Server Devcommands pro Valheim: cheaty na dedikovaném serveru

Text: Tým RE:NODE
13 min čtení


Na vanilla dedikovaném serveru ti po zadání devcommands nic neodpoví, ani když máš své ID v adminlist.txt. Sadu cheatů - god, fly, spawn, goto, killall a další - totiž na dedikovaných serverech blokuje samotná hra. Server Devcommands od JereKuusely je mod, který tuto blokaci zruší pro adminy a jen pro ně. Stručně: nainstaluj ho na PC každého admina, ID adminů vlož do adminlist.txt a pokud chceš i bonusy - spouštění příkazů na serveru, záznam o tom, kdo co zadal, a možnost zakázat vybrané příkazy - nainstaluj ho i na server. Obyčejní hráči nepotřebují nic.

Tento příspěvek popisuje, co mod vlastně mění, kam se musí instalovat, konfigurační soubor, aliasy a binds, příkazy navíc a jak zabránit tomu, aby důvěryhodný admin omylem zničil společný svět. Co dělají jednotlivé cheat příkazy, najdeš v článku Valheim devcommands vysvětleno a syntaxe spawn má vlastní návod; tady jde o mod, který je obklopuje.

Co Server Devcommands dělá#

Na Thunderstore se mod jmenuje JereKuusela-Server_devcommands. V době psaní je ve verzi 1.115 a jeho jedinou závislostí je BepInExPack pro Valheim. Drží krok se všemi velkými aktualizacemi Valheimu, což je důležité, protože admin nástroj, který se rozbije v den patche, je nástroj, který nebudeš mít přesně ve chvíli, kdy se něco pokazí.

Co mění, jednoduše řečeno:

  • `devcommands` funguje na dedikovaném serveru pro každého hráče, který projde kontrolou admina, tedy jeho ID je v serverovém adminlist.txt. Všichni ostatní jsou dál odmítnuti.
  • Konzole se otevře bez spouštěcí volby `-console` a cheat příkazy fungují i zadané do chatu, s automatickým doplňováním parametrů.
  • Více příkazů na jednom řádku, oddělených ;, a nové příkazy sestavené ze starých pomocí alias.
  • Klávesové binds s modifikátory a kolečkem myši, které nahrazují vanilla systém bind.
  • Vylepšené režimy: god, který navíc odebírá spotřebu staminy, odhození a omráčení; ghost, který tě může skrýt před hráči; fly, který umí procházet zdmi.
  • Nové příkazy pro teleportování hráčů, rozesílání zpráv, hledání objektů, vracení spawnů zpět a spouštění příkazů na samotném serveru.
  • Logování: když mají mod admin i server, každý příkaz, který admin spustí, se zapíše do serverového logu.

Nikomu nedává práva admina. Branou je pořád seznam adminů a mod ho kontroluje. Nepřidává ani RCON nebo webovou konzoli - příkazy se dál zadávají ve hře hráčem, který je připojený.

Kam se musí instalovat#

Tady si lidé nejčastěji věci pletou. Server Devcommands je především klientský mod. Konzole, binds, aliasy i cheat příkazy běží ve hře admina. Kopie na serveru je volitelná a přidává konkrétní seznam funkcí.

Nainstalováno naCo dostaneš
Jen PC adminadevcommands s kontrolou admina, aliasy, binds, příkazy v chatu, vylepšené režimy
PC admina i serverVše výše plus příkazy server, logování příkazů, find, zakázané příkazy, zakázané eventy a globální klíče, soukromé pozice hráčů viditelné adminům
Jen serverNic užitečného - nikdo nemá klientskou polovinu, do které by příkazy psal
Obyčejní hráčiNic není potřeba. Mohou se připojit s ním i bez něj

Protože se hráči bez modu mohou připojit, Server Devcommands nezpůsobuje vyhazování kvůli nesouladu verzí jako obsahové mody. Nepoužívá ověření verze. Znamená to také, že nic nebrání adminovi používat starou kopii - pokud se příkaz chová divně u jednoho admina a u druhého ne, porovnej nejdřív verze.

Na klientu je nejjednodušší cesta přes správce modů (r2modman nebo Thunderstore Mod Manager) - vyhledej „Server devcommands“ a nainstaluj ho do profilu, se kterým hraješ Valheim. Pokud vaše parta sdílí profil, přidej ho tam; jak na to, popisuje článek profily r2modman pro partu. Ručně: zip obsahuje jediný plugin, který zkopíruj do BepInEx/plugins ve složce hry.

Na serveru musí být nejdřív nainstalovaný BepInEx - balíček, startovací skript start_server_bepinex.sh na Linuxu a ověřený první start, při kterém se vytvořila složka BepInEx/plugins. Celý postup je v článku Valheim mody s BepInEx na serveru. Potom nahraj stejný soubor pluginu do serverové složky BepInEx/plugins přes SFTP nebo správce souborů a restartuj. V logu by se měl objevit řádek o načtení:

code
[Info   :   BepInEx] Loading [ServerDevcommands 1.115.0]

Pokud tento řádek chybí, BepInEx vůbec neběží - zkontroluj spouštěcí příkaz dřív, než začneš hledat chybu v modu.

Jak projít kontrolou admina#

Kontrola admina používá serverový adminlist.txt, jedno ID na řádek. Na serveru jen pro Steam je to 17místné SteamID64. Na crossplay serveru mají ID předponu platformy a mod přijímá i ID ve stylu PlayFab:

adminlist.txt
// Steam-only server76561198012345678// Crossplay serverSteam_76561198012345678

Funguje formát, který server vypíše do logu, když se hráč připojí, takže ho zkopíruj odtud, ne z nějakého webu. Všechny tři seznamové soubory jsou podrobně vysvětlené v článku adminlist, bannedlist a permittedlist.

Se zapnutým auto_devcommands (výchozí stav) mod spustí devcommands za tebe, když se připojíš na server, kde kontrolou projdeš. V konzoli uvidíš zprávu o zapnutých cheatech. Pokud ne:

  1. Zkontroluj, že tvé ID je v adminlist.txt v savedir serveru, ne v nějaké kopii jinde. Server soubor načítá znovu, ale pro jistotu se připoj znovu.
  2. Zadej devcommands sám a přečti si odpověď. Odmítnutí znamená, že kontrola selhala; žádná odpověď znamená, že mod není na tvém klientu načtený.
  3. Ověř, že hraješ na PC. Hráči na Xboxu nemohou instalovat mody, takže na crossplay serveru to může používat jen admin na PC.

Konfigurační soubor a dev_config#

Nastavení jsou v BepInEx/config/server_devcommands.cfg, který se vytvoří při prvním startu. Kopie admina řídí chování na klientu, kopie serveru řídí funkce na straně serveru. Měnit je můžeš třemi způsoby: upravit soubor, použít ve hře mod Configuration Manager, nebo použít vlastní příkaz modu:

code
dev_config auto_god 1dev_config auto_flyserver dev_config disable_events 1

dev_config [name] [value] nastaví hodnotu; když hodnotu vynecháš, přepne se, 0 vypne a 1 zapne. S předponou server změní kopii na serveru, což vyžaduje mod na serveru.

Nastavení, na která nejspíš sáhneš:

NastaveníVýchozíCo dělá
auto_devcommandstruePři připojení spustí devcommands, pokud jsi admin
auto_god, auto_ghost, auto_fly, auto_nocost, auto_debugmodefalseRežim se zapne automaticky
god_no_stamina, god_no_knockback, god_no_staggertrueCo god navíc odebírá
ghost_invisibilityfalseSkryje ghostnutého admina před ostatními hráči
fly_no_clipfalseLétání skrz terén a stavby
access_private_cheststrueAdmin může otevírat soukromé truhly ostatních hráčů
access_warded_areastrueAdmin může stavět a interagovat uvnitř wardů
max_undo_steps50Kolik akcí si undo pamatuje
disable_eventsfalseNa straně serveru: zastaví náhodné nájezdy
server_chatfalseNa straně serveru: server může posílat zprávy do chatu
command_log_formatviz nížeFormát serverového logu příkazů; prázdná hodnota ho vypne

Dvě z nich si zaslouží komentář. access_private_chests a access_warded_areas jsou ve výchozím stavu zapnuté, což admin uklízející po griefingu potřebuje, ale také to znamená, že admin může vykrást cizí základnu, aniž by si ward něčeho všiml. Pokud jsou tví admini zároveň obyčejní hráči ve stejném světě, je to otázka důvěry, o které stojí za to jednou nahlas mluvit. Co wardy chrání, když do hry nezasahuje žádný admin, popisuje warda a griefing.

server_chat přidá na server falešného klienta, aby mohl server sám psát do chatu. Dokumentace modu zmiňuje vedlejší efekt: bossové dropnou předmět navíc, protože hra počítá tohoto falešného klienta jako hráče při škálování loot. Nech to vypnuté, pokud k tomu nemáš skutečný důvod.

Aliasy, více příkazů a binds#

Tři funkce mění konzoli z krabičky na cheaty v admin nástroj.

Více příkazů. Cokoli oddělené ; se spustí postupně. wait přidá pauzu v milisekundách:

code
god; ghost; flybroadcast center Restart in 5 minutes; wait 240000; broadcast center Restart in 1 minute

Aliasy. alias [name] [command] vytvoří nový příkaz. Značka pro substituci, ve výchozím stavu $$ (nastavení substitution), se nahradí tím, co napíšeš za jméno aliasu:

code
alias admin god; ghost; fly; nocostalias say broadcast center $$alias heal dmg $$ -1000

Pak admin zapne celou sadu a say Raid at the main base zobrazí zprávu uprostřed obrazovky všem. Aliasy se ukládají do konfigurace samotného admina, takže následují admina, ne server.

Binds. Mod nahrazuje vanilla bind verzí, která přijímá modifikační klávesy: bind [key,modifier1,modifier2] [command]. Právě verze s modifikátory dělá binds bezpečné - jedinou klávesu je snadné omylem stisknout uprostřed boje, klávesu s leftalt ne.

code
bind keypad1,leftalt adminbind keypad2,leftalt calm 30bind keypad3,leftalt removedrops

Existují i binds na kolečko myši, zapínají se pomocí mouse_wheel_bind_key, které je ve výchozím stavu none.

Příkazy navíc, které stojí za znalost#

Mod přidává nebo rozšiřuje dlouhý seznam příkazů; help ve hře vypíše všechno, co tvoje verze má, i s popisy. Tyhle si zaslouží místo na sdíleném serveru.

PříkazCo dělá
playerlistHráči online s ID, postavami a pozicemi
tp [players] [x,z,y or player]Teleportuje hráče podle jména, ID nebo zástupného znaku
goto [x,z,y], goto [name], goto lastTeleportuje tebe na souřadnice, k hráči nebo zpět
pos [player]Pozice hráče
broadcast [center/side] [message]Zpráva všem hráčům
message [players] [center/side] [message]Zpráva vybraným hráčům
calm [radius]Uklidní rozzuřená stvoření v okolí (výchozí 20)
repair [radius]Opraví stavby v okolí (výchozí 20)
dmg [players] [amount]Zraní hráče; záporná hodnota léčí
inventory [clear/refill/repair/upgrade]Správa tvého vlastního inventáře
find [id] [limit]Najde objekty podle ID a označí je na mapě (vyžaduje kopii na serveru)
search_id [term]Hledání ID objektů, užitečné před spawn
undo / redoVrátí nebo obnoví poslední akce, například spawny
event [event] [x] [z]Spustí event na daném místě
move_spawn [x,z,y]Přesune výchozí spawn bod světa
resetdungeonResetuje nejbližší tábor nebo dungeon - smaže vše uvnitř
seedVypíše seed světa
server [command]Spustí příkaz na samotném serveru

find je ten, který řeší nejvíc žádostí o pomoc. find Cart označí špendlíkem každý vozík na světě, takže najdeš ten, který někdo opustil v bažině. undo je druhý: špatně napsaný spawn Troll 50 je od vrácení zpět vzdálený tři stisky kláves místo boje.

resetdungeon a move_spawn jsou opačný případ - snadno se napíšou a těžko se vrací. Používej je jen po záloze.

Zamykání příkazů na serveru pro partu#

S modem na serveru můžeš zakázat vybrané příkazy všem adminům kromě několika jmenovaných root uživatelů. Tato funkce dělá ze Server Devcommands použitelné řešení pro server s několika adminy různých povah.

  • Zakázané příkazy. disable_command drží seznam příkazů, které smí spustit jen root uživatelé. Vlastní příklad modu je server dev_config disable_command event, což adminům zabrání ručně spouštět nájezdy.
  • Root uživatelé. Čárkou oddělený seznam SteamID v serverovém server_devcommands.cfg, v sekci konzole. Root uživatelé mohou spouštět zakázané příkazy. Nelze to nastavit přes dev_config záměrně - musíš upravit soubor na serveru, takže se admin nemůže povýšit sám ze hry.
  • Zakázané globální klíče. server dev_config disable_global_key [keys] zabrání zabití bosse nastavit jmenované klíče. Bez argumentů vypíše ty, které už jsou zakázané. Co který klíč odemyká, vysvětluje globální klíče a setkey.
  • Zakázané eventy. server dev_config disable_events 1 úplně zastaví náhodné nájezdy. Pro jemnější řízení je obvykle lepším nástrojem vanilla modifikátor světa raids - viz nájezdy a eventy na serverech.

Rozumné uspořádání pro partu s jedním majitelem a dvěma pomocníky: majitel je jediný root uživatel; v seznamu zakázaných má server příkazy, které nejdou vrátit nebo mění celý svět - resetdungeon, move_spawn, killall, resetkeys, removekey, setkey, exploremap, resetmap - a pomocníci si ponechají tp, goto, calm, repair, kick a broadcast.

code
server dev_config disable_command resetdungeonserver dev_config disable_command move_spawn

Poté si přečti serverový server_devcommands.cfg a zjisti, co tvoje verze uložila - jestli druhé volání seznam rozšířilo, nebo nahradilo - a seznam tam případně oprav.

Log příkazů#

Když mod používají admin i server, každý příkaz se zapíše do serverové konzole a logu ve formátu z command_log_format:

code
{player_id}/{character_name} ({pos_x:F0}, {pos_z:F0}, {pos_y:F0}): {command}

Vzniknou řádky jako Steam_76561198012345678/Astrid (512, -1340, 31): spawn Wolf 4. Je to jediný záznam o tom, kdo co spawnul, a první věc ke čtení, když se základna najde plná trollů. Na panelovém hostingu to proletí konzolí spolu se vším ostatním; na RE:NODE má živá konzole příkazový řádek a historii a logy jsou ve správci souborů v kořeni serveru, takže je můžeš zpětně prohledávat (konzole a soubory v návodu k panelu).

Pamatuj, že log zachytí jen příkazy adminů, kteří mod také používají - což jsou, protože mod je to, co jim cheaty umožňuje, všichni, na kterých záleží. Nastavení command_log_format na prázdnou hodnotu logování vypne. Jen málokdy k tomu existuje dobrý důvod.

Řešení problémů#

`devcommands` hlásí, že to není povoleno. Kontrola admina selhala. ID v adminlist.txt neodpovídá tomu, co o tobě server loguje - obvykle chybí předpona platformy na crossplay serveru, nebo je tam navíc mezera.

Po zadání příkazu se nic neděje. Mod není na tvém klientu načtený. Spusť hru tlačítkem „Start modded“ ve správci modů, ne přes Steam, nebo není načtený BepInEx vůbec.

Příkazy `server` vracejí chybu. Server nemá mod, nebo na serveru neběží BepInEx. Zkontroluj ve startovacím logu řádek o načtení.

`find` na serveru nic nevrací. Potřebuje kopii na serveru; bez ní klient vidí jen zóny načtené kolem tebe.

Příkaz funguje jednomu adminovi a druhému ne. Různé verze modu, nebo je jeden z nich root uživatel a druhý narazil na seznam zakázaných.

Po patchi Valheimu se všechno rozbilo. Počkej na aktualizaci modu a pak aktualizuj kopie na klientu i na serveru společně. Obecný postup najdeš v článku co dělat, když aktualizace modu něco rozbije.

FAQ#

Musí mít Server Devcommands nainstalovaný všichni hráči?

Ne. Potřebují ho na PC jen admini, kteří chtějí příkazy používat. Hráči bez něj se připojí normálně a nejsou vyhozeni, protože mod nekontroluje verze mezi klienty a serverem.

Můžu ho použít na crossplay serveru?

Ano, pro adminy na PC. Hráči na Xboxu nemohou instalovat mody, takže příkazy použít nemohou, ale na server, na kterém mod běží, se připojit mohou, protože pro nikoho jiného není klientským požadavkem.

Je bezpečné nechat ho nainstalovaný na dlouho běžícím světě?

Samotná instalace ve světě nic nemění. Jiná věc je, co s ním admini dělají - neopatrný killall nebo resetdungeon nejde vrátit. Před každou relací těžké admin práce udělej zálohu a pro pomocníky použij seznam zakázaných příkazů.

Funguje vedle World Edit Commands a dalších modů od JereKuusely?

Ano. Ostatní mody od JereKuusely, například World Edit Commands a Infinity Hammer, jsou psané tak, aby s ním fungovaly vedle sebe, a jejich příkazy lze používat v aliasech a binds jako každé jiné. Každý instaluj na ty strany, které uvádí jeho vlastní stránka - nesledují všechny stejné pravidlo.

Proč boss občas dropne dva trofeje?

Na některých serverech je to zapnuté server_chat - falešný chatový klient se pro boss loot počítá jako hráč. Vypni to příkazem server dev_config server_chat 0, pokud jsi to tak nechtěl.