Jump to content
salival

[RELEASE] Vehicle Key Changer (updated for Epoch 1.0.6+

Recommended Posts

@salival @kingpapawawa Thank you both

added the two lines in variables.sqf and put the new fn_selfActions.sqf in. Also deleted that one line.

    // Custom below
    s_givemoney_dialog = -1;
    s_bank_dialog = -1;
    s_bank_dialog1 = -1;
    s_bank_dialog2 = -1; 
   
    s_player_checkWallet = -1;
    s_player_copyToKey = -1;
    s_player_claimVehicle = -1;

Share this post


Link to post
Share on other sites
1 hour ago, C0nfig84 said:

How to disable claiming vehicles?

 

Thanks in advance

fn_selfactions remove this..
 

Spoiler

if (_isVehicle && {_characterID == "0"} && {_hasKeyKit} && {!_isMan} && {_isAlive}) then {
        if (s_player_claimVehicle < 0) then {
            _totalKeys = call epoch_tempKeys;
            if (count (_totalKeys select 0) > 0) then {
                s_player_claimVehicle = player addAction [format ["<t color=""#0096FF"">Claim %1</t>",_text],"scripts\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,"claim"],5,false,true];
            };
        };
    } else {
        player removeAction s_player_claimVehicle;
        s_player_claimVehicle = -1;
    };

 

Share this post


Link to post
Share on other sites

What I do is set the price at $150,000  Which is about the cost of a cheap heli.  The ones that cost more I do not let spawn. So players do not clam everything they see. There you go, my 2 cents worth.

Share this post


Link to post
Share on other sites
On 1/29/2018 at 9:16 AM, kingpapawawa said:

fn_selfactions remove this..

Would you need to comment out the following in the fn_selfactions also?

    player removeAction s_player_claimVehicle;
    s_player_claimVehicle = -1;

Share this post


Link to post
Share on other sites
13 hours ago, Thug said:

Would you need to comment out the following in the fn_selfactions also?

    player removeAction s_player_claimVehicle;
    s_player_claimVehicle = -1;

you can comment that out or delete it. also there is "s_player_claimVehicle = -1" in init/variables.sqf

both of those however will not break anything if left alone.

Share this post


Link to post
Share on other sites

Hey guys,

I have finally fixed the bouncing vehicles issue!

This has been running on a few test servers for a few weeks and I haven't heard any issues since so we can maybe classify it as fixed!

https://github.com/oiad/vkc/commit/01bd4df8140d9d3465eeba0831b2780ea22f7dba

Share this post


Link to post
Share on other sites
18 hours ago, salival said:

Hey guys,

I have finally fixed the bouncing vehicles issue!

This has been running on a few test servers for a few weeks and I haven't heard any issues since so we can maybe classify it as fixed!

https://github.com/oiad/vkc/commit/01bd4df8140d9d3465eeba0831b2780ea22f7dba

Great work, you should make this an official [Release]. 

Share this post


Link to post
Share on other sites

Hi guys,

I updated VKC the other day to add removal of thermal and ammo when a vehicle is rekeyed. As usual you can modify this to suit your needs.

Unfortunately rekeying/claiming a vehicle gives it fresh ammo, so we need to remove the ammo to make it "fair" otherwise players are getting a free rearm.

See this commit: https://github.com/oiad/vkc/commit/289fbaf0ba2e3bfce385442c5cfcbcfc302663fa

 

Share this post


Link to post
Share on other sites

Okay... I have the local server (test server) up and running.

All your Modpack is up same as the DZAI and WAI.

Now... I am having some question (obviously is for my ignorance... not for problems in the mod)

So...

1.- How can I make the  "one key vehicle" works

2.- How does the "locate vehicle" works? (I bought a SUV, I disconnected and when reconnected it was no more in Stary safe zone and when I click in the key to "lock" it says that the suv is not in the area)
3,- How do use the Virtual Garage? (I look for videos but cant get it yet)

Thanks a lot and amazing job the one you did!!

 

Share this post


Link to post
Share on other sites

1. VKC basically lets you change a vehicles key or claim an unkeyed vehicle, you just install it as per the README.md

2. Locate Vehicle just searches for the corrosponding key on the server and displays the location of it on the map if it finds it, it will tell you if it can't find it or if the vehicle is destroyed as well.

3. Virtual Garage you get into the seat of a vehicle you want to store, goto your plot pole and then click store, the admin can set up the store fees (price for vehicle + price per gear item), you can then retreive that vehicle later

Share this post


Link to post
Share on other sites

So VKC is not going to allow me to have 1 key in general instead of 1 per vehicle?

The locate vehicle: how do you call it?... you open the map and that's it? or u have to use the key?

The VG... I didnt try it in a plot... my mistake.

Thanks a lot as usual, Salival.  You are amazing teacher in this matter

Share this post


Link to post
Share on other sites
7 hours ago, LadyVal said:

So VKC is not going to allow me to have 1 key in general instead of 1 per vehicle?

The locate vehicle: how do you call it?... you open the map and that's it? or u have to use the key?

The VG... I didnt try it in a plot... my mistake.

Thanks a lot as usual, Salival.  You are amazing teacher in this matter

You can change all your vehicles to 1 key if you like, it won't automatically do it, you have to manually do it

Locate vehicle uses Click Actions as a dependency, you right click your map (changable) and it will list your vehicles on the map

Share this post


Link to post
Share on other sites

Question again...

Locate Vehicles is working as a charm... same as everything else.

so... honestly it is one question and an issue that I am pretty sure it has nothing to do with the VG

Question: the VKC, it is working great but if you sell one of the vehicles the key dissapear from your belt.  How can I avoid that from happening?

And the last one... I has the VG working great on my test server... but, after uploading the dll into GTX every single time we use the VG the server crash and I have this screeninthe console

https://gyazo.com/10be95f74e90810526dcb30027a4b328

I already told GTX and they say it is me doing something wrong.   Obviously, I would love to think they are right because if I am doing something wrong, I can solve it.  What do you think?

Welll.... the most importan right now, is the Key that dissapear when we sell one vehicle.

Thanks a lot again

Share this post


Link to post
Share on other sites
2 hours ago, LadyVal said:

Question again...

Locate Vehicles is working as a charm... same as everything else.

so... honestly it is one question and an issue that I am pretty sure it has nothing to do with the VG

Question: the VKC, it is working great but if you sell one of the vehicles the key dissapear from your belt.  How can I avoid that from happening?

And the last one... I has the VG working great on my test server... but, after uploading the dll into GTX every single time we use the VG the server crash and I have this screeninthe console

https://gyazo.com/10be95f74e90810526dcb30027a4b328

I already told GTX and they say it is me doing something wrong.   Obviously, I would love to think they are right because if I am doing something wrong, I can solve it.  What do you think?

Welll.... the most importan right now, is the Key that dissapear when we sell one vehicle.

Thanks a lot again

I can't answer the issue with Virtual Garage, it's obviously on  GTX's end. If anything, they are missing the Visual C++ redistributables.

As for the key being removed: https://github.com/EpochModTeam/DayZ-Epoch/blob/master/SQF/dayz_code/configVariables.sqf#L68

You need to set that to true

Share this post


Link to post
Share on other sites

@salival  With VKC when its done in safe zone the vehicle flies up in the air and blows up. Not sure if its on my end or not but I did add 
 

Quote


 if (isInTraderCity) exitWith {
            systemChat format[" You cannot use VKC in a safezone!"];
    };

and it seem to fix the problem.

Share this post


Link to post
Share on other sites
29 minutes ago, Hooty said:

@salival  With VKC when its done in safe zone the vehicle flies up in the air and blows up. Not sure if its on my end or not but I did add 
 

and it seem to fix the problem.

There is no difference between a normal area and a safe zone in vkc, vkc doesn't know about safe zones at all

I would think you have not updated the server side scripts for a while, I fixed all bouncing issues a while back have jot heard any issues since

Share this post


Link to post
Share on other sites

Ahoj!
This is really great thanks will save us a lot of times and fiddling about. All working well in game,
I am having a problem which is spamming client RPT with :

Spoiler

Error in expression <if (s_player_copyToKey < 0) then {
if ((_hasKey && {"ItemKeyKit" in weapons play>
  Error position: <_hasKey && {"ItemKeyKit" in weapons play>
  Error Undefined variable in expression: _haskey
File mpmissions\__CUR_MP.namalsk\Custom\fn_selfActions.sqf, line 583

In fn_selfActions.sqf i believe iv merged them how shown in the download, id redone it about 5 times now :( (I made your merges/additions bold to easy find them)

Spoiler

scriptName "Functions\misc\fn_selfActions.sqf";
/***********************************************************
    ADD ACTIONS FOR SELF
    - Function
    - [] call fnc_usec_selfActions;
************************************************************/
private ["_canPickLight","_text","_unlock","_lock","_totalKeys","_temp_keys","_temp_keys_names","_restrict",
"_hasKey","_oldOwner","_hasAttached","_isZombie","_isHarvested","_isMan","_isFuel","_hasRawMeat","_hastinitem","_player_deleteBuild",
"_player_lockUnlock_crtl","_displayName","_hasIgnitors","_menu","_menu1","_allowTow","_liftHeli","_found","_posL","_posC","_height","_attached",
"_combi","_findNearestGen","_humanity_logic","_low_high","_cancel","_buy","_buyV","_humanity","_traderMenu","_warn","_typeOfCursorTarget",
"_isVehicle","_isBicycle","_isDestructable","_isGenerator","_ownerID","_isVehicletype","_hasBarrel","_hasFuel20","_hasFuel5","_hasEmptyFuelCan",
"_itemsPlayer","_hasToolbox","_hasbottleitem","_isAlive","_isPlant","_istypeTent","_upgradeItems","_isDisallowRefuel","_isDog",
"_isModular","_isModularDoor","_isHouse","_isGateOperational","_isGateLockable","_isFence","_isLockableGate","_isUnlocked","_isOpen","_isClosed","_ownerArray","_ownerBuildLock",
"_ownerPID","_speed","_dog","_vehicle","_inVehicle","_cursorTarget","_primaryWeapon","_currentWeapon","_magazinesPlayer","_onLadder","_canDo",
"_nearLight","_vehicleOwnerID","_hasHotwireKit","_isPZombie","_dogHandle","_allowedDistance","_id","_upgrade","_weaponsPlayer","_hasCrowbar",
"_allowed","_hasAccess","_uid","_myCharID","_isLocked"];

_vehicle = vehicle player;
_inVehicle = (_vehicle != player);
_cursorTarget = cursorTarget;
_primaryWeapon = primaryWeapon player;
_currentWeapon = currentWeapon player;
_magazinesPlayer = magazines player;
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
_uid = getPlayerUID player;
_nearLight = nearestObject [player,"LitObject"];
_canPickLight = false;
_myCharID = player getVariable ["CharacterID","0"];
_vehicleOwnerID = _vehicle getVariable ["CharacterID","0"];
_hasHotwireKit = "ItemHotwireKit" in _magazinesPlayer;
_isPZombie = player isKindOf "PZombie_VB";
_dogHandle = player getVariable ["dogID",0];

if (!isNull _nearLight) then {
    if (_nearLight distance player < 4) then {
        _canPickLight = isNull (_nearLight getVariable ["owner",objNull]);
    };
};

//Grab Flare
if (_canPickLight && !dayz_hasLight && !_isPZombie) then {
    if (s_player_grabflare < 0) then {
        _text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");
        s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true];
        s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true];
    };
} else {
    player removeAction s_player_grabflare;
    player removeAction s_player_removeflare;
    s_player_grabflare = -1;
    s_player_removeflare = -1;
};

if (s_player_equip_carry < 0) then {
    if (dayz_onBack != "" && { !_inVehicle && { !_onLadder && { !r_player_unconscious } } }) then {
        dz_plr_carryActionItem = dayz_onBack;
        _text = getText (configFile >> "CfgWeapons" >> dz_plr_carryActionItem >> "displayName");
        s_player_equip_carry = player addAction [
            format [localize "STR_ACTIONS_WEAPON", _text],
            "\z\addons\dayz_code\actions\player_switchWeapon_action.sqf",
            nil, 0.5, false, true];
    };
} else {
    if (dayz_onBack != dz_plr_carryActionItem || { _inVehicle || { _onLadder || { r_player_unconscious } } } ) then {
        player removeAction s_player_equip_carry;
        s_player_equip_carry = -1;
    };
};

//fishing
if ((_currentWeapon in Dayz_fishingItems) && {!dayz_fishingInprogress} && {!_inVehicle} && {!dayz_isSwimming}) then {
    if (s_player_fishing < 0) then {
        s_player_fishing = player addAction [localize "STR_ACTION_CAST", "\z\addons\dayz_code\actions\player_goFishing.sqf",player, 0.5, false, true];
    };
} else {
    player removeAction s_player_fishing;
    s_player_fishing = -1;
};
if ((_primaryWeapon in Dayz_fishingItems) && {!dayz_fishingInprogress} && {_inVehicle && (driver _vehicle != player)}) then {
    if (s_player_fishing_veh < 0) then {
        s_player_fishing_veh = _vehicle addAction [localize "STR_ACTION_CAST", "\z\addons\dayz_code\actions\player_goFishing.sqf",_vehicle, 0.5, false, true];
    };
} else {
    _vehicle removeAction s_player_fishing_veh;
    s_player_fishing_veh = -1;
};

if (_inVehicle) then {
    DZE_myVehicle = _vehicle;
    if (_vehicleOwnerID != "0" && _canDo) then {
        if (s_player_lockUnlockInside_ctrl < 0) then {
            _totalKeys = call epoch_tempKeys;
            _temp_keys = _totalKeys select 0;
            _temp_keys_names = _totalKeys select 1;    
            _hasKey = _vehicleOwnerID in _temp_keys;
            _oldOwner = (_vehicleOwnerID == _uid);
        
            _text = getText (configFile >> "CfgVehicles" >> (typeOf DZE_myVehicle) >> "displayName");
            if (locked DZE_myVehicle) then {
                if (_hasKey || _oldOwner) then {
                    _unlock = DZE_myVehicle addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[DZE_myVehicle,(_temp_keys_names select (_temp_keys find _vehicleOwnerID))], 2, false, true];
                    s_player_lockUnlockInside set [count s_player_lockUnlockInside,_unlock];
                    s_player_lockUnlockInside_ctrl = 1;
                } else {
                    if (_hasHotwireKit) then {
                        _unlock = DZE_myVehicle addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",DZE_myVehicle, 2, true, true];
                    } else {
                        _unlock = DZE_myVehicle addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",DZE_myVehicle, 2, true, true];
                    };
                    s_player_lockUnlockInside set [count s_player_lockUnlockInside,_unlock];
                    s_player_lockUnlockInside_ctrl = 1;
                };
            } else {
                if (_hasKey || _oldOwner) then {
                    _lock = DZE_myVehicle addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",DZE_myVehicle, 1, false, true];
                    s_player_lockUnlockInside set [count s_player_lockUnlockInside,_lock];
                    s_player_lockUnlockInside_ctrl = 1;
                };
            };
        };
    } else {
        {DZE_myVehicle removeAction _x} count s_player_lockUnlockInside;s_player_lockUnlockInside = [];
        s_player_lockUnlockInside_ctrl = -1;
    };
} else {
    {DZE_myVehicle removeAction _x} count s_player_lockUnlockInside;s_player_lockUnlockInside = [];
    s_player_lockUnlockInside_ctrl = -1;
};

if (DZE_HeliLift) then {
    _hasAttached = _vehicle getVariable["hasAttached",false];
    if (_inVehicle && {_vehicle isKindOf "Air"} && {(([_vehicle] call FNC_getPos) select 2) < 30} && {speed _vehicle < 5} && {typeName _hasAttached == "OBJECT"}) then {
        if (s_player_heli_detach < 0) then {
            dayz_myLiftVehicle = _vehicle;
            s_player_heli_detach = dayz_myLiftVehicle addAction [localize "STR_EPOCH_ACTIONS_DETACHVEHICLE","\z\addons\dayz_code\actions\player_heliDetach.sqf",[dayz_myLiftVehicle,_hasAttached],2,false,true];
        };
    } else {
        dayz_myLiftVehicle removeAction s_player_heli_detach;
        s_player_heli_detach = -1;
    };
};

if (DZE_HaloJump) then {
    if (_inVehicle && {_vehicle isKindOf "Air"} && {(([_vehicle] call FNC_getPos) select 2) > 400}) then {
        if (s_halo_action < 0) then {
            DZE_myHaloVehicle = _vehicle;
            s_halo_action = DZE_myHaloVehicle addAction [localize "STR_EPOCH_ACTIONS_HALO","\z\addons\dayz_code\actions\halo_jump.sqf",[],2,false,true];
        };
    } else {
        DZE_myHaloVehicle removeAction s_halo_action;
        s_halo_action = -1;
    };
};

if (DZE_NameTags > 0) then {
    if (s_player_showname < 0 && !_isPZombie) then {
        if (DZE_NameTags < 2) then {
            s_player_showname = 1;
            player setVariable["DZE_display_name",true,true];
        } else {
            s_player_showname = player addAction [localize "STR_EPOCH_ACTIONS_NAMEYES", "\z\addons\dayz_code\actions\display_name.sqf",true, 0, true, false];
            s_player_showname1 = player addAction [localize "STR_EPOCH_ACTIONS_NAMENO", "\z\addons\dayz_code\actions\display_name.sqf",false, 0, true, false];
        };
    };
};

if (_isPZombie) then {
    if (s_player_attack < 0) then {
        s_player_attack = player addAction [localize "STR_EPOCH_ACTIONS_ATTACK", "\z\addons\dayz_code\actions\pzombie\pz_attack.sqf", _cursorTarget, 6, false, true];
    };
    if (s_player_callzombies < 0) then {
        s_player_callzombies = player addAction [localize "STR_EPOCH_ACTIONS_RAISEHORDE", "\z\addons\dayz_code\actions\pzombie\call_zombies.sqf",player, 5, true, false];
    };
    if (s_player_pzombiesvision < 0) then {
        s_player_pzombiesvision = player addAction [localize "STR_EPOCH_ACTIONS_NIGHTVIS", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"];
    };
    if (!isNull _cursorTarget && (player distance _cursorTarget < 3)) then {
        _isZombie = _cursorTarget isKindOf "zZombie_base";
        _isHarvested = _cursorTarget getVariable["meatHarvested",false];
        _isMan = _cursorTarget isKindOf "Man"; //includes animals and zombies
        if (!alive _cursorTarget && _isMan && !_isZombie && !_isHarvested) then {
            if (s_player_pzombiesfeed < 0) then {
                s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",_cursorTarget, 3, true, false];
            };
        } else {
            player removeAction s_player_pzombiesfeed;
            s_player_pzombiesfeed = -1;
        };
    } else {
        player removeAction s_player_pzombiesfeed;
        s_player_pzombiesfeed = -1;
    };
};

// Increase distance only if AIR or SHIP
_allowedDistance = if ((_cursorTarget isKindOf "Air") or (_cursorTarget isKindOf "Ship")) then {8} else {4};

if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cursorTarget < _allowedDistance) && _canDo) then {
//Has some kind of target
    _typeOfCursorTarget = typeOf _cursorTarget;
    _isVehicle = _cursorTarget isKindOf "AllVehicles";
    _isBicycle = _cursorTarget isKindOf "Bicycle";
    _isMan = _cursorTarget isKindOf "Man"; //includes animals and zombies
    _isDestructable = _cursorTarget isKindOf "BuiltItems";
    _isGenerator = _typeOfCursorTarget == "Generator_DZ";
    _isLocked = locked _cursorTarget;
    //_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"]; //Checked in player_flipvehicle
    _isFuel = false;
    _hasBarrel = "ItemFuelBarrel" in _magazinesPlayer;
    _hasFuel20 = "ItemJerrycan" in _magazinesPlayer;
    _hasFuel5 = "ItemFuelcan" in _magazinesPlayer;
    _hasEmptyFuelCan = (("ItemJerrycanEmpty" in _magazinesPlayer) || ("ItemFuelcanEmpty" in _magazinesPlayer) || ("ItemFuelBarrelEmpty" in _magazinesPlayer));
    _itemsPlayer = items player;
    _weaponsPlayer = weapons player;
    _hasCrowbar = "ItemCrowbar" in _itemsPlayer or "MeleeCrowbar" in _weaponsPlayer or dayz_onBack == "MeleeCrowbar";
    _hasToolbox = "ItemToolbox" in _itemsPlayer;
    _hasbottleitem = (("ItemWaterBottle" in _magazinesPlayer) || {"ItemWaterBottleInfected" in _magazinesPlayer} || {"ItemWaterBottleSafe" in _magazinesPlayer} || {"ItemWaterBottleBoiled" in _magazinesPlayer});
    _isAlive = alive _cursorTarget;
    _text = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName");
    _isPlant = _typeOfCursorTarget in Dayz_plants;
    _istypeTent = (_cursorTarget isKindOf "TentStorage_base") or (_cursorTarget isKindOf "IC_Tent");
    _upgradeItems = ["TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3"];
    _characterID = _cursorTarget getVariable ["CharacterID","0"];
    
    if (DZE_permanentPlot) then {
        _id = _uid;
        _ownerID = _cursorTarget getVariable ["ownerPUID","0"];
    } else {
        _id = _myCharID;
        _ownerID = _characterID;
    };

    _isDisallowRefuel = _typeOfCursorTarget in ["M240Nest_DZ","MMT_Civ","MMT_USMC","Old_bike_TK_CIV_EP1","Old_bike_TK_INS_EP1"];    
    _isDog = (_cursorTarget isKindOf "Pastor" || _cursorTarget isKindOf "Fin");
    _isModular = _cursorTarget isKindOf "ModularItems";
    _isModularDoor = _typeOfCursorTarget in ["Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","CinderWallDoor_DZ","CinderWallDoorSmall_DZ"];
    _player_deleteBuild = false;
    _player_lockUnlock_crtl = false;
    
    //fuel tanks
    if (_hasEmptyFuelCan) then {
        {
            if (_cursorTarget isKindOf _x) exitWith {_isFuel = true;};
        } count dayz_fuelsources;
    };

    //remove gathered plant if empty
    if (_isPlant) then {
        _cursorTarget call player_gather;
    };

    //flip vehicle
    if (_isVehicle && {!_isMan} && {!(canMove _cursorTarget)} && {_isAlive} && {player distance _cursorTarget >= 2} && {(count (crew _cursorTarget))== 0} && {((vectorUp _cursorTarget) select 2) < 0.5}) then {
        if (s_player_flipveh < 0) then {
            s_player_flipveh = player addAction [format[localize "str_actions_flipveh",_text], "\z\addons\dayz_code\actions\player_flipvehicle.sqf",_cursorTarget, 1, true, true];
        };
    } else {
        player removeAction s_player_flipveh;
        s_player_flipveh = -1;
    };
    
    //Allow player to fill Fuel can
    if (_hasEmptyFuelCan && _isFuel && _isAlive) then {
        if (s_player_fillfuel < 0) then {
            s_player_fillfuel = player addAction [localize "str_actions_self_10", "\z\addons\dayz_code\actions\jerry_fill.sqf",_cursorTarget, 1, false, true];
        };
    } else {
        player removeAction s_player_fillfuel;
        s_player_fillfuel = -1;
    };
    
    if (damage _cursorTarget < 1) then {
        //Allow player to fill vehicle 210L
        if (_hasBarrel && {!_isMan} && {_isVehicle} && {fuel _cursorTarget < 1} && {!_isDisallowRefuel}) then {
            if (s_player_fillfuel210 < 0) then {
                s_player_fillfuel210 = player addAction [format[localize "str_actions_medical_10",_text,"210"], "\z\addons\dayz_code\actions\refuel.sqf",["ItemFuelBarrel",_cursorTarget], 0, true, true];
            };
        } else {
            player removeAction s_player_fillfuel210;
            s_player_fillfuel210 = -1;
        };
        
        //Allow player to fill vehicle 20L
        if (_hasFuel20 && {!_isMan} && {_isVehicle} && {fuel _cursorTarget < 1} && {!_isDisallowRefuel}) then {
            if (s_player_fillfuel20 < 0) then {
                s_player_fillfuel20 = player addAction [format[localize "str_actions_medical_10",_text,"20"], "\z\addons\dayz_code\actions\refuel.sqf",["ItemJerrycan",_cursorTarget], 0, true, true];
            };
        } else {
            player removeAction s_player_fillfuel20;
            s_player_fillfuel20 = -1;
        };

        //Allow player to fill vehicle 5L
        if (_hasFuel5 && {!_isMan} && {_isVehicle} && {fuel _cursorTarget < 1} && {!_isDisallowRefuel}) then {
            if (s_player_fillfuel5 < 0) then {
                s_player_fillfuel5 = player addAction [format[localize "str_actions_medical_10",_text,"5"], "\z\addons\dayz_code\actions\refuel.sqf",["ItemFuelcan",_cursorTarget], 0, true, true];
            };
        } else {
            player removeAction s_player_fillfuel5;
            s_player_fillfuel5 = -1;
        };
        /*
            Vanilla generator is currently not functional.
            Vanilla generator refuel actions removed for now.
            Epoch generator fill action is below.
        */
        //Allow player to siphon vehicles
        if (_hasEmptyFuelCan && {!_isMan} && {_isVehicle} && {!_isBicycle} && {fuel _cursorTarget > 0}) then {
            if (s_player_siphonfuel < 0) then {
                s_player_siphonfuel = player addAction [format[localize "str_siphon_start"], "\z\addons\dayz_code\actions\siphonFuel.sqf",_cursorTarget, 0, true, true];
            };
        } else {
            player removeAction s_player_siphonfuel;
            s_player_siphonfuel = -1;
        };
    } else {
        player removeAction s_player_fillfuel210;
        s_player_fillfuel210 = -1;
        player removeAction s_player_fillfuel20;
        s_player_fillfuel20 = -1;
        player removeAction s_player_fillfuel5;
        s_player_fillfuel5 = -1;
        player removeAction s_player_siphonfuel;
        s_player_siphonfuel = -1;
    };
    
    //Fireplace Actions check
    if ((_cursorTarget call isInflamed) or (inflamed _cursorTarget)) then {
        _hasRawMeat = {_x in Dayz_meatraw} count _magazinesPlayer > 0;
        //_hastinitem = {_x in boil_tin_cans} count _magazinesPlayer > 0;
        _hasunboiledwater = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"]} count _magazinesPlayer > 0;

        
    //Cook Meat    
        if (_hasRawMeat && !a_player_cooking) then {
            if (s_player_cook < 0) then {
                s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true];
            };
        }; 
    //Boil Water
        if (_hasunboiledwater && !a_player_boil) then {
            if (s_player_boil < 0) then {
                s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true];
            };
        };
    } else {
        if (a_player_cooking) then {
            player removeAction s_player_cook;
            s_player_cook = -1;
        };
        if (a_player_boil) then {
            player removeAction s_player_boil;
            s_player_boil = -1;
        };
    };
    
    if (_isAlive) then {
        _restrict = _typeOfCursorTarget in DZE_restrictRemoval;
    
        //Allow player to remove objects with no ownership or access required
        if (!_restrict && (_isDestructable || _typeOfCursorTarget in DZE_isWreck || _typeOfCursorTarget in DZE_isWreckBuilding || _typeOfCursorTarget in DZE_isRemovable)) then {
            if (_hasToolbox && _hasCrowbar) then {
                _player_deleteBuild = true;
            };
        };
        //Allow player to remove objects only if they have proper ownership or access
        if (_restrict || _isModular || _isModularDoor || _isGenerator || _typeOfCursorTarget in DZE_isDestroyableStorage) then {
            if (_hasToolbox && _hasCrowbar) then {
                _hasAccess = [player, _cursorTarget] call FNC_check_access;
                if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) then {
                    _player_deleteBuild = true;
                };
            };
        };        
        if (_isVehicle) then {
            if ((_characterID != "0") && {!_isMan}) then {
                _player_lockUnlock_crtl = true;
            };
        };
    };
    
    if (_player_deleteBuild) then {
        if (s_player_deleteBuild < 0) then {
            s_player_deleteBuild = player addAction [format[localize "STR_EPOCH_REMOVE",_text], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, false, true];
        };
    } else {
        player removeAction s_player_deleteBuild;
        s_player_deleteBuild = -1;
    };

    //remove Own objects
    if (_ownerID == _id) then {
        //upgrade items
        if (_typeOfCursorTarget in _upgradeItems) then {
            if (s_player_upgradestorage < 0) then {
                _displayName = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName");
                s_player_upgradestorage = player addAction [format[localize "STR_EPOCH_UPGRADE",_displayName], "\z\addons\dayz_code\actions\object_upgradeStorage.sqf",_cursorTarget, 0, false, true];
            };
        } else {
            player removeAction s_player_upgradestorage;
            s_player_upgradestorage = -1
        };
        if (_istypeTent) then {
            //Packing my tent
            if (s_player_packtent < 0) then {
                s_player_packtent = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true];
            };
        } else {
            player removeAction s_player_packtent;
            s_player_packtent = -1;
        };
    } else {
        player removeAction s_player_upgradestorage;
        s_player_upgradestorage = -1;
        player removeAction s_player_packtent;
        s_player_packtent = -1;
    };
    //other tents
    if (_istypeTent) then {
        _hasIgnitors = {_x in DayZ_Ignitors} count _itemsPlayer > 0;
        if ((_hasFuel20 or _hasFuel5 or _hasBarrel) && _hasIgnitors) then {
            if (s_player_destroytent < 0) then {
                s_player_destroytent = player addAction [localize "str_actions_self_destroytent", "\z\addons\dayz_code\actions\player_destroyTent.sqf",_cursorTarget, 0, false, true];
            };
        } else {
            player removeAction s_player_destroytent;
            s_player_destroytent = -1;
        };    
        if (_typeOfCursorTarget in ["IC_DomeTent","IC_Tent"]) then {
            if (s_player_packtentinfected < 0) then {
                s_player_packtentinfected = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true];
            };
        } else {
            player removeAction s_player_packtentinfected;
            s_player_packtentinfected = -1;
        };
        //sleep
        if (s_player_sleep < 0) then {
            s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false, true];
        };
    } else {
        player removeAction s_player_sleep;
        s_player_sleep = -1;
    };
    
    //Study Body
    if (_cursorTarget getVariable["bodyName",""] != "") then {
        if (s_player_studybody < 0) then {
            s_player_studybody = player addAction [localize "str_action_studybody", "\z\addons\dayz_code\actions\study_body.sqf",_cursorTarget, 0, false, true];
        };
    } else {
        player removeAction s_player_studybody;
        s_player_studybody = -1;
    };

    //Repairing Vehicles
    if (_isVehicle && {!_isMan} && {dayz_myCursorTarget != _cursorTarget} && {_hasToolbox} && {damage _cursorTarget < 1} && {_typeOfCursorTarget != "M240Nest_DZ"}) then {
        if (s_player_repair_crtl < 0) then {
            dayz_myCursorTarget = _cursorTarget;
            _menu = dayz_myCursorTarget addAction [localize "str_actions_repairveh", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false];
            if (!_isBicycle) then { //Bike wheels should not give full size tires. Also model does not update to show removed wheels.
                if (!DZE_salvageLocked) then {
                    if (!_isLocked) then {
                        _menu1 = dayz_myCursorTarget addAction [localize "str_actions_salvageveh", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false];
                        s_player_repairActions set [count s_player_repairActions,_menu1];
                    };
                } else {
                    _menu1 = dayz_myCursorTarget addAction [localize "str_actions_salvageveh", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false];
                    s_player_repairActions set [count s_player_repairActions,_menu1];
                };
            };
            s_player_repairActions set [count s_player_repairActions,_menu];
            s_player_repair_crtl = 1;
        } else {
            {dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;
            s_player_repairActions = [];
            s_player_repair_crtl = -1;
        };
    };
    
    if (_typeOfCursorTarget == "Plastic_Pole_EP1_DZ" && {speed player <= 1}) then {
        _hasAccess = [player, _cursorTarget] call FNC_check_access;
        _allowed = ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3) or (_hasAccess select 4));
        if (DZE_permanentPlot) then {
            if (s_player_plotManagement < 0 && _allowed) then {
                s_player_plotManagement = player addAction [format["<t color='#b3e6ff'>%1</t>",localize "STR_EPOCH_ACTIONS_MANAGEPLOT"], "\z\addons\dayz_code\actions\plotManagement\initPlotManagement.sqf", [], 5, false];
            };
        } else {
            if (s_player_maintain_area < 0) then {
                s_player_maintain_area = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTAREA"], "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];
                s_player_maintain_area_force = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_FORCE_MAINTAREA"], "\z\addons\dayz_code\actions\maintain_area.sqf", "force", 5, false];
                s_player_maintain_area_preview = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTPREV"], "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
            };
        };
        if (s_player_plot_boundary < 0 && (_allowed or (_hasAccess select 1))) then {
            s_player_plot_boundary = player addAction [localize "STR_EPOCH_PLOTMANAGEMENT_SHOW_BOUNDARY", "\z\addons\dayz_code\actions\plotManagement\plotToggleMarkers.sqf", "", 1, false];
        };
    } else {
        player removeAction s_player_plotManagement;
        s_player_plotManagement = -1;
        player removeAction s_player_maintain_area;
        s_player_maintain_area = -1;
        player removeAction s_player_maintain_area_force;
        s_player_maintain_area_force = -1;
        player removeAction s_player_maintain_area_preview;
        s_player_maintain_area_preview = -1;
        player removeAction s_player_plot_boundary;
        s_player_plot_boundary = -1;
    };
    
    if (DZE_HeliLift) then {
        _liftHeli = objNull;
        _found = false;    
        _allowTow = false;
        if ((count (crew _cursorTarget)) == 0) then {
            {
                if (!_allowTow) then {
                    _allowTow = _cursorTarget isKindOf _x;
                };
            } count DZE_HeliAllowToTow;
        };

        if (_allowTow) then {
            {
                if (!_found) then {
                    _posL = [_x] call FNC_getPos;
                    _posC = [_cursorTarget] call FNC_getPos;
                    _height = (_posL select 2) - (_posC select 2);
                    _hasAttached = _x getVariable["hasAttached",false];
                    if ((_height < 15) && {_height > 5} && {typeName _hasAttached != "OBJECT"}) then {
                        if (((abs((_posL select 0) - (_posC select 0))) < 10) && {(abs((_posL select 1) - (_posC select 1))) < 10}) then {
                            _liftHeli = _x;
                            _found = true;
                        };
                    };
                };
            } count (player nearEntities [DZE_HeliAllowTowFrom,15]);
        };

        _attached = _cursorTarget getVariable["attached",false];
        if (_found && {_allowTow} && {!_isLocked} && {!_isPZombie} && {typeName _attached != "OBJECT"}) then {
            if (s_player_heli_lift < 0) then {
                s_player_heli_lift = player addAction [localize "STR_EPOCH_ACTIONS_ATTACHTOHELI", "\z\addons\dayz_code\actions\player_heliLift.sqf",[_liftHeli,_cursorTarget], -10, false, true];
            };
        } else {
            player removeAction s_player_heli_lift;
            s_player_heli_lift = -1;
        };
    };
    
    // Allow Owner to lock and unlock vehicle  
    if (_player_lockUnlock_crtl) then {
        if (s_player_lockUnlock_crtl < 0) then {
            _totalKeys = call epoch_tempKeys;
            _temp_keys = _totalKeys select 0;
            _temp_keys_names = _totalKeys select 1;
            _hasKey = _characterID in _temp_keys;
            _oldOwner = (_characterID == _uid);
            if (_isLocked) then {
                if (_hasKey || _oldOwner) then {
                    _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (_temp_keys find _characterID))], 2, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                } else {
                    if (_hasHotwireKit) then {
                        _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true];
                    } else {
                        _unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, false, true];
                    };
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                };
            } else {
                if (_hasKey || _oldOwner) then {
                    _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_lock];
                    s_player_lockUnlock_crtl = 1;
                };
            };
        };
        if (s_player_copyToKey < 0) then {
            if ((_hasKey && {"ItemKeyKit" in weapons player} && {(count _temp_keys) > 1} && {!_isLocked}) || {_cursorTarget getVariable ["hotwired",false]}) then {
                s_player_copyToKey = player addAction [format["<t color='#0059FF'>%1</t>",localize "STR_CL_VKC_CHANGE_ACTION"],"scripts\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,if (_cursorTarget getVariable ["hotwired",false]) then {"claim"} else {"change"}],5,false,true];
            };
        };

    } else {
        {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
        s_player_lockUnlock_crtl = -1;
        player removeAction s_player_copyToKey;
        s_player_copyToKey = -1;

    };
    
    // gear access on surrendered player
    if (isPlayer _cursorTarget && {_isAlive} && {_cursorTarget getVariable ["DZE_Surrendered",false]}) then {
        if (s_player_SurrenderedGear < 0) then {
            s_player_SurrenderedGear = player addAction [localize "STR_UI_GEAR", "\z\addons\dayz_code\actions\surrender_gear.sqf",_cursorTarget, 1, true, true];
        };
    } else {
        player removeAction s_player_SurrenderedGear;
        s_player_SurrenderedGear = -1;
    };

    // Allow manage door
    if (DZE_doorManagement && (_typeOfCursorTarget in DZE_DoorsLocked)) then {
        // Check player access
        _hasAccess = [player, _cursorTarget] call FNC_check_access;
        if (s_player_manageDoor < 0 && ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3) or (_hasAccess select 4) or (_hasAccess select 5) or (_hasAccess select 6))) then {
            s_player_manageDoor = player addAction [format["<t color='#b3e6ff'>%1</t>", localize "STR_EPOCH_ACTIONS_MANAGEDOOR"], "\z\addons\dayz_code\actions\doorManagement\initDoorManagement.sqf", _cursorTarget, 5, false];
        };
    } else {
        player removeAction s_player_manageDoor;
        s_player_manageDoor = -1;
    };

    //Allow owner to unlock vault
    if ((_typeOfCursorTarget in DZE_LockableStorage) && {_characterID != "0"} && {player distance _cursorTarget < 3} && {!keypadCancel}) then {
        if (s_player_unlockvault < 0) then {
            if (_typeOfCursorTarget in DZE_LockedStorage) then {
                if (_characterID == dayz_combination || _ownerID == _uid) then {
                    _combi = player addAction [format[localize "STR_EPOCH_ACTIONS_OPEN",_text], "\z\addons\dayz_code\actions\vault_unlock.sqf",_cursorTarget, 0, false, true];
                    s_player_combi set [count s_player_combi,_combi];
                } else {
                    _combi = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true];
                    s_player_combi set [count s_player_combi,_combi];
                };
                s_player_unlockvault = 1;
            } else {
                if (_characterID != dayz_combination && _ownerID != _uid) then {
                    _combi = player addAction [localize "STR_EPOCH_ACTIONS_RECOMBO", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true];
                    s_player_combi set [count s_player_combi,_combi];
                    s_player_unlockvault = 1;
                };
            };
        };
    } else {
        {player removeAction _x} count s_player_combi;s_player_combi = [];
        s_player_unlockvault = -1;
    };

    //Allow owner to pack vault
    if ((_typeOfCursorTarget in DZE_UnLockedStorage) && {_characterID != "0"} && {player distance _cursorTarget < 3}  && {!keypadCancel}) then {
        if (s_player_lockvault < 0) then {
            if (_characterID == dayz_combination || _ownerID == _uid) then {
                s_player_lockvault = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true];
            };
        };
        if (s_player_packvault < 0 && (_characterID == dayz_combination || _ownerID == _uid)) then {
            s_player_packvault = player addAction [format["<t color='#ff0000'>%1</t>",(format[localize "STR_EPOCH_ACTIONS_PACK",_text])], "\z\addons\dayz_code\actions\vault_pack.sqf",_cursorTarget, 0, false, true];
        };
    } else {
        player removeAction s_player_packvault;
        s_player_packvault = -1;
        player removeAction s_player_lockvault;
        s_player_lockvault = -1;
    };

    //Player Deaths
    if (_typeOfCursorTarget == "Info_Board_EP1") then {
        if (s_player_information < 0) then {
            s_player_information = player addAction [localize "STR_EPOCH_ACTIONS_MURDERS", "\z\addons\dayz_code\actions\list_playerDeaths.sqf",[], 7, false, true];
        };
    } else {
        player removeAction s_player_information;
        s_player_information = -1;
    };
    
    //Fuel Pump
    if (_typeOfCursorTarget in dayz_fuelpumparray) then {
        if (s_player_fuelauto < 0) then {        
            // check if Generator_DZ is running within 30 meters
            _findNearestGen = {((alive _x) && (_x getVariable ["GeneratorRunning",false]))} count (([player] call FNC_getPos) nearObjects ["Generator_DZ",30]);
            
            // show that pump needs power if no generator nearby.
            if (_findNearestGen > 0) then {
                s_player_fuelauto = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true];
            } else {
                s_player_fuelauto = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_NEEDPOWER"], "",[], 0, false, true];
            };
        };
    } else {
        player removeAction s_player_fuelauto;
        s_player_fuelauto = -1;
    };

    //Fuel Pump on truck
    if (_typeOfCursorTarget in DZE_fueltruckarray && _isAlive) then {
        if (s_player_fuelauto2 < 0) then {
            // show that fuel truck pump needs power.
            if (isEngineOn _cursorTarget) then {
                s_player_fuelauto2 = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",_cursorTarget, 0, false, true];
            } else {
                s_player_fuelauto2 = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_NEEDPOWER"], "",[], 0, false, true];
            };
        };
    } else {
        player removeAction s_player_fuelauto2;
        s_player_fuelauto2 = -1;
    };

    // inplace upgrade tool
    if ((_cursorTarget isKindOf "ModularItems") || (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") || (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
        if ((s_player_lastTarget select 0) != _cursorTarget) then {
            if (s_player_upgrade_build > 0) then {
                player removeAction s_player_upgrade_build;
                s_player_upgrade_build = -1;
            };
        };
        if (s_player_upgrade_build < 0) then {
            _hasAccess = [player, _cursorTarget] call FNC_check_access;
            _upgrade = getArray (configFile >> "CfgVehicles" >> (typeOf _cursorTarget) >> "upgradeBuilding");
            if (((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) && (count _upgrade) > 0) then {
                s_player_lastTarget set [0,_cursorTarget];
                s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_UPGRADE",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true];
            };
        };
    } else {
        player removeAction s_player_upgrade_build;
        s_player_upgrade_build = -1;
    };
    
    // downgrade system
    if (DZE_Lock_Door == _characterID && {!keypadCancel} && {_cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" || _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base"}) then {
        if ((s_player_lastTarget select 1) != _cursorTarget) then {
            if (s_player_downgrade_build > 0) then {    
                player removeAction s_player_downgrade_build;
                s_player_downgrade_build = -1;
            };
        };
        if (s_player_downgrade_build < 0) then {
            _hasAccess = [player, _cursorTarget] call FNC_check_access;
            if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) then {
                s_player_lastTarget set [1,_cursorTarget];
                s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true];
            };
        };
    } else {
        player removeAction s_player_downgrade_build;
        s_player_downgrade_build = -1;
    };

    // inplace maintenance tool
    if ((damage _cursorTarget >= DZE_DamageBeforeMaint) && {_cursorTarget isKindOf "ModularItems" || _cursorTarget isKindOf "DZE_Housebase" || _typeOfCursorTarget == "LightPole_DZ"}) then {
        if ((s_player_lastTarget select 2) != _cursorTarget) then {
            if (s_player_maint_build > 0) then {
                player removeAction s_player_maint_build;
                s_player_maint_build = -1;
            };
        };
        if (s_player_maint_build < 0) then {
            _hasAccess = [player, _cursorTarget] call FNC_check_access;
            if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) then {
                _text2 = _text + " (" + str(round ((damage _cursorTarget) * 100)) + "% damaged)";
                s_player_lastTarget set [2,_cursorTarget];
                s_player_maint_build = player addAction [format["%1 %2",localize "STR_EPOCH_ACTIONS_MAINTAIN",_text2], "\z\addons\dayz_code\actions\player_buildingMaint.sqf",_cursorTarget, -2, false, true];
            };
        };
    } else {
        player removeAction s_player_maint_build;
        s_player_maint_build = -1;
    };

    //Start Generator
    if (_isGenerator) then {
        if (s_player_fillgen < 0) then {    
            // check if not running 
            if (_cursorTarget getVariable ["GeneratorRunning", false]) then {
                s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR1", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true];                
            } else {
                // check if not filled and player has jerry.
                if (_cursorTarget getVariable ["GeneratorFilled", false]) then {
                    s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR2", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true];
                } else {
                    if (_hasFuel20 or _hasFuel5 or _hasBarrel) then {
                        s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR3", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true];
                    };
                };
            };
        };
    } else {
        player removeAction s_player_fillgen;
        s_player_fillgen = -1;
    };

    //Towing with tow truck
    /*
    if(_typeOfCursorTarget == "TOW_DZE") then {
        if (s_player_towing < 0) then {
            if(!(_cursorTarget getVariable ["DZEinTow", false])) then {
                s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true];                
            } else {
                s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true];                
            };
        };
    } else {
        player removeAction s_player_towing;
        s_player_towing = -1;
    };
    */
    
    if (_isVehicle && {_characterID == "0"} && {"ItemKeyKit" in weapons player} && {!_isMan} && {_isAlive}) then {
        if (s_player_claimVehicle < 0) then {
            _totalKeys = call epoch_tempKeys;
            if (count (_totalKeys select 0) > 0) then {
                s_player_claimVehicle = player addAction [format["<t color='#0059FF'>%1</t>",format[localize "STR_CL_VKC_CLAIM_ACTION",_text]],"scripts\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,"claim"],5,false,true];
            };
        };
    } else {
        player removeAction s_player_claimVehicle;
        s_player_claimVehicle = -1;
    };

    // Take Clothes by Zabn
    if (_isMan && {!_isAlive} && {!(_cursorTarget isKindOf "Animal")} && {!(_cursorTarget isKindOf "zZombie_base")} && {!(_cursorTarget getVariable["clothesTaken",false])}) then {
    if (s_player_clothes < 0) then {
            s_player_clothes = player addAction [format["<t color='#0059FF'>%1</t>",localize "STR_CL_TC_TAKE_CLOTHES"],"Custom\takeClothes.sqf",_cursorTarget,0, false,true];
        };
    } else {
    player removeAction s_player_clothes;
    s_player_clothes = -1;
    };

    // All Traders
    if (_isMan && {!(isPlayer _cursorTarget)} && {_typeOfCursorTarget in serverTraders} && {!_isPZombie}) then {
        if (s_player_parts_crtl < 0) then {
            _humanity = player getVariable ["humanity",0];
            _traderMenu = call compile format["menu_%1;",_typeOfCursorTarget];        
            _low_high = localize "STR_EPOCH_ACTIONS_HUMANITY_LOW";
            _humanity_logic = false;
            if ((_traderMenu select 2) == "friendly") then {
                _humanity_logic = (_humanity < -5000);
            };
            if ((_traderMenu select 2) == "hostile") then {
                _low_high = localize "STR_EPOCH_ACTIONS_HUMANITY_HIGH";
                _humanity_logic = (_humanity > -5000);
            };
            if ((_traderMenu select 2) == "hero") then {
                _humanity_logic = (_humanity < 5000);
            };
            if (_humanity_logic) then {
                _cancel = player addAction [format[localize "STR_EPOCH_ACTIONS_HUMANITY",_low_high], "\z\addons\dayz_code\actions\trade_cancel.sqf",["na"], 0, true, false];
                s_player_parts set [count s_player_parts,_cancel];
            } else {
                // Static Menu
                {
                    _buy = player addAction [format["Trade %1 %2 for %3 %4",(_x select 3),(_x select 5),(_x select 2),(_x select 6)], "\z\addons\dayz_code\actions\trade_items_wo_db.sqf",[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4),(_x select 5),(_x select 6)], (_x select 7), true, true];
                    s_player_parts set [count s_player_parts,_buy];        
                } count (_traderMenu select 1);
                if (DZE_ConfigTrader) then {
                    _buyV = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\AdvancedTrading\init.sqf",(_traderMenu select 0), 999, true, false];
                    s_player_parts set [count s_player_parts,_buyV];
                } else {
                    // Database menu
                    _buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 999, true, false];
                    s_player_parts set [count s_player_parts,_buy];
                };
            };
            s_player_parts_crtl = 1;    
        };
    } else {
        {player removeAction _x} count s_player_parts;s_player_parts = [];
        s_player_parts_crtl = -1;
    };
    
    if (dayz_tameDogs) then {
        //Dog
        _hasRawMeat = {_x in Dayz_meatraw} count _magazinesPlayer > 0;
        if (_isDog && {_hasRawMeat} && {_isAlive} && {_ownerID == "0"} && {player getVariable ["dogID",0] == 0}) then {
            if (s_player_tamedog < 0) then {
                s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\dog\tame_dog.sqf", _cursorTarget, 1, false, true];
            };
        } else {
            player removeAction s_player_tamedog;
            s_player_tamedog = -1;
        };
        if (_isDog && {_ownerID == _id} && {_isAlive}) then {
            if (s_player_feeddog < 0 && _hasRawMeat) then {
                s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true];
            };
            if (s_player_waterdog < 0 && _hasbottleitem) then {
                s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true];
            };
            if (s_player_staydog < 0) then {
                if (_dogHandle getFSMVariable "_actionLieDown") then { _text = "str_actions_liedog"; } else { _text = "str_actions_sitdog"; };
                s_player_staydog = player addAction [localize _text,"\z\addons\dayz_code\actions\dog\stay.sqf", _dogHandle, 5, false, true];
            };
            if (s_player_trackdog < 0) then {
                s_player_trackdog = player addAction [localize "str_actions_trackdog","\z\addons\dayz_code\actions\dog\track.sqf", _dogHandle, 4, false, true];
            };
            if (s_player_barkdog < 0) then {
                s_player_barkdog = player addAction [localize "str_actions_barkdog","\z\addons\dayz_code\actions\dog\speak.sqf", _cursorTarget, 3, false, true];
            };
            if (s_player_warndog < 0) then {
                _warn = _dogHandle getFSMVariable "_watchDog";
                if (_warn) then { _text = localize "str_epoch_player_247"; _warn = false; } else { _text = localize "str_epoch_player_248"; _warn = true; };
                s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true];        
            };
            if (s_player_followdog < 0) then {
                s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true];
            };
        } else {
            player removeAction s_player_feeddog;
            s_player_feeddog = -1;
            player removeAction s_player_waterdog;
            s_player_waterdog = -1;
            player removeAction s_player_staydog;
            s_player_staydog = -1;
            player removeAction s_player_trackdog;
            s_player_trackdog = -1;
            player removeAction s_player_barkdog;
            s_player_barkdog = -1;
            player removeAction s_player_warndog;
            s_player_warndog = -1;
            player removeAction s_player_followdog;
            s_player_followdog = -1;
        };
    };
} else {
    //Engineering
    player removeAction s_player_plot_boundary;
    s_player_plot_boundary = -1;
    player removeAction s_player_plotManagement;
    s_player_plotManagement = -1;
    {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
    player removeAction s_player_repair_crtl;
    s_player_repair_crtl = -1;
    dayz_myCursorTarget = objNull;
    player removeAction s_player_flipveh;
    s_player_flipveh = -1;
    player removeAction s_player_sleep;
    s_player_sleep = -1;
    player removeAction s_player_deleteBuild;
    s_player_deleteBuild = -1;
    player removeAction s_player_cook;
    s_player_cook = -1;
    player removeAction s_player_boil;
    s_player_boil = -1;
    player removeAction s_player_packtent;
    s_player_packtent = -1;
    player removeAction s_player_packtentinfected;
    s_player_packtentinfected = -1;
    player removeAction s_player_fillfuel;
    s_player_fillfuel = -1;
    player removeAction s_player_studybody;
    s_player_studybody = -1;
    //fuel
    player removeAction s_player_fillfuel210;
    s_player_fillfuel210 = -1;
    player removeAction s_player_fillfuel20;
    s_player_fillfuel20 = -1;
    player removeAction s_player_fillfuel5;
    s_player_fillfuel5 = -1;
    //Allow player to siphon vehicle fuel
    player removeAction s_player_siphonfuel;
    s_player_siphonfuel = -1;
    //Allow player to gather
    player removeAction s_player_gather;
    s_player_gather = -1;
    player removeAction s_player_destroytent;
    s_player_destroytent = -1;
    // player removeAction s_player_attach_bomb;
    //  s_player_attach_bomb = -1;
    player removeAction s_player_upgradestorage;
    s_player_upgradestorage = -1;
    /* //Unlock,Lock // Vanilla base building currently not used in Epoch
    player removeAction s_player_setCode;
    s_player_setCode = -1;
    player removeAction s_player_lockhouse;
    s_player_lockhouse = -1;
    player removeAction s_player_unlockhouse;
    s_player_unlockhouse = -1;
    player removeAction s_player_openGate;
    s_player_openGate = -1;
    player removeAction s_player_CloseGate;
    s_player_CloseGate = -1;
    player removeAction s_player_breakinhouse;
    s_player_breakinhouse = -1;
    player removeAction s_player_BuildUnLock;
    s_player_BuildUnLock = -1;
    player removeAction s_player_BuildLock;
    s_player_BuildLock = -1;*/
    {player removeAction _x} count s_player_combi;s_player_combi = [];    
    s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
    {player removeAction _x} count s_player_parts;s_player_parts = [];
    s_player_parts_crtl = -1;
    {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
    s_player_lockUnlock_crtl = -1;
    player removeAction s_player_SurrenderedGear;
    s_player_SurrenderedGear = -1;
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_force;
    s_player_maintain_area_force = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;    
    player removeAction s_player_tamedog;
    s_player_tamedog = -1;
    player removeAction s_player_feeddog;
    s_player_feeddog = -1;
    player removeAction s_player_waterdog;
    s_player_waterdog = -1;
    player removeAction s_player_staydog;
    s_player_staydog = -1;
    player removeAction s_player_trackdog;
    s_player_trackdog = -1;
    player removeAction s_player_barkdog;
    s_player_barkdog = -1;
    player removeAction s_player_warndog;
    s_player_warndog = -1;
    player removeAction s_player_followdog;
    s_player_followdog = -1;
    player removeAction s_player_unlockvault;
    s_player_unlockvault = -1;
    player removeAction s_player_packvault;
    s_player_packvault = -1;
    player removeAction s_player_lockvault;
    s_player_lockvault = -1;
    player removeAction s_player_information;
    s_player_information = -1;
    player removeAction s_player_fillgen;
    s_player_fillgen = -1;
    player removeAction s_player_upgrade_build;
    s_player_upgrade_build = -1;
    player removeAction s_player_maint_build;
    s_player_maint_build = -1;
    player removeAction s_player_downgrade_build;
    s_player_downgrade_build = -1;
    player removeAction s_player_towing;
    s_player_towing = -1;
    player removeAction s_player_fuelauto;
    s_player_fuelauto = -1;
    player removeAction s_player_fuelauto2;
    s_player_fuelauto2 = -1;
    player removeAction s_player_manageDoor;
    s_player_manageDoor = -1;
    player removeAction s_player_copyToKey;
    s_player_copyToKey = -1;
    player removeAction s_player_claimVehicle;
    s_player_claimVehicle = -1;

    player removeAction s_player_clothes;
    s_player_clothes = -1;
};

//Dog actions on player self
if (_dogHandle > 0) then {
    _dog = _dogHandle getFSMVariable "_dog";
    if (isNil "_dog") exitWith {};
    if (isNil "_ownerID") then {_ownerID = "0"};
    if (_canDo && !_inVehicle && alive _dog && !(_ownerID in [_myCharID,_uid])) then {
        if (s_player_movedog < 0) then {
            s_player_movedog = player addAction [localize "str_actions_movedog", "\z\addons\dayz_code\actions\dog\move.sqf", player getVariable ["dogID",0], 1, false, true];
        };
        if (s_player_speeddog < 0) then {
            _text = localize "str_epoch_player_249";
            _speed = 0;
            if (_dog getVariable ["currentSpeed",1] == 0) then { _speed = 1; _text = localize "str_epoch_player_250"; };
            s_player_speeddog = player addAction [format[localize "str_actions_speeddog", _text], "\z\addons\dayz_code\actions\dog\speed.sqf",[player getVariable ["dogID",0],_speed], 0, false, true];
        };
        if (s_player_calldog < 0) then {
            s_player_calldog = player addAction [localize "str_actions_calldog", "\z\addons\dayz_code\actions\dog\follow.sqf", [player getVariable ["dogID",0], true], 2, false, true];
        };
    };
} else {
    player removeAction s_player_movedog;        
    s_player_movedog = -1;
    player removeAction s_player_speeddog;
    s_player_speeddog = -1;
    player removeAction s_player_calldog;
    s_player_calldog = -1;
};

//Monitor
player setVariable ["selfActions", diag_ticktime, false];
 

And in Variables.sqf
 

Spoiler

disableSerialization;
vkc_claimPrice = 2500; // Amount in worth for claiming a vehicle.
vkc_changePrice = 2500; // Amount in worth for changing the key for a vehicle.
vkc_clearAmmo = true; // Clear the ammo of vehicles after they have been rekeyed/claimed? (stops users getting a free rearm)
vkc_disableThermal = [""]; // Array of vehicle config classes as well as vehicle classnames to disable thermal on when being spawned. i.e: ["All","Land","Air","Ship","StaticWeapon","AH1Z","MTVR"];

//Bloodsuckers
dzn_ns_bloodsucker = true; //Toggle bloodsuckers on and off.
dzn_ns_bloodsucker_den = 0.30; //Variable sets the spawn chance of bloodsuckers. Choose a number between 0 and 1. 0.25
ns_blowout = true;
ns_blowout_dayz = true;
ns_blow_delaymod = 0.74;    //0.74
//AII
ns_aii_l_status = 1; //AII module light system: 0 = off, 1 = on.
ns_aii_l_intensity = 0.05; //Adjust the AII lighting intensity
//Model Variables
Bandit1_DZ = "Bandit1_DZ";
BanditW1_DZ = "BanditW1_DZ";
Survivor1_DZ = "Survivor1_DZ";
Survivor2_DZ = "Survivor2_DZ";
SurvivorW2_DZ = "SurvivorW2_DZ";
Sniper1_DZ = "Sniper1_DZ";
Camo1_DZ = "Camo1_DZ";
Soldier1_DZ = "Soldier1_DZ";
Rocket_DZ = "Rocket_DZ";
// EPOCH ADDITIONS
Bandit2_DZ = "Bandit2_DZ";
BanditW2_DZ = "BanditW2_DZ";
SurvivorW3_DZ = "SurvivorW2_DZ";

//Rolling Msg system
Message_1 = "";
Message_2 = "";
Message_3 = "";
Message_1_time = 0;
Message_2_time = 0;
Message_3_time = 0;
//Kill Feed
death_1 = "";
death_2 = "";
death_3 = "";
death_4 = "";
death_1_time = 0;
death_2_time = 0;
death_3_time = 0;
death_4_time = 0;

//OpenTarget timer
OpenTarget_Time = 0;

///Player classes
AllPlayers = ["Sniper1W_DZN","CamoWinterW_DZN","CamoWinter_DZN","Survivor_DZ","Survivor1_DZ","SurvivorW2_DZ","Survivor2_DZ","Sniper1_DZ","Soldier1_DZ","Camo1_DZ","BanditW1_DZ","Bandit1_DZ","Survivor3_DZ","SurvivorWcombat_DZ","SurvivorWdesert_DZ","SurvivorWurban_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ","Bandit2_DZ","BanditW2_DZ","Soldier_Crew_PMC","Rocket_DZ","Rocker1_DZ","Rocker2_DZ","Rocker3_DZ","Rocker4_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","Soldier_TL_PMC_DZ","Soldier_Sniper_PMC_DZ","Soldier_Bodyguard_AA12_PMC_DZ","Drake_Light_DZ","CZ_Special_Forces_GL_DES_EP1_DZ","TK_INS_Soldier_EP1_DZ","TK_INS_Warlord_EP1_DZ","FR_OHara_DZ","FR_Rodriguez_DZ","CZ_Soldier_Sniper_EP1_DZ","Graves_Light_DZ","GUE_Soldier_MG_DZ","GUE_Soldier_Sniper_DZ","GUE_Soldier_Crew_DZ","GUE_Soldier_CO_DZ","GUE_Soldier_2_DZ","TK_Special_Forces_MG_EP1_DZ","TK_Soldier_Sniper_EP1_DZ","TK_Commander_EP1_DZ","RU_Soldier_Crew_DZ","INS_Lopotev_DZ","INS_Soldier_AR_DZ","INS_Soldier_CO_DZ","INS_Bardak_DZ","INS_Worker2_DZ","USMC_Soldier_Officer_DZ","USMC_Soldier_MG_DZ","USMC_Soldier_Pilot_DZ","FR_TL_DZ","FR_R_DZ","FR_Marksman_DZ","FR_Assault_R_DZ","RU_Soldier_DZ","RU_Soldier_Officer_DZ","RUS_Soldier1_DZ","RUS_Commander_DZ","MVD_Soldier_DZ","Ins_Soldier_2_DZ","Ins_Commander_DZ","Ins_Soldier_Crew_DZ","CDF_Soldier_DZ","Doctor_DZ","Assistant_DZ","Worker1_DZ","Worker3_DZ","Worker4_DZ","TK_CIV_Takistani01_EP1_DZ","TK_CIV_Takistani03_EP1_DZ","TK_CIV_Takistani04_EP1_DZ","TK_CIV_Takistani06_EP1_DZ","TK_INS_Soldier_AR_EP1_DZ","TK_GUE_Soldier_EP1_DZ","CZ_Soldier_SL_DES_EP1_DZ","US_Soldier_EP1_DZ","UN_CDF_Soldier_Guard_EP1_DZ","UN_CDF_Soldier_EP1_DZ","GER_Soldier_TL_EP1_DZ","BAF_Soldier_Officer_MTP_DZ","BAF_Soldier_N_MTP_DZ","FR_Sapper_DZ"];
DayZ_Male = ["Sniper1W_DZN","CamoWinterW_DZN","CamoWinter_DZN","Survivor_DZ","Survivor1_DZ","Survivor2_DZ","Survivor3_DZ","Sniper1_DZ","Soldier1_DZ","Camo1_DZ","Bandit1_DZ","Bandit2_DZ","Soldier_Crew_PMC","Rocket_DZ","Rocker1_DZ","Rocker2_DZ","Rocker3_DZ","Rocker4_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","Soldier_TL_PMC_DZ","Soldier_Sniper_PMC_DZ","Soldier_Bodyguard_AA12_PMC_DZ","Drake_Light_DZ","CZ_Special_Forces_GL_DES_EP1_DZ","TK_INS_Soldier_EP1_DZ","TK_INS_Warlord_EP1_DZ","FR_OHara_DZ","FR_Rodriguez_DZ","CZ_Soldier_Sniper_EP1_DZ","Graves_Light_DZ","GUE_Soldier_MG_DZ","GUE_Soldier_Sniper_DZ","GUE_Soldier_Crew_DZ","GUE_Soldier_CO_DZ","GUE_Soldier_2_DZ","TK_Special_Forces_MG_EP1_DZ","TK_Soldier_Sniper_EP1_DZ","TK_Commander_EP1_DZ","RU_Soldier_Crew_DZ","INS_Lopotev_DZ","INS_Soldier_AR_DZ","INS_Soldier_CO_DZ","INS_Bardak_DZ","INS_Worker2_DZ","USMC_Soldier_Officer_DZ","USMC_Soldier_MG_DZ","USMC_Soldier_Pilot_DZ","FR_TL_DZ","FR_R_DZ","FR_Marksman_DZ","FR_Assault_R_DZ","RU_Soldier_DZ","RU_Soldier_Officer_DZ","RUS_Soldier1_DZ","RUS_Commander_DZ","MVD_Soldier_DZ","Ins_Soldier_2_DZ","Ins_Commander_DZ","Ins_Soldier_Crew_DZ","CDF_Soldier_DZ","Doctor_DZ","Assistant_DZ","Worker1_DZ","Worker3_DZ","Worker4_DZ","TK_CIV_Takistani01_EP1_DZ","TK_CIV_Takistani03_EP1_DZ","TK_CIV_Takistani04_EP1_DZ","TK_CIV_Takistani06_EP1_DZ","TK_INS_Soldier_AR_EP1_DZ","TK_GUE_Soldier_EP1_DZ","CZ_Soldier_SL_DES_EP1_DZ","US_Soldier_EP1_DZ","UN_CDF_Soldier_Guard_EP1_DZ","UN_CDF_Soldier_EP1_DZ","GER_Soldier_TL_EP1_DZ","BAF_Soldier_Officer_MTP_DZ","BAF_Soldier_N_MTP_DZ","FR_Sapper_DZ"];
DayZ_Female = ["Sniper1W_DZN","CamoWinterW_DZN","CamoWinter_DZN","SurvivorW2_DZ","BanditW1_DZ","BanditW2_DZ","SurvivorWcombat_DZ","SurvivorWurban_DZ","SurvivorWdesert_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ"];

//Classnames for specific items
MeleeWeapons = ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeBaseball","MeleeBaseBallBat","MeleeBaseBallBatBarbed","MeleeBaseBallBatNails","MeleeFishingPole","MeleeSledge"];
MeleeMagazines = ["Hatchet_Swing","Crowbar_Swing","Machete_Swing","Bat_Swing","BatBarbed_Swing","BatNails_Swing","Fishing_Swing","Sledge_Swing"];
MeleeAmmo = ["Hatchet_Swing_Ammo","Crowbar_Swing_Ammo","Machete_Swing_Ammo","Bat_Swing_Ammo","BatBarbed_Swing_Ammo","BatNailed_Swing_Ammo","Fishing_Swing_Ammo","Sledge_Swing_Ammo","Chainsaw_Swing_Ammo"];
Dayz_fishingItems = ["MeleeFishingPole"];
Dayz_plants = ["Dayz_Plant1","Dayz_Plant2","Dayz_Plant3"];
Dayz_attachment_array = ["Attachment_ACG","Attachment_AIM"];
//DayZ_Tents = ["TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4"]
//DayZ_Stashs = ["StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4"]
//DayZ_cutter = ["Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","CamoNet_DZ"]
DayZ_Backpacks = ["DZ_Patrol_Pack_EP1","DZ_Assault_Pack_EP1","DZ_Czech_Vest_Pouch","DZ_ALICE_Pack_EP1","DZ_TK_Assault_Pack_EP1","DZ_British_ACU","DZ_CivilBackpack_EP1","DZ_Backpack_EP1","DZ_TerminalPack_EP1","DZ_CompactPack_EP1","DZ_GunBag_EP1","DZ_LargeGunBag_EP1"];
Dayz_Gutting = ["ItemKnife","ItemKnife5","ItemKnife4","ItemKnife3","ItemKnife2","ItemKnife1","ItemKnifeBlunt"];
DayZ_Ignitors = ["ItemMatchbox","Item5Matchbox","Item4Matchbox","Item3Matchbox","Item2Matchbox","Item1Matchbox"];
DayZ_ViralZeds = ["z_new_villager2","z_new_villager3","z_new_villager4","z_new_worker2","z_new_worker3","z_new_worker4"];
DayZ_SafeObjects = ["Base_Fire_DZ","WoodenGate_1","WoodenGate_2","WoodenGate_3","WoodenGate_4","Land_Fire_DZ","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","BearTrap_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare","TentStorageDomed","VaultStorageLocked","BagFenceRound_DZ","TrapBear","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","Plastic_Pole_EP1_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","FireBarrel_DZ","WoodCrate_DZ","Scaffolding_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4"];
DayZ_DropDrageeObjects = ["WoodenGate_1","WoodenGate_2","WoodenGate_3","WoodenGate_4","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","TentStorageDomed","VaultStorageLocked","BagFenceRound_DZ","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","StickFence_DZ","SandNest_DZ","MetalPanel_DZ","WorkBench_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","WoodFloorHalf_DZ","WoodFloor_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","MetalFloor_DZ","WoodRamp_DZ"];
DayZ_GearedObjects = ["Car","Helicopter","Motorcycle","Ship","TentStorage_base","StashSmall_base","StashMedium_base","Plane","Tank","VaultStorage","LockboxStorage","TentStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ","Scaffolding_DZ","Generator_DZ"];
DayZ_RestingAnims = ["amovpsitmstpsnonwpstdnon_ground","amovpsitmstpsnonwpstdnon_smoking","amovpsitmstpsraswrfldnon_weaponcheck1","amovpsitmstpsraswrfldnon"];
dayz_typedBags = ["bloodTester","bloodBagANEG","bloodBagAPOS","bloodBagBNEG","bloodBagBPOS","bloodBagABNEG","bloodBagABPOS","bloodBagONEG","bloodBagOPOS","wholeBloodBagANEG","wholeBloodBagAPOS","wholeBloodBagBNEG","wholeBloodBagBPOS","wholeBloodBagABNEG","wholeBloodBagABPOS","wholeBloodBagONEG","wholeBloodBagOPOS"];
dayz_playerAchievements = []; //[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
dayz_plant = ["pumpkin.p3d","p_helianthus.p3d","p_fiberplant_ep1.p3d"];
dayz_trees = ["ind_timbers.p3d","t_picea2s_snow.p3d","b_corylus.p3d","t_quercus3s.p3d","t_larix3s.p3d","t_pyrus2s.p3d","str_briza_kriva.p3d","dd_borovice.p3d","les_singlestrom_b.p3d","les_singlestrom.p3d","smrk_velky.p3d","smrk_siroky.p3d","smrk_maly.p3d","les_buk.p3d","str krovisko vysoke.p3d","str_fikovnik_ker.p3d","str_fikovnik.p3d","str vrba.p3d","hrusen2.p3d","str dub jiny.p3d","str lipa.p3d","str briza.p3d","p_akat02s.p3d","jablon.p3d","p_buk.p3d","str_topol.p3d","str_topol2.p3d","p_osika.p3d","t_picea3f.p3d","t_picea2s.p3d","t_picea1s.p3d","t_fagus2w.p3d","t_fagus2s.p3d","t_fagus2f.p3d","t_betula1f.p3d","t_betula2f.p3d","t_betula2s.p3d","t_betula2w.p3d","t_alnus2s.p3d","t_acer2s.p3d","t_populus3s.p3d","t_quercus2f.p3d","t_sorbus2s.p3d","t_malus1s.p3d","t_salix2s.p3d","t_picea1s_w.p3d","t_picea2s_w.p3d","t_ficusb2s_ep1.p3d","t_populusb2s_ep1.p3d","t_populusf2s_ep1.p3d","t_amygdalusc2s_ep1.p3d","t_pistacial2s_ep1.p3d","t_pinuse2s_ep1.p3d","t_pinuss3s_ep1.p3d","t_prunuss2s_ep1.p3d","t_pinusn2s.p3d","t_pinusn1s.p3d","t_pinuss2f.p3d","t_poplar2f_dead_pmc.p3d","misc_torzotree_pmc.p3d","misc_burnspruce_pmc.p3d","brg_cocunutpalm8.p3d","brg_umbrella_acacia01b.p3d","brg_jungle_tree_canopy_1.p3d","brg_jungle_tree_canopy_2.p3d","brg_cocunutpalm4.p3d","brg_cocunutpalm3.p3d","palm_01.p3d","palm_02.p3d","palm_03.p3d","palm_04.p3d","palm_09.p3d","palm_10.p3d","brg_cocunutpalm2.p3d","brg_jungle_tree_antiaris.p3d","brg_cocunutpalm1.p3d","str habr.p3d","brg_bird_1.p3d","brg_bird_2.p3d","brg_bird_3.p3d","brg_umbrella_acacia02b.p3d","brg_africandoumpalm_1.p3d","brg_umbrella_acacia04b.p3d","brg_datepalm_4.p3d","brg_datepalm_1.p3d","brg_umbrella_acacia03b.p3d","brg_bottle_4.p3d","brg_aloe1.p3d","brg_umbrella_acacia03.p3d","brg_umbrella_acacia01.p3d","brg_umbrella_acacia04.p3d","brg_aloe2.p3d","brg_umbrella_acacia02.p3d","brg_aloe3.p3d","brg_bottle_1.p3d","brg_datepalm_3.p3d","brg_datepalm_2.p3d","brg_baobab_1.p3d","brg_bottle_2.p3d","brg_bottle_3.p3d","t_fraxinus2s.p3d","t_carpinus2s.p3d"];

Dayz_meatraw =
[
    "FoodBeefRaw",
    "FoodMuttonRaw",
    "FoodChickenRaw",
    "FoodRabbitRaw",
    "FoodBaconRaw",
    "FoodGoatRaw",
    "FoodDogRaw",
    "FishRawTrout",
    "FishRawSeaBass",
    "FishRawTuna"
];

Dayz_meatcooked =
[
    "FoodBeefCooked",
    "FoodMuttonCooked",
    "FoodChickenCooked",
    "FoodRabbitCooked",
    "FoodBaconCooked",
    "FoodGoatCooked",
    "FoodDogCooked",
    "FishCookedTrout",
    "FishCookedSeaBass",
    "FishCookedTuna"
];

boil_tin_cans =
[
    "TrashTinCan",
    "FoodCanGriffEmpty",
    "FoodCanBadguyEmpty",
    "FoodCanBoneboyEmpty",
    "FoodCanCornEmpty",
    "FoodCanCurgonEmpty",
    "FoodCanDemonEmpty",
    "FoodCanFraggleosEmpty",
    "FoodCanHerpyEmpty",
    "FoodCanDerpyEmpty",
    "FoodCanOrlokEmpty",
    "FoodCanPowellEmpty",
    "FoodCanTylersEmpty",
    "FoodCanUnlabeledEmpty",
    "FoodCanRusUnlabeledEmpty",
    "FoodCanRusStewEmpty",
    "FoodCanRusPorkEmpty",
    "FoodCanRusPeasEmpty",
    "FoodCanRusMilkEmpty",
    "FoodCanRusCornEmpty",
    "ItemSodaEmpty",
    "ItemSodaClaysEmpty",
    "ItemSodaDrwasteEmpty",
    "ItemSodaFrankaEmpty",
    "ItemSodaGrapeDrinkEmpty",
    "ItemSodaLemonadeEmpty",
    "ItemSodaLirikEmpty",
    "ItemSodaLvgEmpty",
    "ItemSodaMtngreenEmpty",
    "ItemSodaMzlyEmpty",
    "ItemSodaPeppsyEmpty",
    "ItemSodaR4z0rEmpty",
    "ItemSodaRabbitEmpty",
    "ItemSodaRocketFuelEmpty",
    "ItemSodaSacriteEmpty",
    //"ItemSodaSherbetEmpty",
    "ItemSodaSmashtEmpty",
    "FoodCanPotatoesEmpty",
    "FoodCanBeefEmpty"
];

canPickup = false;
pickupInit = false;
mouseOverCarry = false; //for carry slot since determining mouse pos doesn't work right
dayZ_partClasses = ["PartFueltank","PartWheel","PartEngine"]; //No need to add PartGeneric, it is default for everything
dayZ_explosiveParts = ["palivo","motor"];
if (isNil "infectedWaterHoles") then {infectedWaterHoles = [];}; //Needed for non-cherno maps

//Survival Variables
SleepFood = 2160; //minutes (48 hours)
SleepWater = 1440; //minutes (24 hours)
SleepTemperatur = 90 / 100;    //First value = Minutes until player reaches the coldest point at night (without other effects! night factor expected to be -1) //TeeChange

//Server Variables
allowConnection = false;
dayz_serverObjectMonitor = [];

//GUI
Dayz_GUI_R = 0.38; // 0.7 .38
Dayz_GUI_G = 0.63; // -0.63
Dayz_GUI_B = 0.26; // -0.26

//actions blockers
a_player_cooking = false;
a_player_boil = false;

//Player self-action handles
dayz_resetSelfActions = {
    s_player_equip_carry = -1;
    s_player_fire = -1;
    s_player_cook = -1;
    s_player_boil = -1;
    s_player_packtent = -1;
    s_player_packtentinfected = -1;
    s_player_fillfuel = -1;
    s_player_grabflare = -1;
    s_player_removeflare = -1;
    s_player_studybody = -1;
    s_player_deleteBuild = -1;
    s_player_flipveh = -1;
    s_player_sleep = -1;
    s_player_fillfuel210 = -1;
    s_player_fillfuel20 = -1;
    s_player_fillfuel5 = -1;
    s_player_siphonfuel = -1;
    s_player_repair_crtl = -1;
    s_player_fishing = -1;
    s_player_fishing_veh = -1;
    s_player_gather = -1;
    s_player_destroytent = -1;
    s_player_attach_bomb = -1;
    s_player_upgradestorage = -1;
    s_player_Drinkfromhands = -1;
    /*s_player_lockhouse = -1; //Vanilla base building currently not used in Epoch
    s_player_unlockhouse = -1;
    s_player_openGate = -1;
    s_player_CloseGate = -1;
    s_player_breakinhouse = -1;
    s_player_setCode = -1;
    s_player_BuildUnLock = -1;
    s_player_BuildLock = -1;*/
    
    // EPOCH ADDITIONS
    s_player_packvault = -1;
    s_player_lockvault = -1;
    s_player_unlockvault = -1;
    s_player_attack = -1;
    s_player_callzombies = -1;
    s_player_showname = -1;
    s_player_pzombiesattack = -1;
    s_player_pzombiesvision = -1;
    s_player_pzombiesfeed = -1;
    s_player_tamedog = -1;
    s_player_parts_crtl = -1;
    s_player_movedog = -1;
    s_player_speeddog = -1;
    s_player_calldog = -1;
    s_player_feeddog = -1;
    s_player_waterdog = -1;
    s_player_staydog = -1;
    s_player_trackdog = -1;
    s_player_barkdog = -1;
    s_player_warndog = -1;
    s_player_followdog = -1;
    s_player_information = -1;    
    s_player_fuelauto = -1;
    s_player_fuelauto2 = -1;
    s_player_fillgen = -1;
    s_player_upgrade_build = -1;
    s_player_maint_build = -1;
    s_player_downgrade_build = -1;
    s_player_towing = -1;
    s_halo_action = -1;
    s_player_SurrenderedGear = -1;
    s_player_maintain_area = -1;
    s_player_maintain_area_force = -1;
    s_player_maintain_area_preview = -1;
    s_player_heli_lift = -1;
    s_player_heli_detach = -1;
    s_player_lockUnlock_crtl = -1;
    s_player_lockUnlockInside_ctrl = -1;
    s_player_toggleSnap = -1;
    s_player_toggleSnapSelect = -1;
    s_player_toggleSnapSelectPoint = [];
    snapActions = -1;
    s_player_plot_boundary = -1;
    s_player_plotManagement = -1;
    s_player_toggleDegree = -1;
    s_player_toggleDegrees=[];
    degreeActions = -1;
    s_player_toggleVector = -1;
    s_player_toggleVectors=[];
    vectorActions = -1;
    s_player_manageDoor = -1;
    s_player_clothes = -1;
    s_player_copyToKey = -1;
    s_player_claimVehicle = -1;

};
call dayz_resetSelfActions;

//Engineering variables
s_player_repairActions = [];

//Initialize Medical Variables
force_dropBody = false;
r_interrupt = false;
r_doLoop = false;
r_drag_sqf = false;
r_action = false;
r_action_unload = false;
r_player_handler = false;
r_player_unconsciousInProgress = false;
r_player_unconsciousInputDisabled = false;
r_player_dead = false;
r_player_unconscious = false;
r_player_infected = false;
//infection from hits
r_player_Sepsis = [false, 0];
r_player_injured = false;
r_player_inpain = false;
r_player_loaded = false;
r_player_cardiac = false;
r_fracture_legs = false;
r_fracture_arms = false;
r_player_vehicle = player;
r_player_blood = 12000;
r_player_bloodregen = 0;
r_player_bloodgainpersec = 0;
r_player_bloodlosspersec = 0;
r_player_bloodpersec = 0; //Blood Per Sec (gain - loss)
r_player_foodstack = 1;
//player skill
r_player_lowblood = false;
r_player_timeout = 0;
r_player_bloodTotal = r_player_blood;
r_player_actions = [];
r_handlerCount = 0;
r_action_targets = [];
r_pitchWhine = false;
dayz_DisplayGenderSelect = true;
//blood test vars
r_A_watered = false;
r_B_watered = false;
r_D_watered = false;
r_control_watered = false;
r_canClick_resultsCard = false;
r_resultsCard_Clicked = false;
r_water_clicked = false;
r_needleclicked = 0;
r_needleReset = false;
r_control_done = false;
r_antiA_done = false;
r_antiB_done = false;
r_antiD_done = false;
carryClick = false;
dayz_actionInProgress = false;
gear_done = false;

//player warming up vars
//heatpack
r_player_warming_heatpack = [false, 0];
r_player_warming_heatpack_time = 600; 

//displays temp progress
r_player_temp_factor = 0; //to be used for temp(up/down) indicators
r_player_temp_min_factor = -0.10; //(lvl3 down arrow)
r_player_temp_max_factor = 0.04; //(lvl3 up arrow)
 
//INT Nutrition Info
r_player_Nutrition = 0; // Calories
r_player_nutritionMuilpty = 2;

//ammo routine
r_player_actions2 = [];
r_action2 = false;
r_player_lastVehicle = objNull;
r_player_lastSeat = [];
r_player_removeActions2 = {
    if (!isNull r_player_lastVehicle) then {
        {
            r_player_lastVehicle removeAction _x;
        } count r_player_actions2;
        r_player_actions2 = [];
        r_action2 = false;
    };
};

USEC_woundHit = ["","body","hands","legs","head_hit"]; // limbs hit given by arma engine when fnc_usec_damageHandler is called
DAYZ_woundHit = [["body","hands","legs","head_hit"],[0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,3]];
DAYZ_woundHit_ok = [["body","hands","legs"],[0,0,0,0,0,1,1,1,2,2]];
USEC_MinorWounds = ["hands","legs"];
USEC_woundPoint = [ // translation table USEC_woundHit -> SV suffixes
    ["Pelvis","aimpoint"],
    ["aimpoint"], //,"RightShoulder","LeftShoulder"
    ["lelbow","relbow"],
    ["RightFoot","LeftFoot"],
    ["neck","pilot"]
];
USEC_typeOfWounds = [ // used by player_sumMedical, should contains all limbs described in USEC_woundPoint. These limbs statuses are saved by server_playerSync in HIVE if they are bleeding (medical select 8)
    "Pelvis",
    "aimpoint",
    "lelbow","relbow",
    "RightFoot","LeftFoot",
    "neck","pilot"
];

//Initialize Zombie Variables
dayz_zombieTargetList = [["SoldierWB",50],["Air",500],["LandVehicle",200]];
PVDZ_obj_Publish = []; // Used for eventhandler to spawn a mirror of players tent
PVCDZ_obj_HideBody = objNull;

//DayZ settings
dayz_lastHumanityChange = diag_tickTime;
dayz_maxAnimals = 5;
dayz_maxPlants = 3;
dayz_animalDistance = 600;
dayz_plantDistance = 600;

dayz_maxMaxModels = 80; // max quantity of Man models (player or Z, dead or alive) around players. Below this limit we can spawn Z // max quantity of loot piles around players. Below this limit we can spawn some loot
dayz_cantseeDist = 150; // distance from which we can spawn a Z in front of any player without ray-tracing and angle checks
dayz_cantseefov = 70; // half player field-of-view. Visible Z won't be spawned in front of any near players
dayz_canDelete = 350; // Z, further than this distance from its "owner", will be deleted
dayz_traps_active = [];
dayz_traps_trigger = [];

//Settings Not under dayz_settings
if(isNil "dayz_attackRange") then { 
    dayz_attackRange = 3;
};
if(isNil "dayz_DamageMultiplier") then { 
    dayz_DamageMultiplier = 1;
};
if(isNil "dayz_quickSwitch") then {
    dayz_quickSwitch = false; //Enable quick weapon switch,
};
//Will be moved to map
if(isNil "dayz_infectiouswaterholes") then {
    dayz_infectiouswaterholes = true; //Enable infected waterholes
};
if(isNil "dayz_POIs") then {
    dayz_POIs = true; //Enable POI's
};
if(isNil "dayz_ForcefullmoonNights") then {
    dayz_ForcefullmoonNights = false; // Forces night time to be full moon.
};
if(isNil "dayz_randomMaxFuelAmount") then {
    dayz_randomMaxFuelAmount = 500; //Puts a random amount of fuel in all fuel stations.
};
if(isNil "dayz_townGenerator") then {
    dayz_townGenerator = true; // Spawn map junk. Currently only compatible with Chernarus. Need to add coordinates for other maps.
};
if(isNil "dayz_townGeneratorBlackList") then {
    dayz_townGeneratorBlackList = []; // Town generator will not spawn junk within 150m of these positions.
};

//Replace server individual settings with ranked settings
if(isNil "dayz_presets") then { dayz_presets = "Vanilla"; };

switch (dayz_presets) do {
    case "Custom": { //Custom 
        if(isNil "dayz_enableGhosting") then { dayz_enableGhosting = false; };
        if(isNil "dayz_ghostTimer") then { dayz_ghostTimer = 120; };
        if(isNil "dayz_spawnselection") then { dayz_spawnselection = 0; };
        if(isNil "dayz_spawncarepkgs_clutterCutter") then { dayz_spawncarepkgs_clutterCutter = 0; };
        if(isNil "dayz_spawnCrashSite_clutterCutter") then { dayz_spawnCrashSite_clutterCutter = 0; };
        if(isNil "dayz_spawnInfectedSite_clutterCutter") then { dayz_spawnInfectedSite_clutterCutter = 0; };
        if(isNil "dayz_bleedingeffect") then { dayz_bleedingeffect = 2; };
        if(isNil "dayz_OpenTarget_TimerTicks") then { dayz_OpenTarget_TimerTicks = 60 * 10; };
        if(isNil "dayz_temperature_override") then { dayz_temperature_override = true; };
        if(isNil "dayz_nutritionValuesSystem") then { dayz_nutritionValuesSystem = false; };
        if(isNil "dayz_classicBloodBagSystem") then { dayz_classicBloodBagSystem = false; };
        if(isNil "dayz_enableFlies") then { dayz_enableFlies = true; };
    };
    case "Classic": { //Classic
        dayz_enableGhosting = false; //Enable disable the ghosting system.
        dayz_ghostTimer = 120; //Sets how long in seconds a player must be dissconnected before being able to login again.
        dayz_spawnselection = 0; //Turn on spawn selection 0 = random only spawns, 1 = Spawn choice based on limits
        dayz_spawncarepkgs_clutterCutter = 0; //0 =  loot hidden in grass, 1 = loot lifted and 2 = no grass
        dayz_spawnCrashSite_clutterCutter = 0;    // heli crash options 0 =  loot hidden in grass, 1 = loot lifted and 2 = no grass
        dayz_spawnInfectedSite_clutterCutter = 0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass 
        dayz_bleedingeffect = 2; //1= blood on the ground, 2= partical effect, 3 = both.
        dayz_OpenTarget_TimerTicks = 60 * 10; //how long can a player be freely attacked for after attacking someone unprovoked.
        dayz_temperature_override = true; // Set to true to disable all temperature changes.
        dayz_nutritionValuesSystem = false; //Enables nutrition system
        dayz_classicBloodBagSystem = true; //Enables one type of bloodbag
        dayz_enableFlies = true;  //Enables flies spawning on death
    };
    case "Elite": { //Elite
        dayz_enableGhosting = true; //Enable disable the ghosting system.
        dayz_ghostTimer = 90; //Sets how long in seconds a player must be dissconnected before being able to login again.
        dayz_spawnselection = 0; //Turn on spawn selection 0 = random only spawns, 1 = Spawn choice based on limits
        dayz_spawncarepkgs_clutterCutter = 0; //0 =  loot hidden in grass, 1 = loot lifted and 2 = no grass
        dayz_spawnCrashSite_clutterCutter = 0;    // heli crash options 0 =  loot hidden in grass, 1 = loot lifted and 2 = no grass
        dayz_spawnInfectedSite_clutterCutter = 0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass 
        dayz_bleedingeffect = 3; //1= blood on the ground, 2= partical effect, 3 = both.
        dayz_OpenTarget_TimerTicks = 60 * 25; //how long can a player be freely attacked for after attacking someone unprovoked.
        dayz_temperature_override = false; // Set to true to disable all temperature changes.
        dayz_nutritionValuesSystem = true; //Enables nutrition system
        dayz_classicBloodBagSystem = false; //Enables one type of bloodbag
        dayz_enableFlies = true; //Enables flies spawning on death
    };
    default { //Vanilla
        dayz_enableGhosting = true; //Enable disable the ghosting system.
        dayz_ghostTimer = 60; //Sets how long in seconds a player must be disconnected before being able to login again.
        dayz_spawnselection = 1; //Turn on spawn selection 0 = random only spawns, 1 = Spawn choice based on limits
        dayz_spawncarepkgs_clutterCutter = 0; //0 =  loot hidden in grass, 1 = loot lifted and 2 = no grass
        dayz_spawnCrashSite_clutterCutter = 0;    // heli crash options 0 =  loot hidden in grass, 1 = loot lifted and 2 = no grass
        dayz_spawnInfectedSite_clutterCutter = 0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass 
        dayz_bleedingeffect = 3; //1= blood on the ground, 2= partical effect, 3 = both.
        dayz_OpenTarget_TimerTicks = 60 * 10; //how long can a player be freely attacked for after attacking someone unprovoked.
        dayz_temperature_override = false; // Set to true to disable all temperature changes.
        dayz_nutritionValuesSystem = true; //Enables nutrition system
        dayz_classicBloodBagSystem = false; //Enables one type of bloodbag
        dayz_enableFlies = true; //Enables flies spawning on death
    };
};

respawn_west_original = getMarkerPos "respawn_west"; //Prevent problems caused by cheaters moving respawn_west marker with setMarkerPos or deleteMarker

switch (toLower worldName) do {
    case "napf";
    case "ruegen";
    case "sauerland" : {dayz_minpos = -1000; dayz_maxpos = 26000;};
    case "tavi" : {dayz_minpos = -26000; dayz_maxpos = 26000;};
    case "chernarus" : {dayz_minpos = -1; dayz_maxpos = 16000;};
    case default {dayz_minpos = -20000; dayz_maxpos = 20000;};
};

//start achievements_init
//call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\achievements_init.sqf";

// EPOCH ADDITIONS
keypadCancel = false; //Brute force fix
keyPadReset = {uiSleep 2; keypadCancel = false;};
canbuild = true;
dayz_activeInvites = [];
dayz_combination = "";
dayz_disallowedVault = ["TentStorage","BuiltItems","ModularItems","DZE_Base_Object","Generator_DZ"];
// These work with just a running generator
dayz_fuelpumparray = ["FuelPump_DZ","Land_A_FuelStation_Feed","Land_Ind_FuelStation_Feed_EP1","Land_FuelStation_Feed_PMC","FuelStation","Land_ibr_FuelStation_Feed","Land_fuelstation_army","Land_smd_fuelstation_army","Land_fuelstation","land_fuelstation_w","Land_benzina_schnell"];
dayz_humanitytarget = "";
dayz_selectedVault = objNull;
dayz_selectedDoor = objNull;
DAYZ_woundHit_dog = [["body","hands","legs"],[0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2]];
DZE_fueltruckarray = ["KamazRefuel_DZ","UralRefuel_TK_EP1_DZ","MtvrRefuel_DES_EP1_DZ","V3S_Refuel_TK_GUE_EP1_DZ","MtvrRefuel_DZ","KamazRefuel_DZE1","KamazRefuel_DZE2","KamazRefuel_DZE3","KamazRefuel_DZE4"];
DZE_Lock_Door = "";
DZE_HeliAllowTowFrom = ["CH_47F_EP1_DZE","CH_47F_EP1_DZ","CH_47F_BAF","CH_47F_EP1","BAF_Merlin_DZE","CH53_DZE"];
DZE_HeliAllowToTow = ["hilux1_civil_1_open","HMMWV_Base","Lada_base","Offroad_DSHKM_base","Pickup_PK_base","SkodaBase","tractor","VWGolf","Volha_TK_CIV_Base_EP1","S1203_TK_CIV_EP1","SUV_Base_EP1","ArmoredSUV_Base_PMC","UAZ_Base","LandRover_Base","Ship"];
DZE_REPLACE_WEAPONS = [["Crossbow","DMR","M14_EP1","SVD","SVD_CAMO"],["Crossbow_DZ","DMR_DZ","M14_CCO_DZ","SVD_DZ","SVD_Gh_DZ"]];
DZE_replaceMagazines = [["vil_20Rnd_762x51_G3"],["vil_20Rnd_762x51_G3"]];
DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];
DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","Generator_DZ","DZ_buildables","Plastic_Pole_EP1_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","StickFence_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","DeerStand_DZ","Scaffolding_DZ","FireBarrel_DZ","M240Nest_DZ"];
DZE_DoorsLocked = ["Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallDoorLocked_DZ","CinderWallDoorSmallLocked_DZ"];
DZE_isWreck = ["SKODAWreck","HMMWVWreck","UralWreck","datsun01Wreck","hiluxWreck","datsun02Wreck","UAZWreck","Land_Misc_Garb_Heap_EP1","Fort_Barricade_EP1","Rubbish2"];
DZE_isWreckBuilding = ["Land_wreck_cinder","Land_wood_wreck_quarter","Land_wood_wreck_floor","Land_wood_wreck_third","Land_wood_wreck_frame","Land_iron_vein_wreck","Land_silver_vein_wreck","Land_gold_vein_wreck","Land_ammo_supply_wreck"];
DZE_isNewStorage = ["VaultStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ"];
DZE_isDestroyableStorage = ["OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ"];
DZE_itemKeys = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];
DZE_keyColors = ["Green","Red","Blue","Yellow","Black"];
helperDetach = false;
DZE_snapExtraRange = 0;
DZE_tradeVehicle = ["trade_any_vehicle","trade_any_vehicle_free","trade_any_vehicle_old","trade_any_bicycle","trade_any_bicycle_old","trade_any_boat","trade_any_boat_old"];
DZE_tradeVehicleKeyless = ["trade_any_bicycle","trade_any_bicycle_old","trade_any_vehicle_free"];
DZE_tradeObject = DZE_tradeVehicle + ["trade_backpacks"];
DZE_GearCheckBypass = false;
isInTraderCity = false;
inTraderCity = "Unknown Trader";
PlayerDeaths = [];
PVDZE_obj_Trade = []; // For all traders increment qty
PVDZE_plr_DeathB = [];
if (!DZE_ConfigTrader) then {
    PVDZE_plr_TradeMenu = []; // For all traders
};
snapGizmos = [];
snapGizmosNearby = [];
s_player_combi = [];
s_player_lockunlock = [];
s_player_lockUnlockInside = [];
s_player_parts = [];
if (isNil "DZE_GodModeBase") then {DZE_GodModeBase = false;};
if (isNil "dayz_paraSpawn") then {dayz_paraSpawn = false;};
if (isNil "DZE_BuildingLimit") then {DZE_BuildingLimit = 150;};
if (isNil "DZE_BuildOnRoads") then {DZE_BuildOnRoads = false;};
if (isNil "DZE_SelfTransfuse") then {DZE_SelfTransfuse = false;};
if (isNil "DZE_selfTransfuse_Values") then {DZE_selfTransfuse_Values = [12000,15,120];};
if (isNil "DZE_PlotPole") then {DZE_PlotPole = [30,45];};
DZE_maintainRange = ((DZE_PlotPole select 0)+20);

if (isServer) then {
    dayz_serverPUIDArray = [];
    dayz_serverClientKeys = [];
    dayz_traps = [];
    dead_bodyCleanup = [];
    needUpdate_objects = [];
    needUpdate_FenceObjects = [];
    //dayz_spawnCrashSite_clutterCutter=0; // helicrash spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass 
    //dayz_spawnInfectedSite_clutterCutter=0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass 
    //Objects to remove when killed.
    DayZ_nonCollide = ["TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3", "StashMedium4", "DomeTentStorage", "DomeTentStorage0", "DomeTentStorage1", "DomeTentStorage2", "DomeTentStorage3", "DomeTentStorage4", "CamoNet_DZ", "DesertTentStorage", "DesertTentStorage0", "DesertTentStorage1", "DesertTentStorage2", "DomeTentStorage3", "DesertTentStorage4"];
    DayZ_WoodenFence = ["WoodenFence_1","WoodenFence_2","WoodenFence_3","WoodenFence_4","WoodenFence_5","WoodenFence_6","WoodenFence_7"];
    DayZ_WoodenGates = ["WoodenGate_1","WoodenGate_2","WoodenGate_3","WoodenGate_4"];
    DayZ_removableObjects = ["Wire_cat1","Sandbag1_DZ","Hedgehog_DZ","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare"];
    //[10416.695, 4198.4634],[7982.2563, 1419.8256],[10795.93, 1419.8263],[7966.083, 4088.7463],[9259.7266, 2746.1985],[5200.5234, 3915.3274],[6494.1665, 2572.7798],[5216.6968, 1246.407],[2564.7244, 3915.3296],[3858.3674, 2572.782],[2580.8977, 1246.4092],[13398.995, 4400.5874],[12242.025, 2948.3196],[13551.842, 1832.2257],[14870.512, 3009.5117],[-178.19415, 1062.4478],[1099.2754, 2388.8206],[-194.36755, 3731.3679],[10394.215, 8322.1719],[7959.7759, 5543.5342],[10773.449, 5543.5342],
    dayz_grid =[[7943.6025, 8212.4551],[9237.2461, 6869.9063],[5178.043, 8039.0361],[6471.686, 6696.4883],[5194.2163, 5370.1152],[2542.2439, 8039.0381],[3835.887, 6696.4902],[2558.4172, 5370.1172],[13376.514, 8524.2969],[12219.544, 7072.0273],[13529.361, 5955.9336],[14848.032, 7133.2197],[-200.67474, 5186.1563],[1076.7949, 6512.5283],[-216.84814, 7855.0771],[10293.751, 12197.736],[7859.312, 9419.0996],[10672.988, 9419.0996],[7843.1387, 12088.021],[9136.7822, 10745.474],[5077.5791, 11914.601],[6371.2222, 10572.052],[5093.7524, 9245.6816],[2441.78, 11914.604],[3735.4231, 10572.055],[2457.9534, 9245.6816],[13276.053, 12399.861],[12119.08, 10947.596],[13428.897, 9831.501],[14747.566, 11008.786],[-301.13867, 9061.7207],[976.33112, 10388.096],[-317.31201, 11730.642],[10271.271, 16321.429],[7836.8315, 13542.813],[10650.506, 13542.813],[7820.6582, 16211.718],[9114.3018, 14869.175],[5055.0986, 16038.3],[6348.7417, 14695.758],[5071.272, 13369.392],[2419.2996, 16038.305],[3712.9426, 14695.76],[2435.4729, 13369.392],[13253.568, 16523.553],[12096.6, 15071.295],[13406.416, 13955.209],[14725.089, 15132.486],[-323.61914, 13185.43],[953.85059, 14511.8],[-339.79248, 15854.346]];
    dayz_choppedTrees = [];
    dayz_ghostPlayers = [];
    dayz_activePlayers = [];
    dayz_died = [];

    // EPOCH ADDITIONS
    DZE_safeVehicle = ["ParachuteWest","ParachuteC","Old_bike_TK_CIV_EP1","TT650_Civ","CSJ_GyroC"];
    if (isNil "EpochUseEvents") then {EpochUseEvents = false;};
    if (isNil "EpochEvents") then {EpochEvents = [];};
    if (isNil "MaxDynamicDebris") then {MaxDynamicDebris = 100;};
    if (isNil "MaxVehicleLimit") then {MaxVehicleLimit = 50;};
    if (isNil "spawnArea") then {spawnArea = 1400;};
    if (isNil "spawnShoremode") then {spawnShoremode = 1;};
};

if (!isDedicated) then {
    dayz_authKey = "";
    DZE_LastPingResp = diag_tickTime;
    dayz_buildingBubbleMonitor = [];
    DayZ_fuelCans = ["ItemJerrycan","ItemFuelcan","ItemFuelBarrel"];
    DayZ_fuelCansEmpty = ["ItemJerrycanEmpty","ItemFuelcanEmpty","ItemFuelBarrelEmpty"];
    DayZ_fuelSources = ["Land_Ind_TankSmall","Land_fuel_tank_big","Land_fuel_tank_stairs","Land_fuel_tank_stairs_ep1","Land_wagon_tanker","Land_fuelstation","Land_fuelstation_army","Land_smd_fuelstation_army","land_fuelstation_w","Land_benzina_schnell"];
    dayz_plantOutput = ["FoodPumpkin","FoodSunFlowerSeed","ItemKiloHemp"];
    dayz_plantTypes = ["","MAP_pumpkin","MAP_p_Helianthus","fiberplant"];
    //Needed for trees spawned with createVehicle like POI (typeOf returns class instead of "")
    dayz_treeTypes = ["","MAP_t_picea1s","MAP_t_picea2s","MAP_t_picea3f","MAP_t_pinusN2s","MAP_t_pinusS2f","MAP_t_populus3s","MAP_t_betula2s","MAP_t_fagus2s","MAP_t_fagus2W","MAP_t_malus1s"];
    
    //temperature variables
    dayz_temperatur = 25; //TeeChange
    dayz_temperaturnormal = 25; //TeeChange
    dayz_temperaturmax = 40; //TeeChange from 30
    dayz_temperaturmin = 15; //TeeChange

    //player special variables
    dayz_bloodBagHumanity = 300;
    dayz_HarvestingChance = [0.09];
    dayz_lastCheckBit = 0;
    dayz_lastDamageSourceNull = false;
    dayz_lastDamageSource = "none";
    dayz_lastDamageTime = 0;
    dayz_lastMedicalSource = "none";
    dayz_lastMedicalTime = 0;
    dayz_lastClothesChange = 0;
    dayZ_lastPlayerUpdate = 0;
    dayz_lastSelfTransfusion = -(DZE_selfTransfuse_Values select 2);
    dayz_lastTransfusion = 0;
    dayz_playerName = "unknown";
    dayz_hunger = 0;
    dayz_thirst = 0;
    dayz_nutrition = 0;
    dayz_preloadFinished = true;
    dayz_soundMuted = false;
    dayz_disAudial = 0;
    dayz_disVisual = 0;
    dayz_firedCooldown = 0;
    dayz_damageCounter = time;
    dayz_lastSave = diag_tickTime;
    dayz_isSwimming = true;
    dayz_currentDay = 0;
    dayz_hasLight = false;
    dayz_surfaceNoise = 0;
    dayz_surfaceType = "None";
    dayz_noPenalty = [];
    dayz_heavenCooldown = 0;
    deathHandled = false;
    dayz_firstGroup = group player;
    dayz_originalPlayer = player;
    dayz_sourceBleeding = objNull;
    dayz_clientPreload = false;
    dayz_authed = false;
    dayz_panicCooldown = 0;
    dayz_areaAffect = 3.5;
    dayz_monitorPeriod = 0.6; // number of seconds between each player_zombieCheck calls
    dayz_heartBeat = false;
    dayz_spawnZombies = 0; // Current local
    dayz_swarmSpawnZombies = 0;
    dayz_maxLocalZombies = 15; // max quantity of Z controlled by local gameclient, used by player_spawnCheck. Below this limit we can spawn Z
    dayz_CurrentNearByZombies = 0;
    dayz_maxNearByZombies = 30; // max quantity of Z controlled by local gameclient, used by player_spawnCheck. Below this limit we can spawn Z
    dayz_currentGlobalZombies = 0; // Current total
    if(isNil "dayz_maxGlobalZeds") then {
        dayz_maxGlobalZeds = 1000;
    };
    //Animals
    dayz_currentGlobalAnimals =    0;
    dayz_maxGlobalAnimals =    50;
    //Plants    
    dayz_currentGlobalPlants = 0;
    dayz_maxGlobalPlants = 500;
    //Loot
    r_player_divideinvehicle = 0;
    dayz_currentWeaponHolders = 0;
    dayz_maxMaxWeaponHolders = 80;
    dayz_inVehicle = false;
    dayz_unsaved = false;
    dayz_scaleLight = 0;
    dayz_onBack = "";
    dayz_fishingInprogress = false;
    lastSpawned = diag_tickTime;
    lastSepsis = 0;
    NORRN_dropAction = -1;
    dayz_dodge = false;
    Dayz_constructionContext = [];
    Dayz_freefall = [ time, 0, 0.1 ];
    dayz_getoutTime = 0;
    dayz_hitByTime = 0;
    skipGearSound = false;
    TimeOutDisplayed = false;
    playerHumanityCHK = 0;
    voice_actions = ["voiceOverNet","PushToTalk","PushToTalkAll","PushToTalkCommand","PushToTalkDirect","PushToTalkGroup","PushToTalkSide","PushToTalkVehicle"];

    // EPOCH ADDITIONS
    s_player_lastTarget = objNull;
    if (isNil "DZE_BackpackAntiTheft") then {DZE_BackpackAntiTheft = false;};
    if (isNil "DZE_requireplot") then {DZE_requireplot = 1;};
    if (isNil "DZE_StaticConstructionCount") then {DZE_StaticConstructionCount = 0;};
    if (toLower DZE_DeathMsgChat in ["global","side"]) then {enableRadio true;}; //Needed for scripted global chat to show, doesn't seem to have any adverse effects
    dayz_autoRun = false;
    DZE_AntiWallCounter = 0;
    DZE_myHaloVehicle = objNull;
    dayz_myLiftVehicle = objNull;
    DZE_Friends = [];
    DZE_Q = false;
    DZE_Z = false;
    DZE_Q_alt = false;
    DZE_Z_alt = false;
    DZE_Q_ctrl = false;
    DZE_Z_ctrl = false;
    DZE_4 = false;
    DZE_5 = false;
    DZE_6 = false;
    DZE_F = false;
    DZE_cancelBuilding = false;
    DZE_TEMP_treedmg = 1;
    DZE_Surrender = false;
    DZE_Quarantine = false;
    DZE_InRadiationZone = false;
    DZE_myVehicle = objNull;
    dayz_groupNameTags = (profileNamespace getVariable ["streamerMode",0] == 0); //If streamer mode is on then hide name tags at startup. Toggle with Windows key.
    dayz_minusDownTime = 0;
    dayz_lastCodeFail = 0;
};
 

Iv also added your server_publishVehicle3.sqf to the server pbo
Go easy on me im just a stoner with a keyboard. My first thoughts where to check the variable is defined but i didn't see anything wrong with that, its defined at the top in the private array,

Iv read though every release thread and dont see anyone else mention of this issue so im convinced i screwed up somewhere. :( 

Edit-
Problem resolved took me a while but i got it,

 

Spoiler

if (s_player_lockUnlock_crtl < 0) then {
            _oldOwner = (_characterID == _uid);
            if (_isLocked) then {
                if (_hasKey || {_oldOwner}) then {
                    _temp_key_name = (_temp_keys_names select (_temp_keys find _characterID));
                    _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,_temp_key_name], 2, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                } else {
                    if (_hasHotwireKit) then {
                        _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true];
                    } else {
                        _unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, false, true];
                    };
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                };
            } else {
                if (_hasKey || _oldOwner) then {
                    _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_lock];
                    s_player_lockUnlock_crtl = 1;
                };
            };
        };

 

Share this post


Link to post
Share on other sites
On 6/28/2017 at 9:58 AM, salival said:

Hey,

I have fixed your problem (hopefully) and emailed your listed email address here on the forum.

It looks like when you merged the fn_selfActions you made some merging errors, let me know if this solves your problem.

I am having the same problem 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By [email protected]
      Im setting up a new epoch 1.0.6 server with very little addons/mods installed, and when i was testing i realized safes/plotpoles/walls etc werent saving to the server database. Anyone got any ideas what might be wrong?
    • By THAC0_Gewch
      https://github.com/OlofTheBald/DayZ-Humanity-Loadout-Granter/tree/Epoch_1.0.5.1
       
      Updated for 1.0.6.x
    • By THAC0_Gewch
      Many years ago, I made a Humanity Loadout script for 1.0.5.x. The script is basic, it checks your players' humanity and grants a pre-set loadout when they spawn depending on their humanity level.
      I've now updated and optimized this script for 1.0.6.x:
      https://github.com/OlofTheBald/DayZ-Humanity-Loadout-Granter
       
       
    • By Vitor99
      Hi everyone, i would like to know if there is any torrent links for Epoch and Overpoch, if you know some send me the link here
    • By Reaper5150
      Simple but fun little script I put together awhile ago.
      What it does? It is bound to a object in this case "ItemObsidian" as a right click, but can be changed to whatever you want. It then will sends out a message to the players on the server and marks the player with red smoke and a marker on the map.
      The player will then get 2 mins of god mod acting like the amour. Once the amour takes damage (All it is is a countdown timer really) The god mode is then disabled so they can be killed.
      I'm still working on this and will update it when it is done. If any of you better scriptwriters then myself ( I'm still a noob lol) have any ideas on how to improve this? contact me so I can give you credit in the update :)
      Known bugs:
      marker sometimes stays on map Credits to : @Schalldampfer  For helping me understand map markers
      Install: Place this in your scripts folder name it something like Jugg.sqf
      //========================================================
      //========= Juggernaut script-Written by Reaper5150 ===========
      //=======================================================
      sleep 2;
      [nil,nil,rTitleText,"THERE IS A JUGGERNAUT,FIND HIM AND KILL HIM IF YOU CAN!!!","PLAIN",3] call RE;
      sleep 1;
      [nil, player, rSAY, "YOURSOUND.OGG", 100] call RE; //Add your custom sound here when Juggernaut spawns 
      [] spawn {
      player removeMagazine 'ItemObsidian';//Add whatever object you want and bound to your right click function
      sleep 5;
      [nil,nil,rTitleText,"THE JUGGERNAUT HAS BODY ARMOR,WE CAN'T KILL HIM...HELP!!!","PLAIN",3] call RE;
      ////////Set marker/////////////////////////////////////////////////////////////////////
      [] execVM "scripts\marker.sqf";
      //Start Smoke Marker//////////////////////////////////////////////////////////////////////////
      sleep 5;
      PJ_grenade = "SmokeShellRed" createVehicle position player;
      PJ_grenade attachto [vehicle player,[0.1,0,0]];
      sleep 2;
      [nil,nil,rTitleText,"THE JUGGERNAUT (PLAYER) HAS BEEN MARKED WITH SMOKE AND ON THE MAP!!!","PLAIN",3] call RE;
       
      //Temp Godmode for 2 mins////////////////////////////////////////////////////
      (vehicle player) removeAllEventHandlers "handleDamage";
      (vehicle player) addEventHandler ["handleDamage", { false }];    
      (vehicle player) allowDamage false;
       
      //Acts like a countdown timer//////////////////////////////////////////////////////////////////
      sleep 90;
      [nil,nil,rTitleText,"THE JUGGERNAUTS ARMOR HAS TAKEN 30% DAMAGE","PLAIN",3] call RE;
      sleep 100;
      [nil,nil,rTitleText,"THE JUGGERNAUTS ARMOR HAS TAKEN 50% DAMAGE","PLAIN",3] call RE;
      sleep 110;
      [nil,nil,rTitleText,"THE JUGGERNAUTS ARMOR HAS TAKEN 90% DAMAGE","PLAIN",3] call RE;
      uiSleep 120;
      [nil,nil,rTitleText,"THE JUGGERNAUTS ARMOR IS WEAK...TAKE HIM OUT NOW!!!","PLAIN",3] call RE;
      sleep 2;
       
      //Start ending Juggernaut///////////////////////////////////
      (vehicle player) addEventHandler ["handleDamage", { true }];    
      (vehicle player) removeAllEventHandlers "handleDamage";
      (vehicle player) allowDamage true;
      uiSleep 240;
      deleteVehicle PJ_grenade;
      END;
      Call it from your right click
      ["ItemObsidian","JUGGERNAUT","execVM 'scripts\Jugg.sqf';","true"], 
      marker.sqf:
      _unit = player;
      _nameP = name _unit;
      _markerobjp = createMarker [_namep,[0,0]];
      _markerobjp setMarkerShape "ICON";
      _markerobjp setMarkerType "mil_dot";
      _markerobjp setMarkerColor "ColorRed";
      _markerobjp setMarkerText _nameP;
      _markerobjp setMarkerSize [1,1];

      while {alive _unit} do {
      _markerobjp setmarkerdir (getdir _unit);
      _markerobjp setMarkerPos (getPos _unit);
      _markerobjp setMarkerText _nameP;
      sleep 5;
      };
      ////////////////////////////////////////////
      uiSleep 240;
      deleteMarker _markerobjp;
       
  • Advertisement
  • Supporters
  • Discord

×
×
  • Create New...