DayZ nerozhazuje loot náhodně. Každý předmět na mapě umístí centrální ekonomika, účetní systém, který spočítá, co existuje, porovná to s cílem, spawnuje chybějící předměty na odpovídající pozice a maže to, čeho se dlouho nikdo nedotkl. types.xml je účetní kniha, ze které vychází: jeden záznam na třídu předmětu, s cílovým počtem, minimem, životností, časovačem doplňování a seznamem míst, kde se předmět smí objevit.
Jakmile tohle víš, většina stížností na loot má zřejmou odpověď. Město je prázdné, protože předměty, které tam patří, už jsou někde jinde na mapě, nebo protože jejich záznam nikdy neměl odpovídající usage. Zbraně z módu se nespawnují, protože předměty módu nebyly do ekonomiky přidány vůbec. A server, který se přes noc vyprázdnil, obvykle nepřišel o loot - přišel o uzavírací tag a soubor se přestal parsovat.
Tohle je podrobná verze návodu server DayZ, který přežije vlastní seznam módů. Pokrývá soubory, pole, události, předměty z módů a postup úprav, který tě nebude stát wipe.
Kde leží soubory ekonomiky#
Všechno je uvnitř složky mise, což je u standardního Chernarusu mpmissions/dayzOffline.chernarusplus/. Livonia je dayzOffline.enoch a ostatní mapy se řídí stejným vzorem; použitou misi určuje template v serverDZ.cfg.
| Soubor | Co obsahuje |
|---|---|
cfgeconomycore.xml | Které soubory ekonomiky se načtou, včetně tvých vlastních |
db/types.xml | Každý předmět: počty, životnosti, kde se smí spawnovat |
db/events.xml | Vozidla, havárie vrtulníků, dynamické spawny |
db/globals.xml | Globální limity a časovače celé ekonomiky |
db/economy.xml | Které kategorie persistence se načítají a ukládají |
db/messages.xml | Časovaná oznámení serveru a obvykle i restart |
cfgspawnabletypes.xml | Příslušenství a náklad na spawnovaných předmětech |
cfgrandompresets.xml | Pojmenované předvolby nákladu a příslušenství |
cfgeventspawns.xml | Souřadnice, které smí každá událost použít |
cfglimitsdefinition.xml | Povolené názvy pro category, tag, usage a value |
cfgplayerspawnpoints.xml | Kde hráči přicházejí |
storage_1/ | Persistence: stav světa, který přežije restart |
Dva z nich jsou užitečnější, než naznačují jejich názvy. cfglimitsdefinition.xml je směrodatný seznam toho, co smíš napsat do elementu usage nebo value na své mapě, což ušetří spoustu hádání. A cfgeconomycore.xml je způsob, jak přidat vlastní soubory, aniž bys upravoval cizí, což je nejlepší jednotlivý zvyk v administraci DayZ.
Soubory ekonomiky se čtou při startu mise. Nic z toho není živé. Každá změna znamená restart a změna provedená za běhu serveru je změna souboru, který server už dočetl.
Jak se centrální ekonomika vlastně rozhoduje#
Ekonomika běží v průchodech. V každém průchodu zhruba provede toto:
Vyplývají z toho tři důsledky a vysvětlují většinu toho, co vypadá jako rozbitý loot.
`nominal` je cíl, ne příslib. Ekonomika nevytvoří předmět, pro který nemá místo. Pokud seznam usage předmětu neodpovídá žádné budově na mapě, nebo jeho tier value neexistuje v žádném regionu, může být nominal 500 a stejně nikdy žádný neuvidíš.
Předměty, které už ve světě jsou, se počítají do cíle. K tomu slouží příznaky, a proto může mít server, kde každý má plný stan, prázdná města. Ekonomika dělá přesně to, co jsi jí řekl: zbraně existují, takže další nevyrábí.
Nic se neděje okamžitě. restock omezuje, jak často se smí typ doplňovat, a lifetime rozhoduje, kdy se nedotčený předmět uklidí, aby uvolnil místo. Zvýšení nominalu nezaplní mapu za pět minut; zvedne strop, ke kterému bude doplňování v následujících hodinách stoupat.
Jak číst záznam v types.xml#
Úplný záznam vypadá takto. Každé pole je nepovinné kromě názvu a počtů, ale dobře utvořený záznam má všechna:
<type name="M4A1"> <nominal>15</nominal> <lifetime>14400</lifetime> <restock>1800</restock> <min>8</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> <category name="weapons"/> <usage name="Military"/> <value name="Tier4"/></type>| Pole | Co znamená |
|---|---|
nominal | Cílový počet na mapě, pokud to počítací příznaky dovolují |
min | Spodní hranice. Pod ní začne ekonomika vracet další kusy |
lifetime | Sekundy, které nedotčený předmět přežije do úklidu |
restock | Sekundy, než se tento typ smí znovu doplnit, 0 pro co nejdřív |
quantmin / quantmax | Procento naplnění pro cokoli s množstvím, -1 pro výchozí |
cost | Priorita spawnu, 0 až 100, když na jedno místo pasuje více kandidátů |
category | Široká skupina: weapons, clothes, containers, explosives, food, tools |
Příznaky rozhodují, co se počítá do nominal, a jsou nejméně využívaným nástrojem v souboru:
| Příznak | Nastav na 1, když |
|---|---|
count_in_map | Se mají počítat předměty volně ležící ve světě. Téměř vždy 1 |
count_in_cargo | Se mají počítat předměty v kontejnerech na zemi |
count_in_hoarder | Se mají počítat předměty ve stanech, sudech a zakopaných schovávkách |
count_in_player | Se mají počítat předměty nesené hráči |
crafted | Předmět hráči vyrábějí, ekonomika ho neumisťuje |
deloot | Se předmět smí objevit na dynamických událostech, například u havárií |
Pokud se ti na dlouho běžícím serveru zdá cenný předmět příliš běžný, obvyklou příčinou jsou count_in_hoarder a count_in_player nastavené na 0. Každá puška, kterou si hráči schovají, je pro ekonomiku neviditelná, takže dál vyrábí náhrady, až jsou stovky ve stanech a patnáct na mapě. Nastavení obou na 1 u zbraní a munice naváže nabídku na to, co skutečně existuje, a je to to nejbližší, co DayZ má k ekonomice lootu, která se chová jako ekonomika.
lifetime je druhá páka, na kterou lidé zapomínají. Krátká životnost u haraburdí drží pozice volné pro věci, které stojí za nalezení. Dlouhá u vzácných předmětů znamená, že leží v lese, kam je někdo odhodil, a zabírají slot, který mohl obsadit nový kus.
usage, value a tag: kde se předmět smí objevit#
Umístění řídí tři elementy a všechny jdou opakovat. Záznam s několika řádky usage se smí objevit v kterémkoli z těch typů oblastí.
- `usage` pojmenovává druh budovy nebo oblasti:
Military,Police,Medic,Firefighter,Industrial,Farm,Hunting,Office,School,Prison,Town,Village,Coast. - `value` pojmenovává tier lootu, což zhruba odpovídá vzdálenosti od pobřeží a nebezpečnosti regionu. Chernarus prošel několika přepracováními tierů a novější mapy mají tierů víc než starší.
- `tag` pojmenovává druh pozice lootu:
floor,shelves,ground.
Ten seznam neber jako evangelium pro svou mapu. Povolené názvy jsou definované v cfglimitsdefinition.xml ve tvé vlastní složce mise a cfglimitsdefinitionuser.xml ti dovolí seskupit je pod vlastními názvy. Než si vymyslíš nějaké usage, otevři oba. Neexistující usage nebo value není chyba, která se ti zobrazí; je to předmět, který se nikdy nespawnuje. Referenční příručka Bohemie k celému systému je stránka Central Economy mission files a je to jediný externí dokument, který stojí za to mít otevřený.
Záznam bez jakéhokoli usage nemůže systém lootu v budovách umístit. To je záměr u předmětů, které přicházejí jen z události nebo jako náklad uvnitř něčeho jiného - a je to odpověď, když dokonale platný záznam se zdravým nominalem nevyprodukuje nic.
events.xml a věci, které nejsou loot#
Vozidla, havárie vrtulníků, policejní auta, lodě a dynamičtí nakažení, kteří je doprovázejí, nejsou předměty. Jsou to události, definované v events.xml:
<event name="StaticHeliCrash"> <nominal>4</nominal> <min>2</min> <max>5</max> <lifetime>1800</lifetime> <restock>0</restock> <saferadius>500</saferadius> <distanceradius>500</distanceradius> <cleanupradius>1500</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>mixed</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="3" min="1" type="Wreck_UH1Y"/> </children></event>saferadius brání události spawnout se na hráči. distanceradius drží od sebe dvě stejné události. cleanupradius říká, jak blízko musí být hráč, aby se zbytky události odstranily. position je fixed pro události umístěné na souřadnicích a player pro ty, které se spawnují poblíž někoho. active je vypínač. children jsou názvy tříd, které událost smí skutečně umístit, s počtem od každé.
Samotné souřadnice jsou v cfgeventspawns.xml, jeden blok pozic na název události. Přidání dalších aut na mapu proto znamená dvě úpravy: zvýšit nominal v events.xml a zajistit, aby pro ni bylo v cfgeventspawns.xml uvedeno dost spawnovacích bodů. Zvýšení samotného nominalu nepřinese nic, protože ekonomice došla místa, kam je dát.
U vozidel je ještě jeden háček. Vrak se pořád počítá, pokud ho nevyčistí příznak remove_damaged události, takže server, kde hráči zničili všechna auta, může dosáhnout svého nominalu, aniž by existovalo jediné pojízdné vozidlo.
Vlastní složky ce a předměty z módů, které se nespawnují#
Mód přidává názvy tříd. Nepřidává záznamy do ekonomiky a ekonomika nespawnuje třídu, o které nikdy neslyšela. To je celé vysvětlení nejčastější otázky na podporu u DayZ: mód je načtený, zbraně jsou v souborech a nic je nespawnuje.
Většina módů dodává vlastní soubor types. Správné místo pro něj je tvoje vlastní složka, zaregistrovaná v cfgeconomycore.xml:
<economycore> <!-- leave the vanilla contents exactly as they are --> <ce folder="custom"> <file name="mod_types.xml" type="types" /> <file name="mod_spawnabletypes.xml" type="spawnabletypes" /> <file name="mod_events.xml" type="events" /> </ce></economycore>Vytvoř ve složce mise custom/, vlož tam soubory módu a každý vyjmenuj se správným type. Vlastní soubor types je obyčejný dokument <types> obsahující jen záznamy módu.
Proč s tím vůbec dělat potíže, místo abys záznamy vložil do types.xml? Protože aktualizace DayZ nahrazuje soubory mise. Cokoli jsi přidal do types.xml, je pryč; cokoli ve tvé složce přežije a znovu to zaregistrovat je jeden řádek. Drž své přídavky ve vlastních souborech a aktualizace tě budou stát odpoledne, ne víkend.
Dvě doplňující věci, když se předmět z módu pořád chová divně:
- Spawnuje se prázdný. Puška bez zásobníku a optiky potřebuje záznam v souboru spawnabletypes, kde se definuje příslušenství a náklad.
- Objevuje se všude. Autor módu nastavil štědrý nominal a široký seznam usage, aby sis ho určitě všiml. Tohle jsou teď tvoje čísla ke změně a výchozí hodnoty módu jsou doporučení, ne rozhodnutí o balancu.
Udržet seznam módů a ekonomiku v souladu je většina práce na serveru s módy, což je i téma udržování serveru s módy v pořádku.
Postup úprav, který nevyprázdní mapu#
Ekonomika nemá validační krok, který by hráč někdy viděl. Poškozený soubor není chyba na obrazovce připojení; je to server, který nastartuje, běží a nic neobsahuje.
- Drž nedotčenou kopii složky mise. Před první úpravou ji zkopíruj mimo server. Jen to umožní krok 6.
- Upravuj po jednom souboru, při zastaveném serveru. Editor v prohlížeči se zvýrazněním syntaxe v panelu stačí a ukáže ti tag, který se neuzavírá; SFTP a správce souborů popisuje, jak si místo toho stáhnout celou složku.
- Před restartem zvaliduj XML. Postačí jakýkoli validátor. Většina rozbitých ekonomik DayZ je o jedno chybějící
/v uzavíracím tagu. - Restartuj a přečti si log. Server při každém startu zapíše soubor
.RPTdo složky profiles a selhání parsování ekonomiky jsou v něm, pojmenovaná podle souboru. - Dej tomu čas, než začneš soudit. Kvůli časovačům restock a životnostem je změna vidět za hodiny, ne minuty. Neprováděj druhou změnu, zatímco čekáš na výsledek první.
- Pokud je mapa prázdná, vrať nedotčenou kopii a úpravu udělej znovu. Neladíš živý wipe.
Persistence, storage a wipy#
storage_1/ obsahuje všechno, co si svět pamatuje: soubory .bin, které zaznamenávají dynamické objekty, vozidla a postavené stavby, a players.db s postavami. Vlastní stav ekonomiky leží vedle nich.
- Smazání `storage_1` je úplný wipe. Stany, vozidla, základny, postavy, všechno.
- Smazání jen `players.db` resetuje postavy a svět nechá stát, což je „wipe postav“, který lidé obvykle myslí.
- `storageAutoFix = 1;` v `serverDZ.cfg` dovolí serveru opravit poškozený soubor persistence při startu, místo aby ho odmítl. Nastav to. Alternativou k automatické opravě není neporušený soubor, ale ruční oprava.
Strukturální změna ekonomiky - nová mapa, mód měnící třídy předmětů, přepracování tierů - obvykle chce wipe, protože stará persistence odkazuje na svět, který už neexistuje. Ladicí změna nominalů ho nechce.
Samotné restarty jsou součástí administrace DayZ, ne přerušení. Většina serverů se restartuje každé tři nebo čtyři hodiny, jednak aby se vyčistil nahromaděný stav, jednak proto, že několik chování ekonomiky se resetuje jen při startu mise. db/messages.xml vysílá varování na časovači a v aktuálních verzích může nést i samotné vypnutí. Alternativou je plánovač mimo hru: na RE:NODE je to záložka Schedules, kde výraz cron spouští uspořádané úlohy se zpožděním, takže jeden rozvrh může poslat varování, udělat zálohu a pak server restartovat. Rozvrhy restartů, které pomáhají popisuje, kolik je příliš často, a naplánované úlohy, které stojí za to mít obsahuje zbytek seznamu.
Zálohuj složku mise a storage_1 společně, protože obnova jednoho bez druhého ti dá ekonomiku, která si odporuje se světem. Backup sloty na tarifech DayZ u RE:NODE se ukládají mimo stroj, který chrání, a obnovují se tlačítkem, což je to, co chceš ve chvíli, kdy je mapa prázdná a nikdo si není jistý, která úprava to způsobila. Zálohy, které se opravdu obnoví je argument pro to, abys to vyzkoušel před špatným dnem.
Řešení problémů#
Celá mapa je po úpravě prázdná. Soubor se nepodařilo parsovat. Podívej se do .RPT na název souboru, nebo prostě obnov nedotčenou kopii a změnu udělej znovu.
Předměty z módu se nespawnují. Chybí záznam v ekonomice. Zaregistruj soubor types módu ve vlastní složce ce.
Zvýšil jsem nominal a nic se nezměnilo. Časovače restock, nebo žádné odpovídající pozice lootu. Ověř, že názvy usage a value existují v cfglimitsdefinition.xml pro tvou mapu.
Města jsou prázdná, ale hráči mají všechno. Funguje to, jak je nastaveno. Nastav count_in_hoarder a count_in_player na 1 u typů předmětů, na kterých ti záleží, a ekonomika přestane nahrazovat to, co už venku je.
Vojenský loot je všude, kde nemá být. Zkontroluj usage a value u těch záznamů, ne nominal. Předmět s Town v seznamu usage se objeví ve městech, ať nastavíš počet jakkoli nízko.
Vozidla se nevracejí. Jsou to události. Zkontroluj nominal události, zda má cfgeventspawns.xml dost pozic a zda se zničené vraky pořád počítají.
Server nastartuje, ale log je plný varování ekonomiky. Obvykle duplicitní název typu ve dvou souborech, což se stane, když byly záznamy módu vloženy do types.xml a zároveň načteny z vlastní složky. Drž každou třídu přesně na jednom místě.
FAQ#
Jaký je rozdíl mezi nominal a min v types.xml?
nominal je cílový počet, o který ekonomika usiluje. min je spodní hranice, která spouští doplňování. Když počítané číslo klesne pod min, ekonomika začne přidávat další, až dosáhne nominal, s ohledem na časovač restock.
Proč se předmět s vysokým nominalem pořád nespawnuje?
Buď ho nic nepočítá, nebo ho nic nemůže umístit. Ověř, že count_in_map je 1, a pak zkontroluj, že názvy usage a value v záznamu na tvé mapě opravdu existují v cfglimitsdefinition.xml. Záznam bez usage nelze jako loot v budovách umístit vůbec.
Musím po úpravě types.xml restartovat server?
Ano. Soubory ekonomiky se čtou jednou, při startu mise. Nic z types.xml, events.xml ani cfgeconomycore.xml se na běžícím serveru neuplatní.
Jak přidám předměty z módu do ekonomiky lootu?
Dej soubor types módu do vlastní složky uvnitř mise a pak ho zaregistruj v cfgeconomycore.xml blokem ce s type="types". Příslušenství a náklad potřebují soubor spawnabletypes zaregistrovaný stejným způsobem.
Vymaže úprava ekonomiky můj server?
Ladění počtů a životností ne. Změna mapy, nebo změny, které mění, jaké třídy předmětů existují, obvykle ano, protože uložený svět odkazuje na objekty, které už nejsou definované. Před oběma zálohuj storage_1 a složku mise společně.
Za jak dlouho je změna lootu vidět?
Za hodiny, ne minuty. Existující předměty musí dosáhnout konce životnosti, než se uvolní jejich sloty, a časovače restock určují, jak rychle se objevují náhrady. Udělej jednu změnu, počkej den a pak ji posuď.




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.