Jump to content
  • 0

Looking for a bit of help with client side rpt errors on an overpoch server


Th3-Hunter333

Question

Ive been trying to clear some rpt errors that i think is affected server and client fps with no luck so far.

Is it possible that client side errors could be affecting fps?

Any help at all to what im doing wrong here would be greatly appreciated

This here is getting spammed in client side rpt logs..

  Error position: <_wpui displayCtrl 4900;
Money = player g>
  Error Undefined variable in expression: _wpui
File mpmissions\__CUR_MP.Napf\ZSC\compiles\playerHud.sqf, line 6
Warning Message: Resource title ZSC_Money_Display not found
Error in expression <ariable "ZSC_Money_Display";
_vitals = _wpui displayCtrl 4900;
Money = player g>
  Error position: <_wpui displayCtrl 4900;
Money = player g>
  Error Undefined variable in expression: _wpui
File mpmissions\__CUR_MP.Napf\ZSC\compiles\playerHud.sqf, line 6
Warning Message: Resource title ZSC_Money_Display not found
Error in expression <ariable "ZSC_Money_Display";
_vitals = _wpui displayCtrl 4900;
Money = player g>
  Error position: <_wpui displayCtrl 4900;
Money = player g>
  Error Undefined variable in expression: _wpui
File mpmissions\__CUR_MP.Napf\ZSC\compiles\playerHud.sqf, line 6
Warning Message: Resource title ZSC_Money_Display not found
Error in expression <ariable "ZSC_Money_Display";
_vitals = _wpui displayCtrl 4900;
Money = player g>
  Error position: <_wpui displayCtrl 4900;
Money = player g>
  Error Undefined variable in expression: _wpui
File mpmissions\__CUR_MP.Napf\ZSC\compiles\playerHud.sqf, line 6
"PLOGIN: Login loop completed!"
"infiSTAR.de - randvar26 created (22.559)"
"infiSTAR.de - randvar1 started (22.744)"
Warning Message: Resource title ZSC_Money_Display not found
Error in expression <ariable "ZSC_Money_Display";
_vitals = _wpui displayCtrl 4900;
Money = player g>
  Error position: <_wpui displayCtrl 4900;
Money = player g>
  Error Undefined variable in expression: _wpui
File mpmissions\__CUR_MP.Napf\ZSC\compiles\playerHud.sqf, line 6
"infiSTAR.de - randvar1 created randvar27a (22.966)"
"infiSTAR.de - 08-04-2015-v1401 - Successfully Loaded on Client ID428 (22.966)"
"infiSTAR.de - randvar1 created randvar27 (22.966)"
Error in expression <yer_flipveh = -1;


player removeAction s_player_bury_human;
s_player_bury_human>
  Error position: <s_player_bury_human;
s_player_bury_human>
  Error Undefined variable in expression: s_player_bury_human
File mpmissions\__CUR_MP.Napf\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 1050
Warning Message: Resource title ZSC_Money_Display not found
Error in expression <ariable "ZSC_Money_Display";
_vitals = _wpui displayCtrl 4900;
Money = player g>
  Error position: <_wpui displayCtrl 4900;
Money = player g>
  Error Undefined variable in expression: _wpui
File mpmissions\__CUR_MP.Napf\ZSC\compiles\playerHud.sqf, line 6
Warning Message: Resource title ZSC_Money_Display not found
Error in expression <ariable "ZSC_Money_Display";
_vitals = _wpui displayCtrl 4900;
Money = player g>
  Error position: <_wpui displayCtrl 4900;
Money = player g>

 

here is the playerhud.sqf it is referring to
 

disableSerialization;
while {true} do
{
    1000 cutRsc ["ZSC_Money_Display","PLAIN"];
    _wpui = uiNameSpace getVariable "ZSC_Money_Display"; // Thx to ASREMIX
    _vitals = _wpui displayCtrl 4900;
    Money = player getVariable["cashMoney",0];
    _vitals ctrlSetStructuredText parseText format ["    <t size='0.9'> %1 </t><img size='0.9' align='right' image='ZSC\gui\Money.paa'/>",    [Money] call BIS_fnc_numberText];
    _vitals ctrlCommit 0;
    sleep 1.5;
};

 

This is the line it is referring to in fn_selfactions.sqf as well

    player removeAction s_player_flipveh;
    s_player_flipveh = -1;
    
    // Bury Body
    player removeAction s_player_bury_human;
    s_player_bury_human = -1;
    
    //Gut Human
    player removeAction s_player_butcher_human;
    s_player_butcher_human = -1;
    
    player removeAction s_player_sleep;
    s_player_sleep = -1;

 

 

Edited by Th3-Hunter333
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

looks like _wpui grabs a var from uiNamespace, this is because it's one of very few ways to retrieve display used in rscTitles. Either way I find it very weird that original dev decided to cutRsc inside infinite loop, there's absolutely no need to do that, since there's a way to get infinite duration from config. In fact much smaller version of loop can be kept in configs with cutRsc only used once on startup.
Back on topic, your issue happens because:
1) some other resource uses layer 1000, this means display exists, but it hosts different controls group and since IDC does not match up, _wpui cannot be created leading to this error.
2) variable corruption (aka private variable inheritance) - this loop does not use private definitions, so every time resource is created again, any variables that held old control gets nil equivalent "no control" value assigned.

Solution: definitely adjust layer to something else.... like 99881, that should definitely be safe value. Also add private []; array inside while loop with all the local vars used.

Second error you have I believe is purely your own fault - as I love to call it - RTFM issue. Make sure to follow instructions properly and adjust variables.sqf file, use it to predefine missing self action variables. Simple solution is to have s_some_variable = -1; in your variables.sqf or somewhere on top of your init.sqf files. Basically it does not matter where you plug the damn thing, as long as its defined sooner than it's used to avoid errors

Link to comment
Share on other sites

  • 0

Im very new to script editing but i will try my best at this and give a little more insight, Raymix ive seen you around here alot on other threads and i must say your work is awesome. Again thanks greatly mate.

Both of these scripts that are creating these errors are zupa's coin system 3.0 and the other script is two of them combined (bury body/gut player)..

I believe its actually my own fault that the error came up in zupa's coins because i edited the file that creates his money display on the right side of the screen telling you how many coins you have on you.
I edited it to remove the display for the coins so i could add it to the default debug monitor on the top right along with an already made debug monitor from infistar

The code from infistar debug monitor that i have used is here. i dont think this edit would have anything to do with any of these errors but i have left it here to be seen.
My question is this, the little money display that is created on the right side below the debug monitor. Is this file (playerhud.sqf) the one that creates this icon and display for the coins?

If yes, cant i just remove this file to stop the error? since it is not needed.

 

hintSilent parseText format [""

<t size='1.6' font='Bitstream' align='center' color='#FACC2E'>Raging Dragon</t><br/>
<t size='1.15' font='Bitstream' align='center' color='#5882FA'>%7 Players Online</t><br/>
<img size='4.75' image='%11'/><br/>
<t size='1.20' font='Bitstream' color='#00FF00'>Survived %6 Days</t><br/><br/>
<t size='1.15' font='Bitstream' align='left'>Zombies Killed: </t>
<t size='1.15' font='Bitstream' align='right'>%1</t><br/>
<t size='1.15' font='Bitstream' align='left'>Headshots: </t>
<t size='1.15' font='Bitstream' align='right'>%2</t><br/>
<t size='1.15' font='Bitstream' align='left'>Murders: </t>
<t size='1.15' font='Bitstream' align='right'>%3</t><br/>
<t size='1.15' font='Bitstream' align='left'>Bandits Killed: </t>
<t size='1.15' font='Bitstream' align='right'>%4</t><br/><br/>
<t size='1.15' font='Bitstream' align='left'>Humanity: </t>
<t size='1.15' font='Bitstream' align='right'>%5</t><br/>
<t size='1.15' font='Bitstream' align='left' color='#C70000'>Blood: </t>
<t size='1.15' font='Bitstream' align='right' color='#C70000'>%8</t><br/><br/>
<t size='1.15' font='Bitstream' color='#FACC2E' align='left'>Coins: </t>
<t size='1.15' font='Bitstream' color='#FACC2E' align='right'>%12</t><br/><br/>
<t size='1.20' font='Bitstream' align='center' color='#16DB57'>Restart in %10 minutes</t><br/>
<t size='1.20' font='Bitstream' align='center' color='#FF8000'>FPS: %9</t><br/>
<t size='1.20' font='Bitstream' align='center' color='#FFFF00'>ragingdragonclan.com</t><br/>
<t size='1.20' font='Bitstream' align='center' color='#FFFFFF'>ts3rg.ts3.nfoservers.com</t><br/>
"",
(player getVariable['zombieKills', 0]),
(player getVariable['headShots', 0]),
(player getVariable['humanKills', 0]),
(player getVariable['banditKills', 0]),
(player getVariable['humanity', 0]),
(dayz_Survived),
(count playableUnits),
r_player_blood,
(round diag_fps),
(round(180-(serverTime) / 60)),
_pic,
(player getVariable['cashMoney', 0] call BIS_fnc_numberText)
];

 

Now onto the bury body/gut player error.
I have added this to variables.sqf in an attempt to fix this and i will report back here if that fixed it or not.

variables.sqf edit

 

    s_player_deleteBuild =    -1;
    s_player_forceSave =     -1;
    s_player_checkGear =     -1;
    s_player_flipveh =         -1;
    
    // Bury body
    s_player_bury_human = -1;
    
    // Gut body
    s_player_butcher_human = -1;
    
    s_player_stats =        -1;
    s_player_sleep =        -1;
    s_player_movedog =        -1;

 

Edit: I have done the above edits and i also made an attempt at fixing the money display error by going to init.sqf and commenting out the line that calls for playerhud.sqf inside zupa's files.. Both of these edits seem to have fixed the prior issue with the rpt spam..

Sadly it was apparently only part of the issue, this in turn created more errors from other areas strangely enough
 

"infiSTAR.de - randvar1 created randvar27 (24.4)"
Error in expression <r_studybody = -1;


player removeAction s_player_clothes;
s_player_clothes = -1;>
  Error position: <s_player_clothes;
s_player_clothes = -1;>
  Error Undefined variable in expression: s_player_clothes
File mpmissions\__CUR_MP.Napf\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 1077
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
Error in expression <"",""];
};
} else {
player removeAction s_player_packvehicle;
s_player_packvehic>
  Error position: <s_player_packvehicle;
s_player_packvehic>
  Error Undefined variable in expression: s_player_packvehicle
File mpmissions\__CUR_MP.Napf\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 856
Error in expression <"",""];
};
} else {
player removeAction s_player_packstatic;
s_player_packstatic>
  Error position: <s_player_packstatic;
s_player_packstatic>
  Error Undefined variable in expression: s_player_packstatic
File mpmissions\__CUR_MP.Napf\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 866
350z_gold: ABSwitch - unknown animation source ABSwitch
2nd UV set needed, but not defined in ReportStack not available
ca\misc\houpacka.p3d: house, config class missing
ca\misc3\wf\wf_depot.p3d: house, config class missing
ca\misc3\wf\wf_depot.p3d: house, config class missing
Strange convex component01 in rh_m14\rh_m14aim.p3d:geometry
Strange convex component07 in rh_m14\rh_m14aim.p3d:geometry
Strange convex component12 in rh_m14\rh_m14aim.p3d:geometry
Strange convex component01 in rh_m14\rh_m1seot.p3d:geometry
Strange convex component07 in rh_m14\rh_m1seot.p3d:geometry
Strange convex component12 in rh_m14\rh_m1seot.p3d:geometry
Strange convex component01 in rh_m14\rh_sc2eot.p3d:geometry
Strange convex component07 in rh_m14\rh_sc2eot.p3d:geometry
Strange convex component12 in rh_m14\rh_sc2eot.p3d:geometry
Strange convex component01 in rh_m14\rh_m1stsp.p3d:geometry
Strange convex component07 in rh_m14\rh_m1stsp.p3d:geometry
Strange convex component08 in rh_m14\rh_m1stsp.p3d:geometry
Strange convex component12 in rh_m14\rh_m1stsp.p3d:geometry
2nd UV set needed, but not defined in ReportStack not available
ca\misc\houpacka.p3d: house, config class missing
ca\misc\houpacka.p3d: house, config class missing
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
ca\misc3\wf\wf_depot.p3d: house, config class missing
ca\misc\houpacka.p3d: house, config class missing
ca\misc\houpacka.p3d: house, config class missing
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
Error in expression <tNumber(configFile >> "CfgMagazines" >> _loot >> "count");
if(_loot_count>1) the>
  Error position: <_loot >> "count");
if(_loot_count>1) the>
  Error Undefined variable in expression: _loot
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 100
Error in expression <CLChances select _index;
_loot = _array select (_weights select (floor(random (c>
  Error position: <select (_weights select (floor(random (c>
  Error Zero divisor
File mpmissions\__CUR_MP.Napf\zupa\walkers\zombie_generate.sqf, line 98
ca\misc\houpacka.p3d: house, config class missing
ca\misc\houpacka.p3d: house, config class missing




Im a little confused with a zero divisor error, I have never seen nor heard of this.
 

fn_selfactions.sqf line 1077

player removeAction s_player_fireout;
    s_player_fireout = -1;
    player removeAction s_player_packtent;
    s_player_packtent = -1;
    player removeAction s_player_fillfuel;
    s_player_fillfuel = -1;
    player removeAction s_player_studybody;
    s_player_studybody = -1;
    
    // Take clothes
    player removeAction s_player_clothes;
    s_player_clothes = -1;
    
    //Dog
    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;

 

Zombie_generate.sqf, this is from lines 83 to 109

 

        //Add some loot
        _loot = "";
        _array = [];
        _rnd = random 1;
        if (_rnd < 0.2) then {
            _lootType = configFile >> "CfgVehicles" >> _type >> "zombieLoot";
            if (isText _lootType) then {
                _array = [];
                {
                    _array set [count _array, _x select 0]
                } forEach getArray (configFile >> "cfgLoot" >> getText(_lootType));
                if (count _array > 0) then {
                    _index = dayz_CLBase find getText(_lootType);
                    _weights = dayz_CLChances select _index;
                    _loot = _array select (_weights select (floor(random (count _weights))));
                    if(!isNil "_array") then {
                        _loot_count =    getNumber(configFile >> "CfgMagazines" >> _loot >> "count");
                        if(_loot_count>1) then {
                            _agent addMagazine [_loot, ceil(random _loot_count)];
                        } else {
                        _agent addMagazine _loot;
                        };
                    };
                };
            };
        };

 

This is fn_selfactions.sqf again from lines 854 to 873

 

    //Pack Vehicles
    if (_typeOfCursorTarget in EVDVehicleArray and _hasToolbox and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {
        if (s_player_packvehicle < 0) then {
            s_player_packvehicle = player addAction ["Pack Vehicle", "custom\EVD\EVD_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_packvehicle;
        s_player_packvehicle = -1;
    };
    
    //Pack Vehicles
    if (_typeOfCursorTarget in StaticVehicleArray and _hasToolbox and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {
        if (s_player_packstatic < 0) then {
            s_player_packstatic = player addAction ["Pack Vehicle","custom\evd\mounted weapons\static_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_packstatic;
        s_player_packstatic = -1;
    };
   

 

 

Edited by Th3-Hunter333
Reporting back with findings
Link to comment
Share on other sites

  • 0

Im just popping back over to say after a bit more of trial and error and finding this thread at the forums i have fixed every error in client rpt logs.
http://epochmod.com/forum/index.php?/topic/29504-zombie_generatesqf-error/

For anyone that has these errors, ill leave this here

fn selfactions.sqf

scriptName "Functions\misc\fn_selfActions.sqf";
/***********************************************************
    ADD ACTIONS FOR SELF
    - Function
    - [] call fnc_usec_selfActions;
************************************************************/
private ["_isWreckBuilding","_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors","_player_deleteBuild","_player_flipveh","_player_lockUnlock_crtl","_player_butcher","_player_studybody","_player_cook","_player_boil","_hasFuelBarrelE","_hasHotwireKit","_player_SurrenderedGear","_isSurrendered","_isModular","_isModularDoor","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached","_playerUID","_characterID","_plotDistance","_PlotsNear", "_classname","_isowner"];

// Turbo Glitch Fix
if ((animationState player) in ["smk_urbanproneright","smk_prone_to_urbanprone_right","smk_urbanproneleft","smk_prone_to_urbanprone_left"]) then {
player switchMove "";
player playActionNow "stop";
_namePlayer = name player;
_textMessage = _namePlayer + ", this function is disabled to prevent glitching!";
[nil,nil,"per",rTITLETEXT,_textMessage,"PLAIN DOWN"] call RE;
};

if (DZE_ActionInProgress) exitWith {}; // Do not allow if any script is running.

_vehicle = vehicle player;
_isPZombie = player isKindOf "PZombie_VB";
_inVehicle = (_vehicle != player);

_onLadder =        (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);

_nearLight =     nearestObject [player,"LitObject"];
_canPickLight = false;
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;
};

// Animated vehicles
#include "animatedVehicles.sqf"

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 ["Detach Vehicle","\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_ForceNameTagsOff) then {
    if (s_player_showname < 0 && !_isPZombie) then {
        if (DZE_ForceNameTags) 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_callzombies < 0) then {
        s_player_callzombies = player addAction [localize "STR_EPOCH_ACTIONS_RAISEHORDE", "\z\addons\dayz_code\actions\call_zombies.sqf",player, 5, true, false, "",""];
    };
    if (DZE_PZATTACK) then {
        call pz_attack;
        DZE_PZATTACK = 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 {    //Has some kind of target
        _isAnimal = cursorTarget isKindOf "Animal";
        _isZombie = cursorTarget isKindOf "zZombie_base";
        _isHarvested = cursorTarget getVariable["meatHarvested",false];
        _isMan = cursorTarget isKindOf "Man";
        // Pzombie Gut human corpse || animal
        if (!alive cursorTarget && (_isAnimal || _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 || SHIP
_allowedDistance = 4;
_isAir = cursorTarget isKindOf "Air";
_isShip = cursorTarget isKindOf "Ship";
if(_isAir || _isShip) then {
    _allowedDistance = 8;
};

if (!isNull cursorTarget && !_inVehicle && !_isPZombie && (player distance cursorTarget < _allowedDistance) && _canDo) then {    //Has some kind of target

    // set cursortarget to variable
    _cursorTarget = cursorTarget;

    // get typeof cursortarget once
    _typeOfCursorTarget = typeOf _cursorTarget;

    // hintsilent _typeOfCursorTarget;

    _isVehicle = _cursorTarget isKindOf "AllVehicles";
    _isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"];
    _isnewstorage = _typeOfCursorTarget in DZE_isNewStorage;
    
    // get items && magazines only once
    _magazinesPlayer = magazines player;

    //boiled Water
    _hasbottleitem = "ItemWaterbottle" in _magazinesPlayer;
    _hastinitem = false;
    {
        if (_x in _magazinesPlayer) then {
            _hastinitem = true;
        };
    } count boil_tin_cans;
    _hasFuelE =     "ItemJerrycanEmpty" in _magazinesPlayer;
    _hasFuelBarrelE =     "ItemFuelBarrelEmpty" in _magazinesPlayer;
    _hasHotwireKit =     "ItemHotwireKit" in _magazinesPlayer;

    _itemsPlayer = items player;
    
    _temp_keys = [];
    _temp_keys_names = [];
    // find available keys
    _key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];
    {
        if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in _key_colors) then {
            _ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid");
            _ownerKeyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName");
            _temp_keys_names set [_ownerKeyId,_ownerKeyName];
            _temp_keys set [count _temp_keys,str(_ownerKeyId)];
        };
    } count _itemsPlayer;

    _hasKnife =     "ItemKnife" in _itemsPlayer;
    _hasToolbox =     "ItemToolbox" in _itemsPlayer;

    if (DZE_APlotforLife) then {
        _playerUID = [player] call FNC_GetPlayerUID;
    }else{
        _playerUID = dayz_characterID;
    };

    _isMan = _cursorTarget isKindOf "Man";
    _traderType = _typeOfCursorTarget;
    _ownerID = _cursorTarget getVariable ["ownerPUID","0"];
    _characterID = _cursorTarget getVariable ["CharacterID","0"];
    _isAnimal = _cursorTarget isKindOf "Animal";
    _isDog =  (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin");
    _isZombie = _cursorTarget isKindOf "zZombie_base";
    _isDestructable = _cursorTarget isKindOf "BuiltItems";
    _isWreck = _typeOfCursorTarget in DZE_isWreck;
    _isWreckBuilding = _typeOfCursorTarget in DZE_isWreckBuilding;
    
    // Buildables
    _isModular = (_cursorTarget isKindOf "ModularItems") or ((typeOf _cursorTarget) in Custom_Buildables);

    _isModularDoor = _typeOfCursorTarget in ["Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","CinderWallDoor_DZ","CinderWallDoorSmall_DZ"];

    _isRemovable = _typeOfCursorTarget in DZE_isRemovable;
    _isDisallowRepair = _typeOfCursorTarget in ["M240Nest_DZ"];

    _isTent = _cursorTarget isKindOf "TentStorage";
    
    _isAlive = alive _cursorTarget;
    
    _text = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName");
    
    _rawmeat = meatraw;
    _hasRawMeat = false;
    {
        if (_x in _magazinesPlayer) then {
            _hasRawMeat = true;
        };
    } count _rawmeat;
    
    _isFuel = false;
    if (_hasFuelE || _hasFuelBarrelE) then {
        {
            if(_cursorTarget isKindOf _x) exitWith {_isFuel = true;};
        } count dayz_fuelsources;
    };

    // diag_log ("OWNERID = " + _ownerID + " CHARID = " + dayz_characterID + " " + str(_ownerID == dayz_characterID));
    
    // logic vars
    _player_flipveh = false;
    _player_deleteBuild = false;
    _player_lockUnlock_crtl = false;

     if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

         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_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];
         };

         _plotDistance = (DZE_PlotPole select 0);
        _PlotsmarkersNear = count (nearestObjects [_cursorTarget, ["Land_coneLight"], _PlotDistance]);

        if (s_player_plot_boundary_on < 0) then {
            If (_PlotsmarkersNear == 0 ) then{
                s_player_plot_boundary_on = player addAction ["Show plot boundary", "Custom\A_Plot_for_Life\Action\object_showPlotRadius.sqf", "", 1, false];
            };
         };    
         if (s_player_plot_boundary_off < 0) then {
            If (_PlotsmarkersNear > 0 ) then{
                s_player_plot_boundary_off = player addAction ["Remove plot boundary", "Custom\A_Plot_for_Life\Action\object_removePlotRadius.sqf", "", 1, false];
            };
        };
        if (s_player_plot_take_ownership < 0) then {
            if (DZE_PlotOwnership) then {
                _isowner = [player, _cursorTarget] call FNC_check_owner;
                If (( _isowner select 0 )) then{
                    s_player_plot_take_ownership = player addAction ["Take plot items ownership", "Custom\A_Plot_for_Life\Action\plot_take_ownership.sqf", "", 1, false];
                };
            };
        };
     } else {
        player removeAction s_player_maintain_area;
        s_player_maintain_area = -1;
        player removeAction s_player_maintain_area_preview;
        s_player_maintain_area_preview = -1;
        player removeAction s_player_plot_boundary_on;
        s_player_plot_boundary_on = -1;
        player removeAction s_player_plot_boundary_off;
        s_player_plot_boundary_off = -1;
        player removeAction s_player_plot_take_ownership;
        s_player_plot_take_ownership = -1;
    };

    // CURSOR TARGET ALIVE
    if(_isAlive) then {
        
        //Allow player to delete objects
        if(_isDestructable || _isWreck || _isRemovable || _isWreckBuilding) then {
            if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
                _player_deleteBuild = true;
            };
        };
//Allow owners to delete modulars
    if(_isModular && (_playerUID == _ownerID)) then {
            if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
                    _player_deleteBuild = true;
            };
    };
//Allow owners to delete modular doors without locks
    if(_isModularDoor && (_playerUID == _ownerID)) then {
            if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
                    _player_deleteBuild = true;
            };      
    };  

        // CURSOR TARGET VEHICLE
        if(_isVehicle) then {
            
            //flip vehicle small vehicles by your self && all other vehicles with help nearby
            if (!(canmove _cursorTarget) && (player distance _cursorTarget >= 2) && (count (crew _cursorTarget))== 0 && ((vectorUp _cursorTarget) select 2) < 0.5) then {
                _playersNear = {isPlayer _x} count (player nearEntities ["CAManBase", 6]);
                if(_isVehicletype || (_playersNear >= 2)) then {
                    _player_flipveh = true;    
                };
            };


            if(!_isMan && _characterID != "0" && !(_cursorTarget isKindOf "Bicycle")) then {
                _player_lockUnlock_crtl = true;
            };

        };
    
    };

    if(_player_deleteBuild) then {
        if (s_player_deleteBuild < 0) then {
            s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "Custom\A_Plot_for_Life\Action\remove.sqf",_cursorTarget, 1, true, true, "", ""];
        };
    } else {
        player removeAction s_player_deleteBuild;
        s_player_deleteBuild = -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;
        };

        //diag_log format["CREW: %1 ALLOW: %2",(count (crew _cursorTarget)),_allowTow];

        if (_allowTow) then {
            _liftHelis = nearestObjects [player, DZE_HeliAllowTowFrom, 15];
            {
                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 _liftHelis;
        };

        //diag_log format["HELI: %1 TARGET: %2",_found,_cursorTarget];

        _attached = _cursorTarget getVariable["attached",false];
        if(_found && _allowTow && _canDo && !locked _cursorTarget && !_isPZombie && (typeName _attached != "OBJECT")) then {
            if (s_player_heli_lift < 0) then {
                s_player_heli_lift = player addAction ["Attach to Heli", "\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 && unlock vehicle  
    if(_player_lockUnlock_crtl) then {
        if (s_player_lockUnlock_crtl < 0) then {
            _hasKey = _characterID in _temp_keys;
            _oldOwner = (_characterID == dayz_playerUID);
            if(locked _cursorTarget) 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 (parseNumber _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, true, 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];
                    
                    // Paint
                    if (_typeOfCursorTarget in ColourVehicles) then {
                        private ["_paint"];
                        _paint = player addAction ["Paint", "custom\Paint\player_paint_init.sqf",_cursorTarget, 2, true, true, "", ""];
                        s_player_lockunlock set [count s_player_lockunlock,_paint];
                    };
                    
                    s_player_lockUnlock_crtl = 1;
                };
            };
        };
        
    } else {
        {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
        s_player_lockUnlock_crtl = -1;
    };

    if(DZE_AllowForceSave) then {
        //Allow player to force save
        if((_isVehicle || _isTent) && !_isMan) then {
            if (s_player_forceSave < 0) then {
                s_player_forceSave = player addAction [format[localize "str_actions_save",_text], "\z\addons\dayz_code\actions\forcesave.sqf",_cursorTarget, 1, true, true, "", ""];
            };
        } else {
            player removeAction s_player_forceSave;
            s_player_forceSave = -1;
        };
    };

    
    
    If(DZE_AllowCargoCheck) then {
        if((_isVehicle || _isTent || _isnewstorage) && _isAlive && !_isMan && !locked _cursorTarget) then {
            if (s_player_checkGear < 0) then {
                s_player_checkGear = player addAction [localize "STR_EPOCH_PLAYER_CARGO", "\z\addons\dayz_code\actions\cargocheck.sqf",_cursorTarget, 1, true, true, "", ""];
            };
        } else {
            player removeAction s_player_checkGear;
            s_player_checkGear = -1;
        };
    };
    
    
    //flip vehicle small vehicles by your self && all other vehicles with help nearby
    if(_player_flipveh) 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 jerrycan
    if((_hasFuelE || _hasFuelBarrelE) && _isFuel) 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",[], 1, false, true, "", ""];
        };
    } else {
        player removeAction s_player_fillfuel;
        s_player_fillfuel = -1;
    };
    
    // logic vars for addactions
    _player_butcher = false;
    _player_studybody = false;
    _player_SurrenderedGear = false;

    // CURSOR TARGET NOT ALIVE
    if (!_isAlive) then {

        // Gut animal/zed
        if((_isAnimal || _isZombie) && _hasKnife) then {
            _isHarvested = _cursorTarget getVariable["meatHarvested",false];
            if (!_isHarvested) then {
                _player_butcher = true;
            };
        };

        // Study body
        if (_isMan && !_isZombie && !_isAnimal) then {
            _player_studybody = true;
        }
    } else {
        // unit alive

        // gear access on surrendered player
        if(_isMan && !_isZombie && !_isAnimal) then {
            _isSurrendered = _cursorTarget getVariable ["DZE_Surrendered",false];
            if (_isSurrendered) then {
                _player_SurrenderedGear = true;
            };
        };
    };


    // Human Gut animal || zombie
    if (_player_butcher) then {
        if (s_player_butcher < 0) then {
            if(_isZombie) then {
                s_player_butcher = player addAction [localize "STR_EPOCH_ACTIONS_GUTZOM", "\z\addons\dayz_code\actions\gather_zparts.sqf",_cursorTarget, 0, true, true, "", ""];
            } else {
                s_player_butcher = player addAction [localize "str_actions_self_04", "\z\addons\dayz_code\actions\gather_meat.sqf",_cursorTarget, 3, true, true, "", ""];
            };
        };
    } else {
        player removeAction s_player_butcher;
        s_player_butcher = -1;
    };

    // Study Body // zsc
if (_player_studybody) then {
    if (s_player_studybody < 0) then {
        s_player_studybody = player addAction [("<t color=""#FF0000"">"+("Check Wallet") + "</t>"), "ZSC\actions\check_wallet.sqf",_cursorTarget, 0, false, true, "",""];
    };
} else {
    player removeAction s_player_studybody;
    s_player_studybody = -1;
};

    // logic vars
    _player_cook = false;
    _player_boil = false;

    // CURSOR TARGET IS FIRE
    if (inflamed _cursorTarget) then {
        
        //Fireplace Actions check
        if (_hasRawMeat) then {
            _player_cook = true;    
        };
        
        // Boil water
        if (_hasbottleitem && _hastinitem) then {
            _player_boil = true;
        };
    };

    if (_player_SurrenderedGear) then {
        if (s_player_SurrenderedGear < 0) then {
            s_player_SurrenderedGear = player addAction [localize "STR_EPOCH_ACTIONS_GEAR", "\z\addons\dayz_code\actions\surrender_gear.sqf",_cursorTarget, 1, true, true, "", ""];
        };
    } else {
        player removeAction s_player_SurrenderedGear;
        s_player_SurrenderedGear = -1;
    };

    //Fireplace Actions check
    if (_player_cook) 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, "", ""];
        };
    } else {
        player removeAction s_player_cook;
        s_player_cook = -1;
    };
    
    // Boil water
    if (_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 {
        player removeAction s_player_boil;
        s_player_boil = -1;
    };
    
    if(_cursorTarget == dayz_hasFire) then {
        if ((s_player_fireout < 0) && !(inflamed _cursorTarget) && (player distance _cursorTarget < 3)) then {
            s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_fireout;
        s_player_fireout = -1;
    };
    
    //Packing my tent
    if(_isTent && (player distance _cursorTarget < 3)) then {
        if (_ownerID == _playerUID) then {
            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 {
            if(("ItemJerrycan" in _magazinesPlayer) && ("ItemMatchbox_DZE" in weapons player)) then {
                if (s_player_packtent < 0) then {
                    s_player_packtent = player addAction [localize "STR_EPOCH_ACTIONS_DESTROYTENT", "Custom\A_Plot_for_Life\Action\remove.sqf",_cursorTarget, 1, true, true, "", ""];
                };
            };
        };
    } else {
        player removeAction s_player_packtent;
        s_player_packtent = -1;
    };
    
    // Door management
    //Allow manage door
if((_typeOfCursorTarget in DZE_DoorsLocked)) then {
    if (s_player_manageDoor < 0) then {        
     s_player_manageDoor = player addAction ["<t color='#0059FF'>Manage Door</t>", "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)) then {
        if (s_player_unlockvault < 0) then {
            if(_typeOfCursorTarget in DZE_LockedStorage) then {
                if(_characterID == dayz_combination || _ownerID == _playerUID) 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 != _playerUID) 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;
    };
    
    // zsc
        if(_typeOfCursorTarget in ZSC_MoneyStorage && (player distance _cursorTarget < 5)) then {
        if (s_bank_dialog < 0) then {
                s_bank_dialog = player addAction ["Money Storage", "ZSC\actions\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];    
        };
    } else {
         player removeAction s_bank_dialog;
        s_bank_dialog = -1;
    };

    // cars
    if( _isVehicle && !_isMan &&_isAlive && !_isMan && !locked _cursorTarget && !(_cursorTarget isKindOf "Bicycle") && (player distance _cursorTarget < 5)) then {        
        if (s_bank_dialog2 < 0) then {
            s_bank_dialog2 = player addAction ["Money Storage", "ZSC\actions\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
        };            
    } else {        
        player removeAction s_bank_dialog2;
        s_bank_dialog2 = -1;
    };

    //Allow owner to pack vault
    if(_typeOfCursorTarget in DZE_UnLockedStorage && _characterID != "0" && (player distance _cursorTarget < 3)) then {

        if (s_player_lockvault < 0) then {
            if(_characterID == dayz_combination || _ownerID == dayz_playerUID) 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 == dayz_playerUID)) 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;
    };
    
    // zsc
    if (_isMan and _isAlive and !_isZombie and !_isAnimal and !(_traderType in serverTraders)) then {
    if (s_givemoney_dialog < 0) then {
        s_givemoney_dialog = player addAction [format["Give Money to %1", (name _cursorTarget)], "ZSC\actions\give_player_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
    };
} else {
    player removeAction s_givemoney_dialog;
    s_givemoney_dialog = -1;
};
    
    //Fuel Pump
    if(_typeOfCursorTarget in dayz_fuelpumparray) then {    
        if (s_player_fuelauto < 0) then {
            
            // check if Generator_DZ is running within 30 meters
            _findNearestGens = nearestObjects [player, ["Generator_DZ"], 30];
            _findNearestGen = [];
            {
                if (alive _x && (_x getVariable ["GeneratorRunning", false])) then {
                    _findNearestGen set [(count _findNearestGen),_x];
                };
            } count _findNearestGens;
            _IsNearRunningGen = count (_findNearestGen);
            
            // show that pump needs power if no generator nearby.
            if(_IsNearRunningGen > 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 && alive _cursorTarget) 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 {
            // s_player_lastTarget = _cursorTarget;
            s_player_lastTarget set [0,_cursorTarget];
            s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "Custom\A_Plot_for_Life\Action\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
        };
    } else {
        player removeAction s_player_upgrade_build;
        s_player_upgrade_build = -1;
    };
    
    // downgrade system
    if((_isDestructable || _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" || _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") && (DZE_Lock_Door == _characterID)) 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 {
            s_player_lastTarget set [1,_cursorTarget];
            s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "Custom\A_Plot_for_Life\Action\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
        };
    } else {
        player removeAction s_player_downgrade_build;
        s_player_downgrade_build = -1;
    };

    // inplace maintenance tool
    if((_cursorTarget isKindOf "ModularItems" || _cursorTarget isKindOf "DZE_Housebase" || _typeOfCursorTarget == "LightPole_DZ") && (damage _cursorTarget >= DZE_DamageBeforeMaint)) 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 {
            s_player_lastTarget set [2,_cursorTarget];
            s_player_maint_build = player addAction [format[localize "STR_EPOCH_ACTIONS_MAINTAIN",_text], "\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(_cursorTarget isKindOf "Generator_DZ") 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 && 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("ItemJerrycan" in _magazinesPlayer) 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;
    };
    */


    //Sleep
    if(_isTent && _ownerID == _playerUID) then {
        if ((s_player_sleep < 0) && (player distance _cursorTarget < 3)) 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;
    };
    
    _clothesTaken = _cursorTarget getVariable["clothesTaken",false];

    // Take clothes by Zabn
    if (_isMan and !_isAlive and !_isZombie and !_clothesTaken) then {
        if (s_player_clothes < 0) then {
            s_player_clothes = player addAction [("<t color='#0096ff'>")+("Take Clothes")+("</t>"), "scripts\player_takeClothes_v2.sqf",[_cursorTarget], -10, false, true, "",""];
        };
    } else {
        player removeAction s_player_clothes;
        s_player_clothes = -1;
        };
    
    //Repairing Vehicles
    if ((dayz_myCursorTarget != _cursorTarget) && _isVehicle && !_isMan && _hasToolbox && (damage _cursorTarget < 1) && !_isDisallowRepair) then {
        if (s_player_repair_crtl < 0) then {
            dayz_myCursorTarget = _cursorTarget;
            _menu = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_REPAIRV", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
            // _menu1 = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_SALVAGEV", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
            _menu1 = dayz_myCursorTarget addAction ["Salvage Vehicle", "custom\A_Plot_for_Life\action\salvage_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
            s_player_repairActions set [count s_player_repairActions,_menu];
            s_player_repairActions set [count s_player_repairActions,_menu1];
            s_player_repair_crtl = 1;
        } else {
            {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
            s_player_repair_crtl = -1;
        };
    };

    //Pack Vehicles
    if (_typeOfCursorTarget in EVDVehicleArray and _hasToolbox and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {
        if (s_player_packvehicle < 0) then {
            s_player_packvehicle = player addAction ["Pack Vehicle","custom\EVD\EVD_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_packvehicle;
        s_player_packvehicle = -1;
    };
    
    //Pack Vehicles
    if (_typeOfCursorTarget in StaticVehicleArray and _hasToolbox and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {
        if (s_player_packstatic < 0) then {
            s_player_packstatic = player addAction ["Pack Vehicle","custom\evd\mounted weapons\static_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_packstatic;
        s_player_packstatic = -1;
    };
    
        // Bury Body
    if (!_isAlive and !_isZombie and !_isAnimal and _isMan and _canDo) then {
        if (s_player_bury_human < 0) then {
            s_player_bury_human = player addAction [format["Bury Body"], "custom\bury_human.sqf",cursorTarget, 3, true, true, "", ""];
        };
    } else {
        player removeAction s_player_bury_human;
        s_player_bury_human = -1;
    };
    // Gut Body
    if (!_isAlive and !_isZombie and !_isAnimal and _isMan and _canDo) then {
        if (s_player_butcher_human < 0) then {
            s_player_butcher_human = player addAction [format["Gut Player"], "custom\gather_meat_human.sqf",cursorTarget, 3, true, true, "", ""];
        };
    } else {
        player removeAction s_player_butcher_human;
        s_player_butcher_human = -1;
    };
    
    // All Traders
    if (_isMan && !_isPZombie && _traderType in serverTraders) then {
        
        if (s_player_parts_crtl < 0) then {

            // get humanity
            _humanity = player getVariable ["humanity",0];
            _traderMenu = call compile format["menu_%1;",_traderType];

            // diag_log ("TRADER = " + str(_traderMenu));
            
            _low_high = "low";
            _humanity_logic = false;
            if((_traderMenu select 2) == "friendly") then {
                _humanity_logic = (_humanity < -5000);
            };
            if((_traderMenu select 2) == "hostile") then {
                _low_high = "high";
                _humanity_logic = (_humanity > -5000);
            };
            if((_traderMenu select 2) == "hero") then {
                _humanity_logic = (_humanity < 5000);
            };
            if((_traderMenu select 2) == "superhero") then {
                _humanity_logic = (_humanity < 50000);
            };
            if((_traderMenu select 2) == "superbandit") then {
                _low_high = "high";
                _humanity_logic = (_humanity > -50000);
            };
            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
                {
                    //diag_log format["DEBUG TRADER: %1", _x];
                    _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);
                
                // Advanced trading
                _buyV = player addAction ["<t color='#0059FF'>Advanced Trading</t>", "zupa\advancedTrading\init.sqf",(_traderMenu select 0), 999, true, false, "",""];
                s_player_parts set [count s_player_parts,_buyV];
                
                // 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
        if (_isDog && _isAlive && (_hasRawMeat) && _characterID == "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\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];
            };
        } else {
            player removeAction s_player_tamedog;
            s_player_tamedog = -1;
        };
        if (_isDog && _characterID == dayz_characterID && _isAlive) then {
            _dogHandle = player getVariable ["dogID", 0];
            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 && "ItemWaterbottle" in _magazinesPlayer) 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 {
                _lieDown = _dogHandle getFSMVariable "_actionLieDown";
                if (_lieDown) 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;
            
            // Door management
            player removeAction s_player_manageDoor;
            s_player_manageDoor = -1; // u might also want to add this to variables reset in your variables.sqf
        };
    };

} else {
    //Engineering
    
    {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
    s_player_repair_crtl = -1;

    {player removeAction _x} count s_player_combi;s_player_combi = [];
        
    dayz_myCursorTarget = objNull;
    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_checkGear;
    s_player_checkGear = -1;

    player removeAction s_player_SurrenderedGear;
    s_player_SurrenderedGear = -1;

    //Others
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
    player removeAction s_player_plot_boundary_on;
    s_player_plot_boundary_on = -1;
    player removeAction s_player_plot_boundary_off;
    s_player_plot_boundary_off = -1;
    player removeAction s_player_plot_take_ownership;
    s_player_plot_take_ownership = -1;
    player removeAction s_player_forceSave;
    s_player_forceSave = -1;
    player removeAction s_player_flipveh;
    s_player_flipveh = -1;
    
    // Bury Body
    player removeAction s_player_bury_human;
    s_player_bury_human = -1;
    
    //Gut Human
    player removeAction s_player_butcher_human;
    s_player_butcher_human = -1;
    
    player removeAction s_player_sleep;
    s_player_sleep = -1;
    player removeAction s_player_deleteBuild;
    s_player_deleteBuild = -1;
    player removeAction s_player_butcher;
    s_player_butcher = -1;
    player removeAction s_player_cook;
    s_player_cook = -1;
    player removeAction s_player_boil;
    s_player_boil = -1;
    player removeAction s_player_fireout;
    s_player_fireout = -1;
    player removeAction s_player_packtent;
    s_player_packtent = -1;
    player removeAction s_player_fillfuel;
    s_player_fillfuel = -1;
    player removeAction s_player_studybody;
    s_player_studybody = -1;
    
    // Take clothes
    player removeAction s_player_clothes;
    s_player_clothes = -1;
    
    //Dog
    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;
    
    // vault
    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;
    
    // zsc
    player removeAction s_givemoney_dialog;
    s_givemoney_dialog = -1;
    player removeAction s_bank_dialog;
    s_bank_dialog = -1;
    player removeAction s_bank_dialog2;
    s_bank_dialog2 = -1;
};

 

//Dog actions on player self
_dogHandle = player getVariable ["dogID", 0];
if (_dogHandle > 0) then {
    _dog = _dogHandle getFSMVariable "_dog";
    _characterID = "0";
    if (!isNull cursorTarget) then { _characterID = cursorTarget getVariable ["CharacterID","0"]; };
    if (_canDo && !_inVehicle && alive _dog && _characterID != dayz_characterID) 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;
};


variables.sqf

disableSerialization;
if (isNil "DayZ_UseSteamID") then {
    DayZ_UseSteamID = true;
};

/**DoorManagement Config**/
DoorAdminList = ["-2","-3"]; // List of Player Id's of admins that can manage all doors
AllowManualCode = true;// 2 reason| 1: Allows breaking codes (if 2nd config = false and code = 3 digits) | 2: Friends can access access not owned doors until owner gets on.
HarderPenalty = true;// Cen's Penalty: Flashes screen white. And kicks player to lobby if failed more then (random number between 4 and 14) times.
// AllowUncrackableCode = false; // in next release: if set to true, player can change code to more then 4 digits, The manualCode will always fail when he does. THIS is for AntiCodeCrack servers that allow Manual Code for people that like that system.
// in next release. AllowManualCode will allow players to change the code in the DoorManagement Menu.
/**DoorManagement Config END**/
DZE_DoorsLocked = ["Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallDoorLocked_DZ","CinderWallDoorSmallLocked_DZ"];

//Model Variables
Bandit1_DZ =     "Bandit1_DZ";
Bandit2_DZ =     "Bandit2_DZ";
BanditW1_DZ =     "BanditW1_DZ";
BanditW2_DZ =     "BanditW2_DZ";
Survivor1_DZ =     "Survivor2_DZ";
Survivor2_DZ =     "Survivor2_DZ";
SurvivorW2_DZ = "SurvivorW2_DZ";
SurvivorW3_DZ = "SurvivorW2_DZ";
Sniper1_DZ =     "Sniper1_DZ";
Camo1_DZ =         "Camo1_DZ";
Soldier1_DZ =     "Soldier1_DZ";
Rocket_DZ =     "Rocket_DZ";

AllPlayers = ["Survivor2_DZ","SurvivorWcombat_DZ","SurvivorWdesert_DZ","SurvivorWurban_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ","SurvivorW2_DZ","Bandit1_DZ","Bandit2_DZ","BanditW1_DZ","BanditW2_DZ","Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","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"];
MeleeWeapons = ["MeleeFishingPole","MeleeCrowbar","MeleeBaseBallBatNails","MeleeBaseBallBatBarbed","MeleeBaseBallBat","Crossbow_DZ","MeleeSledge","MeleeMachete","MeleeHatchet_DZE"];
gear_done = false;
//Cooking
meatraw = [
    "FoodSteakRaw",
    "FoodmeatRaw",
    "FoodbeefRaw",
    "FoodmuttonRaw",
    "FoodchickenRaw",
    "FoodrabbitRaw",
    "FoodbaconRaw",
    "ItemTrout",
    "ItemSeaBass",
    "ItemTuna"
];
exceptionsraw = ["ItemTuna"];
meatcooked = [
    "FoodSteakCooked",
    "FoodmeatCooked",
    "FoodbeefCooked",
    "FoodmuttonCooked",
    "FoodchickenCooked",
    "FoodrabbitCooked",
    "FoodbaconCooked",
    "ItemTroutCooked",
    "ItemSeaBassCooked",
    "ItemTunaCooked"
];
//Eating
no_output_food = ["FoodMRE", "FoodPistachio", "FoodNutmix","FoodBioMeat"]+meatcooked+meatraw;

// Food with increased chance for infection.
badfood = ["FoodBioMeat","FoodCanUnlabeled"];

food_with_output=[
    "FoodCanBakedBeans",
    "FoodCanSardines",
    "FoodCanFrankBeans",
    "FoodCanPasta",
    "FoodCanGriff",
    "FoodCanBadguy",
    "FoodCanBoneboy",
    "FoodCanCorn",
    "FoodCanCurgon",
    "FoodCanDemon",
    "FoodCanFraggleos",
    "FoodCanHerpy",
    "FoodCanOrlok",
    "FoodCanPowell",
    "FoodCanTylers",
    "FoodCanUnlabeled"
];

food_output = [
    "TrashTinCan",
    "TrashTinCan",
    "TrashTinCan",
    "TrashTinCan",
    "FoodCanGriffEmpty",
    "FoodCanBadguyEmpty",
    "FoodCanBoneboyEmpty",
    "FoodCanCornEmpty",
    "FoodCanCurgonEmpty",
    "FoodCanDemonEmpty",
    "FoodCanFraggleosEmpty",
    "FoodCanHerpyEmpty",
    "FoodCanOrlokEmpty",
    "FoodCanPowellEmpty",
    "FoodCanTylersEmpty",
    "FoodCanUnlabeledEmpty"
];
//Drinking
no_output_drink = ["ItemWaterbottle", "ItemWaterbottleBoiled"];
drink_with_output = [
    "ItemSoda",  //just to define item for ItemSodaEmpty
    "ItemSodaRbull",
    "ItemSodaOrangeSherbet",
    "ItemSodaCoke",
    "ItemSodaPepsi",
    "ItemSodaMdew",
    "ItemSodaMtngreen",
    "ItemSodaR4z0r",
    "ItemSodaClays",
    "ItemSodaSmasht",
    "ItemSodaDrwaste",
    "ItemSodaLemonade",
    "ItemSodaLvg",
    "ItemSodaMzly",
    "ItemSodaRabbit"
];
drink_output = [
    "ItemSodaEmpty",
    "ItemSodaEmpty",
    "ItemSodaEmpty",
    "ItemSodaCokeEmpty",
    "ItemSodaPepsiEmpty",
    "ItemSodaMdewEmpty",
    "ItemSodaMtngreenEmpty",
    "ItemSodaR4z0rEmpty",
    "ItemSodaClaysEmpty",
    "ItemSodaSmashtEmpty",
    "ItemSodaDrwasteEmpty",
    "ItemSodaLemonadeEmpty",
    "ItemSodaLvgEmpty",
    "ItemSodaMzlyEmpty",
    "ItemSodaRabbitEmpty"
];
boil_tin_cans = [
    "TrashTinCan",
    "FoodCanGriffEmpty",
    "FoodCanBadguyEmpty",
    "FoodCanBoneboyEmpty",
    "FoodCanCornEmpty",
    "FoodCanCurgonEmpty",
    "FoodCanDemonEmpty",
    "FoodCanFraggleosEmpty",
    "FoodCanHerpyEmpty",
    "FoodCanOrlokEmpty",
    "FoodCanPowellEmpty",
    "FoodCanTylersEmpty",
    "FoodCanUnlabeledEmpty",
    "ItemSodaEmpty",
    "ItemSodaCokeEmpty",
    "ItemSodaPepsiEmpty",
    "ItemSodaMdewEmpty",
    "ItemSodaMtngreenEmpty",
    "ItemSodaR4z0rEmpty",
    "ItemSodaClaysEmpty",
    "ItemSodaSmashtEmpty",
    "ItemSodaDrwasteEmpty",
    "ItemSodaLemonadeEmpty",
    "ItemSodaLvgEmpty",
    "ItemSodaMzlyEmpty",
    "ItemSodaRabbitEmpty"
];

dayz_combination = "";
dayz_humanitytarget = "";
dayz_combatLog = "";
canRoll = true;

canbuild = true;

//Hunting Variables
dayZ_partClasses = [
    "PartFueltank",
    "PartWheel",
    //"PartGeneric",    //No need to add, it is default for everything
    "PartEngine"
];
dayZ_explosiveParts = [
    "palivo",
    "motor"
];
//Survival Variables
SleepFood =                2160; //minutes (48 hours)
SleepWater =            1440; //minutes (24 hours)
SleepTemperatur    =         90 / 100;    //Firs Value = Minutes untill Player reaches the coldest Point at night (without other effects! night factor expected to be -1)            //TeeChange

//Server Variables
allowConnection =         false;
isSinglePlayer =        false;
PVDZE_serverObjectMonitor = [];
PlayerDeaths = [];

//Streaming Variables (player only)
dayz_Locations = [];
dayz_locationsActive = [];

//GUI
Dayz_GUI_R = 0.38; // 0.7
Dayz_GUI_G = 0.63; // -0.63
Dayz_GUI_B = 0.26; // -0.26
if (isNil "Dayz_Dark_UI") then {
    Dayz_Dark_UI = false;
};

//Player self-action handles
dayz_resetSelfActions = {
    s_player_fire =            -1;
    s_player_cook =            -1;
    s_player_boil =            -1;
    s_player_fireout =        -1;
    s_player_butcher =        -1;
    s_player_packtent =     -1;
    s_player_packvault =     -1;
    s_player_lockvault =     -1;
    s_player_unlockvault =     -1;
    s_player_fillwater =    -1;
    s_player_fillwater2 =     -1;
    s_player_fillfuel =     -1;
    s_player_grabflare =     -1;
    s_player_dropflare =    -1;
    s_player_callzombies =     -1;
    s_player_showname =     -1;
    s_player_debuglootpos =     -1;
    s_player_pzombiesattack =     -1;
    s_player_pzombiesvision =    -1;
    s_player_pzombiesfeed =     -1;
    s_player_removeflare =     -1;
    s_player_painkiller =    -1;
    s_player_studybody =     -1;
    
    // Take clothes
    s_player_clothes = -1;
    
    s_player_tamedog =        -1;
    s_player_madsci_crtl =    -1;
    s_player_parts_crtl =    -1;
    s_build_Sandbag1_DZ =     -1;
    s_build_Hedgehog_DZ =    -1;
    s_build_Wire_cat1 =        -1;
    s_player_deleteBuild =    -1;
    s_player_forceSave =     -1;
    s_player_checkGear =     -1;
    s_player_flipveh =         -1;
    
    // Bury body
    s_player_bury_human = -1;
    
    // Gut body
    s_player_butcher_human = -1;
    
    s_player_stats =        -1;
    s_player_sleep =        -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_repair_crtl =  -1;
    
    // Pack Vehicle
    s_player_packvehicle = -1;
    
    // Pack Vehicle
    s_player_packstatic = -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_preview = -1;
    s_player_heli_lift = -1;
    s_player_heli_detach = -1;
    s_player_lockUnlock_crtl = -1;
    
    // Vector building
    s_player_toggleDegree = -1;
    s_player_toggleDegrees=[];
    degreeActions = -1;
    s_player_toggleVector = -1;
    s_player_toggleVectors=[];
    vectorActions = -1;
    
    s_player_toggleSnap = -1;
    s_player_toggleSnapSelect = -1;
    s_player_toggleSnapSelectPoint=[];
    snapActions = -1;
    s_player_plot_boundary_on = -1;
    s_player_plot_boundary_off = -1;
    s_player_plot_take_ownership = -1;
    
    // zsc
    s_givemoney_dialog = -1;
    s_bank_dialog = -1;
    s_bank_dialog2 = -1;
    
    // Door management
    s_player_manageDoor = -1;
    
    // Masterkey
    s_player_claimvehicle = -1;
    s_player_copyToKey = -1;
    
    // Animated vehicles
    ah1z_fold = -1;
    ah1z_unfold = -1;
    mv22_fold = -1;
    mv22_unfold = -1;
    mv22_open = -1;
    mv22_close = -1;
    suv_close = -1;
    suv_open = -1;
    uh1y_fold = -1;
    uh1y_unfold = -1;
};
call dayz_resetSelfActions;

//Engineering variables
s_player_lastTarget =    [objNull,objNull,objNull,objNull,objNull];
s_player_repairActions = [];
s_player_lockunlock = [];

// Custom
s_player_madsci         =     [];
s_player_parts             =     [];
s_player_combi             =     [];

//Modular player_build
snapGizmos = [];
snapGizmosNearby = [];

//Initialize Medical Variables
r_interrupt =             false;
r_doLoop =                 false;
r_self =                 false;
r_self_actions =         [];
r_drag_sqf =             false;
r_action =                 false;
r_action_unload =         false;
r_player_handler =         false;
r_player_handler1 =     false;
r_player_dead =         false;
r_player_unconscious =     false;
r_player_infected =        false;
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_lowblood =     false;
r_player_timeout =        0;
r_player_bloodTotal =     r_player_blood;
r_public_blood =        r_player_blood;
r_player_bloodDanger =    r_player_bloodTotal * 0.2;
r_player_actions =         [];
r_handlerCount =         0;
r_action_repair =         false;
r_action_targets =         [];
r_pitchWhine =             false;
r_isBandit =            false;
isInTraderCity =        false;
NORRN_dropAction =        -1;
DZE_PROTOBOX = objNull;

//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"
];
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]
];
DAYZ_woundHit_dog = [
    [
        "body",
        "hands",
        "legs"
    ],
    [0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2]
];
USEC_MinorWounds     = [
    "hands",
    "legs"
];
USEC_woundPoint    = [
    ["Pelvis","aimpoint"],
    ["aimpoint"], //,"RightShoulder","LeftShoulder"
    ["lelbow","relbow"],
    ["RightFoot","LeftFoot"],
    ["neck","pilot"]
];
USEC_typeOfWounds = [
    "Pelvis",
    "aimpoint",
    "lelbow","relbow",
    "RightFoot","LeftFoot",
    "neck","pilot"
];

DZE_vehicleZwounds = [
    "sklo predni L",
    "sklo predni P",
    "sklo zadni",
    "sklo zadni L",
    "sklo zadni P",
    "sklo P",
    "Glass1",
    "Glass2",
    "Glass3",
    "Glass4",
    "Glass5",
    "Glass6"
];

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"
];

//Initialize Zombie Variables
dayz_zombieTargetList = [
    ["SoldierWB",50],
    ["Air",500],
    ["LandVehicle",200]
];
PVDZE_plr_Hit = [];
PVDZE_obj_Publish = [];        //used for eventhandler to spawn a mirror of players tent
PVDZE_plr_HideBody = objNull;
dayz_selectedVault = objNull;
dayz_selectedDoor = objNull;

PVDZE_veh_Publish = [];        // for vehicle traders
PVDZE_obj_Trade = [];        // For all traders increment qty
PVDZE_plr_TradeMenu = [];          // For all traders
PVDZE_plr_DeathB = [];

//DayZ settings
dayz_dawn = 6;
dayz_dusk = 18;
DAYZ_agentnumber = 0;
dayz_animalDistance = 800;
dayz_zSpawnDistance = 1000;

dayz_maxMaxModels = 80; // max quantity of Man models (player || Z, dead || 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_spawnArea = 200; // radius around player where we can spawn loot & Z
dayz_cantseeDist = 150; // distance from which we can spawn a Z in front of any player without ray-tracing && angle checks
dayz_cantseefov = 70; // half player field-of-view. Visible Z won't be spawned in front of any near players
dayz_canDelete = 300; // Z, further than this distance from its "owner", will be deleted

if(isNil "DZE_SelfTransfuse") then {
    DZE_SelfTransfuse = false;
};
if(isNil "dayz_maxAnimals") then {
    dayz_maxAnimals = 5;
};
if(isNil "timezoneswitch") then {
    timezoneswitch = 0;
};
if(isNil "dayz_maxLocalZombies") then {
    dayz_maxLocalZombies = 15;
};
if(isNil "dayz_maxGlobalZombiesInit") then {
    dayz_maxGlobalZombiesInit = 15;
};
if(isNil "dayz_maxGlobalZombiesIncrease") then {
    dayz_maxGlobalZombiesIncrease = 5;
};
if(isNil "dayz_maxZeds") then {
    dayz_maxZeds = 500;
};
if (isNil "DZE_PlayerZed") then {
    DZE_PlayerZed = true;
};
if (isNil "DZE_GodModeBase") then {
    DZE_GodModeBase = false;
};
if(isNil "DZEdebug") then {
    DZEdebug = false;
};
if (isNil "DZE_Debug_Damage") then {
    DZE_Debug_Damage = true;
};
if(isNil "DZE_TRADER_SPAWNMODE") then {
    DZE_TRADER_SPAWNMODE = false;
};
if(isNil "dayz_tameDogs") then {
    dayz_tameDogs = false;
};
if(isNil "dayz_sellDistance_vehicle") then {
    dayz_sellDistance_vehicle = 10;
};
if(isNil "dayz_sellDistance_boat") then {
    dayz_sellDistance_boat = 30;
};
if(isNil "dayz_sellDistance_air") then {
    dayz_sellDistance_air = 40;
};
if(isNil "dayz_paraSpawn") then {
    dayz_paraSpawn = false;
};
if(isNil "dayz_minpos") then {
    dayz_minpos = -20000;
};
if(isNil "dayz_maxpos") then {
    dayz_maxpos = 20000;
};
if(isNil "DZE_BuildingLimit") then {
    DZE_BuildingLimit = 150;
};
if(isNil "DZE_HumanityTargetDistance") then {
    DZE_HumanityTargetDistance = 25;
};
if(isNil "DZE_FriendlySaving") then {
    DZE_FriendlySaving = true;
};
if(isNil "DZE_BuildOnRoads") then {
    DZE_BuildOnRoads = false;
};
if(isNil "DZE_MissionLootTable") then {
    DZE_MissionLootTable = false;
};
if(isNil "DZE_ConfigTrader") then {
    DZE_ConfigTrader = false;
};
if(isNil "DZE_LootSpawnTimer") then {
    DZE_LootSpawnTimer = 10;
};
if(isNil "DZE_HeliLift") then {
    DZE_HeliLift = true;
};
if(isNil "DZE_DamageBeforeMaint") then {
    DZE_DamageBeforeMaint = 0.09;
};
if(isNil "DZE_StaticConstructionCount") then {
    DZE_StaticConstructionCount = 0;
};
if (isNil "DZE_selfTransfuse_Values") then {
    DZE_selfTransfuse_Values = [12000, 15, 300];
};
if (isNil "helperDetach") then {
    helperDetach = false;
};
if (isNil "DZE_modularBuild") then {
    DZE_modularBuild = false;
};
if (isNil "DZE_snapExtraRange") then {
    DZE_snapExtraRange = 0;
};
if (isNil "DZE_APlotforLife") then {
    DZE_APlotforLife = false;
};
if (isNil "DZE_PlotOwnership") then {
    DZE_PlotOwnership = false;
};
if (isNil "DZE_checkNearbyRadius") then {
    DZE_checkNearbyRadius = 30;
};

// needed on server
if(isNil "DZE_PlotPole") then {
    DZE_PlotPole = [30,45];
};
if(isNil "DZE_maintainRange") then {
    DZE_maintainRange = ((DZE_PlotPole select 0)+20);
};

DZE_snap_build_file = "";

DZE_REPLACE_WEAPONS = [["Crossbow","ItemMatchbox","ItemHatchet"],["Crossbow_DZ","ItemMatchbox_DZE","ItemHatchet_DZE"]];

if(isNil "dayz_zedSpawnVehCount") then {
    dayz_zedSpawnVehCount = dayz_maxLocalZombies / 2;
};
if(isNil "dayz_spawnAirCount") then {
    dayz_spawnAirCount = 0;
};
if(isNil "dayz_zedsAttackVehicles") then {
    dayz_zedsAttackVehicles = true;
};

// update objects
dayz_updateObjects = ["Plane","Tank","Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage","LockboxStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ","Scaffolding_DZ"];
dayz_disallowedVault = ["TentStorage", "BuiltItems","ModularItems","DZE_Base_Object"];
dayz_reveal = ["AllVehicles","WeaponHolder","Land_A_tent","BuiltItems","ModularItems","DZE_Base_Object"];
// EVD
StaticVehicleArray = ["M240Nest_DZ","AGS_RU","MK19_TriPod","BAF_GMG_Tripod_D","M2StaticMG_US_EP1","M2HD_mini_TriPod","KORD_high","KORD","DSHkM_Mini_TriPod","DSHKM_Gue"];

dayz_allowedObjects = StaticVehicleArray + ["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];
DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","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"];

DZE_DoorsLocked = ["Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallDoorLocked_DZ","CinderWallDoorSmallLocked_DZ"];

// List of removable items that require crowbar
DZE_isRemovable = ["Fence_corrugated_DZ","ParkBench_DZ","Plastic_Pole_EP1_DZ","FireBarrel_DZ","Scaffolding_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"];

// 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_fuelstation","land_fuelstation_w","Land_benzina_schnell"];
DZE_fueltruckarray = ["KamazRefuel_DZ","UralRefuel_TK_EP1_DZ","MtvrRefuel_DES_EP1_DZ","V3S_Refuel_TK_GUE_EP1_DZ","MtvrRefuel_DZ","KamazRefuel_DZE","UralRefuel_TK_EP1_DZE","MtvrRefuel_DES_EP1_DZE","V3S_Refuel_TK_GUE_EP1_DZE","MtvrRefuel_DZE"];

// Standard Fuel sources
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_fuelstation_w","Land_benzina_schnell"];

DZE_Lock_Door = "";

if (isNil "DZE_plotOwnershipExclusions") then {
    DZE_plotTakeOwnershipItems = dayz_allowedObjects - (DZE_LockableStorage + ["Plastic_Pole_EP1_DZ","TentStorage","TentStorageDomed","TentStorageDomed2"]);
};

//init global arrays for Loot Chances
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\loot_init.sqf";

if(isServer) then {
    dayz_players = [];
    dead_bodyCleanup = [];
    needUpdate_objects = [];

    DZE_DYN_AntiStuck = 0;
    DZE_DYN_AntiStuck2nd = 0;
    DZE_DYN_AntiStuck3rd = 0;

    if(isNil "dayz_fullMoonNights") then {
        dayz_fullMoonNights = false;
    };
    if(isNil "EpochEvents") then {
        EpochEvents = [];
    };
    if(isNil "DZE_vehicleAmmo") then {
        DZE_vehicleAmmo = 0;
    };

    if(isNil "DZE_BackpackGuard") then {
        DZE_BackpackGuard = true;
    };

    if(isNil "DZE_CleanNull") then {
        DZE_CleanNull = false;
    };
    if (isNil "DZE_DeathMsgGlobal") then {
        DZE_DeathMsgGlobal = false;
    };
    if (isNil "DZE_DeathMsgSide") then {
        DZE_DeathMsgSide = false;
    };
    if (isNil "DZE_DeathMsgTitleText") then {
        DZE_DeathMsgTitleText = false;
    };
    DZE_safeVehicle = StaticVehicleArray + ["ParachuteWest","ParachuteC"];
};

if(!isDedicated) then {

    dayz_spawnPos = getPosATL player;

    dayz_buildingMonitor = [];    //Buildings to check
    dayz_bodyMonitor = [];

    // weather control var
    zeroPreviousWeather = [0,0,[0,0],0];
    zeroCurrentWeather = [0,0,[0,0],0];

    if (DZE_MissionLootTable) then {
        dayz_baseTypes =         getArray (missionConfigFile >> "CfgBuildingLoot" >> "Default" >> "zombieClass");
    } else {
        dayz_baseTypes =         getArray (configFile >> "CfgBuildingLoot" >> "Default" >> "zombieClass");
    };


    //temperature variables
    dayz_temperatur         =     36;        //TeeChange
    dayz_temperaturnormal     =     36;        //TeeChange
    dayz_temperaturmax         =     42;        //TeeChange
    dayz_temperaturmin         =     27;        //TeeChange

    //player special variables
    dayZ_lastPlayerUpdate = 0;
    dayZ_everyonesTents =    [];
    dayz_hunger    =            0;
    dayz_thirst =             0;
    dayz_combat =            0;
    dayz_preloadFinished =     false;
    dayz_statusArray =        [1,1];
    dayz_disAudial =        0;
    dayz_disVisual =        0;
    dayz_firedCooldown =     0;
    dayz_DeathActioned =    false;
    dayz_canDisconnect =     true;
    dayz_damageCounter =    time;
    dayz_lastSave =            time;
    dayz_isSwimming    =        true;
    dayz_isKneeling    =        false;
    dayz_isCrawling    =        false;
    dayz_PreviousTown =        "Wilderness";
    dayz_currentDay =         0;
    dayz_hasLight =         false;
    dayz_surfaceNoise =        0;
    dayz_surfaceType =        "None";
    dayz_noPenalty =         [];
    dayz_heavenCooldown =    0;
    deathHandled =             false;
    dayz_lastHumanity =        0;
    dayz_guiHumanity =        -90000;
    dayz_firstGroup =         group player;
    dayz_originalPlayer =     player;
    dayz_sourceBleeding =    objNull;
    dayz_clientPreload =     false;
    dayz_authed =             false;
    dayz_panicCooldown =     0;
    dayz_areaAffect =        2.5;
    dayz_heartBeat =         false;
    dayzClickTime =            0;
//Current local
    dayz_spawnZombies = 0;
    dayz_swarmSpawnZombies = 0;
//Max local
    dayz_CurrentNearByZombies = 0;
//Max NearBy
    if (isNil "dayz_maxNearByZombies") then {
        dayz_maxNearByZombies = 60; // max quantity of Z controlled by local gameclient, used by player_spawnCheck. Below this limit we can spawn Z
//Current total
    };
    dayz_currentGlobalZombies = 0;
//Max global zeds.
    if (isNil "dayz_maxGlobalZeds") then {
        dayz_maxGlobalZeds = 3000;
    };
    if (isNil "dayz_spawnDelay") then {
        dayz_spawnDelay =        120;
    };
    dayz_spawnWait =        -(dayz_spawnDelay);
    if (isNil "dayz_lootDelay") then {
        dayz_lootDelay =        3;
    };
    dayz_lootWait =            -300;
    //used to count global zeds around players
    dayz_CurrentZombies = 0;
    //Used to limit overall zed counts
    dayz_tickTimeOffset = 0;
    dayz_currentWeaponHolders = 0;
    dayz_maxMaxWeaponHolders = 80;
    dayz_maxCurrentZeds = 0;
    dayz_inVehicle =        false;
    dayz_Magazines =         [];
    dayzGearSave =             false;
    dayz_unsaved =            false;
    dayz_scaleLight =         0;
    dayzDebug = false;
    dayzState = -1;
    
    // gut player
    s_player_butcher_human = -1;
    
    //uiNamespace setVariable ['DAYZ_GUI_display',displayNull];
    //if (uiNamespace getVariable ['DZ_displayUI', 0] == 2) then {
    //    dayzDebug = true;
    //};

    DZE_ActionInProgress =        false;

    // DayZ Epoch Client only variables
    if(isNil "DZE_AllowForceSave") then {
        DZE_AllowForceSave = false;
    };
    if(isNil "DZE_AllowCargoCheck") then {
        DZE_AllowCargoCheck = true;
    };
    if(isNil "DZE_ForceNameTags") then {
        DZE_ForceNameTags = false;
    };
    if(isNil "DZE_ForceNameTagsOff") then {
        DZE_ForceNameTagsOff = false;
    };
    if(isNil "DZE_ForceNameTagsInTrader") then {
        DZE_ForceNameTagsInTrader = false;
    };
    if(isNil "DZE_HaloJump") then {
        DZE_HaloJump = true;
    };

    if(isNil "DZE_AntiWallLimit") then {
        DZE_AntiWallLimit = 3;
    };
    if(isNil "DZE_requireplot") then {
        DZE_requireplot = 1;
    };
    if(isNil "DZE_R3F_WEIGHT") then {
        DZE_R3F_WEIGHT = true;
    };


    DZE_AntiWallCounter = 0;

    DZE_FreshSpawn = false;

    DZE_myHaloVehicle = objNull;
    dayz_myLiftVehicle = objNull;

    DZE_Friends = [];

    DZE_CanPickup = true;
    DZE_Q = false;
    DZE_Z = false;

    DZE_Q_alt = false;
    DZE_Z_alt = false;

    DZE_Q_ctrl = false;
    DZE_Z_ctrl = false;

    DZE_5 = false;
    DZE_4 = false;
    DZE_6 = false;
    
    DZE_F = false;

    DZE_cancelBuilding = false;
    DZE_PZATTACK = false;

    DZE_trees = ["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"];
    DZE_TEMP_treedmg = 1;

    DZE_Surrender = false;
    DZE_Quarantine = false;
    DZE_InRadiationZone = false;

    DZE_SaveTime = 30;
};

ColourVehicles = [
    // Air
    "ATV_CZ_EP1",
    "AN2_DZ",
    "MH6J_DZ",
    "AH6X_DZ",
    "AH6J_EP1_DZ",
    "BAF_Merlin_DZE",
    "CYBP_Camel_us",
    "CYBP_Camel_rus",
    "CYBP_Camel_civ",
    "CSJ_GyroC",
    "CSJ_GyroCover",
    "CSJ_GyroP",
    "GNT_C185U",
    "GNT_C185",
    "GNT_C185R",
    "GNT_C185C",
    "USEC_ch53_DZE",
    "Mi17_Civilian_DZ",
    "MH60S_DZE",
    "Ka52",
    "Ka137_PMC",
    "pook_H13_gunship",
    "UH1H_TK_EP1",
    "UH1H_DZE",
    "UH1Y_DZE",
    "UH60M_EP1_DZE",
    "UH60M_MEV_EP1",

    // Land
    "350z_red",
    "350z_kiwi",
    "350z_black",
    "350z_silver",
    "350z_green",
    "350z_blue",
    "350z_gold",
    "350z_white",
    "350z_pink",
    "350z_mod",
    "350z_ruben",
    "350z_v",
    "350z_city",
    "350z_yellow",
    "ArmoredSUV_PMC_DZ",
    "ArmoredSUV_PMC_DZE",
    "ATV_US_EP1",
    "BMP2_Ambul_INS",
    "BRDM2_HQ_GUE",
    "BTR40_TK_INS_EP1",
    "BTR40_MG_TK_GUE_EP1",
    "BTR90_HQ_DZE",
    "car_hatchback",
    "car_sedan",
    "datsun1_civil_1_open",
    "datsun1_civil_2_covered",
    "datsun1_civil_3_open",
    "GLT_M300_LT",
    "GLT_M300_ST",
    "hilux1_civil_3_open_EP1",
    "hilux1_civil_2_covered",
    "hilux1_civil_1_open",
    "HMMWV_M1035_DES_EP1",
    "HMMWV_Ambulance",
    "HMMWV_Ambulance_CZ_DES_EP1",
    "HMMWV_DES_EP1",
    "HMMWV_DZ",
    "HMMWV_M998A2_SOV_DES_EP1_DZE",
    "HMMWV_M1151_M2_CZ_DES_EP1_DZE",
    "HMMWV_M1151_M2_DES_EP1",
    "HMMWV_M1035_DES_EP1",
    "Kamaz",
    "KamazOpen_DZE",
    "Lada1",
    "Lada1_TK_CIV_EP1",
    "Lada2",
    "Lada2_TK_CIV_EP1",
    "LadaLM",
    "LandRover_TK_CIV_EP1",
    "LandRover_CZ_EP1",
    "LandRover_MG_TK_EP1_DZE",
    "LandRover_Special_CZ_EP1_DZE",
    "LAV25_HQ",
    "M1133_MEV_EP1",
    "MTVR",
    "MTVR_DES_EP1",
    "Offroad_DSHKM_Gue_DZE",
    "Pickup_PK_GUE_DZE",
    "Pickup_PK_INS_DZE",
    "Pickup_PK_TK_GUE_EP1_DZE",
    "Skoda",
    "SkodaBlue",
    "SkodaGreen",
    "SkodaRed",
    "SUV_TK_CIV_EP1",
    "SUV_Blue",
    "SUV_Charcoal",
    "SUV_Green",
    "SUV_Orange",
    "SUV_Pink",
    "SUV_Red",
    "SUV_Silver",
    "SUV_White",
    "SUV_Yellow",
    "SUV_Camo",
    "Tractor",
    "UAZ_INS",
    "UAZ_CDF",
    "UAZ_RU",
    "UAZ_Unarmed_TK_CIV_EP1",
    "UAZ_Unarmed_TK_EP1",
    "UAZ_Unarmed_UN_EP1",
    "UAZ_MG_TK_EP1_DZE",
    "Ural_CDF",
    "Ural_TK_CIV_EP1",
    "Ural_UN_EP1",
    "UralCivil_DZE",
    "UralCivil2_DZE",
    "V3S_RA_TK_GUE_EP1_DZE",
    "V3S_Open_TK_CIV_EP1",
    "V3S_Open_TK_EP1",
    "V3S_Civ",
    "V3S_TK_EP1_DZE",
    "Volha_1_TK_CIV_EP1",
    "Volha_2_TK_CIV_EP1",
    "VolhaLimo_TK_CIV_EP1",
    "VWGolf",
    
    // Water
    "Smallboat_1",
    "Smallboat_2",
    "SeaFox",
    "SeaFox_EP1",
    "Zodiac",
    "Fishing_Boat",
    "PBX",
    "JetSkiYanahui_Case_Red",
    "JetSkiYanahui_Case_Yellow",
    "JetSkiYanahui_Case_Green",
    "JetSkiYanahui_Case_Blue"
];

// EVD // Evac Chopper
EVDVehicleArray = ["MMT_Civ","TT650_Civ","CSJ_GyroC"];
dayz_allowedObjects = dayz_allowedObjects + ["HeliHRescue","EVDVehicleArray"];

if(isServer) then {
    DZE_safeVehicle = DZE_safeVehicle + EVDVehicleArray;
};


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Discord

×
×
  • Create New...