EDZ Fast Travel

Server owner's guide

Hubs you place, destinations you define, payment in your server's own money. Three small files run it all; this page explains every line, with the example set the mod writes on first start.

The Fast Travel menu open at a boatman on the coast: a list of destinations with prices on the left, the details card for Komarovo on the right, and the Travel and Close buttons along the bottom
The menu: destinations and prices on the left, the card for the selected place on the right, Travel and Close on the bottom rail.

Fast travel for DayZ with hubs you place (people or objects), destinations you define, and payment in whatever money your server uses. No other mod required. Everything is set up in three small text files; this guide explains every line in plain language, with the example set the mod writes for you on first start.

1. Install in five minutes

  1. Subscribe to the mod on the Workshop (or copy the @EDZ_FastTravel folder next to your other mods).
  2. Add @EDZ_FastTravel to the -mod= list of your server and to your clients' mod list. It is a client + server

mod: players need it too, like any mod that adds a menu.

  1. Copy the .bikey from @EDZ_FastTravel\keys into your server's keys folder.
  2. Start the server once. The mod creates profiles\EDZ_FastTravel\ with three files:
FileWhat it holds
Settings.jsonmoney, timings, global switches, admin IDs
Hubs.jsonwhere players open the travel menu (an NPC or an object)
Destinations.jsonthe places players can be taken to, prices, rules
  1. Open Settings.json, put your own ID into AdminUIDs (Steam64 or the hashed DayZ ID, either works), then

restart or use the Admin tab's reload command. You now see the Admin tab in game.

The files the mod writes are a complete working example for Chernarus (the trader docks on the east coast). On any other map you move the positions or replace them with your own, see section 6.

Every line in the files has a // comment explaining it. Comments are ignored by the mod, so you can leave them, edit them or delete them. 1 means on, 0 means off.

2. How a trip works for a player

  1. The player walks up to a hub and presses F (the prompt reads "Talk", "Board", whatever you set per hub).
  2. The menu opens: a list of destinations with prices on the left, a card with details on the right. Destinations the

player cannot take yet say why: too expensive, an item is needed, not discovered yet, on cooldown.

  1. Travel closes the menu and a countdown appears at the bottom of the screen. Walking away or taking damage cancels

it and nothing is charged.

  1. At zero the server checks everything again, takes the money and any required item, moves the player to one of the

destination's arrival spots, and the screen fades to black.

  1. The screen stays black until the player has actually arrived and the terrain around them has had a moment to load,

then fades back in. A protection timer counts down on screen; the player cannot be damaged until it ends.

Money and items are taken only at the very end, after the re-check. A cancelled or interrupted trip never costs anything, so there is nothing to refund and nothing to exploit.

3. Settings.json

// ---- money ----
"CurrencyName": "Rubles",
"Currency": [
  { "ClassName": "Money_Ruble1", "Value": 1 },
  { "ClassName": "Money_Ruble100", "Value": 100 }
],
"GiveChange": 1,
FieldMeaning
CurrencyNameThe word printed after amounts in the menu. "Rubles", "Dollars", "Caps"...
CurrencyEvery item that counts as money, with the value of one unit. Any mod's money works: Expansion banknotes, trader coins, even ammunition. Stacks count as quantity times value.
GiveChangeIf a player pays 500 with a 1000 note, they get 500 back in the largest units that fit. Set to 0 to keep the difference.
// ---- the trip ----
"CountdownSeconds": 10,
"FadeSeconds": 1.5,
"ArrivalHoldSeconds": 2,
"CancelMoveDistance": 3,
"CancelOnDamage": 1,
"CombatLockSeconds": 20,
"CooldownSeconds": 0,
"ProtectionSeconds": 10,
"InteractDistance": 4,
"AllowBleeding": 0,
"AllowRestrained": 0,
FieldMeaning
CountdownSecondsSeconds between pressing Travel and leaving. 0 = instant. Destinations can override it.
FadeSecondsLength of the black fade at departure and arrival. 0 turns the fade off completely.
ArrivalHoldSecondsHow long the screen stays black after the player has reached the destination, so the terrain can load unseen. Only with a fade.
CancelMoveDistanceWalking further than this (metres) from where Travel was pressed cancels the trip. 0 = never.
CancelOnDamageTaking any damage during the countdown cancels the trip.
CombatLockSecondsNo travel for this long after taking damage or firing a weapon. Stops people escaping a fight. 0 = off.
CooldownSecondsMinimum time between two trips of the same player, any destination. 0 = off.
ProtectionSecondsDamage immunity after arriving. Destinations can override it.
InteractDistanceHow close (metres) a player must be to a hub for the F prompt.
AllowBleeding1 lets a bleeding player travel. Default: bandage first.
AllowRestrained1 lets a restrained player travel.
// ---- discovery ----
"DiscoverFirst": 0,
"DiscoveryRadius": 150,
"DiscoveryCheckSeconds": 10,
FieldMeaning
DiscoverFirst1 = players must visit a destination on foot once before they can buy a trip there. A classic "unlock the map" rule. Each destination can override it.
DiscoveryRadiusComing within this many metres of any arrival spot counts as a visit. The player gets a "Discovered" notice.
DiscoveryCheckSecondsHow often players are checked against undiscovered places. 10 is fine.
// ---- messages, logging, admins ----
"ShowFunds": 1,
"AnnounceArrivals": 0,
"LogTravel": 1,
"DefaultPrompt": "Fast travel",
"AdminUIDs": ["76561190000000000"]
FieldMeaning
ShowFundsShow "You carry 12 350 Rubles" in the menu.
AnnounceArrivalsTell everyone online who travelled where. Off by default.
LogTravelWrite every trip to profiles\EDZ_FastTravel\Travel.log (who, from, to, paid).
DefaultPromptThe F-prompt text on hubs that have no Prompt of their own.
AdminUIDsWho sees the Admin tab. Steam64 (17 digits) or the hashed DayZ ID (44 characters ending in =), several allowed.

4. Hubs.json

A hub is a place where the menu opens. It is either an NPC (a survivor body you dress) or an object (any object class in the game: a sign, a radio, a boat, a bus wreck, a building placed with the DayZ Editor).

{
  // ---- Boatman ----
  "ID": "boatman",
  "Name": "Boatman",
  "Type": "npc",
  "ClassName": "EDZ_FastTravelNPC_Kaito",
  "Spawn": 1,
  "Position": [13553.5, 3.07, 6291.94],
  "Orientation": [-83, 0, 0],
  "Clothing": ["Mich2001Helmet", "NVGoggles", "USMCJacket_Woodland", "HighCapacityVest_Olive", "TacticalGloves_Green", "USMCPants_Woodland", "MilitaryBelt", "CombatBoots_Black", "CoyoteBag_Green"],
  "InHands": "AK74_Black",
  "InHandsAttachments": ["Mag_AK74_30Rnd", "AK_PlasticBttstck_Black", "AK74_Hndgrd", "KobraOptic", "AK_Suppressor"],
  "Prompt": "Talk",
  "Greeting": "The sea is calm today. Where to?",
  "Icon": "Boat",
  "Destinations": ["svetloyarsk", "berezino", "chernogorsk"]
}
FieldMeaning
IDA short unique name. Letters, digits, underscores. Used in admin commands.
NameThe title shown in the menu header.
Typenpc or object.
ClassNameFor an NPC: EDZ_FastTravelNPC or EDZ_FastTravelNPC_<face>, see the list below. For an object: any class, e.g. Land_Wreck_Ikarus.
SpawnObjects only. 1 = the mod creates the object. 0 = the object already stands there (placed by the Editor, init.c or the map itself) and the mod attaches the prompt to the nearest object of that class within 5 metres of Position.
Position[x, y, z]. A y of 0 means "put it on the ground here".
Orientation[yaw, pitch, roll] in degrees. Yaw is the direction it faces.
ClothingNPC only. Any wearable classes; the right slot is found automatically. Attachments for clothing work too: list PlateCarrierPouches after PlateCarrierVest, or NVGoggles after a helmet that takes them.
InHandsNPC only. An item to hold, or empty.
InHandsAttachmentsNPC only. Magazine, stock, handguard, optic, suppressor for the held weapon, so it does not look stripped.
PromptThe text on the F prompt: "Talk", "Board", "Check the timetable"... Empty uses DefaultPrompt.
GreetingThe first line of the menu.
IconA short word shown before the name in the header: Boat, Heli, Road. Free text.
DestinationsThe destination IDs this hub offers, in the order they appear. The same destination can be offered by several hubs.

NPC faces: Boris Cyril Denis Elias Francis Guo Hassan Indar Jose Kaito Lewis Manua Niki Oliver Peter Quinn Rolf Seth Taiki (men) and Baty Eva Frida Gabi Helga Irena Judy Keiko Linda Lina Maria Naomi (women), used as EDZ_FastTravelNPC_Boris and so on. Plain EDZ_FastTravelNPC is Mirek. The NPCs cannot be damaged, looted or moved.

Several objects of the same class: each hub has its own position, and the prompt only appears on an object of that class standing within 3 metres of a hub's position. Three identical trail boards in three places are three hubs with three destination lists. Keep hubs more than 6 metres apart.

5. Destinations.json

{
  // ---- Skalisty Island ----
  "ID": "skalisty_island",
  "Name": "Skalisty Island",
  "Description": "Find it on foot once; after that, one crossing every ten minutes.",
  "TransportName": "Boat",
  "Price": 2500,
  "RequiredItem": "",
  "RequiredCount": 1,
  "ConsumeItem": 1,
  "Arrivals": [
    [13408.6, 1.4, 2848.6]
  ],
  "ArrivalOrientation": [0, 0, 0],
  "CountdownSeconds": -1,
  "ProtectionSeconds": -1,
  "CooldownSeconds": 600,
  "DiscoverFirst": 1,
  "Enabled": 1,
  "ArriveMessage": ""
}
FieldMeaning
IDUnique name, referenced by hubs. Do not rename it once players have discovered the place.
NameShown in the list.
DescriptionThe text on the card. Flavour, warnings, whatever you like.
TransportNameFlavour word on the card: Boat, Helicopter, Truck.
PriceIn currency units. 0 = free.
RequiredItemA class the player must carry to travel: a ticket, a key card, a pass. Empty = no item needed. Any class works, vanilla or modded.
RequiredCountHow many of that item.
ConsumeItem1 = the item is taken on departure (a ticket). 0 = the player keeps it (a pass).
ArrivalsOne or more [x, y, z]. One is picked at random for every trip, so players do not pile up on one spot. y 0 = ground.
ArrivalOrientationThe direction the player faces on arrival. All zeros = unchanged.
CountdownSeconds-1 = use the global setting. Otherwise this destination's own countdown.
ProtectionSeconds-1 = use the global setting.
CooldownSecondsPer player, this destination only. 600 = once every ten minutes. 0 = none.
DiscoverFirst-1 = use the global setting. 1 = must be visited on foot first. 0 = never required.
Enabled0 hides the destination from every hub without deleting it.
ArriveMessageThe notification on arrival. Empty = "Welcome to <Name>."

6. Building your own map of hubs: the Admin tab

Everything can be typed into the JSON, but positions are easier to take from inside the game. With your ID in AdminUIDs, open any hub and switch to the Admin tab. Type a command (or pick one from the list) and press Run.

CommandWhat it does
posPrints where you stand and which way you face.
adddest <id> <name...>Saves a new destination at your exact position and facing into Destinations.json. Example: adddest nwaf North West Airfield.
addhub <id> <name...>Saves and spawns a new NPC hub where you stand, facing you. Example: addhub harbour Harbour Master. Dress it in Hubs.json afterwards.
link <hub> <dest>Makes a hub offer a destination. Example: link harbour nwaf.
reloadRe-reads the three files and respawns every hub. Use it after editing by hand.
freeToggles free travel for yourself: no checks, no payment. Handy for testing.
listLists all hubs and destinations.

A typical session: walk to the spot where a destination should drop players, adddest; walk to where the NPC should stand, addhub; link them; then open Hubs.json and give the NPC clothing, a prompt and a greeting; reload.

7. Tips

8. If something does not work

SymptomCheck
No F prompt on an object hubThe start log says hub '<id>': no <class> within 5 m when Spawn is 0 and nothing of that class stands there. Move Position within 5 m of the object.
NPC spawns naked or without a weaponThe log lists every clothing or attachment class it could not put on. Check the class names.
A destination is missing from a hubIts ID is misspelled in the hub's Destinations, or it has Enabled 0. The start log names missing IDs.
The whole file is ignoredA JSON error: a missing comma or bracket. The log says JSON parse error with a hint. The mod keeps running with defaults for that file.
No Admin tabYour ID is not in AdminUIDs, or the server has not restarted / reloaded since you added it.

All of the mod's lines in the server log start with [EDZ_FastTravel].

What the player sees on a trip

After Travel the menu closes and the countdown appears in the centre of the screen; walking away or taking damage cancels it and nothing is charged.

A survivor stands on the dock with a warship behind them; the words Departing to Komarovo, a countdown showing 6, and the hint stay put, walk away to cancel are drawn in the centre of the screen
The countdown. In the last moment the screen fades to black.

On arrival the screen stays black until the player is really there and the terrain has loaded, then fades in while the protection timer counts down.

Open water at Komarovo just after arrival, with the destination name, a protection countdown showing 5 and the word protected in the centre of the screen
Arrival with the protection timer running.