Skip to content

How to add DayZ Expansion quests to a PC server

By

Updated

Install Expansion Quests on your DayZ Steam PC server, then link a quest definition to its objective and NPC. Start with a collection task you can inspect: exchange five apples for one water bottle at a quartermaster.

Work on a stopped test instance with separate world data and profiles. Apply the examples as field edits to files generated by your installed release.

Select Workshop ID 2828486817, the original Quests item. A separate module installation needs CF 1559212036, Dabs Framework 2545327648, Expansion Core 2291785308, then Quests. Use Expansion installation to prepare the mission, copy signing keys or install through VXPanel Mods.

Expansion Bundle includes Quests, so adding the separate Quests package would duplicate it. Choose one release branch and keep stable and Experimental files out of the same installation. Recheck required items on the author’s page at each installation or update.

For a manual installation whose folders have these names, pass this client-required argument:

"-mod=@CF;@Dabs Framework;@DayZ-Expansion-Core;@DayZ-Expansion-Quests"

Choose optional modules by task. In the author’s setup page, Book 2572324799 supplies the quest-log interface; Groups 2792983364 supports group quests; Navigation 2792984722 supplies objective markers; AI 2792982069 supports AI quest NPCs and objectives. A regular NPC and single-player collection task keep AI and group behavior outside this example.

Install and enable Book through the reviewed menu procedure. Party quests need Groups and its own membership and invitation checks. Review map access and client filters through Navigation setup.

Read the installation guide’s storage warning before introducing CF into a saved vanilla world. Preserve the mission, profiles and saved data in a stopped backup.

Let the selected packages initialize on the test instance. Save the startup log, then stop before editing. Read the service’s actual -profiles argument to find its working directory. The quest path constants identify the files below:

Path beneath the active profiles directory What to edit or preserve
ExpansionMod/Settings/QuestSettings.json Quest enablement and reset policy.
ExpansionMod/Quests/NPCs/ NPC definitions and measured placement.
ExpansionMod/Quests/Quests/ Quest behavior, rewards and links to NPCs.
ExpansionMod/Quests/Objectives/Collection/ Items needed for collection tasks.
ExpansionMod/Quests/PlayerData/ and GroupData/ Progress to retain in a recovery backup.
Scroll to see all columns →

Quest objects can also use the mission-side expansion/quests/objects/ directory. Keep that placement data separate from NPC JSON and objective definitions. If the profile directories are empty, inspect the loaded module and first-start log and confirm the profiles path before importing files.

The inspected files use settings 10, quest 22, NPC 6 and objective 28. The versions differ by file family, and some wiki examples show objective version 26. Retain the version generated for each file by your installed release.

Set the existing EnableQuests value to 1 in QuestSettings.json, preserving its other fields. With Book installed, enable EnableQuestLogTab if you want its quest log and include that interface in the client checks.

Use the names in the inspected settings implementation: DailyResetHour, DailyResetMinute, WeeklyResetDay, WeeklyResetHour, WeeklyResetMinute and UseUTCTime. Names including DailyQuestResetHour and the misspelled WeeklyQuestResteMinute survive in older prose and a legacy conversion class. Adding those names to current settings would mix schemas.

Reserve IDs for the quest, objective and NPC

Section titled “Reserve IDs for the quest, objective and NPC”

Search the quest, NPC and collection JSON before allocating an ID. The example reserves quest 9001, objective 9002 and NPC 9003. Replace any occupied ID throughout the example. A new filename does not change the ID stored inside it.

File to create Internal ID Reference to check
Quests/9001-apple-supplies.json 9001 Objective 9002, collection type 4.
Objectives/Collection/9002-apples.json 9002 Five Apple items in its requirement.
NPCs/9003-quartermaster.json 9003 Both QuestGiverIDs and QuestTurnInIDs point here.
Scroll to see all columns →

Collection is type 4 and delivery is type 5 in the objective enum. Save this objective under Collection/ and check its type as well as its ID.

Duplicate a generated collection file as 9002-apples.json in its current directory. Retain ConfigVersion and any fields specific to your release, then merge these field edits into the copy:

{
"ID": 9002,
"ObjectiveType": 4,
"ObjectiveText": "Bring five apples to the quartermaster.",
"TimeLimit": -1,
"Active": 1,
"Collections": [
{
"Amount": 5,
"ClassName": "Apple",
"QuantityPercent": -1,
"MinQuantityPercent": 0
}
],
"ShowDistance": 1,
"AddItemsToNearbyMarketZone": 0,
"NeedAnyCollection": 0
}

Retain the surrounding generated file when applying this patch. Read the collection reference for the array and quantity fields. With NeedAnyCollection: 0, extending the list requires all listed items. Leave market stocking disabled while testing collection and turn-in so a trader zone cannot affect this first result.

Configure the quartermaster’s entity and location

Section titled “Configure the quartermaster’s entity and location”

Create 9003-quartermaster.json from a generated NPC file. Preserve its version and loadout fields, confirming that the named loadout exists in your configuration. Set the entity fields below:

{
"ID": 9003,
"ClassName": "ExpansionQuestNPCDenis",
"NPCType": 0,
"NPCName": "Quartermaster",
"DefaultNPCText": "I need apples for the supply cache.",
"Active": 1
}

Export your chosen location with administration or editor tools. Put its measured X, Y, Z in Position and its facing in Orientation. Inspect terrain height and access around the quartermaster. Coordinates copied from Chernarus need a replacement on another terrain.

Match the classname and type using the NPC implementation: regular NPC 0, object 1, AI 2. AI entities need the AI module; the regular entity needs a supported quest NPC class. Inspect copied templates for that match instead of adding the legacy IsAI field.

Duplicate a generated quest as 9001-apple-supplies.json. Keep ConfigVersion and release-specific fields while applying the following quest edits:

{
"ID": 9001,
"Type": 1,
"Title": "Apple supplies",
"Descriptions": [
"Bring five apples to the quartermaster for one water bottle."
],
"ObjectiveText": "Collect five apples and return to the quartermaster.",
"FollowUpQuest": -1,
"Repeatable": 0,
"IsDailyQuest": 0,
"IsWeeklyQuest": 0,
"IsAchievement": 0,
"IsGroupQuest": 0,
"Autocomplete": 0,
"QuestItems": [],
"QuestGiverIDs": [9003],
"QuestTurnInIDs": [9003],
"PreQuestIDs": [],
"ReputationRequirement": -1,
"RequiredFaction": "",
"FactionReputationRequirements": {},
"ObjectSetFileName": "",
"NeedToSelectReward": 0,
"RandomReward": 0,
"Active": 1
}

In the copied Objectives array, retain one generated reference object and its ConfigVersion. Set ID to 9002 and ObjectiveType to 4, removing the copy’s other objective references. Leave the original quest intact.

Use this array for the copy’s Rewards:

[
{
"ClassName": "WaterBottle",
"Amount": 1,
"Attachments": [],
"DamagePercent": 0,
"HealthPercent": 0,
"QuestID": -1,
"Chance": 1.0
}
]

The result is a normal single-player quest, accepted and turned in at the NPC, with one completion allowed. Clear copied prerequisites and faction restrictions that could hide the quest. Review ReputationReward, FactionReward and FactionReputationRewards and clear awards you do not intend to grant. For the achievement flag, the inspected quest config uses IsAchievement; the older IsAchivement spelling appears in conversion code.

Item and attachment fields are defined in the reward class. Inspect the awarded item count and water contents in the game. A configured classname leaves the spawned condition and usable quantity to verify.

Check the files, then test with a player client

Section titled “Check the files, then test with a player client”

Parse the three edited files before uploading them. Check that the objective ID and type match the collection file, and that both NPC arrays point to the quartermaster. Remove duplicate definitions for an ID within each family. Start the test service and save its log. Parsing confirms JSON syntax; player checks must establish class loading and quest eligibility.

Player check Evidence to retain
First join Required packages load on an updated client that joins the server.
NPC placement One quartermaster offers the quest at the measured location.
Insufficient inventory A player with fewer than five apples cannot turn in.
Completed collection Turn-in consumes five accepted apples and awards one intended water bottle.
Reconnect and normal restart Active and completed state follow your policy, with no second payout for the one-time quest.
Recovery Compatible profiles and saved-world restoration recover the recorded progress.
Scroll to see all columns →

Use test inventory: the inspected collection turn-in code removes collected items. Before changing the public server, record the item counts, map, package versions, coordinates and IDs from your test.

After the first quest passes, a daily version can use Repeatable and IsDailyQuest set to 1, with IsWeeklyQuest set to 0. A weekly version uses Repeatable: 1, IsDailyQuest: 0 and IsWeeklyQuest: 1.

Edit reset day and time in the existing settings fields. Enabling UseUTCTime selects UTC; disabling it selects the host clock. Record that choice and test across a reset boundary. Before changing IsGroupQuest from 0, install Groups and verify acceptance, turn-in and rewards under GroupQuestMode and RewardsForGroupOwnerOnly.

Symptom First check
Quest directories absent Inspect the actual launch list, overlapping Bundle modules, profiles path and initialization log.
NPC absent Verify its loaded file, unused ID, Active, position and classname/type match. Convert a copied AI type to the regular NPC recipe or supply AI.
NPC offers another quest Compare QuestGiverIDs and inspect prerequisites, faction/reputation restrictions, completed state and duplicate IDs.
Quest rejects its objective Match ID and type with the file category; inspect objective Active and validation messages.
Quest accepts but no turn-in Inspect QuestTurnInIDs, apple count, quantity conditions and Autocomplete.
No quest log or marker Confirm optional Book/Navigation packages and supported settings. Inspect the quest itself as well as its marker.
Daily quest remains on cooldown Compare daily/weekly flags, repeatability, exact setting names and the recorded clock/reset boundary.
Scroll to see all columns →

For a failed change, stop and restore the definitions you edited, retaining the failed logs. If saved state changed, restore compatible profiles and world data from the same stopped backup. Erasing PlayerData or GroupData discards progress and can alter reward eligibility; it is not a quest-visibility fix.

Related documentation: stable change notes.

DayZ hosting for your community.

Review DayZ plans with VxShield DDoS protection and no added player-slot fee.