Skip to content

CrimsonZamboniDeathmatch Setup Guide

Installation Instructions

  1. Install the mod from the Steam workshop as you normally would. Game Server Providers usually provide a UI for installing mods from the workshop. Use SteamCMD if you don't have a GSP.
  2. Configure your server's command line to load the mod as a server-side mod, using the -servermod= option. This is important in order to prevent clients from needing to install the mod! DO NOT add the mod to the -mod= option.
  3. Install the deathmatch mission files. Compressed mission files are provided in the mod's Extras folder. Extract the correct mission ZIP file into a corresponding deathmatch.<mapname> folder inside your server's mpmissions folder.
  4. Edit the DayZ server configuration file (typically serverDZ.cfg but configurable with the ‑config command line option) to load your desired deathmatch mission. For example:
    class Missions
    {
        class DayZ
        {
            template="deathmatch.enoch";
        };
    };
    

The mod ships with missions for Chernarus+, Livonia (a.k.a. Enoch), Namalsk, Deer Isle, Esseker, TakistanPlus, Banov, and Valning. Support for other maps may be added in the future.

Info

Please use the #deathmatch channel on my Discord to report bugs, request features, and ask questions. I do not respond to direct messages.

Players normally do not spawn with light sources or night vision, so setting the server time is recommended to avoid frustrating players with darkness. For example:

serverTime="2020/4/1/08/00";
serverTimeAcceleration=0;
serverTimePersistent=0;

Player characters are intended to be randomized, so disabling the respawn dialog for selecting a custom character is also recommended to avoid confusing players and to make respawning faster:

disableRespawnDialog=1;

Optional Server Settings

Optional deathmatch settings can be configured by creating a JSON file, named settings.json in a directory called deathmatch under your server's profile directory. For example: profile\deathmatch\settings.json

Note that it is only necessary to specify the settings whose defaults you want to override.

Downloadable example file: settings.json (contains all default settings)

Round Duration

The duration, in minutes, of each round can be changed by including a roundMinutes setting in the settings.json file. For example, the following changes the duration to 45 minutes:

{
  "roundMinutes": 45
}

The default is 20 minutes.

Maximum Rounds

The server can be configured to automatically terminate after a desired number of rounds using the maxRounds setting. By default, the server will never automatically terminate based on the number of rounds completed. To stop after every 4 rounds:

{
  "maxRounds": 4
}

This setting is intended to be used in conjunction with a script that automatically restarts the server after it exits. Game Server Providers usually handle this for you but self-hosting may require a batch file or PowerShell script.

Maximum Uptime

The server can be configured to automatically terminate after it has been running for a specified number of hours using the maxUptimeHours setting. By default, the server will never automatically terminate based on uptime. To stop after 8 hours of uptime:

{
  "maxUptimeHours": 8
}

Like the Maximum Rounds setting, this setting is intended to be used in conjunction with a script that automatically restarts the server after it exits.

Arena Rotation

By default, the server will randomly choose an arena at the beginning of each round. A specific arena order can be forced by changing the arenaRotation setting. For example:

{
  "arenaRotation": [
    "NovySobor",
    "StarySobor",
    "Vybor",
    "StarySobor",
    "PavlovoMilitary"
  ]
}

Note that arena names can be repeated within the rotation. An empty arenaRotation array will result in the default behavior of picking arenas randomly.

Exclude Arenas

Sometimes server admins may want to exclude certain arenas from the random arena rotation. This can be accomplished by adding the arena name to the excludeArenas array. For example:

{
  "excludeArenas": [
    "Kamyshovo",
    "PavlovoMilitary"
  ]
}

Note that excludeArenas only excludes the arenas when the arena rotation is random. It does not prevent the arenas from being chosen when a fixed rotation is configured using the arenaRotation setting, nor does it prevent the arena from being chosen when a special event specifies it as a forced arena.

This setting may be useful for configuring specific arenas to be used only in special events.

Infected Spawning

Infected can be configured to spawn as a percentage chance at the beginning of each round using the "infectedChance" setting. By default, infected have a 0% chance of spawning. To give infected a 50% chance of spawning at the beginning of each round:

{
  "infectedChance": 50
}

Servers can be configured to override the infectedChance setting to force infected to spawn when the number of players on the server is below the forceInfectedPlayerLimit setting. By default, the forceInfectedPlayerLimit is 0, meaning infectedChance controls whether infected spawn, regardless of how many players are on the server. To force the server to spawn infected whenever the server has less than 2 players:

{
  "forceInfectedPlayerLimit": 2
}

The number of infected spawned per player can also be customized using the infectedPlayerFactor setting. By default, 5 infected are spawned for each player. For example, to spawn 10 infected per player:

{
  "infectedPlayerFactor": 10
}

The minimum and maximum number of infected to spawn is also configurable. The defaults are 25 and 50, respectively. For example:

{
  "minimumInfected": 10,
  "maximumInfected": 80
}

Note that the minimum and maximum infected counts will override the infected player factor. For example, if maximumInfected is 10, infectedPlayerFactor is 5, and there are 20 players on the server, no more than 10 infected will spawn.

Also note that if infectedChance is 0, which is the default value, then infected will never spawn, regardless of how the other settings are configured.

Auto-Respawn

By default, players must respawn manually after they are killed. To enable an experimental auto-respawn feature, change the autoRespawn setting to true.

{
  "autoRespawn": true
}

Some players have reported issues when auto-respawn is enabled.

Save Leaderboards

To enable leaderboards to be written to files at the end of each round, set the saveLeaderboards setting to true. By default, leaderboards are not saved. When enabled, the leaderboards will be written to files in the $profile:deathmatch/scores directory.

{
  "saveLeaderboards": true
}

Disable Walls

By default, deathmatch arenas are enclosed in walls to prevent players from going out of bounds, since going out of bounds causes health loss. Walls can be disabled globally by setting the disableWalls setting to true.

{
  "disableWalls": true
}

See Arena Customization Guide: Disable Walls and Mission Customization Guide: Walls for a way to disable walls on individual arenas.

Events

Events are special game rounds where players spawn with weapons and clothes that are different from regular rounds. There are currently six different types of built-in events: Cowboy Rounds, Bambi Rounds, Hotshot Rounds, Toxic Rounds, Halloween Rounds, and Medieval Rounds. In Cowboy Rounds (cowboy), players spawn with revolvers, repeaters, and cowboy attire. In Bambi Rounds (bambi), players spawn with new-spawn clothes and pistols. In Halloween Rounds (halloween), players are given blades and SMGs with a limited amount of ammo. Hotshot Rounds (hotshot) are, conceptually, the opposite of Bambi Rounds, as players spawn with high-end weapons and gear. In Toxic Rounds (toxic), the arena contains toxic gas and players with NBC gear. In Medieval Rounds (medieval), players spawn in chain mail and are given crossbows and swords or maces.

By default, events are disabled but can be enabled by setting a floating-point chance between 0.0 and 1.0. For example, to give events a 25% chance of happening:

{
  "events": {
    "chance": 0.25
  }
}

In addition to setting a non-zero events chance, it is necessary to specify at least one event type with a non-zero chance. Types are specified as an array of objects with names, chances, and optional duration values. For example, to make events Cowboy Rounds 50% of the time, Bambi Rounds 30% of the time, and Hotshot Rounds 20% of the time:

{
  "events": {
    "chance": 0.25,
    "types": [
      {
        "name": "cowboy",
        "chance": 0.5
      },
      {
        "name": "bambi",
        "chance": 0.3
      },
      {
        "name": "hotshot",
        "chance": 0.2
      }
    ]
  }
}

The name must be either one of the built-in special round types (i.e. cowboy, bambi, hotshot, toxic, halloween, or medieval) or the name of one of the custom events defined in the events.json file, as documented in the Custom Events section.

Event type chances should add up to 1.0.

By default, special event rounds have the same duration as regular rounds, as determined by the roundMinutes setting. Each event type can be given its own separate duration, if desired. For example, to make cowboy rounds last for 22 minutes:

{
  "events": {
    "chance": 0.25,
    "types": [
      {
        "name": "cowboy",
        "chance": 1.0,
        "roundMinutes": 22
      }
    ]
  }
}

By default, special event rounds will have their arenas selected in the same way as regular rounds, as defined by the Arena Rotation setting. To force an event type to choose from a particular set of arenas, configure the arenas setting with an array of one or more arena names. For example, to make Bambi rounds only happen at either Kamyshovo or Solnichniy:

{
  "events": {
    "chance": 0.25,
    "types": [
      {
        "name": "bambi",
        "chance": 1.0,
        "arenas": [
          "Kamyshovo",
          "Solnichniy"
        ]
      }
    ]
  }
}

When specified, event arenas are chosen randomly, but arenas that can accomodate the current player count are preferred.

Christmas

Enabling Christmas mode causes a large Christmas tree to spawn near the center of the arena, surrounded by gift boxes containing festive loot for spreading Christmas cheer and having a silent night. It also causes players to spawn with Santa hats, Santa beards, and clothing with holiday colors. Infected will also spawn with Santa hats.

Set the christmas setting to one of the following values to enable or disable Christmas:

  • 0 - disable Christmas
  • 1 - enable Christmas
  • 2 - enable Christmas if it is currently December

For example, to enable Christmas:

{
  "christmas": 1
}

Voting

Players can start votes to select the next arena, the next event, and to end the round early by typing /arenavote, /eventvote, and /endvote, respectively, into proximity chat. By default, at least two players must be connected to the server in order for a vote to be able to start, and the voting period lasts one minute. These parameters can be overridden by setting the voteMinimumPlayers and voteMinutes settings. For example:

{
  "voteMinimumPlayers": 10,
  "voteMinutes": 3
}

To disable voting entirely, set voteMinimumPlayers to a value higher than your server's maximum player limit.

Tip

Note: DayZ proximity chat from players is not received by the server when the player sending the chat is close to another player. This can make chat commands unreliable. To improve the likelihood of chat commands being received by the server, set your in-game VOIP distance to the "whisper" minimum distance. The default key binding for changing VOIP distance is the Up key.

Ignore Night

By default, players will be equipped with night vision goggles automatically when the in-game time is considered to be during "night" hours. To disable this, set the ignoreNight setting to true.

{
  "ignoreNight": true
}

Info

Note that this setting does not affect arenas that have been marked dark. Players are always equipped with night vision when an arena is marked "dark", regardless of the in-game time.

Disable Sprint Leaning

To prevent players from sprinting while also leaning, set the disableSprintLeaning setting to true. The default is false. When true, players will trip and fall when they attempt to lean and sprint at the same time.

{
  "disableSprintLeaning": true
}

Max Idle Seconds

To kick dead players who remain idle at the "You are dead" screen, set the maxIdleSeconds setting to the number of seconds after which idle dead players should be kicked. By default, idle players are not kicked from the server. For example, to kick dead players after 5 minutes of inactivity:

{
  "maxIdleSeconds": 300
}

Kill Feed

By default, kills are reported in-game using DayZ's notification system, which displays a box at the top-center of the screen. Alternatively, kills may be reported in the text chat area of the screen, or kill reporting may be disabled completely. Set the killFeed setting to one of the following values to change how kills are reported:

  • 0 - kill reporting disabled
  • 1 - kills reported as notifications
  • 2 - kills reported in chat area

For example, to completely disable the in-game kill feed:

{
  "killFeed": 0
}

Command Character

The leading character identifying a chat message as a command is configurable using the commandCharacter setting. This setting can be set to any single-character string and is case-sensitive. For example:

{
  "commandCharacter": "@"
}

The default command character is /. Some DayZ mods, including VPPAdminTools and Community-Online-Tools prevent this character from working.

Administrators

Administrator-only chat commands can be enabled for specific players by listing them as admins. By default, no players are admins. Admin players must be identified by their DayZ GUIDs, which are 44-character strings. There are numerous resources on the web explaining how to retrieve or calculate these GUIDs, but the easiest method may be to find them in your DayZ Server's administration logs.

You can also calculate DayZ GUIDs using this tool: (Note: requires a modern browser)

SteamID64 (Dec): (steamid.io)
DayZ GUID: Copied!

The admins setting is specified as an array of objects, where each object contains an id string attribute. Other attributes are currently ignored.

{
  "admins": [
    {"id": "AAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBCCCCCDDDD"},
    {"id": "XXXXYYYYYZZZZZZZZZZZWWWWWWWWWWWWWWWWWWWWWW"},
    {"id": "MMMMMMMNNNNNNNNNNNNOOOOOOOOOOOPPPPPPPPPPPP"}
  ]
}

Kill Feed Webhook

It is possible to configure the server to send kill feed messages and leaderboards to a Discord channel using a webhook. Use your Discord server's settings to create a webhook URL for the channel you want kill feed messages to go to.

A typical webhook configuration will look something like this:

{
  "killFeedWebhook": {
    "type": "discord",
    "url": "https://discordapp.com/api/webhooks/XXXXXXXX/YYYYYYYYYYYYYYYY"
  }
}

Note that you must set the type to discord in order for the webhook to work. Other webhook type support may be added in the future.

Player join and leave messages do not get sent to the webhook, by default. To enable these messages, set the playerTracking setting to true::

{
  "killFeedWebhook": {
    "type": "discord",
    "url": "https://discordapp.com/api/webhooks/XXXXXXXX/YYYYYYYYYYYYYYYY",
    "playerTracking": true
  }
}

Primary Weapons

The primary weapons that spawn on players can be overridden by specifying the primaryWeapons setting. This setting is defined as an array of objects, where each object contains three keys: variants, attachments, and accessories.

The variants attribute should contain an array of strings naming one or more weapon types. One of the variants will be randomly chosen when this weapon configuration used.

The attachments attribute should contain an array of zero or more arrays of one or more strings naming attachment types. These may include optics, handguards, buttstocks, and suppressors. Each inner array should contain related types, so optics should be in one array, handguards should be in a separate array, etc.

The accessories attribute should contain an array of zero or more strings naming items that should be spawned in the player inventory. These are typically magazines or stacks of ammunition.

Example:

{
  "primaryWeapons": [
    {
      "variants": ["AK101", "AK101_Black", "AK101_Green"],
      "attachments": [
        ["AK_WoodHndgrd", "AK_WoodHndgrd_Black", "AK_WoodHndgrd_Camo"],
        ["AK_WoodBttstck", "AK_WoodBttstck_Black", "AK_WoodBttstck_Camo"]
      ],
      "accessories": [
        "Mag_AK101_30Rnd",
        "Mag_AK101_30Rnd",
        "Mag_AK101_30Rnd",
        "Mag_AK101_30Rnd"
      ]
    }
  ]
}

Secondary Weapons

The secondary weapons that spawn on players can be overridden by specifying the secondaryWeapons setting. This setting uses the same structure as the primaryWeapons setting.

Knives

The knives that spawn on players' belt sheaths can be overridden by specifying the knives setting. This setting is defined as an array of strings, where each string names a knife type. For example:

{
  "knives": [
    "CombatKnife",
    "Some_Modded_Knife"
  ]
}

Weapons Crate Contents

One of the three sea chests that spawn at random, high risk locations in the arena is intended to contain high-tier weapons. The weapons that spawn inside this chest can be overridden by specifying the crateWeapons setting. This setting is uses the same structure as the primaryWeapons setting.

By default, the weapons crate spawns with either a VSS, FAL, or SVD.

Armor Crate Contents

One of the three sea chests that spawn at random, high risk locations in the arena is intended to contain armor. The items that spawn inside this chest can be overridden by specifying the crateArmor setting. This setting is defined as an array of arrays of strings. Each inner array represents a slot (e.g. helmet, vest, gloves) and the strings inside the arrays represent choices for each slot.

By default, the armor crate spawns with either one helmet, one vest, and one pair of gloves.

Other Crate Contents

One of the three sea chests that spawn at random, high risk locations in the arena is intended to contain traps and grenades. The items that spawn inside this chest can be overridden by specifying the crateOther setting. This setting is defined as an array of arrays of strings. Each inner array represents a slot (e.g. trap or grenade) and the strings inside the arrays represent choices for each slot.

By default, the other crate spawns with two traps (i.e. bear traps or land mines) and three grenades (i.e. fragmentation, smoke, or flashbang).

Outfits

Player clothing can be configured by specifying an array of one or more outfits. Each individual outfit is an array of objects, where each object contains a choices array of strings and an optional integer (between 1 and 100, defaulting to 100) chance, which determines the percentage chance that one of the types listed in choices will be chosen.

For example, the following configuration defines two different outfits. The first outfit gives the player a green top, green pants, green footwear, and a 50% chance of thick framed glasses. The second outfit gives the player a black top, black pants, black footwear, and a 25% chance of getting a Great Helm:

{
  "outfits": [
    [
      {
        "choices": ["Hoodie_Green", "BomberJacket_Olive"]
      },
      {
        "choices": ["CargoPants_Green", "Jeans_Green"]
      },
      {
        "choices": ["Sneakers_Green", "AthleticShoes_Green"]
      },
      {
        "chance": 50,
        "choices": ["ThickFramesGlasses"]
      }
    ],
    [
      {
        "choices": ["Hoodie_Black", "BomberJacket_Black"]
      },
      {
        "choices": ["CargoPants_Black", "Jeans_Black"]
      },
      {
        "choices": ["Sneakers_Black", "MilitaryBoots_Black"]
      },
      {
        "chance": 25,
        "choices": ["GreatHelm"]
      }
    ]
  ]
}

Tip

It is important that players have a 100% chance of being given shirts and pants to ensure that they have sufficient inventory space for ammunition, bandages, etc. Footwear should also be assigned a 100% chance unless you want players to get cuts from running around barefoot.

By default, players will spawn with a random assortment of clothes.

Infected Types

When infected spawns are enabled, infected will spawn from the complete list of infected types defined by the server. Types are chosen randomly. To constrain the set of infected types that should be spawned, define the infectedTypes attribute as an array of infected type name strings. For example:

{
  "infectedTypes": [
    "ZmbF_DoctorSkinny",
    "ZmbM_DoctorFat"
  ]
}

Custom Events

Server owners can define their own custom events to be used along with, or instead of, the built-in special events (Cowboy rounds, Bambi rounds, Hotshot rounds). Custom events are defined in a separate JSON configuration file, named events.json, located in the deathmatch directory under your server's profile directory. For example: profile\deathmatch\events.json

Custom events are defined as an array of objects under the custom property at the root of the JSON:

{
  "custom": [
    {
      "name": "custom1",
      "...": "..."
    },
    {
      "name": "custom2",
      "...": "..."
    }
  ]
}

Downloadable example custom events file: events.json

The valid properties of individual events are described in the following sections.

Event Name

The name property is a string used to uniquely identify the custom event. This name is not visible to players. It must be at least one character long and must only contain letters, numbers, and underscores. Use this same name to configure the chance of the event happening and its round duration, as documented in the Events section. Example:

{
  "custom": [
    {
      "name": "clue"
    }
  ]
}

Event Display Name

The displayName property is a string used to show the name of the custom event to players. Example:

{
  "custom": [
    {
      "name": "clue",
      "displayName": "Clue Round"
    }
  ]
}

Event Greeting

The greeting property is an object describing the notification to be shown to players when a round is started with this custom event type. It contains two properties: title and details. The title property is a string that should contain brief text identifying the round type. The details property is also a string and should contain any additional information to display to the players. Example:

{
  "custom": [
    {
      "name": "clue",
      "greeting": {
        "title": "=== CLUE ROUND ===",
        "details": "I didn't do it!"
      }
    }
  ]
}

Event Primary Weapons

The primaryWeapons property determines what primary weapons players will spawn with during this custom event type. It uses the same format as Primary Weapons.

Event Secondary Weapons

The secondaryWeapons property determines what secondary weapons players will spawn with during this custom event type. It uses the same format as Secondary Weapons.

Event Knives

The knives property determines what knives players will spawn with during this custom event type. It uses the same format as Knives.

Event Weapons Crate

The crateWeapons property determines what weapons will spawn in the weapon crate during this custom event type. It uses the same format as Weapons Crate Contents.

Event Armor Crate

The crateArmor property determines what items will spawn in the armor crate during this custom event type. It uses the same format as Armor Crate Contents.

Event Other Crate

The crateOther property determines what items will spawn in the other crate during this custom event type. It uses the same format as Other Crate Contents.

Event Outfits

The outfits property determines what clothing players will spawn with during this custom event type. It uses the same format as Outfits.

Event Infected Types

The infectedTypes property determines what types of infected will spawn during this custom event type. It uses the same format as Infected Types.

Arena Customization

Further customization can be made by editing the server mission custom-arenas.json file. See the Arena Customization Guide for more information.

Mission Customization

Further customization can be made by editing the server mission init.c scripts. See the Mission Customization Guide for more information.