Epoch PBO config options and how they work

From DayZ.ST Community Wiki
Jump to: navigation, search

Contents

DayZ Epoch Configs


Mission File: init.sqf
Mission File: dynamic_vehicle.sqf
Mission File: server_traders.sqf

General Options

Inside Init.sqf:


Enable purchased vehicle parachute spawning setting this to true. (Default: false)

DZE_TRADER_SPAWNMODE = true;


Enable full moon nights by setting this to true. (Default: false)

dayz_fullMoonNights = true;


Controls if the player will spawn on shore or not. 1 = Spawn must be on shore, 0 = anywhere. (Default: 1)

spawnShoremode = 1;


Controls how large of an area to search for a suitable spawn location. (Default: 1500)

spawnArea = 1500;


Defines acceptable play area if player is outside of area the players position will reset on reconnect. (Default: -20000)

dayz_minpos = -20000;


Defines acceptable play area if player is outside of area the players position will reset on reconnect. (Default: 20000)

dayz_maxpos = 20000;


Controls the max overall vehicle limit if this limit is reached no new vehicles will spawn.

MaxVehicleLimit = 50;


This is the overall area used to determine where to spawn vehicles, road debris, and helicopter crashes. (Default: 10000)

dayz_MapArea = 12000;


Experimental feature that will parachute spawn all players into the game. (Default: false)

dayz_paraSpawn = true;


Allows adding more potential spawn points. PLEASE NOTE: The extra markers named spawn5 - spawn10 must exist. *Don't use this unless you know exactly what you are doing* (Default: 4)

spawnMarkerCount = 10;


Controls animal spawn limits (Default: 8)

dayz_maxAnimals = 8;


Enables the ability to tame dogs with raw meat. (Default: false)

dayz_tameDogs = true;


Sets the lowest possible damage a fresh spawned vehicle will have. (Default: 0)

DynamicVehicleDamageLow = 0;


Sets the highest possible damage a fresh spawned vehicle will have. (Default: 100)

DynamicVehicleDamageHigh = 100;


Sets the lowest possible fuel level a fresh spawned vehicle will have. (Default: 0)

DynamicVehicleFuelLow = 0;


Sets the highest possible fuel level a fresh spawned vehicle will have. (Default: 100)

DynamicVehicleFuelHigh = 100;


Max number of zombies spawned per player. (Default: 40)

dayz_maxLocalZombies = 40;


Starting global max zombie count, this will increase for each player within 400m (Default: 40)

dayz_maxGlobalZombiesInit = 40;


Global zombie limit increase per player within 400m (Default: 10)

dayz_maxGlobalZombiesIncrease = 10;


Total zombie limit (Default: 500)

dayz_maxZeds = 500;


Disables zombies attacking vehicles.

dayz_zedsAttackVehicles = false;


Control the distance that you can sell a vehicle to the traders.

dayz_sellDistance = 20;


To enable debug so that road debris and new vehicle spawns are visible via map markers. Also debug will enable "Save to arma.RPT" that allows access of a tool to obtain lootpos information for buildings used for adding support for additional maps. *Only use this to diagnose issues with spawning* (Default: false)

DZEdebug = true;


To change how many debris spawn edit the MaxDynamicDebris variable in the missions init.sqf.

MaxDynamicDebris = 100; // Max number of road debris spawns (Default: 100)


Enable global chat messaging of player deaths. (Also requires enableRadio true;?)

DZE_DeathMsgGlobal = true;


Enable side chat messaging of player deaths. (Also requires enableRadio true;?)

DZE_DeathMsgSide = true;


Enable global title text messaging of player deaths.

DZE_DeathMsgTitleText = true;

Change amount of ammo boxes that spawn on the server.

MaxAmmoBoxes = 5;

Change amount of mining veins on the server.

MaxMineVeins = 50;

Enable/Disable machine gun ammo for vehicles with turrets being set to 0 ammo on server restarts.

DZE_vehicleAmmo = 0; //Default = 0, 1 to disable, 0 to enable.

Enable/Disable backpack contents being wiped if logging out or losing connection beside another player.

DZE_BackpackGuard = true; //Default = true, true to enable, false to disable

Change the number of constructed objects within range of a 30m Plot Pole. (default=150)

    • Be very carefull with this number, as setting it too high will cause a huge amount of local lag**
DZE_BuildingLimit = 150; 

Color coded name tag system, normally players will choose to show or not when logging in-

Force all tags off for everyone:

DZE_ForceNameTagsOff

Force all tags to show for everyone:

DZE_ForceNameTags

Tag max view distance (default=25m):

DZE_HumanityTargetDistance = 25


Customize fresh spawn loadout

Change default fresh spawn loadout by adding:

DefaultMagazines = ["ItemBandage","ItemPainkiller"]; 
DefaultWeapons = ["ItemFlashlight"]; 
DefaultBackpack = ""; 
DefaultBackpackWeapon = "";

Magazines are anything that goes in the normal and sidearm inventory. Weapons are any mainhand weapon, sidearm, or toolbelt item.


Lighting system

Epoch has a built in system for lighting streetlamps and house windows at night. You can enable it by removing the '\\' in Front of the variable string at the bottom of the init.sqf, so that it looks like this:

//Lights
[17,6,true,false,true,true,72,242,600,10,[0.698, 0.556, 0.419],"Generator_DZ",208,"",0.5] execVM "\z\addons\dayz_code\compile\local_lights_init.sqf";

The long string of variables all define how the lighting works, when it works, what percentage of lights to use, etc. The more lights you have on and the longer range you decide to show them on, the more load put on the server. If you already have issues with lag or desync, I recommend leaving this option commented out, or lowering the range and rates. More info on exactly what the variables are can be found here: http://dayzepoch.com/wiki/index.php?title=Lighting_System

Vehicles


Change Vehicle Spawns

Edit AllowedVehiclesList array found in dynamic_vehicle.sqf inside the mission.pbo.

AllowedVehiclesList = [ 
["TT650_TK_CIV_EP1",1],
["ATV_US_EP1",10],
["hilux1_civil_3_open_EP1",5],
["hilux1_civil_2_covered",2],
["datsun1_civil_3_open",5],
["Pickup_PK_TK_GUE_EP1",5]...


This controls the type of vehicle and the total limit per vehicle type. Note that the limit is soft and will typically spawn one more than the actual numbers.

Change total vehicle limit

Edit the init.sqf variable MaxVehicleLimit and you change the total max vehicles, if this limit is reached no new vehicles will spawn.

MaxVehicleLimit = 300; // Default : 50


Damage system uses a random percent between min and max variables. Defaults:

(DynamicVehicleDamageLow = 0; DynamicVehicleDamageHigh = 100;)


Fuel system uses a random percent between min and max variables. Defaults:

(DynamicVehicleFuelLow = 0; DynamicVehicleFuelHigh = 100;) 


Traders



SQL tables used by the game currently

The traders_data table is the only one used at this time by the server.
The server_traders, trader_items, and trader_tids tables are used by a soon to be released web tool that is used to configure the traders_data table as well as generate server_traders.sqf.

Adding new items to traders

INSERT INTO `Traders_DATA` (`item`,`qty`,`buy`,`sell`,`order`,`tid`,`afile`) VALUES ('["1Rnd_HE_M203",1]',10,'[4,"ItemGoldBar",1]','[2,"ItemGoldBar",1]',0,60,'trade_items')


item -- ["classname",type]

qty -- Number of items in stock

buy or sell -- [qty,"classname",type]

Use the following as a table for items types in the columns Item, Buy and Sell:

   Weapons = 3
Vehicles and backpacks = 2
Magazines = 1


order -- Allows override of display order. Typical range is 0 (low priority. Eg: 'Get out') to 6 (high priority. Eg: 'Auto-hover on').

tid -- This number must match the trader category id found in the mission file server_traders.sqf

afile -- Use the following types each of these represent a different .sqf file that performs the work:

   trade_items
trade_weapons
trade_any_vehicle
trade_any_boat
trade_backpacks



How to add stock for a specific item:

In "Traders_DATA" table use SQL editor to filter by column "item" then "contains" then "Itemvault" then change the "qty" column to add more stock and save. Any changes to the qty will be live to the server instantly.

Or execute this SQL:

UPDATE `Traders_DATA` SET qty=10 WHERE `item` LIKE '%ItemVault%' AND qty=0;


We recommend running this code daily to ensure that traders have some stock except vehicles and boats since they should normally spawn dynamically and are already sold for profit.

UPDATE `Traders_DATA` SET qty=10 WHERE qty=0 AND afile<>'trade_any_vehicle' AND afile<>'trade_any_boat';




Server Maintenance



Remove destroyed vehicles from database:

Use the following SQL code:

DELETE FROM Object_DATA WHERE Damage = 1


Schedule it to run every day:

DROP EVENT IF EXISTS removeDamageVehicles
CREATE EVENT removeDamagedVehicles
ON SCHEDULE EVERY 1 DAY
COMMENT 'Removes damaged vehicles'
DO
DELETE FROM Object_DATA WHERE Damage = 1



Prevent server cleanup of built objects:

We have already set the HiveExt.ini cleanup cycle for crafted items at -1, meaning it should not delete them in the default 6 days. However, sometimes the server code ignores this setting and does a cleanup anyways. To avoid losing any of your constructs, make sure you do the maintenance on them every week through the scroll-wheel menu for each item.

If you really don't want to worry about anything being deleted, you can run the following SQL in the database to auto-update the timestamp on everything everyday. This WILL lead to unused buildings staying on your server forever and causing lag and desync unless you go in the DB manually and prune things.


Use the following SQL code:

UPDATE `Object_DATA` SET `Datestamp`=CURRENT_TIMESTAMP WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') )


Schedule it to run every day:

DROP EVENT IF EXISTS preventCleanup
CREATE EVENT preventCleanup
ON SCHEDULE EVERY 1 DAY
COMMENT 'prevents all cleanup by setting datestamp to current'
DO
UPDATE `Object_DATA` SET `Datestamp`=CURRENT_TIMESTAMP WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') )


If you only want to keep objects build by players that have logged in the last week. Use the following scheduled event instead:

 DROP EVENT IF EXISTS preventCleanup
    CREATE EVENT preventCleanup
    ON SCHEDULE EVERY 1 DAY
    COMMENT 'prevents cleanup of objects build by active player by setting the timestamp to currect'
    DO

      UPDATE Object_DATA
      SET    Datestamp   = CURRENT_TIMESTAMP
      WHERE  ObjectUID   <> 0
      AND    CharacterID <> 0
      AND  ((Inventory IS NULL) OR (Inventory = '[]'))
      AND EXISTS (SELECT 1
                  FROM   Character_DATA c
                  WHERE  c.PlayerUID = (SELECT p.PlayerUID
                                        FROM   Player_DATA p,
                                               Character_DATA c2
                                        WHERE  p.PlayerUID = c2.PlayerUID
                                        AND    c2.CharacterID = Object_DATA.CharacterID)
                  AND    c.Alive = 1
                  AND    c.LastLogin   > NOW() - INTERVAL 1 WEEK)




This is the full run of SQL events that the Epoch devs recommend using, you can choose to run any or all or none of these as you like. You can also modify them to change the intervals or quantities of stock/dmg/etc by reading them and changing the values logically.

Update trader stock daily:

DROP EVENT IF EXISTS updateStockDaily;
CREATE EVENT updateStockDaily
   ON SCHEDULE EVERY 1 DAY
   COMMENT 'Updates out of stock vendors'
   DO
     UPDATE `Traders_DATA` SET qty=10 WHERE qty=0 AND afile<>'trade_any_vehicle' AND afile<>'trade_any_boat';
;

Remove destroyed vehicles:

DROP EVENT IF EXISTS removeDamagedVehicles;
CREATE EVENT removeDamagedVehicles
   ON SCHEDULE EVERY 1 DAY
   COMMENT 'Removes damaged vehicles'
   DO
     DELETE FROM `Object_DATA` WHERE Damage = 1;
;

Remove abandoned objects that are 2 weeks old and empty:

DROP EVENT IF EXISTS removeObjectEmpty;
CREATE EVENT removeObjectEmpty
   ON SCHEDULE EVERY 1 DAY
   COMMENT 'Removes abandoned storage objects and vehicles'
   DO
     DELETE FROM `Object_DATA` WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 14 DAY) AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') OR (`Inventory` = '[[[],[]],[[],[]],[[],[]]]') )
;

Remove objects and vehicles that haven't been touched in 24 days:

DROP EVENT IF EXISTS removeObjectOld;
CREATE EVENT removeObjectOld
   ON SCHEDULE EVERY 1 DAY
   COMMENT 'Removes old objects and vehicles'
   DO
     DELETE FROM `Object_DATA` WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 DAY) AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 42 DAY)
;

Apply a small amount of damage to structures to allow maintenance after 3 days:

DROP EVENT IF EXISTS setDamageOnAge;
CREATE EVENT setDamageOnAge
   ON SCHEDULE EVERY 1 DAY
   COMMENT 'This sets damage on a wall so that it can be maintained'
   DO
     UPDATE `Object_DATA` SET `Damage`=0.1 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') )
;
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox