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
- Subscribe to the mod on the Workshop (or copy the
@EDZ_FastTravelfolder next to your other mods). - Add
@EDZ_FastTravelto 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.
- Copy the
.bikeyfrom@EDZ_FastTravel\keysinto your server'skeysfolder. - Start the server once. The mod creates
profiles\EDZ_FastTravel\with three files:
| File | What it holds |
|---|---|
Settings.json | money, timings, global switches, admin IDs |
Hubs.json | where players open the travel menu (an NPC or an object) |
Destinations.json | the places players can be taken to, prices, rules |
- Open
Settings.json, put your own ID intoAdminUIDs(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
- The player walks up to a hub and presses F (the prompt reads "Talk", "Board", whatever you set per hub).
- 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.
- 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.
- 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.
- 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,
| Field | Meaning |
|---|---|
CurrencyName | The word printed after amounts in the menu. "Rubles", "Dollars", "Caps"... |
Currency | Every 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. |
GiveChange | If 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,
| Field | Meaning |
|---|---|
CountdownSeconds | Seconds between pressing Travel and leaving. 0 = instant. Destinations can override it. |
FadeSeconds | Length of the black fade at departure and arrival. 0 turns the fade off completely. |
ArrivalHoldSeconds | How long the screen stays black after the player has reached the destination, so the terrain can load unseen. Only with a fade. |
CancelMoveDistance | Walking further than this (metres) from where Travel was pressed cancels the trip. 0 = never. |
CancelOnDamage | Taking any damage during the countdown cancels the trip. |
CombatLockSeconds | No travel for this long after taking damage or firing a weapon. Stops people escaping a fight. 0 = off. |
CooldownSeconds | Minimum time between two trips of the same player, any destination. 0 = off. |
ProtectionSeconds | Damage immunity after arriving. Destinations can override it. |
InteractDistance | How close (metres) a player must be to a hub for the F prompt. |
AllowBleeding | 1 lets a bleeding player travel. Default: bandage first. |
AllowRestrained | 1 lets a restrained player travel. |
// ---- discovery ----
"DiscoverFirst": 0,
"DiscoveryRadius": 150,
"DiscoveryCheckSeconds": 10,
| Field | Meaning |
|---|---|
DiscoverFirst | 1 = 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. |
DiscoveryRadius | Coming within this many metres of any arrival spot counts as a visit. The player gets a "Discovered" notice. |
DiscoveryCheckSeconds | How often players are checked against undiscovered places. 10 is fine. |
// ---- messages, logging, admins ----
"ShowFunds": 1,
"AnnounceArrivals": 0,
"LogTravel": 1,
"DefaultPrompt": "Fast travel",
"AdminUIDs": ["76561190000000000"]
| Field | Meaning |
|---|---|
ShowFunds | Show "You carry 12 350 Rubles" in the menu. |
AnnounceArrivals | Tell everyone online who travelled where. Off by default. |
LogTravel | Write every trip to profiles\EDZ_FastTravel\Travel.log (who, from, to, paid). |
DefaultPrompt | The F-prompt text on hubs that have no Prompt of their own. |
AdminUIDs | Who 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"]
}
| Field | Meaning |
|---|---|
ID | A short unique name. Letters, digits, underscores. Used in admin commands. |
Name | The title shown in the menu header. |
Type | npc or object. |
ClassName | For an NPC: EDZ_FastTravelNPC or EDZ_FastTravelNPC_<face>, see the list below. For an object: any class, e.g. Land_Wreck_Ikarus. |
Spawn | Objects 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. |
Clothing | NPC 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. |
InHands | NPC only. An item to hold, or empty. |
InHandsAttachments | NPC only. Magazine, stock, handguard, optic, suppressor for the held weapon, so it does not look stripped. |
Prompt | The text on the F prompt: "Talk", "Board", "Check the timetable"... Empty uses DefaultPrompt. |
Greeting | The first line of the menu. |
Icon | A short word shown before the name in the header: Boat, Heli, Road. Free text. |
Destinations | The 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": ""
}
| Field | Meaning |
|---|---|
ID | Unique name, referenced by hubs. Do not rename it once players have discovered the place. |
Name | Shown in the list. |
Description | The text on the card. Flavour, warnings, whatever you like. |
TransportName | Flavour word on the card: Boat, Helicopter, Truck. |
Price | In currency units. 0 = free. |
RequiredItem | A class the player must carry to travel: a ticket, a key card, a pass. Empty = no item needed. Any class works, vanilla or modded. |
RequiredCount | How many of that item. |
ConsumeItem | 1 = the item is taken on departure (a ticket). 0 = the player keeps it (a pass). |
Arrivals | One 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. |
ArrivalOrientation | The 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. |
CooldownSeconds | Per 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. |
Enabled | 0 hides the destination from every hub without deleting it. |
ArriveMessage | The 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.
| Command | What it does |
|---|---|
pos | Prints 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. |
reload | Re-reads the three files and respawns every hub. Use it after editing by hand. |
free | Toggles free travel for yourself: no checks, no payment. Handy for testing. |
list | Lists 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
- Money from another mod: list its classes in
Currency. A note'sValueis simply what one of it is worth. The mod does not care which mod the notes come from. - Tickets: use
RequiredItemwithConsumeItem1 and any item you already have on the server, or an item from your own pack. A pass that is kept isConsumeItem0. - No fades at all:
FadeSeconds0. - Instant travel:
CountdownSeconds0 globally or per destination. - Discovery per place: leave the global
DiscoverFirstat 0 and setDiscoverFirst1 on the special places. - Players lose nothing on a failed trip: payment and items are taken after the final check, in the same server frame as the move.
- Log:
Travel.loghas one line per trip with the player, hub, destination and price. Each player's discovered places and trip counts are inPlayers\<id>.json.
8. If something does not work
| Symptom | Check |
|---|---|
| No F prompt on an object hub | The 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 weapon | The log lists every clothing or attachment class it could not put on. Check the class names. |
| A destination is missing from a hub | Its ID is misspelled in the hub's Destinations, or it has Enabled 0. The start log names missing IDs. |
| The whole file is ignored | A 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 tab | Your 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.
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.