Skip to content

Kapitel 9.5: Fahrzeug- & Dynamic-Event-Spawning ​


Zusammenfassung: Fahrzeuge und dynamische Events (Heliabstuerze, Konvois, Polizeiwagen) verwenden NICHT types.xml. Sie nutzen ein separates Drei-Dateien-System: events.xml definiert, was und wie viel spawnt, cfgeventspawns.xml definiert wo, und cfgeventgroups.xml definiert gruppierte Formationen. Dieses Kapitel behandelt alle drei Dateien mit realen Vanilla-Werten.


Inhaltsverzeichnis ​


Wie Fahrzeug-Spawning funktioniert ​

Fahrzeuge werden nicht in types.xml definiert. Wenn Sie eine Fahrzeugklasse zu types.xml hinzufuegen, wird sie nicht spawnen. Fahrzeuge verwenden eine dedizierte Drei-Dateien-Pipeline:

  1. events.xml -- Definiert jedes Fahrzeug-Event: wie viele auf der Karte existieren sollen (nominal), welche Varianten spawnen koennen (children), und Verhaltens-Flags wie Lebensdauer und Sicherheitsradius.

  2. cfgeventspawns.xml -- Definiert die physischen Weltpositionen, an denen Fahrzeug-Events Entitaeten platzieren koennen. Jeder Eventname wird einer Liste von <pos>-Eintraegen mit x-, z-Koordinaten und Winkel zugeordnet.

  3. cfgeventgroups.xml -- Definiert gruppierte Spawns, bei denen mehrere Objekte zusammen mit relativen Positionsoffsets spawnen (z.B. Zugwracks).

Die CE liest events.xml, waehlt ein Event aus, das gespawnt werden muss, sucht passende Positionen in cfgeventspawns.xml, waehlt zufaellig eine aus, die die saferadius- und distanceradius-Einschraenkungen erfuellt, und spawnt dann eine zufaellig ausgewaehlte Kind-Entitaet an dieser Position.

events.xml befindet sich in mpmissions/<Ihre_Mission>/db/, waehrend cfgeventspawns.xml und cfgeventgroups.xml im Missions-Stammverzeichnis liegen (mpmissions/<Ihre_Mission>/).


events.xml Fahrzeug-Eintraege ​

Jeder Vanilla-Fahrzeugtyp hat seinen eigenen Event-Eintrag. Hier sind alle mit realen Werten:

Zivil-Limousine ​

xml
<event name="VehicleCivilianSedan">
    <nominal>8</nominal>
    <min>5</min>
    <max>11</max>
    <lifetime>300</lifetime>
    <restock>0</restock>
    <saferadius>500</saferadius>
    <distanceradius>500</distanceradius>
    <cleanupradius>200</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="5" min="3" type="CivilianSedan"/>
        <child lootmax="0" lootmin="0" max="5" min="3" type="CivilianSedan_Black"/>
        <child lootmax="0" lootmin="0" max="5" min="3" type="CivilianSedan_Wine"/>
    </children>
</event>

Alle Vanilla-Fahrzeug-Events ​

Alle Fahrzeug-Events verwenden dieselbe Struktur wie die Limousine oben. Nur die Werte unterscheiden sich:

EventnameNominalMinMaxLifetimeKinder (Varianten)
VehicleCivilianSedan8511300CivilianSedan, _Black, _Wine
VehicleOffroadHatchback8511300OffroadHatchback, _Blue, _White
VehicleHatchback028511300Hatchback02-Varianten
VehicleSedan028511300Sedan02-Varianten
VehicleTruck018511300V3S-LKW-Varianten
VehicleOffroad02323300Gunter -- weniger spawnen
VehicleBoat221824600Boote -- hoechste Anzahl, laengere Lebensdauer

VehicleOffroad02 hat einen niedrigeren Nominal (3) als andere Landfahrzeuge (8). VehicleBoat hat sowohl den hoechsten Nominal (22) als auch eine laengere Lebensdauer (600 vs 300).


Fahrzeug-Event-Feldreferenz ​

Event-Level-Felder ​

FeldTypBeschreibung
namestringEvent-Bezeichner. Muss mit einem Eintrag in cfgeventspawns.xml uebereinstimmen, wenn position="fixed".
nominalintZielanzahl aktiver Instanzen dieses Events auf der Karte.
minintDie CE versucht nachzuspawnen, wenn die Anzahl darunter faellt.
maxintFeste Obergrenze. Die CE wird diese Anzahl niemals ueberschreiten.
lifetimeintSekunden zwischen Respawn-Pruefungen. Fuer Fahrzeuge ist dies NICHT die Persistenz-Lebensdauer des Fahrzeugs -- es ist das Intervall, in dem die CE neu bewertet, ob gespawnt oder aufgeraeumt werden soll.
restockintMinimale Sekunden zwischen Respawn-Versuchen. 0 = naechster Zyklus.
saferadiusintMindestentfernung (Meter) von jedem Spieler, damit das Event spawnt. Verhindert, dass Fahrzeuge vor Spielern erscheinen.
distanceradiusintMindestentfernung (Meter) zwischen zwei Instanzen desselben Events. Verhindert, dass zwei Limousinen nebeneinander spawnen.
cleanupradiusintWenn ein Spieler innerhalb dieser Entfernung (Meter) ist, wird die Event-Entitaet vor Aufraeumung geschuetzt.

Flags ​

FlagWerteBeschreibung
deletable0, 1Ob die CE diese Event-Entitaet loeschen kann. Fahrzeuge verwenden 0 (nicht von der CE loeschbar).
init_random0, 1Anfangspositionen beim ersten Spawn zufaellig verteilen. 0 = feste Positionen aus cfgeventspawns.xml verwenden.
remove_damaged0, 1Entitaet entfernen, wenn sie zerstoert wird. Kritisch fuer Fahrzeuge -- siehe Haeufige Fehler.

Weitere Felder ​

FeldWerteBeschreibung
positionfixed, playerfixed = Positionen aus cfgeventspawns.xml spawnen. player = relativ zu Spielerpositionen spawnen.
limitchild, mixed, customchild = min/max pro Kindtyp erzwungen. mixed = min/max ueber alle Kinder geteilt. custom = Engine-spezifisches Verhalten.
active0, 1Dieses Event aktivieren oder deaktivieren. 0 = das Event wird komplett uebersprungen.

Kind-Felder ​

AttributBeschreibung
typeKlassenname der zu spawnenden Entitaet.
minMindestinstanzen dieser Variante.
maxMaximalinstanzen dieser Variante.
lootminMindestanzahl von Loot-Items, die in/um die Entitaet gespawnt werden. 0 fuer Fahrzeuge (Teile kommen aus cfgspawnabletypes.xml).
lootmaxMaximale Loot-Items. Wird von Heliabstuerzen und dynamischen Events verwendet, nicht von Fahrzeugen.

cfgeventspawns.xml -- Spawn-Positionen ​

Diese Datei ordnet Eventnamen Weltkoordinaten zu. Jeder <event>-Block enthaelt eine Liste gueltiger Spawn-Positionen fuer diesen Eventtyp. Wenn die CE ein Fahrzeug spawnen muss, waehlt sie eine zufaellige Position aus dieser Liste, die die saferadius- und distanceradius-Einschraenkungen erfuellt.

xml
<event name="VehicleCivilianSedan">
    <pos x="4509.1" z="9321.5" a="172"/>
    <pos x="6283.7" z="2468.3" a="90"/>
    <pos x="11447.2" z="11203.8" a="45"/>
    <pos x="2961.4" z="5107.6" a="0"/>
    <!-- ... weitere Positionen ... -->
</event>

Jede <pos> hat drei Attribute:

AttributBeschreibung
xWelt-X-Koordinate (Ost-West-Position auf der Karte).
zWelt-Z-Koordinate (Nord-Sued-Position auf der Karte).
aWinkel in Grad (0-360). Die Richtung, in die das Fahrzeug beim Spawn blickt.

Wichtige Regeln:

  • Wenn ein Event keinen passenden <event>-Block in cfgeventspawns.xml hat, wird es nicht spawnen, unabhaengig von der events.xml-Konfiguration.
  • Sie benoetigen mindestens so viele <pos>-Eintraege wie Ihren nominal-Wert. Wenn Sie nominal=8 setzen, aber nur 3 Positionen haben, koennen nur 3 spawnen.
  • Positionen sollten auf Strassen oder ebenem Boden liegen. Eine Position in einem Gebaeude oder auf steilem Gelaende fuehrt dazu, dass das Fahrzeug vergraben oder umgekippt spawnt.
  • Der a-Wert (Winkel) bestimmt die Blickrichtung des Fahrzeugs. Richten Sie ihn an der Strassenrichtung aus fuer natuerlich aussehende Spawns.

Heliabsturz-Events ​

Helikopterabstuerze sind dynamische Events, die ein Wrack mit Militaer-Loot und umgebenden Infizierten spawnen. Sie verwenden das <secondary>-Tag, um umgebende Zombie-Spawns um die Absturzstelle zu definieren.

xml
<event name="StaticHeliCrash">
    <nominal>3</nominal>
    <min>0</min>
    <max>0</max>
    <lifetime>2100</lifetime>
    <restock>0</restock>
    <saferadius>1000</saferadius>
    <distanceradius>1000</distanceradius>
    <cleanupradius>1000</cleanupradius>
    <secondary>InfectedArmy</secondary>
    <flags deletable="1" init_random="0" remove_damaged="0"/>
    <position>fixed</position>
    <limit>child</limit>
    <active>1</active>
    <children>
        <child lootmax="15" lootmin="10" max="3" min="1" type="Wreck_UH1Y"/>
    </children>
</event>

Hauptunterschiede zu Fahrzeug-Events ​

  • <secondary>InfectedArmy</secondary> -- spawnt Militaerzombies um die Absturzstelle. Dieses Tag referenziert eine Infiziertengruppe, die die CE in der Naehe platziert.
  • lootmin="10" / lootmax="15" -- das Wrack spawnt mit 10-15 Dynamic-Event-Loot-Items. Dies sind Items mit deloot="1" in types.xml (Militaerausruestung, seltene Waffen).
  • lifetime=2100 -- der Absturz bleibt 35 Minuten bestehen, bevor die CE ihn aufraeumt und einen neuen anderswo spawnt.
  • saferadius=1000 -- Abstuerze erscheinen nie innerhalb von 1 km von einem Spieler.
  • remove_damaged=0 -- das Wrack ist per Definition bereits "beschaedigt", daher muss dies 0 sein, da es sonst sofort aufgeraeumt wuerde.

Militaerkonvoi ​

Militaerkonvois sind statische zerstoerte Fahrzeuggruppen, die mit Militaer-Loot und infizierten Wachen spawnen.

xml
<event name="StaticMilitaryConvoy">
    <nominal>5</nominal>
    <min>0</min>
    <max>0</max>
    <lifetime>1800</lifetime>
    <restock>0</restock>
    <saferadius>1000</saferadius>
    <distanceradius>1000</distanceradius>
    <cleanupradius>1000</cleanupradius>
    <secondary>InfectedArmy</secondary>
    <flags deletable="1" init_random="0" remove_damaged="0"/>
    <position>fixed</position>
    <limit>child</limit>
    <active>1</active>
    <children/>
</event>

Konvois funktionieren aehnlich wie Heliabstuerze: Das <secondary>-Tag spawnt InfectedArmy um die Stelle, und Loot-Items mit deloot="1" erscheinen an den Wracks. Anders als beim Heliabsturz hat das Konvoi-Event ein leeres <children/>-Element -- seine zerstoerten Fahrzeuge sind als Gruppe in cfgeventgroups.xml definiert und werden ueber Gruppenreferenzen in cfgeventspawns.xml platziert. Mit nominal=5 existieren bis zu 5 Konvoistellen gleichzeitig auf der Karte. Jeder bleibt 1800 Sekunden (30 Minuten), bevor er an einen neuen Ort wechselt.


Polizeiwagen ​

Polizeiwagen-Events spawnen zerstoerte Polizeifahrzeuge mit polizeiartigen Infizierten in der Naehe. Sie sind standardmaessig deaktiviert.

xml
<event name="StaticPoliceCar">
    <nominal>10</nominal>
    <min>0</min>
    <max>0</max>
    <lifetime>2500</lifetime>
    <restock>0</restock>
    <saferadius>500</saferadius>
    <distanceradius>500</distanceradius>
    <cleanupradius>200</cleanupradius>
    <secondary>InfectedPoliceHard</secondary>
    <flags deletable="1" init_random="0" remove_damaged="0"/>
    <position>fixed</position>
    <limit>child</limit>
    <active>0</active>
    <children>
        <child lootmax="5" lootmin="3" max="5" min="5" type="Land_Wreck_sed01_aban1_police"/>
        <child lootmax="5" lootmin="3" max="5" min="5" type="Land_Wreck_sed01_aban2_police"/>
    </children>
</event>

active=0 bedeutet, dass dieses Event standardmaessig deaktiviert ist -- aendern Sie es auf 1, um es zu aktivieren. Das <secondary>InfectedPoliceHard</secondary>-Tag spawnt Polizeizombies der schweren Variante (widerstandsfaehiger als normale Infizierte). Mit nominal=10 und saferadius=500 sind Polizeiwagen zahlreicher, aber weniger wertvoll als Heliabstuerze.


cfgeventgroups.xml -- Gruppierte Spawns ​

Diese Datei definiert Events, bei denen mehrere Objekte zusammen mit relativen Positionsoffsets spawnen. Die haeufigste Verwendung sind verlassene Zuege.

xml
<group name="Train_Abandoned_Cherno">
    <child type="StaticObj_Wreck_Train_742_Red_DE" deloot="0" lootmax="3" lootmin="1" x="0" z="0" a="78.123" y="1.9"/>
    <child type="StaticObj_Wreck_Train_Wagon_Tanker_DE" deloot="0" lootmax="3" lootmin="1" x="12.085" z="2.740" a="256.739" y="1.789"/>
    <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="34.546" z="8.424" a="255.837" y="1.32"/>
    <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="46.285" z="11.341" a="255.321" y="1.398"/>
</group>

Jede Gruppe wird mit einem <group name="...">-Element innerhalb des Datei-Stammelements <eventgroupdef> deklariert, und ihre <child>-Eintraege sind direkte Kinder von <group> (hier gibt es keinen <children>-Wrapper). Das erste Kind wird an der Position aus cfgeventspawns.xml platziert. Nachfolgende Kinder werden um ihre x-, z-, y-, a-Werte relativ zu diesem Ursprung versetzt.

Jedes <child> in einer Gruppe hat:

AttributBeschreibung
typeKlassenname des zu spawnenden Objekts.
xX-Offset in Metern vom Gruppenursprung.
zZ-Offset in Metern vom Gruppenursprung.
yY-Offset (vertikal) in Metern vom Gruppenursprung.
aWinkeloffset in Grad vom Gruppenursprung.
delootOb dynamischer Event-Loot in diesem Kind spawnen kann (0 oder 1).
lootminMindestanzahl von Loot-Items, die in diesem Kind gespawnt werden.
lootmaxMaximale Anzahl von Loot-Items, die in diesem Kind gespawnt werden.

Das Gruppen-Event selbst benoetigt weiterhin einen passenden Eintrag in events.xml, um Nominalwerte, Lebensdauer und Aktivstatus zu steuern.


cfgeconomycore.xml Fahrzeug-Root-Klasse ​

Damit die CE Fahrzeuge als verfolgbare Entitaeten erkennt, muessen sie eine Root-Klassen-Deklaration in cfgeconomycore.xml haben:

xml
<economycore>
    <classes>
        <rootclass name="CarScript" act="car"/>
        <rootclass name="BoatScript" act="car"/>
    </classes>
</economycore>
  • CarScript ist die Basisklasse fuer alle Landfahrzeuge in DayZ.
  • BoatScript ist die Basisklasse fuer alle Boote.
  • Das act="car"-Attribut teilt der CE mit, diese Entitaeten mit fahrzeugspezifischem Verhalten zu behandeln (Persistenz, eventbasiertes Spawning).

Ohne diese Root-Klassen-Eintraege wuerde die CE Fahrzeuginstanzen nicht verfolgen oder verwalten. Wenn Sie ein Mod-Fahrzeug hinzufuegen, das von einer anderen Basisklasse erbt, muessen Sie moeglicherweise dessen Root-Klasse hier hinzufuegen.


Haeufige Fehler ​

Dies sind die haeufigsten Fahrzeug-Spawn-Probleme, auf die Serveradministratoren stossen.

Fahrzeuge in types.xml eintragen ​

Problem: Sie fuegen CivilianSedan zu types.xml mit einem Nominal von 10 hinzu. Keine Limousinen spawnen.

Loesung: Entfernen Sie das Fahrzeug aus types.xml. Fuegen Sie das Fahrzeug-Event in events.xml hinzu oder bearbeiten Sie es mit den entsprechenden Kindern, und stellen Sie sicher, dass passende Spawn-Positionen in cfgeventspawns.xml existieren. Fahrzeuge verwenden das Eventsystem, nicht das Item-Spawn-System.

Keine passenden Spawn-Positionen in cfgeventspawns.xml ​

Problem: Sie erstellen ein neues Fahrzeug-Event in events.xml, aber das Fahrzeug erscheint nie.

Loesung: Fuegen Sie einen passenden <event name="IhrEventName">-Block in cfgeventspawns.xml mit genuegend <pos>-Eintraegen hinzu. Der Event-name in beiden Dateien muss exakt uebereinstimmen. Sie benoetigen mindestens so viele Positionen wie Ihren nominal-Wert.

remove_damaged=0 fuer fahrbare Fahrzeuge setzen ​

Problem: Sie setzen remove_damaged="0" auf ein Fahrzeug-Event. Mit der Zeit fuellt sich der Server mit zerstoerten Fahrzeugen, die nie despawnen, Spawn-Positionen blockieren und die Performance beeintraechtigen.

Loesung: Behalten Sie remove_damaged="1" fuer alle fahrbaren Fahrzeuge (Limousinen, LKWs, Schraeghecks, Boote). Dies stellt sicher, dass die CE ein zerstoertes Fahrzeug entfernt und ein frisches spawnt. Setzen Sie remove_damaged="0" nur fuer Wrack-Objekte (Heliabstuerze, Konvois), die konstruktionsbedingt bereits beschaedigt sind.

Vergessen, active=1 zu setzen ​

Problem: Sie konfigurieren ein Fahrzeug-Event, aber es spawnt nie.

Loesung: Pruefen Sie das <active>-Tag. Wenn es auf 0 gesetzt ist, ist das Event deaktiviert. Einige Vanilla-Events wie StaticPoliceCar werden mit active=0 ausgeliefert. Setzen Sie es auf 1, um das Spawning zu aktivieren.

Nicht genug Spawn-Positionen fuer den Nominalwert ​

Problem: Sie setzen nominal=15 fuer ein Fahrzeug-Event, aber nur 6 Positionen existieren in cfgeventspawns.xml. Nur 6 Fahrzeuge spawnen jemals.

Loesung: Fuegen Sie mehr <pos>-Eintraege hinzu. Als Faustregel sollten Sie mindestens 2-3x Ihren Nominalwert an Positionen haben, um der CE genuegend Optionen zu geben, die saferadius- und distanceradius-Einschraenkungen zu erfuellen.

Fahrzeug spawnt in Gebaeuden oder unterirdisch ​

Problem: Ein Fahrzeug spawnt in ein Gebaeude geclippt oder im Gelaende vergraben.

Loesung: Ueberpruefen Sie die <pos>-Koordinaten in cfgeventspawns.xml. Testen Sie Positionen im Spiel mit Admin-Teleport, bevor Sie sie zur Datei hinzufuegen. Positionen sollten auf ebenen Strassen oder offenem Gelaende liegen, und der Winkel (a) sollte zur Strassenrichtung ausgerichtet sein.

Released under CC BY-SA 4.0 | Code examples under MIT License