DayZ Central Economy: types.xml und events.xml verstehen

Loot-Steuerung in DayZ: types.xml-Attribute, events.xml, cfgeconomycore und wie du Spawns gezielt anpasst.

DayZ Central Economy: types.xml und events.xml verstehen

Die Central Economy (CE) ist das Herzstück der Loot-Verteilung in DayZ. Sie steuert, was, wo und wie oft spawnt — von Konservendosen über Waffen bis hin zu Fahrzeugen und Helikopter-Abstürzen. Dieser Guide zeigt die wichtigsten Dateien, ihre Attribute und typische Anpassungen.

Wo liegen die CE-Dateien?

Alle CE-Dateien liegen im Mission-Ordner deines Servers, z. B.:

mpmissions/dayzOffline.chernarusplus/
├── db/
│   ├── types.xml          # Item-Definitionen und Spawn-Quoten
│   ├── events.xml         # Dynamische Events (Heli-Crashes, Tiere, Fahrzeuge)
│   ├── globals.xml        # Globale Server-Variablen
│   └── messages.xml       # Server-Nachrichten
├── cfgeconomycore.xml     # CE-Datei-Routing (welche XMLs geladen werden)
├── cfgeventspawns.xml     # Spawn-Positionen für Events
├── cfgspawnabletypes.xml  # Inhalt von spawnenden Containern
├── cfglimitsdefinition.xml      # Verfügbare Tags, Categories, Usage
├── cfglimitsdefinitionuser.xml  # Eigene User-Definitionen für Spawn-Filter
├── init.c                 # Mission-Skript (Spawn-Punkte, Custom-Logik)
└── storage_1/             # Persistence (Spielerdaten, Basen, Items in der Welt)

Bei Livonia heißt der Mission-Ordner dayzOffline.enoch, bei Sakhal dayzOffline.sakhal — die Struktur ist identisch.

types.xml verstehen

Die types.xml definiert pro Item, wie viele davon auf der Map existieren dürfen, wie lange sie liegen bleiben, und in welchen Gebäudetypen sie spawnen.

Ein typischer Eintrag:

<type name="AKM">
    <nominal>10</nominal>
    <lifetime>14400</lifetime>
    <restock>1800</restock>
    <min>5</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"/>
    <category name="weapons"/>
    <usage name="Military"/>
    <value name="Tier3"/>
    <value name="Tier4"/>
</type>

Die wichtigsten Attribute

AttributBedeutung
nameKlassenname des Items (z. B. AKM, Apple, Mosin9130)
nominalSoll-Anzahl auf der Map. Die CE versucht diesen Wert zu erreichen.
minMindestmenge. Fällt der Bestand darunter, spawnt das Item priorisiert.
lifetimeSekunden, die das Item liegen bleibt. 14400 = 4 Stunden.
restockSekunden, bis ein neues Item nach Pickup nachspawnt. 0 = sofort.
quantmin / quantmaxBei Items mit Munition/Inhalt: Min-/Max-Füllung in % (1-100, oder -1 für “nicht zutreffend”).
costSpawn-Priorität. Höhere Werte = häufiger gewählt. Standard 100.
categoryKategorie für Gebäude-Filter (food, weapons, tools, clothes, containers, explosives).
usageWo es spawnen darf: Military, Police, Medic, Farm, Industrial, Hunting, Town, Village, Coast.
valueLoot-Tier: Tier1 (Küste) bis Tier4 (Tisy/Nordwest).
tagIndoor/Outdoor-Filter: floor, shelves.

Flags-Attribute

<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0"/>
FlagWirkung wenn 1
count_in_cargoItems in Backpacks/Containern zählen zur Nominal-Quote
count_in_hoarderItems in Spielerlagern (Zelte, Fässer, vergrabene Säcke) zählen mit
count_in_mapItems, die in der Welt liegen, zählen mit (Standard: 1)
count_in_playerItems im Spieler-Inventar zählen mit

Praxis: Wenn du verhindern willst, dass Spieler Loot horten, setze count_in_hoarder="1" und count_in_cargo="1". Dann spawnt nichts Neues, solange die Items irgendwo gestapelt sind.

Beispiel: Loot häufiger machen

Du willst, dass mehr AKMs spawnen?

<type name="AKM">
    <nominal>30</nominal>     <!-- vorher 10 -->
    <min>15</min>             <!-- vorher 5 -->
    <restock>600</restock>    <!-- vorher 1800 (10 statt 30 Min) -->
    ...
</type>

Wichtig: Auch Munition und Magazine entsprechend erhöhen, sonst nutzlose Waffen.

events.xml verstehen

events.xml steuert dynamische Events: Helikopter-Abstürze, Tier-Spawns, Fahrzeuge, Loot-Container, kontaminierte Zonen.

Ein Heli-Crash-Event sieht so aus:

<event name="StaticHeliCrash">
    <nominal>5</nominal>
    <min>3</min>
    <max>8</max>
    <lifetime>14400</lifetime>
    <restock>0</restock>
    <saveforce>0</saveforce>
    <active>1</active>
    <children>
        <child lootmax="0" lootmin="0" max="0" min="0" type="Land_Wreck_Mi8_DZ"/>
        <child lootmax="0" lootmin="0" max="0" min="0" type="Land_Wreck_UH1Y"/>
    </children>
</event>
AttributBedeutung
nominalZiel-Anzahl gleichzeitig aktiver Events
min / maxMin-/Max-Anzahl (überschreibt nominal-Limit)
lifetimeSekunden, bis das Event despawnt
restockSekunden Wartezeit zwischen Spawns
active1 = aktiv, 0 = deaktiviert
childrenWelche Wracks/Items konkret spawnen können

Spawn-Positionen: cfgeventspawns.xml

Wo ein Event spawnt, wird in cfgeventspawns.xml festgelegt:

<event name="StaticHeliCrash">
    <pos x="2200" z="3500" />
    <pos x="6700" z="9800" />
    ...
</event>

Die Koordinaten sind die internen Map-Koordinaten (X = Ost-West, Z = Nord-Süd).

Container-Inhalt: cfgspawnabletypes.xml

Wenn du willst, dass eine Mosin mit Munition und Optik spawnt, definierst du das in cfgspawnabletypes.xml:

<type name="Mosin9130">
    <attachments chance="0.40">
        <item name="PUScopeOptic" chance="0.30"/>
        <item name="HuntingOptic" chance="0.30"/>
    </attachments>
    <cargo chance="0.50">
        <item name="Ammo_762x54" chance="0.40" quantmin="5" quantmax="20"/>
    </cargo>
</type>

chance ist die Wahrscheinlichkeit (0.0-1.0), dass der Slot gefüllt wird.

cfgeconomycore.xml

Diese Datei steuert, welche XMLs überhaupt geladen werden. Mods nutzen das, um eigene types.xml-Dateien anzuhängen, ohne deine zu überschreiben:

<economycore>
    <classes>
        <rootclass name="ce" folder="ce">
            <file name="expansion_types.xml" type="types"/>
            <file name="expansion_events.xml" type="events"/>
        </rootclass>
    </classes>
</economycore>

Das ist sauberer als alles in eine zentrale types.xml zu kopieren.

Häufige Anpassungen

1. Zombies reduzieren (events.xml):

<event name="InfectedArmy">
    <nominal>50</nominal>     <!-- statt 80 -->
    ...
</event>

2. Loot-Lifetime verlängern für RP-Server:

<type name="AKM">
    <lifetime>28800</lifetime>  <!-- 8h statt 4h -->
</type>

3. Kompletten Loot-Multiplier per Skript:

In der init.c kannst du beim Mission-Start alle Nominals via Code skalieren — siehe Bohemia-Wiki “DayZ:Central Economy mission files modding”.

Validierung und Debugging

Symptome eines kaputten CE:

  • Nichts spawnt mehr
  • Server-Konsole spammt “Type X not found”
  • Loot ist irgendwo gestapelt, aber nirgends in Gebäuden

Vorgehen:

  1. profiles/server_console.log öffnen
  2. Nach [CE] oder Type suchen
  3. Bei Syntax-Fehlern: XML-Validator nutzen (z. B. xmllint)
  4. Bei “Type X not found”: Das Item gibt es nicht (mehr), entferne es aus types.xml

FAQ

Frage: Wie wechsel ich types.xml für eine Mod?

Du hast zwei Wege: Entweder du kopierst die Mod-Items direkt in deine types.xml, oder du nutzt cfgeconomycore.xml, um eine separate Datei aus der Mod-Vorlage einzubinden. Letzteres ist update-sicherer.

Frage: Wo finde ich Item-Klassennamen?

In den Mod-Workshops, in types.xml selbst (alle Vanilla-Items), oder über Tools wie DayZ-Tools und Klassen-Listen-Generatoren. Mods liefern fast immer eine types.xml-Vorlage mit.

Frage: Was bewirkt lifetime = 0?

Sehr kurze Lebensdauer (effektiv: das Item despawnt fast sofort, sobald es nicht mehr in einem Container/Spielerinventar ist). Setze stattdessen lifetime = 60, wenn du Loot kurzlebig haben willst.

Frage: Wie weiß die CE, ob ein Item drinnen oder draußen spawnen soll?

Über den tag-Eintrag (floor für Boden, shelves für Regale) und den Loot-Punkt im Gebäude. Die Mapper haben pro Gebäudetyp Spawn-Punkte definiert, jedes Item hat passende Tags.

Frage: Wann startet die CE neu?

Bei jedem Server-Restart wird economy.xml ausgewertet und Items mit init=1 gespawnt. Während des Betriebs läuft die CE alle paar Minuten und gleicht Bestände gegen die Nominal-Werte ab.

Frage: Wie mache ich einen “kompletten Loot-Wipe” ohne neue Map?

Lösche den storage_1-Ordner im Mission-Verzeichnis. Beim nächsten Start wird Persistence neu generiert, alle Spielerlager und gebauten Strukturen sind weg.

Frage: Brechen Mods my types.xml?

Mods, die direkt in deine types.xml schreiben, ja — updaten sie sich, gehen deine Anpassungen verloren. Lade Mod-Items deshalb über cfgeconomycore.xml.

Frage: Was ist mit quantmin = -1?

Bedeutet “nicht anwendbar” — für Items ohne Mengenangabe (Waffen, Werkzeuge). Bei Konsumgütern wie Munition oder Wasserflaschen setzt du quantmin und quantmax als Prozentsatz (1-100).