DayZ server, basic setup knowledge and more - GarageMan/Setting-up-a-DayZ-server GitHub Wiki

DayZ server, basic setup knowledge, and more

Basic roleout

There is mainly nothing to do to setup a Chernarus Plus server.

Nitrado, for example, provides all files needed preinstalled, and Nitrado keeps these up to date (which may trouble you, because some files might be overwritten when Bohemia Interactive (BI) launches updates for DayZ. (I ran in a lot of trouble with the 1.15 update - all my files have been overwritten :-()

Folder structure

dayzstandalone/
		addons
		appcache
		battleye
		bliss
		config  or  profiles
		docs
		dta
		keys
		logs
		mpmissions/
		 	  dayzOffline.chernarusplus/
						   db/
						   env/
			  dayzOffline.enoch/
				  	   db/
					   env/
		steamapps

/keys

That folder holds all bikeys needed to verify workshops to be loaded. Missing or old/wrong keys will lead to the workshop will not be loaded by the server.

/config

A lot of workshops have additional config files (xml or json), which will be stored in that folder, or in specific, workshops- or designer-related subfolders. Some workshop designers are not very good in setting up their c-files, so that you sometimes will find something like /config/config/ - that is, because the designer has configured a wrong path in his/here c-file ;-) That is no issue, but makes the folder structure a bit illegible.

The designer of a workshop describes the structure of the specifig xml or json file, mostly on their workshop page on Steam, or in a readme-file.

You will find additional log files in that folder, because the folder config is by default the folder for standard log files, such as the ADM files, the RPT files (start to shutdown), and the server.log (a sequential filled file - check the growing length of it over the time).

/mpmissions

The folder ´mpmissions´ holds all the so called mission file folders, for each map a specific folder. Preinstalled are /dayzOffline.chernarusplus and /dayzOffline.enoch.

Each of these mission folders is holding the following initial folders:

/db

Details about the containing files below per mission/map.

/env

Details about the containing files below per mission/map.

/storage_1

After the first start the folder /storage_1 will be created, which holds the game/status files (what is where, etc.). That is the folder to be deleted for a server wipe!

Preinstalled files

dayzsetting.xml

That files holds the basic configuration values. Nothing to talk about, nothing to change in that file.

<config version="1.0">
	<video noshadergen="1" screenwidth="1520" screenheight="892" posX="355" posY="97" ratio3D="1" vsync="0" fullscreen="0" gamma="0" contrast="0" brightness="0" texturefilter="2" maxaniso="16" texturedetail="0" modeldetail="0" shadow="3" shadowcascades="4" omnishadow="0" llevel="2" windowmode="1" fsaa="8" atoc="15" rvterrainshaders="3" stabilizecascades="1" />
	<render geometricdetail="2" postprocess="5" reflections="0" waterdetail="1" terraindetail="1" terrainsalpha="1" />
	<controls>
		<mousespeed horizontal="100" vertical="100" />
	</controls>
	<workbench>
		<launchbar>
			<executable path="DayZIntDX11.exe" parameters="-noPause -window -x=1280 -y=720" icon="Icons/myIcon.png" tooltip="Launch game" />
			<executable path="DataExporterApp_d.exe" parameters="" icon="" tooltip="Launch data exporter" />
		</launchbar>
	</workbench>
	<jobsystem globalqueue="4096" threadqueue="1024">
		<pc maxcores="2" reservedcores="1" />
		<ps4 threadcount="4" />
		<xb1 threadcount="4" />
	</jobsystem>
</config>

serverDZ.cfg

That file has to be adapted for your specific DayZ server. Most of the data will be added/changed by the server provider (Nitrado).

You will find much more information on https://community.bistudio.com/wiki/DayZ:Server_Configuration#Server_Configurations - I will only give you an overview, and lead you to the most important parameters to be configured by you.

hostname = "EXAMPLE NAME";				// Your server's name
password = "";						// Password to connect to the server
passwordAdmin = "";					// Password to become a server admin

enableWhitelist = 0;					// Enable/disable whitelist (value 0-1)

maxPlayers = 60;					// Maximum amount of players - mostly preset by the hoster

verifySignatures = 2;

forceSameBuild = 1;

disableVoN = 0;						// Enable/disable voice over network (value 0-1) - mostly preset by the hoster
vonCodecQuality = 20;					// Voice over network codec quality, the higher the better (values 0-30) - preset by the hoster

disable3rdPerson = 0;					// Toggles the 3rd person view for players (value 0-1)
disableCrosshair = 0;					// Toggles the cross-hair (value 0-1)

serverTime = "SystemTime";				// Initial in-game time of the server. 
							// "SystemTime" means the local time of the machine. 
							// Another possibility is to set the time to some value in "YYYY/MM/DD/HH/MM" format, 
							// e.g "2015/4/8/17/23".

serverTimeAcceleration = 1;				// Accelerated Time - The numerical value being a multiplier (0.1-64). 
							// Thus, in case it is set to 24, time would move 24 times faster than normal. 
							// An entire day would pass in one hour.

serverNightTimeAcceleration = 1;			// Accelerated Nigh Time - The numerical value being a multiplier (0.1-64) 
							// and also multiplied by serverTimeAcceleration value.
							// Thus, in case it is set to 4 and serverTimeAcceleration is set to 2, 
							// night time would move 8 times faster than normal.
							// An entire night would pass in 3 hours.

serverTimePersistent = 0;				// Persistent Time (value 0-1)// The actual server time is saved to storage, 
							//so when active, the next server start will use the saved time value.

guaranteedUpdates = 1;

loginQueueConcurrentPlayers = 5;			// The number of players concurrently processed during the login process. 
							// Should prevent massive performance drop during connection when a lot of people 
							// are connecting at the same time.
loginQueueMaxPlayers = 500;				// The maximum number of players that can wait in login queue

instanceId = 1;						// mostly preset by the hoster

storageAutoFix = 1;					// mostly preset by the hoster(value 0-1)


class Missions
{
	class DayZ
	{
		template = "dayzOffline.chernarusplus"; // Your mission files are located under ... That folder name has to be accurate!
	};
};

mpmission files

The root of the mission folder (e.g. /dayzOffline.chernarusplus) allways holds the same files and folders:

Read on https://community.bistudio.com/wiki/DayZ:Central_Economy_setup_for_custom_terrains for more detailed information. I will describe some of the files in that guide - check the table of contents below.

Server side and Client side mods/Workshops

There is a difference between client side mods, and server side mods. Some workshops only needs to be installed on and loaded by the server - not the client! Watch on Youtube.

One example is the workshop 'Survivor Missions'.

XML Basics

Allways check your xml files after making changes. Allways!!

The webpage DayZ Server Customizer , which is very good in my opinion, deals, among other things, with XML in relation to DayZ XML files.

A great Facebook group dedicated to XML on DayZ: DayZ Free XML Support Group

To validate changed XML files, always use the following page, for example: Validate XL files or https://jsonformatter.org/xml-formatter.

JSON Basics

To validate changed JSON files, always use the following page, for example: JSON Formatter & Validator.

Remember: JSON does not provide any comments (like //).

Error and issue handling

DayZ does not start in fullscreen

That is, obviously, a client issue, which can be solved in two ways:

  1. Press ALT-RETURN when in windowed mode.
  2. Change the settings in the client menu.

From my perspective the best way to solve that issue is changing the settings in the file DayZ.cfg located in folder Documents/DayZ:

language="English";
adapter=-1;
3D_Performance=31915;
Resolution_Bpp=32;
WinX=0;
WinY=0;
WindowWidth=2560;		<= Screen size width
WindowHeight=1440;		<= Screen size height
Windowed=0;			<= That should trigger the client to start in full screen.
MSAA=8;
PostFX=2;
VSync=1;
FXAO=4;
AToC=0;
AnisoFilter=2;
TerrainDetail=3;
FXAA=4;

Type does not exist. (Typo?)

When ever you read a message like the following in the RPT or server.log file, you have to do the following:

  1. Check the config.cpp in the pbo for the class name mentioned. Potentially, the name is written incorrect, or it does not exist!

  2. Remove the item from the specific types.xml file

  3. If the item exists in the config.cpp, and it is written corretly, then you may have to change the order for loading the types.xml files in the cfgeconomycore.xml file.

20:33:12 !!!  Type 'BNGP_SnowCamo_Multicam_GhillieSuit' will be ignored. (Type does not exist. (Typo?))

Unknown categoy: 'vehicleparts':

Root cause: Obviously, the category vehiclesparts in the files types.xml and mapgroupproto.xml are written differently, which is, of cause, wrong.

Solution: Exchange each and any vehicleparts with vehiclesparts in the file mapgroupproto.xml (38 pcs as of Jaunary 23, 2022)

Cars despawn after restart

Root cause: The time to Life in the file types.xml is too low. Set the value to 3,888,000, and the car will life (allmost) for ever (45 days). ;-)

	<type name="OffroadHatchback">
		<nominal>0</nominal>
		<lifetime>3</lifetime>			<!-- change that value to 3888000 -->
		<restock>1800</restock>
		<min>0</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"/>
	</type>

Namalsk hardcore, fences, gates, watchtowers, etc. are despawning very soon

That happens because the lifetime settings for these objects in the hardcore version of Namalsk are set to a few seconds only - base building is not in focus of the hardcore version!

Mitigate that by rising the value of the lifetime to something like 3,888,000 seconds, so the object will last "forever" (or, more specific, 45 days).

...	
	<type name="Fence">
		<lifetime>3888000</lifetime>
		<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0" /> 
	</type>
	<type name="TerritoryFlag">
		<lifetime>3888000</lifetime>
		<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0" />
	</type>
...
	<type name="Watchtower">
		<lifetime>3888000</lifetime>
		<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0" /> 
	</type>
...

Remember, that you may have to add nails, hammer, etc. to the hardcore's types.xml (just copy/paste from the regulare version, or from Chernarus).

General server settings in serverDZ.cfg and globals.xml (see below)

Server configuration file, parameters

This article deals with the configuration file which is used to configure various game server settings: BI Studio, Server Configuration

Server name

Change the name of your server in the file serverDZ.cfg:

hostname = "nitrado.net Gameserver - Dovecote @ Namalsk (hardcore)“;

Admin password

The admin password in the file serverDZ.cfg is in clean text!

passwordAdmin = "mY6a55w0r6;-)";

Server mission

In addition to Chernarus and Livonia/Enoch, there are Deer Isle, Namalsk, etc.

The corresponding folders must exist on the server (default: Chernarus and Livonia/Enoch; others must be downloaded from the Internet).

The setting is made in the file serverDZ.cfg (or with Nitrado via the GUI under "Configuration files").

...
class Missions
{
	class DayZ	{
		template="dayzOffline.enoch";
			// Vanilla mission: dayzOffline.chernarusplus
			// DLC mission: dayzOffline.enoch
	};
};
...

Server time acceleration

serverTimeAcceleration = 1;		// Accelerated Time - The numerical value being a multiplier (0.1-64). 
					// Thus, in case it is set to 24, time would move 24 times faster than normal. 
					// An entire day would pass in one hour.
serverNightTimeAcceleration = 1;	// Accelerated Nigh Time - The numerical value being a multiplier (0.1-64) 
					// and multiplied by serverTimeAcceleration value.
					// Thus, in case it is set to 4 and serverTimeAcceleration is set to 2, 
					// nighttime would move 8 times faster than normal.
					// An entire night would pass in 3 hours.

Check my article about the calculation of these two parameters. https://github.com/GarageMan/DayZ-Server-Time-Acceleration

If the night should run faster than the daylight time, so increase the parameter serverNightTimeAcceleration from 1 up.

As an example, the parameters for a split of 1:1 (2 hours day, 2 hours night - this is almost too low a ratio in winter):

serverTimeAcceleration = 6;
serverNightTimeAcceleration = 1;

Logon/logoff time

The times for login and logoff can be set in the globals.xml file (default: 15 seconds, set to 5 seconds in this example):

...
<var name="TimeLogin" type="0" value="5"/>
<var name="TimeLogout" type="0" value="5"/>
...

cfggameplay.json

documentation on BI studio

lightingConfig= 1: vanilla pitch black night, 2: vanilla bright night

A quick and dirty description on Youtube/Scalespeeder.

Using that file make some server configurations much easier.

The file cfggameplay.json can be located in the mission-folder below mpmissions

To activate the usage of cfggameplay.json you have to set enableCfgGameplayFile = 1 in serverDZ.cfg.

The values ​​for stamina, weather and so on can be defined here. Above all, however, JSON files can be integrated here, via which objects are spawned. That is a much better method for object spawning then the init.c method (refer to my Github for more information).

If using cfggameplay.json for object spawning, so my recommentation is to use a separat folder for these object files, like custom_json.





Link to the Object Spawner



Example from BI Studio:

```json { "Objects": [ { "name": "Land_Wall_Gate_FenR", "pos": [ 8406.501953125, 107.73682403564453, 12782.3388671875 ], "ypr": [ 0.0, 0.0, 0.0 ] }, { "name": "Land_Wall_Gate_FenR", "pos": [ 8422.501953125, 107.73682403564453, 12782.3388671875 ], "ypr": [ 0.0, 0.0, 0.0 ] } ] } ```

I use this for the builder items and objects that I use to design the Trader Zone and the Black Market. These objects could also be built in via TraderObject.txt, but this is then a function of the Mod Trader. If this mod is not used, you would have to look for another solution (e.g. init.c) anyway. I find this new function via cfggameplay.json to be the most convenient – ​​because you can decide which json files you would like to actually integrate and you can also omit one or the other json file for various occasions (also for test purposes).

Temperatures

You can adjust the temperatures on your server per month (min/max) in the cfggameplay.json, to.

	"WorldsData":
	{
		"lightingConfig": 222,
		"objectSpawnersArr": ["custom_spawn/Medical_Tents.json"],
		"environmentMinTemps": [-32, -27, -21, -14,  -7,  -4,  -2,   2,  -3,  -7, -15, -25],
		"environmentMaxTemps": [-12,  -8,  -3,   0,   2,   5,   7,  11,   8,   5,   2,  -8]
	},

types.xml

<type name="name_of_item_as_of_the_pbo">

		<nominal>number</nominal>			: How many items of that classname will spawn in MAXIMUM at any given time (laying around)
		<lifetime>time_in_sec</lifetime>		: Time to despawn if dropped
		<restock>time_in_sec</restock>			: Time to respawn an item after it has been picked up from a spawn point
		<min>number</min>				: Minimum amount of that item to be on the map in any given time BEFOR respawning starts!
		<quantmin>number</quantmin>			: The minimum quantity of a consumable within the item. Values: -1.0=empty, up to +100.0%=full.
		<quantmax>number</quantmax>			: The maximum quantity of a consumable within the item. Values: -1.0=empty, up to +100.0%=full.
								  - Used with weeapons: quantmin=30, quantmax=80 - the chance the gun will spawn in with a bullet loaded!
		<cost>number</cost>				: Priority to spawn in, importance of item to spawn in; Sets the spawn chance of an item, where 100 means an item will spawn in 100% of the time.
		<flags 
			count_in_cargo="boolean"		: counts items in cargo = exists in a car => will be counted and spawned in if less than min
			count_in_hoarder="boolean"		: counts items in hoarder = tents?
			count_in_map="boolean"			: counts items in map = somewhere on the map - allways 1 (true)
			count_in_player="boolean"		: counts items in player = in player's hands
			crafted="boolean"			: counts items in crafted = item must have been crafted, does not spawn in, 
								  nominal/min are allways zero!!!
			deloot="boolean"			: counts items in deloot = dynamic event loot, like the FAMAS spawning in by dynamic events 
								  - can be combined with  nominal and min other than 0!
		</flags>
		<category name="kind_of_the_item" />		: like weapons, food, clothes, etc.
		<usage name="Area_usage_of_the_item" />		: like Police, Industrial, Farms, Town, etc. - more than one "usage" line is possible!
		<tag name="A_tag_for_the_item" />		: like floor, shelves, etc.
		<value name="Tier_level" />			: The tier level - more than one "value" line is possible

cfgspawnabletypes.xml

	<damage min="0.01" max="0.35" />
...
	<cargo preset="ammomilitary" />
	<attachments chance="1.00">				: 100% chance to spawn with one or the other attachments
		<item name="attachment_01" chance="0.20" />	: 20% chance this item will be the chosen
		<item name="attachment_01" chance="0.20" />	: 20% chance this item will be the chosen
	</attachments>

If both items should be possible to be attached, not only one of them, so separate them:

	<attachments chance="0.20">				: 20% chance one of the items will spawn
		<item name="attachment_01" chance=1.00" />	: 100% chance this item will be the chosen
	</attachments>
	<attachments chance="0.20">				: 20% chance one of the items will spawn
		<item name="attachment_02" chance="1.00" />	: 100% chance this item will be the chosen
	</attachments>

Use <damage min="0.0" max="0.1" /> for pristine loot.

Item conditions

condition health
prestine 71 - 100
worn 41 - 70
damaged 21 - 40
badly damaged 1 - 20
ruined 0

Lighting

Environment light

That can be activeted/deactivated (recommended) in the file serverDZ.cfg:

lightingConfig = 1;		// 0 for bright, 1 for dark; 

Yes, use value 222 for dark and 223 for bright in your server config

If using the cfggameplay.json, you have to activate/deactivate the lighting in that file:

Personal light

disablePersonalLight = 1; // to get rid of the self-glow

If using the cfggameplay.json, you have to activate/deactivate personal light in that file:

Adjusting view distance and draw distance

The view or draw distance is configured in the (local) client, and on the server side. Which ever is the least one, „wins“.

DayZ server-side

Change values in the file serverDZ.cfg:

defaultVisibility = 2200;
defaultObjectViewDistance = 2200;

DayZ client side

Edit the parameters viewDistance and preferredObjectViewDistance in the file windowsusername_settings.DayZProfile in the folder documents/DayZ.

...
shadowZDistance=250;				==> just testing with 500 instead of 250 (original); looking to rise the value to about 750/800.
viewDistance=940.953;				==> set it to 2200
preferredObjectViewDistance=808.56128;		==> set it to 2200
...

messages.xml

Foreword

For me, the most important feature provided by the messages.xml is (was!) the "shutdown" (restart) feature. Unfortunately, this feature does not restart the server in all the times requested - from time to time, it only stops the server, without restarting it. Not a reliable feature... (But!), Recently, I found a video by TheGamingchef on YT, in which he demonstrates a great tool for DayZ server management: BEC, BattlEye-Extended-Controls.

TheGamingChef on Youtube

BEC on GitHub

The parameters in messages.xml

So, having said that, we come back to the messages.xml file. Check on Youtube, and see on BIstudio Community for more information.

You will find an example messages.xml file in the folder mpmissions/dayOfflince.enoch/db.

Onconnect: Displays a message as soon as a player joins.

Repeat: Repeats the message each x minutes

Countdown: Counts down to 0 minutes, till the message will be displayed

	90, 60, 45, 30, 20, 10, 5, 2, 1 minutes

Shutdown: Only in combination with countdown; Is countdown not set, so shutdown will be ignored!

Delay:

  • Delay in miuntes.

  • Can be used with onconnect.

  • If value = 0, the message will be displayed immediately.

Repeat: Message will be repeated each x minutes.

Messages must not have more than als 160 characters, and must not have more than 3 variables:

  • #name (Name des Servers)

  • #port (Port des Servers)

  • #tmin (Verbleibende Zeit in Minuten von countdown)

messages.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<messages>

	<message>
		<repeat>15</repeat>
		<text>You're playing on my server (#name). Thank you .)</text>
	</message>

	<!-- This is example message for automatic server termination -->
	<message>

		<!-- no delay -->
		<delay>0</delay>

		<!-- if the value is larger than 0, then flag Repeat is enabled -->
		<repeat>0</repeat>

		<!-- if the value is larger than 0, then flag Countdown is enabled,
			 countdown reaches zero in 10 hours --> 
		<deadline>600</deadline>

		<!-- disable On connect flag -->
		<onConnect>0</onConnect>

		<!-- enable Shutdown flag -->
		<shutdown>1</shutdown>

		<!-- message itself with placeholders -->
		<text>Hello, #name will shutdown in #tmin minutes.</text>

	</message>
</messages>

Player's spawn loadout (initial player equipment)

The file init.c can be used to set the player's spawn loadout. Check on TDcomm's Youtube, examples on GravityWolfNotAmused Github, Scalespeeder Github and Bealze Github.

That is the configuration I am using on my server:

...
	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
		player.RemoveAllItems();

// DC-branded equipment
		player.GetInventory().CreateInInventory("DC_Starter_BeanieHat");		// Namalsk: DC_Starter_Winter_BeanieHat
		player.GetInventory().CreateInInventory("DC_Starter_TShirt");			// Namalsk: DC_Starter_Winter_Hoodie
		player.GetInventory().CreateInInventory("DC_Starter_Jeans");			// Namalsk: DC_Starter_Winter_Jeans
		player.GetInventory().CreateInInventory("DC_Starter_Sneakers");			// Namalsk: DC_Starter_Winter_Sneakers
		player.GetInventory().CreateInInventory("DC_ImpCourierBag");
		player.GetInventory().CreateInInventory("DC_SodaCan_Pilsner");

		player.GetInventory().CreateInInventory("TunaCan_Opened");

		ItemBase knife = player.GetInventory().CreateInInventory("StoneKnife");
		ItemBase rags = player.GetInventory().CreateInInventory("Rag");
		ItemBase watch = player.GetInventory().CreateInInventory("tool_watch2");	// Namalsk, only
		ItemBase pda = player.GetInventory().CreateInInventory("ItemPDA");		// required: @GearPDA
			pda.GetInventory().CreateAttachment("Battery9V");

// Assign quickslots 0 to 3
		player.SetQuickBarEntityShortcut(knife, 0, true);
		player.SetQuickBarEntityShortcut(rags, 1, true);
		player.SetQuickBarEntityShortcut(watch, 2, true);
		player.SetQuickBarEntityShortcut(pda, 3, true);

		player.GetStatWater().Set( 900 );
		player.GetStatEnergy().Set( 1100 );
	}

...

globals.xml

Source: [Discord](https://d.docs.live.net/e78a9aefdc4e9639/Dokumente/DayZ/Day - Documentation COPY/Discord)

Variable Type Default Description
AnimalMaxCount Integer 200 Maximal limit of spawned animals (not ambient) across all zones in map
CleanupAvoidance Integer 100 (m) Distance from player required for item deletion
CleanupLifetimeDeadAnimal Integer 1200 (sec) Default lifetime for dead animals
CleanupLifetimeDeadInfected Integer 330 (sec) Default lifetime for dead infected
CleanupLifetimeDeadPlayer Integer 3600 (sec) Default lifetime for dead player
CleanupLifetimeDefault Integer 45 (sec) Default lifetime for entities with no specific economy setup, but damage >= 1.0 (ie. dead)
CleanupLifetimeLimit Integer 50 How many items can be deleted at once during standard cleanup
CleanupLifetimeRuined Integer 330 (sec) Default lifetime for ruined loot
FlagRefreshFrequency Integer 432000 (sec) Items lifetime will be refreshed with this frequency.
FlagRefreshMaxDuration Integer 3456000 (sec) How long the flag will be refreshing items.
IdleModeCountdown Integer 60 (sec) Activate economy idle mode on empty server after given time
IdleModeStartup Integer 1 Enable economy idle mode on server startup
InitialSpawn Integer 100 (%) How much loot will be spawned on server initial start (without storage).
LootProxyPlacement Integer 1 Allow dispatch containers to receive the loot.
RespawnAttempt Integer 2 How many attempts are performed during single item respawn
RespawnLimit Integer 20 How many items of one type can be spawned at once
RespawnTypes Integer 12 How many different types can be respawned at once
RestartSpawn Integer 0 (%) How much loot should be respawned during restart to nominal
SpawnInitial Integer 1200 How many initial test are allowed for item spawn
TimeHopping Integer 60 (sec) penalty time for server hoppers
TimeLogin Integer 15 (sec) default login time
TimeLogout Integer 15 (sec) default logout time
TimePenalty Integer 20 (sec) penalty time for player that is still in play session
ZombieMaxCount Integer 1000 Maximal limit of spawned zombies across all zones in map
ZoneSpawnDist Integer 300 (m) Distance to invoke infected spawn in nearby zone (dynamic infected)
WorldWetTempUpdate Integer 1 Allow update of wetness and temperature values on all items in the world.
FoodDecay Integer 1 Allow decay on food (requires WorldWetTempUpdate set to 1).

tag, value, category, usage name

parameter example description
tag <tag name="shelves"/> Loot location inside a group; 1 value per item (shelves, floor)
usage <usage name="Town"/> Attached to or cargo of which object type the item should spawn in. (Coast, Farm, etc.)
value <value name="Tier3"/> The tier-zone, in which the item can spawn in.

category name

Namalsk Chernarus Livonia
bags
books books
clothes clothes clothes
containers containers containers
explosives explosives explosives
food food food
lore
pistols
rifles
tools  tools tools
vehiclesparts vehiclesparts vehiclesparts
weapons weapons weapons
lore
lantia

usage name

Namalsk is using tag name instead of usage name

Chernarus Livonia Namalsk
Military Military
Police Police
Medic Medic
Firefighter Firefighter
Industrial Industrial
Farm Farm
Coast Coast
Town Town
Village Village
Hunting Hunting
Office Office
School School
Prison Prison
SeasonalEvent SeasonalEvent
ContaminatedArea ContaminatedArea
Lunapark
Special
Lunapark
Underground
TownVillage TownVillage
TownVillageOfficeSchool TownVillageOfficeSchool

tag name

Chernarus Livonia Namalsk
floor floor military
shelves shelves civilian
ground ground hunting
police
industrial
farm
medical
firefighter
fishing
seaice
seasonalevent

value name

Do not use value name on Namalsk, but user name!

Chernarus Livonia Namalsk
Tier1 Tier1 Tier1
Tier2 Tier2 Tier2
Tier3 Tier3 Tier3
Tier4 Tier4
Tier5
Tier6
Tier7
Unique Unique

user name

Chernarus Livonia Namalsk
Tier1
Tier2
Tier3
Tier4
Tier5
Tier6
Tier7
Tier12 Tier12 Tier12
Tier23 Tier23 Tier23
Tier34 Tier34
Tier45
Tier56
Tier67
Tier123 Tier123 Tier123
Tier234 Tier234
Tier345
Tier456
Tier1234 Tier1243

containers

Chernarus Livonia Namalsk
loot loot Around
lootFactory lootFactory AroundAndOn
lootFloor lootFloor Backpack
lootgalery lootgalery Bags
lootGround lootGround BottomFloor
lootroom lootroom BottomStorage
lootShelves lootshelves FireExt
lootweapons lootweapons FirstFloor
lootTools Floor
lootFood FloorCivilian
FloorCivWeapons
FloorIndustrial
FloorNShelves
FullMilitary
Ground
HeliportLeftovers
Inside
InsideAndOn
InsideMilitary
InsideMix
lootFloor
lootshelves
MilitaryRifles
MixedMilitary
Outside
Platform
Rifles
RiflesPistols
Roof
SecondFloor
SniperPost
Storage
StorageArmory
StorageLab
StorageMed
StorageMil
ThirdFloor
Tools
UnderRoof
UpperFloors
UpperStorage
Weapons

Loot Economy

helpthedeadwalk released an articel on reddit in February 2023, which describes the parameters for the loot economy:

how does the Central Loot Economy work?

Loot spawns based on a number of attributes, but in general there is min/max/location. The server will spawn up to max, queue up what it can't spawn (due to lack of appropriate open locations) and will respawn when min is reached. Min can be reached by a player looting an item or having its lifetime expire. There are other attributes as well, but that's the TLDR.

Loot items have the following attributes:

attribute description
LIFETIME (seconds) time until despawn. Reset on last interaction or while in a container.
RESTOCK (seconds) time until an item is placed into the spawn queue. This can be used to prevent the "loot waves" of similar items, but is hardly used.
NOMINAL(MAX) maximum number of a particular item that the server will allow spawned into the world at once.
MIN minimum number os a particular item that server will allow until respawn starts. items are respawned up to NOMIMAL and/or queued RESTOCK seconds apart.
QUANTMIN/MAX percent range that a container may be filled on spawn. Use for items like water bottles, canteens, mags, pills, etc.
VALUE Tier 1,2,3,4 & Unique (any or all). Indicates which zone to spawn. Zones are specific areas of the map. Chernarus has 4 tiers, while Livonia has 3.
Chernarus Loot Tier Map and Livonia Loot Tier Map. Unique Map Areas
USAGE Type of structure loot will spawn in or on (Military, Police, Farm, Village, Town, Hunting, School, Industrial, Medic, Firefighter, Prison, Coast). Location definitions
FLAGS various other attributes.
IN_CARGO when determining MAX, count items in cargo (vehicle inventory)
IN_HOARDER when determining MAX, count items in storage (tents, barrels, crates, chests as well as buried stashes). This is the attribute that makes items truly RARE since above ground storage items last for 45 days without interaction and buried stashes last 14 days without interaction.
IN_MAP when determining MAX, count items on the map. Always used.
IN_PLAYER when determining MAX, count items in a players inventory, but ONLY WHILE A PLAYER IS LOGGED IN.
DELOOT refers to items that can only be found at a Dynamic Events
Dynamic Events generally spawn vehicle and wrecks of a certain type, which then determines the type of loot (PoliceConvoy/Police, HeliCrash/Military, MilitaryConvoy/Military, Train/Military+Industrial)
CRAFTED is an item that can only be crafted.

Another very good site to lookup for more information about the loot economy is https://dayz.fandom.com/wiki/Loot#Conditions.

Deleting user from the server's database

If a user is crashing the server while logging in, or a user has to be removed for other reasons, the following steps should be taken to remove the player from the server's database:

  1. Stop the server! Do not modify the database while the server is running!
  2. Download and install DB Browser for SQLite
  3. Run SQLite
  1. Download the database players.db file from your server (path is /mpmissions/server.name/storage_1):
  1. Select Open file in SQLite:
  1. and select the file player.db:
  1. That should result in something like:
  1. In SQLite go to the tab "Browse Data":
  1. Select Players:
  1. Search for the player ID, which you can find either using CFTools:

or open one of the ADM-files in the servers congig folder

  1. Copy&Paste the ID into the fiter
  1. Select the UID and click the delete record icon in the icon rib:
  1. Save the change by clicking Write Changes
  1. Upload the changed database file to your server.

  2. Restart your server. The player will start as a fresh spawn ;-)

Server wipe

  1. Stop your server.

  2. Navigate to mpmissions -> your currently running mission

  3. Delete the folder /storage_XXXXX where XXXXX is your server ID (Server ID is found at the end of your server's gamepanel URL)

  4. Restart the server

Increase Zombie spawn

db/events.xml If an event is triggerd, then the objects children will spawn in.

Conditions are:

<nominal> The Spawner tries 50 to activate 50 events.

<min/max>: A minimum of 25 and a maximum of 100 events should take place.

Children min, max The exent should spawn in between 0 and 80 Zombies of the given type.

<lifetime> Time in seconds after the spawn the item will remain on the map, IF it is outside of the cleanradius

<restock> If set to 0, then CE tries to spawn in mass; if set to a positive value (seconds), then this is the time before ONE item will be spawned in again.

<saferadius> Necessary distance (in meter) between player and spawn point to trigger the spawn in.

<distanceradius> Distance (in meter) between items of simular type. For example, Zombie spawn will not work in towns, if the distance is below 50m!

<cleanupradius> Zombie will despawn after lifetime, if player left that radius.

db/globals.xml ZombieMaxCount defines the maximum number of zombies on the server.

env/zombie_teritories.xml Controlls the number of zombie events, as soon as the disctance to an event coordinate fall bewlo the radius. The number of events is between dmin and dmax.

mapgrouppos.xml

In order to spawn loot in buildings that are placed on the map via cfggameplay.json or the DayZ Editor Loader, the respective building (object) must be entered into the mapgrouppos.xml are listed.

Example: A barracks should be on the coast of Namalsk

Place and align the barracks according to your desire with the DayZ Editor. Export the data as JSON, save it in the folder custom_JSON and reference it in cfggameplay.json.

Make sure that the alignment in the JSON and XML files is arranged differently:

  1. JSON-file: Y P R, plus the a - You have to calculate the a-value!
  2. XML-file: R P Y

Scalespeeder offers a small Excel tool on his Github- or you can export the data directly to the DayZ Editor as a mapgrouppos file!













**Copy the JSON-file to your server:**

image

Namalsk_Barrack_Coast_North.json

{
    "Objects": [
        {
            "name": "Land_Mil_Barracks2",	<== Dieses Objekt sollte Loot spawnen
            "pos": [
                8516.037109375,
                20.774145126342775,
                11092.6083984375
            ],
            "ypr": [
                44.99996566772461,		<== Y(aw) = Rotation
                -0.0,				<== P(itch) = front/back
                -0.0				<== R(ole) = left/right
            ]
        },
        {
            "name": "bldr_Platform1_Stairs_20",	<== Dieses Objekt soll kein Loot spawnen (möglich wäre es)
            "pos": [
                8520.669921875,
                18.209999084472658,
                11085.5
            ],
            "ypr": [
                45.0,
                0.0,
                0.0
            ]
        }
    ]
}

**Add the link to the cfggameplay.json file:

	"WorldsData":
	{
		"lightingConfig": 222,
		"objectSpawnersArr": ["custom_JSON/Namalsk_Barrack_Coast_North.json"]
	},

The data of the xml file, which as been exported from the xml file created by the DayZ Editor has to be added to the mapgroupspos.xml file:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<map>
	<group name="Land_Mil_Barracks2" pos="8516.037109 20.774145 11092.608398" rpy="-0.000000 -0.000000 44.999966" a="45"/>
	<group name="bldr_Platform1_Stairs_20" pos="8520.669922 18.209999 11085.500000" rpy="0.000000 0.000000 45.000000" a="45"/>
...
</map>

mapgroupprotp.xml

Create additional relative loot spawn positions to specific object (like the Resident Evil house) by following Josie Garfunkle’s tutorial on Youtube.

https://replit.com/@DonSibley/DayZLootSpawnCalculator

He offers a nice tiny tool on his Dicord, which calculates the relative parameters.

cfgrandompresets.xml

You can configure items like backpacks, weapons, etc. to spawn with attachments or containing items:

	<!-- example lines cfgspawnabletypes.xml -->
	<type name="Loftd_carabinbelt" >
		<attachments chance="0.25" >
			<item name="Loftd_carabin" chance="1.00" />
			<attachments preset="addgloves" />
		</attachments>
	</type>

Repeatable attachments or items can be configured as preset in the cfgrandompresets.xml

	<!-- example for cfgramdompresets.xml -->
	<attachments chance="0.25" name="addgloves" >
		<item name="WorkingGloves_Beige" chance="0.05" />
		<item name="WorkingGloves_Black" chance="0.05" />
		<item name="WorkingGloves_Brown" chance="0.05" />
		<item name="WorkingGloves_Yellow" chance="0.05" />
		<item name="TacticalGloves_Beige" chance="0.05" />
		<item name="TacticalGloves_Black" chance="0.05" />
		<item name="TacticalGloves_Green" chance="0.05" />
		<item name="OMNOGloves_Gray" chance="0.05" />
		<item name="OMNOGloves_Brown" chance="0.05" />
		<item name="Loftd_militarygloves" chance="0.05" />
		<item name="Loftd_militarysetgloves" chance="0.05" />
		<item name="Loftd_leathergloves" chance="0.05" />
		<item name="Loftd_CHRSAT_gloves" chance="0.05" />
		<item name="MSFC_Gloves_MulticamSnow" chance="0.05" />
		<item name="MSFC_NBC_Gloves_MulticamSnow" chance="0.05" />
		<item name="Fingerless_Gloves" chance="0.05" />
		<item name="Fingerless_Gloves_Brown" chance="0.05" />
		<item name="Fingerless_Gloves_Wool" chance="0.05" />
		<item name="Fingerless_Gloves_Wool_Grey" chance="0.05" />
		<item name="Fingerless_Gloves_Wool_Black" chance="0.05" />
	</attachments>

The sum of chances must be 100% - you can calculate the wighted chance in precent:

DayZ - cfgrandomspawnables calculation weighted loot chance.xlsx

An other example is the tool belt as part of one of my favoite workshops LoftDModGR:

	<type name="Loftd_toolbelt" >
		<attachments preset="addaknife" />
		<attachments chance="0.25" >
			<item name="Loftd_Militarycompass" chance="1.00" />
		</attachments>		
		<attachments chance="0.25" >
			<item name="Loftd_canteenpouch_black" chance="0.34" >
				<attachments chance="0.25" >
					<item name="dzn_Canteen" chance="1.00" />
				</attachments>
			</item>
			<item name="Loftd_canteenpouch_blackw" chance="0.33" >
				<attachments chance="0.25" >
					<item name="dzn_Canteen" chance="1.00" />
				</attachments>
			</item>
			<item name="Loftd_canteenpouch_green" chance="0.33" >
				<attachments chance="0.25" >
					<item name="dzn_Canteen" chance="1.00" />
				</attachments>
			</item>
		</attachments>
		<attachments chance="0.25" >
			<item name="Hammer" chance="1.00" />
		</attachments>
		<attachments chance="0.25" >
			<item name="Rope" chance="1.00" />
		</attachments>
		<attachments chance="0.25" >
			<item name="Lockpick" chance="1.00" />
		</attachments>	
		<attachments chance="0.25" >
			<item name="Wrench" chance="1.00" />
		</attachments>	
		<attachments chance="0.25" >
			<item name="HandSaw" chance="1.00" />
		</attachments>	
		<attachments chance="0.25" >
			<item name="HuntingKnife" chance="1.00" />
		</attachments>	
		<attachments chance="0.25" >
			<item name="Crowbar" chance="1.00" />
		</attachments>	
		<attachments chance="0.25" >
			<item name="EpoxyPutty" chance="1.00" />
		</attachments>
		<attachments chance="0.25" >
			<item name="Pen_Black" chance="0.25" />
			<item name="Pen_Blue" chance="0.25" />
			<item name="Pen_Green" chance="0.25" />
			<item name="Pen_Red" chance="0.25" />
		</attachments>	
		<attachments chance="0.25" >
			<item name="Plier" chance="0.40" />
			<item name="Pliers_Yellow" chance="0.30" />			<!-- CJ187 More Tools -->
			<item name="Pliers_Red" chance="0.30" />			<!-- CJ187 More Tools -->
		</attachments>
		<attachments chance="0.25" >
			<item name="Screwdriver" chance="0.60" />
			<item name="Screwdriver_2" chance="0.40" />			<!-- CJ187 More Tools -->
		</attachments>	
	</type>

cfgeffectedareas.json

Important It is possible to spawn in objects using that JSON-file, which are consistant, but the orientation of the objects cannot be defined!

Example: Gaspump

{
	„Areas“:[
		{
			„AreaName“:“Green_MNT“,
			„Type“:“Land_FuelStation_Feed“,
			„Data“:{
				„Pos“:[ 3690.978027, 0, 5995.591797]
			}
		}

Alternativally, the traderconfig.txt of Dr. Jones can be used - that offers the posibility to configure the orientation of each object.

An other way it to use the DayZ Editor to create a JSON file. Copy/paste that file into the folder /custome_json.Install the DayZ Editor Loader plus the required Dabs Framework.

Check that video on Youtube about how to implement working gas pumps.

Language adaption for your workshops

https://community.bistudio.com/wiki/Stringtable.csv

Although the engine uses other files with the extension CSV, the file for missions, addons, and campaigns is stringtable.csv and must be located in the primary folder of the mission/addon/campaign.

In point of fact, the naming convention inside a csv is such that the first three letters of any variable (more later) must begin with STR, and referenced in mission.sqm, description.ext or anywhere else as $STRsomething.

The characters STR tell the engine to look in stringtable.csv as opposed to use the literal string value.

	displayName = "#pda_item_name";
	descriptionShort = "#pda_item_desc";
	title = "#syb_homebook_name";

language.csv

Language,  English,Turkish,French
STR_BROKEN,Broken, Bozuk,  Merde
STR_GOOD,  Good,   İyi,    
STR_BAD,   Bad,    Kotu,   Merde, Encore
STR_FIXED, Fixed,  Sabit,  "Merde, Encore"
STR_ONE,   One,    ,    Une

Server backup

My recommendation is to make local backups of all your server configuration files. Nitrado make backup, but these are not based on single files, but on volumes. So, a restore will be possible only for the whole server!

I make backups of the following folders at least once a week:

  1. /mpmissions/Namalsk
  2. /config

Seasonal events

Xmass

Zur Bereitstellung auf dem Server müssen nur zwei Events (ein dynamischer und ein statischer) aktiviert werden. Zusätzlich können die Spawn Events angepasst werden, also die Anzahl der Weihnachtsbäume mit Geschenkpaketen und die Häufigkeit der Santa Claus-Crashes.

Auf Chernarus und Livonia/Enoch ist dies ohne weiteres möglich, da alle Vorbereitungen bereits getroffen wurden:

<!-- types.xml -->
	
	<type name="ChristmasTree_Green">		<!-- Watch out: This is the GREEN tree, not the normal one, which is brownish -->
		<nominal>0</nominal>
		<lifetime>3</lifetime>
		<restock>0</restock>
		<min>0</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"/>
	</type>

...

	<type name="Wreck_SantasSleigh">
		<nominal>0</nominal>
		<lifetime>3</lifetime>
		<restock>0</restock>
		<min>0</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"/>
	</type>

...

<!-- (spawning in the giftboxes) -->

	<type name="GiftBox_Large_1">
		<nominal>15</nominal>
		<lifetime>7200</lifetime>
		<restock>0</restock>
		<min>10</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="containers"/>
		<tag name="floor"/>
		<tag name="shelves"/>
		<usage name="Town"/>
		<usage name="Village"/>
		<usage name="SeasonalEvent"/>
	</type>
<!-- events.xml -->
<!-- StaticSantaCrash (dynamischer Event) -->

	<event name="StaticSantaCrash">
		<nominal>8</nominal>
		<min>8</min>
		<max>8</max>
		<lifetime>2100</lifetime>
		<restock>0</restock>
		<saferadius>1000</saferadius>
		<distanceradius>1000</distanceradius>
		<cleanupradius>1000</cleanupradius>
		<secondary>InfectedSanta</secondary>
		<flags deletable="1" init_random="0" remove_damaged="0"/>
		<position>fixed</position>
		<limit>child</limit>
		<active>1</active>							<!-- here, the event will be activated by setting avtive=1 -->
		<children>
			<child lootmax="15" lootmin="15" max="2" min="1" type="Wreck_SantasSleigh"/>
		</children>
	</event>

...

CHECK ON Discord

<!-- StaticChristmasTree (statischer Event) -->

	<event name="StaticChristmasTree">
		<nominal>13</nominal>
		<min>0</min>
		<max>0</max>
		<lifetime>86400</lifetime>
		<restock>0</restock>
		<saferadius>100</saferadius>
		<distanceradius>5</distanceradius>
		<cleanupradius>2500</cleanupradius>
		<flags deletable="0" init_random="0" remove_damaged="1"/>
		<position>uniform</position>
		<limit>child</limit>
		<active>1</active>							<!-- here, the event will be activated by setting avtive=1 -->
		<children>
			<child lootmax="0" lootmin="0" max="13" min="6" type="ChristmasTree_Green"/>
		</children>
	</event>
⚠️ **GitHub.com Fallback** ⚠️