How to add Expansion Market traders to a DayZ server
To add an Expansion trader, load Expansion Market, place a trader entity in the active mission and connect it to a trader inventory in the profiles directory. Its items need registered market definitions, and the entity must stand inside a trader zone. A map marker does not complete those connections.
Start with one static NPC selling one vanilla item on a DayZ Steam PC test server. After a purchase, sale and restart pass, add more stock or locations. This procedure uses Expansion Market; Dr Jones Trader and TraderPlus have different configuration formats.
Prepare the server and recovery copy
Section titled “Prepare the server and recovery copy”Complete Expansion installation with Market and its required CF, Dabs Framework and Core packages. Confirm that a client can join with the matching mods. Expansion AI is optional for a static trader and is not part of this example.
Take a stopped backup of the active mission, profiles, saved world and existing mod data. Record the mission template and active profiles path. In VXPanel, use Files and SFTP to transfer edited files and Logs to preserve a failed run.
Use the generated files from your installed release as templates. Keep their m_Version and any fields outside the edits below. Validate JSON syntax before upload. Code blocks described as replacement fields must be merged into complete files; they are not standalone settings files.
Identify each file’s job
Section titled “Identify each file’s job”The author’s Market overview links separate configuration references. Here, <mission> means the selected directory under mpmissions/, and <profiles> means the directory selected by the service’s launch settings.
| File or directory | Controls |
|---|---|
<mission>/expansion/traders/*.map |
Trader entity, inventory reference, position, orientation and clothing. |
<profiles>/ExpansionMod/Traders/*.json |
Each trader’s accepted currencies and listed categories or items. |
<profiles>/ExpansionMod/Market/*.json |
Market categories, classnames, prices and stock limits. |
<mission>/expansion/traderzones/*.json |
Zone position, radius and saved stock for that zone. |
<mission>/expansion/settings/MarketSettings.json |
Market enablement and settings such as vehicle spawn positions. |
Resolve the actual folder names and case on your installation. A Linux host can treat differently cased names as different paths. Editing a second map’s mission or an unused profiles directory leaves the running trader unchanged.
Review the author’s terrain templates. Availability of default trader locations varies by map. If your terrain lacks a suitable location, create one with coordinates captured on that terrain rather than importing Chernarus positions.
Enable the market
Section titled “Enable the market”Stop the test service. In the active mission’s generated expansion/settings/MarketSettings.json, check this field:
{ "MarketSystemEnabled": 1}Change the field in the complete file and retain its other settings. The General Market Settings reference documents that path and flag.
Keep map markers, decorative buildings and safe zones outside this first edit. Add them after trading works. A trading zone provides market coverage; use PvE and safe-zone configuration for the separate damage rules.
Reuse a registered item for the first test
Section titled “Reuse a registered item for the first test”Search the generated files under <profiles>/ExpansionMod/Market/ for sodacan_cola, ignoring case. The author’s default drinks category registers that vanilla item. If your installed configuration differs, use one known registered vanilla item and its classname instead.
Keep its existing category, prices, stock limits and currency configuration. Do not copy the same classname into a second category: the category loader checks for duplicate global item definitions.
Review the category settings reference before changing prices or stock. InitStockPercent initializes eligible new stock entries; changing it does not reset an item’s existing saved stock. Use a new test zone to inspect initialization and retain the production zone files.
Connect the item to a trader inventory
Section titled “Connect the item to a trader inventory”Copy a generated working trader inventory to <profiles>/ExpansionMod/Traders/VykixSupplies.json. Keep its version, icon, currency list and other required fields. Change DisplayName, clear its copied category list and replace its direct item list for this test:
{ "DisplayName": "VYKIX supplies trader", "Categories": [], "Items": {"sodacan_cola": 1}}The 1 value allows buying and selling at this trader. The Trader Settings reference describes direct item modes and category references. Use the registered classname you selected if it differs from the example.
The retained Currencies must reference currencies configured in the Market directory. Do not put an arbitrary classname there and expect it to become money. Review copied reputation, faction and quest restrictions against your installed settings before testing access.
Check other generated inventories for missing category references before the test. The Market-only installation check covers defaults that refer to categories from modules you did not install. The empty Categories array above uses the cola’s existing market definition through the direct Items map.
Place the static NPC
Section titled “Place the static NPC”Choose a clear position using DayZ Editor or an admin tool on the test terrain. Save its world position as X, Y, Z, where Y is height, and its orientation. Check that another placement file does not already spawn this NPC at the same location.
Create VykixSupplies.map under <mission>/expansion/traders/. This illustrates the format for a Chernarus test position; replace the vectors with your captured coordinates:
ExpansionTraderDenis.VykixSupplies|3700 402 5980|90 0 0|Jeans_Blue,TSHirt_BlueThe dot connects ExpansionTraderDenis to the trader inventory named VykixSupplies.json. Pipes separate the position, orientation and optional gear. The trader-entity reference documents that format.
An Editor export of buildings belongs in the appropriate object-placement workflow; it does not replace the trader’s inventory reference. Preserve existing placement files and add one new NPC before expanding the location.
Give the NPC a trader zone
Section titled “Give the NPC a trader zone”Create a new JSON file under <mission>/expansion/traderzones/ using a generated zone as the schema template. Give it a unique name such as VykixSupplies.json. For the example NPC, replace these fields in the copied file:
{ "m_DisplayName": "VYKIX supplies test zone", "Position": [3700, 402, 5980], "Radius": 30.0, "Stock": {}}Keep its m_Version and other settings. Use your captured center position in place of the example. An empty stock map is for this new test zone; do not clear an existing community’s stock to troubleshoot a reference error.
Trader zones are spheres. Check the center’s height as well as its map coordinates, then confirm that the NPC sits inside the radius. The TraderZones reference documents zone coverage and stock. A radius enlarged across a town can include traders you did not intend to share that zone.
Check for overlapping zones. The author’s zone selection code selects the closest containing zone. A nearby NPC can therefore use a different zone and stock file from the one you edited. The illustrative coordinates above are near Green Mountain; capture your own clear position and check every zone covering it.
Test purchase, sale and persistence
Section titled “Test purchase, sale and persistence”Validate the complete edited JSON files, upload them while stopped, then start the test service. Preserve logs from that run and join with the required packages.
- Visit the captured position. Confirm that one intended NPC appears and opens the market menu.
- Confirm that the market menu shows the selected cola item with a preview, price and available stock.
- Give the test character a supported currency through your authorized test workflow. Buy one item and record the currency and stock before and after.
- Sell an eligible item. Record the payout, stock change and item removal. Check item condition if the payout differs from the expected calculation.
- Stop and start the server through its supported shutdown procedure. Rejoin and inspect the saved stock and character inventory.
Run these checks before advertising the trader to players. A displayed category proves the configuration loaded far enough to list it; it does not establish the purchase, sale or persistence result.
For vehicle traders, add a valid nearby spawn position for the correct vehicle type in MarketSettings.json, using the author’s reference. Clear its physical spawn area and test the purchase on the test instance. A vehicle’s economy spawn locations do not configure trader purchase locations.
Add a custom category after the first trade works
Section titled “Add a custom category after the first trade works”For items that are not registered yet, copy a generated category into a new file in ExpansionMod/Market/. Keep its schema fields and version, give it a useful DisplayName, and replace its Items array with the new installed classnames and their price and stock settings. Check the other category files and variants for duplicate definitions before saving.
To expose a category named VykixSupplies.json at the trader, merge this replacement field into its complete inventory file:
{ "Categories": ["VykixSupplies:1"]}The reference excludes .json, and :1 enables buying and selling. Decide whether to retain the pilot’s direct Items entry. Validate the complete files and repeat the purchase, sale and restart checks with one new item.
For an item that already has a market definition, reuse that entry through the trader’s Items map or its existing category. Moving it between categories also requires checking other traders that used its old category.
Adding a SNAFU item requires its installed classname and client package. Follow SNAFU installation for that package. A types.xml entry controls the loot economy; a Market category supplies trader listing data.
Diagnose the failed connection
Section titled “Diagnose the failed connection”| Symptom | Check first |
|---|---|
| No NPC at the intended position | Active mission, Market loading, .map path, classname, coordinates and placement errors in that run’s logs. |
NPC appears but menu stays at Loading Trader... |
Complete trader JSON and whether the NPC is inside a trader-zone sphere. |
| Category missing | Trader’s Categories entry, category filename without .json, case and JSON syntax. |
| Item has no preview or translated name | Installed item package and exact classname. |
| Item listed but unavailable to buy | Saved zone stock, buy/sell mode, supported currency and applicable reputation restrictions. |
| Changed initial stock seems ignored | The item’s existing saved stock in the actual zone file. |
| Vehicle purchase reports insufficient spawn positions | Type-specific spawn settings, permitted distance and clear physical space. |
The author’s Market troubleshooting reference separates several of these failures. Collect the filenames, reference strings, coordinates, error and log time before changing them. A map marker that works does not verify any of these files.
Roll back without resetting the world
Section titled “Roll back without resetting the world”Stop the server and preserve failed logs. Restore the changed mission and profile files from the stopped recovery set, including zone state when the test changed it. Remove only the new test files you added, after retaining a copy. Reopen with the prior compatible mod list and repeat a known purchase or join check.
A world wipe does not repair a misspelled category reference. If you intend to remove Market or another package from an existing server, review its saved data and follow mod removal as a separate change.
Return to the DayZ guide directory after the purchase, sale and restart checks pass.