Jump to content
VentZer0

[Release] Advanced DayZ Epoch Heli Lift

Recommended Posts

Hello there,

I was kind of disappointed that the dayz epoch heli-lift did not had the same class-system for helis and liftable vehicles. Meaning if you want helis to lift vehicles either all helis can lift the same or some simply cant ...
For example you want MH6's be able to lift, now you got lil birds lifting urals, now you exclude Urals from being lifted, but why a CH47 can lift about 10tons and a Ural is 'only' 8tons ... so the realism goes out of the window with this. BTC and others accommodate for this with different array of liftable vehicles for each class of heli. But it lacks one great feature of the dayzepoch lifting script, there has to be someone on the ground to attach the heli, which is IMHO much more awesome and realistic (realism = awesome).

So I modded the dayz epoch script abit, after a day fumbling around with different approaches I got it to work properly.

Features :
Easy install, only fn_selfActions.sqf and variables.sqf need to be changed in your missionfile.
Sort of realistic class system, determine which class of heli can lift what kind of vehicle.
Enforces teamwork on your server, rather than lonewolf pilots being able to lift everything off your frontlawn.

Can be easily adjusted and or extended.

 

Install :

You need to know how to edit your missionfile, if you dont look it up, theres plenty of guides in this forum.
I'm going to assume that you already have compiles.sqf, variables.sqf and fn_selfActions.sqf in your missionfile! If you dont go check out the guides about that.
ALWAYS MAKE BACKUPS!

First - open up fn_selfActions.sqf locate

	if (DZE_HeliLift) then {
		_liftHeli = objNull;
		_found = false;
	
		_allowTow = false;
		if ((count (crew _cursorTarget)) == 0) then {
			{
				if(!_allowTow) then {
					_allowTow = _cursorTarget isKindOf _x;
				};
			} forEach 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 = getPos _x;
					_posC = getPos _cursorTarget;
					_height = (_posL select 2) - (_posC select 2);
					_hasAttached = _x getVariable["hasAttached",false];
					if(_height < 15 and _height > 5 and (typeName _hasAttached != "OBJECT")) then {
						if(((abs((_posL select 0) - (_posC select 0))) < 10) and ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
							_liftHeli = _x;
							_found = true;
						};
					};
				};
			} forEach _liftHelis;
		};

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

		_attached = _cursorTarget getVariable["attached",false];
		if(_found and _allowTow and _canDo and !locked _cursorTarget and !_isPZombie and (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;
		};
	};



Now replace ALL of that with this

    //----DZE_HeliLift START-----
    if (DZE_HeliLift) then {
        _liftHeli = objNull;
        _found = false;
        _allowTow = false;
        _lightweight = false;
        _mediumweight = false;
        _heavyweight = false;
        _superheavyweight = false;
        if ((count (crew _cursorTarget)) == 0) then {
            { if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowLight;
            if(_allowTow) then { _lightweight = true; } else { _lightweight = false; };
        };
        if ((count (crew _cursorTarget)) == 0) then {
            { if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowMedium;
            if(_allowTow and !_lightweight) then { _mediumweight = true; } else { _mediumweight = false; };
        };
        if ((count (crew _cursorTarget)) == 0) then {
            { if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowHeavy;
            if(_allowTow and !_lightweight and !_mediumweight) then { _heavyweight = true; } else { _heavyweight = false; };
        };
        if ((count (crew _cursorTarget)) == 0) then {
            { if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowSuperHeavy;
            if(_allowTow && !_lightweight && !_mediumweight && !_heavyweight) then { _superheavyweight = true; } else { _superheavyweight = false; };
        };
        //diag_log format["CREW: %1 ALLOW: %2",(count (crew _cursorTarget)),_allowTow];
        if (_allowTow && _lightweight && !_found) then {
            _liftHelis = nearestObjects [player, DZE_HeliAllowTowFromLight, 15];
            {
                if(!_found) then {
                    _posL = getPos _x;
                    _posC = getPos _cursorTarget;
                    _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;
                        };
                    };
                };
            } forEach _liftHelis;
        };
        if ( _allowTow && !_found && ( _mediumweight || _lightweight ) ) then {
            _liftHelis = nearestObjects [player, DZE_HeliAllowTowFromMedium, 15];
            {
                if(!_found) then {
                    _posL = getPos _x;
                    _posC = getPos _cursorTarget;
                    _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;
                        };
                    };
                };
            } forEach _liftHelis;
        };
        if ( _allowTow && !_found && ( _heavyweight || _mediumweight || _lightweight ) ) then {
            _liftHelis = nearestObjects [player, DZE_HeliAllowTowFromHeavy, 15];
            {
                if(!_found) then {
                    _posL = getPos _x;
                    _posC = getPos _cursorTarget;
                    _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;
                        };
                    };
                };
            } forEach _liftHelis;
        };
        if ( _allowTow && !_found && ( _superheavyweight || _heavyweight || _mediumweight || _lightweight ) ) then {
            _liftHelis = nearestObjects [player, DZE_HeliAllowTowFromSuperHeavy, 15];
            {
                if(!_found) then {
                    _posL = getPos _x;
                    _posC = getPos _cursorTarget;
                    _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;
                        };
                    };
                };
            } forEach _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 ((_cursortarget getVariable ["MFTowInTow", false]) || (_cursortarget getVariable ["MFTowIsTowing", false])) then {
                cutText ["You cannot lift this vehicle because it is towing or being towed.", "PLAIN DOWN"];
            } else {
                if (s_player_heli_lift < 0) then {
                    s_player_heli_lift = player addAction [("<t color=""#ffab00"">" + ("Attach to Heli") + "</t>"), "\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;
        };
    };
    //----DZE_HeliLift END-----



Save it.


Open up variables.sqf and find

DZE_HeliAllowTowFrom = [
	"CH_47F_EP1_DZE",
	"CH_47F_EP1_DZ",
	"CH_47F_BAF",
	"CH_47F_EP1",
	"BAF_Merlin_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"
];



And again replace the entire part with this

//Carrier
DZE_HeliAllowTowFromSuperHeavy =    ["CH53_DZE","USEC_CH53_E","CH_47F_EP1_DZE","CH_47F_EP1_DZ","CH_47F_EP1","CH_47F_BAF"];
DZE_HeliAllowTowFromHeavy =            ["BAF_Merlin_DZE","BAF_Merlin_HC3_D","MH60S_DZE","MH60S_DZ","MH60S","UH60M_EP1_DZE","UH60M_EP1_DZ","UH60M_EP1","UH60M_MEV_EP1","Mi17_DZE","Mi17_medevac_Ins","Mi17_medevac_CDF","Mi17_medevac_RU","Mi17_DZ","Mi17_Ins","Mi17_CDF","Mi17_TK_EP1","Mi171Sh_CZ_EP1","Mi17_Civilian","Mi17_Civilian_DZ","Mi17_rockets_RU","Mi171Sh_rockets_CZ_EP1","Mi17_UN_CDF_EP1"];
DZE_HeliAllowTowFromMedium =        ["UH1H_DZE","UH1H_DZ","UH1H_TK_EP1","UH1H_TK_GUE_EP1","UH1Y_DZE","UH1Y_DZ","UH1Y","Ka60_PMG","Ka60_GL_PMG","Mi24_V","Mi24_P","Mi24_D","Mi24_D_TK_EP1"];
DZE_HeliAllowTowFromLight =            ["pook_H13_medevac","pook_H13_medevac_CIV","pook_H13_amphib","pook_H13_amphib_CIV","pook_H13_gunship","pook_H13_transport","pook_H13_civ","pook_H13_civ_white","pook_H13_civ_slate","pook_H13_civ_black","pook_H13_civ_yellow","AH6J_EP1_DZE","AH6J_EP1_DZ","AH6J_EP1","MH6J_DZ","MH6J_EP1","AH6X_DZ","AH6X_EP1"];
//Liftable Vehicles
DZE_HeliAllowToTowSuperHeavy =        ["TowingTractor","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","BTR40_base_EP1","BTR40_MG_base_EP1","M1126_ICV_M2_EP1","M1126_ICV_mk19_EP1","StrykerBase_EP1","M1126_ICV_BASE_EP1","Wheeled_APC","Truck","BAF_Jackal2_BASE_D","Ship"];
DZE_HeliAllowToTowHeavy =            ["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","GLT_M300_LT","GLT_M300_ST","ATV_US_EP1","ATV_CZ_EP1","Motorcycle","Ship","BAF_Jackal2_BASE_D"];
DZE_HeliAllowToTowMedium =            ["hilux1_civil_1_open","Lada_base","Offroad_DSHKM_base","Pickup_PK_base","SkodaBase","tractor","VWGolf","Volha_TK_CIV_Base_EP1","S1203_TK_CIV_EP1","SUV_Base_EP1","UAZ_Base","LandRover_Base","GLT_M300_LT","GLT_M300_ST","ATV_US_EP1","ATV_CZ_EP1","Motorcycle","Ship"];
DZE_HeliAllowToTowLight =            ["Motorcycle","ATV_US_EP1","ATV_CZ_EP1"];



Save it, pbo it and upload it to your server.
Of course, you need to have

DZE_HeliLift = True;

stated in you init.sqf of your missionfile for it to work.


Known Issues:
Sometimes the attach to option remains after you already attached a vehicle to a heli, using this option causes the attached vehicle to detach.
I dont know why this happens but I've seen this happening with the vanilla version of this HeliLift script.



Updated 2014 / 10 / 25 to fix lifting of vehicles that are already towing other vehicles (MF-Tow)

Share this post


Link to post
Share on other sites

I'm noob :D

 

variables.sqf and fn_selfActions.sqf not present on the my privat server   B)

 

if (DZE_HeliLift) then { present in server_functions.sqf (dayz_server.pbo)


server_checkIfTowed = {
	private ["_vehicle","_player","_attached"];
	if (DZE_HeliLift) then {
		_vehicle = 	_this select 0;
		_player = 	_this select 2;
		_attached = _vehicle getVariable["attached",false];
		if ((typeName _attached == "OBJECT")) then {
			_player action ["eject", _vehicle];
			detach _vehicle;
			_vehicle setVariable["attached",false,true];
			_attached setVariable["hasAttached",false,true];
		};
	};
};

how to install this in my server? 

Share this post


Link to post
Share on other sites

I have no idea, why would you even move that to the server.pbo? My script is an extention of the already included HeliLift of dayz epoch.
If you use any other way to HeliLift vehicles it prolly will not work together. Or if you dont know how to put files into your mission,
I suggest you consult the many how to's on adding/changing scripts to your/in your missionfile that are available in this forum.

All you need to know is how to add: compiles.sqf, variables.sqf and the fn_selfActions.sqf to your missionfile and what to change in the init.sqf of your missionfile.

Share this post


Link to post
Share on other sites

It is in your DAYZ_CODE.PBO in the init folder. copy "Variables.sqf and compiles.sqf" then go to the compile folder and copy fn_selfActions.sqf  to your mission folder into a folder called code then in your init.sqf change 

call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; 

to

call compile preprocessFileLineNumbers "code\variables.sqf";

and 

call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";

to

call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";

lastly, in the compiles.sqf file look for 

fnc_usec_selfActions =	compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selfActions.sqf";

and change it to 

 

fnc_usec_selfActions = compile preprocessFileLineNumbers "custom\code\fn_selfActions.sqf"; 
and then do the changes VentZer0 showed you

Share this post


Link to post
Share on other sites

This addon looks awesome! but I do have a question...

 

Most servers, including mine, that I've seen run R3F tow/life, how compatible would this be with that if you removed the list of liftables and such from R3F's lists?

 

Essentially i'd like to have R3F's towing alongside this mod's lifting.

Share this post


Link to post
Share on other sites

hello there it seems i dont have a variables.sqf could you enlighten me on how to add this to my mission file please ive only been doing this a few months now thanks alot

I refered to the guides about that in this forum a couple times. Please learn to use the search function and think for yourself. I will not spoonfeed anyone instructions on those basic things, I'm sorry but I wont.

Most basics that you need to know already are mentioned in this forum multiple times.

Share this post


Link to post
Share on other sites

I just can't get this to work :(

 

I've tried & tried and, despite having installed a lot of mods in the past, can't see what's wrong!

 

Could you take a peek and see if you can spot what I've done wrong?

 

self actions 

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","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached"];
 
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 and !r_player_unconscious and !_onLadder);
 
// Mike adding player menu starts
if(speed player <= 1) then {
if (s_player_dance < 0) then {
               s_player_dance = player addaction["Extras","dance\dance.sqf","",5,false,true,"",""];
        };
} else {
        player removeAction s_player_dance;
        s_player_dance = -1;
};
// Mike adding player menu ends
 
// ---------------------------------------Krixes Self Bloodbag Start------------------------------------
    _mags = magazines player;
 
    // Krixes Self Bloodbag
    if ("ItemBloodbag" in _mags) then {
        hasBagItem = true;
    } else { hasBagItem = false;};
    if((speed player <= 1) && hasBagItem && _canDo) then {
        if (s_player_selfBloodbag < 0) then {
            s_player_selfBloodbag = player addaction[("<t color="#c70000"">" + ("Self Bloodbag") +"</t>"),"dayz_code\actions\player_selfbloodbag.sqf","",5,false,true,"", "];
        };
    } else {
        player removeAction s_player_selfBloodbag;
        s_player_selfBloodbag = -1;
    };
// ---------------------------------------Krixes Self Bloodbag End------------------------------------
_nearLight = nearestObject [player,"LitObject"];
_canPickLight = false;
if (!isNull _nearLight) then {
if (_nearLight distance player < 4) then {
_canPickLight = isNull (_nearLight getVariable ["owner",objNull]);
};
};
 
// Mike adding sirens - ALSO added to description sounds config file
 
//Sirens
_isCopcar = typeOf _vehicle in ["SUV_TK_CIV_EP1","SUV_TK_CIV_EP1_DZE1","SUV_TK_CIV_EP1_DZE2","SUV_TK_CIV_EP1_DZE3","SUV_TK_CIV_EP1_DZE4","LadaLM","LadaLM_DZE1","LadaLM_DZE2","LadaLM_DZE3","LadaLM_DZE4","policecar","HMMWV_Ambulance","GAZ_Vodnik_MedEvac","pook_H13_medevac_INS"];
 
if (_inVehicle and _isCopcar and (driver _vehicle == player)) then {
        dayz_addsirens = _vehicle;
    if (s_player_sirens_on < 0) then {
        s_player_sirens_on = dayz_addsirens addAction ["Siren on","Scripts\sirens\sirens_on.sqf",dayz_addsirens,2,false,true,"",""];
        s_player_sirens_off = dayz_addsirens addAction ["Siren off","Scripts\sirens\sirens_off.sqf",dayz_addsirens,2,false,true,"",""];
        };
    } else {
        dayz_addsirens removeAction s_player_sirens_on;
        dayz_addsirens removeAction s_player_sirens_off;
        s_player_sirens_on = -1;
        s_player_sirens_off = -1;
    };
 
//Grab Flare
if (_canPickLight and !dayz_hasLight and !_isPZombie) then {
if (s_player_grabflare < 0) then {
_text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");
s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""];
s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true, "", ""];
};
} else {
player removeAction s_player_grabflare;
player removeAction s_player_removeflare;
s_player_grabflare = -1;
s_player_removeflare = -1;
};
 
if (DZE_HeliLift) then {
_hasAttached = _vehicle getVariable["hasAttached",false];
if(_inVehicle and (_vehicle isKindOf "Air") and ((getPos _vehicle select 2) < 30) and (speed _vehicle < 5) and (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 and (_vehicle isKindOf "Air") and ((getPos _vehicle 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 and !_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 and (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 or animal
if (!alive cursorTarget and (_isAnimal or _isMan) and !_isZombie and !_isHarvested) then {
if (s_player_pzombiesfeed < 0) then {
s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",cursorTarget, 3, true, false, "",""];
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
};
 
// Increase distance only if AIR OR SHIP
_allowedDistance = 4;
_isAir = cursorTarget isKindOf "Air";
_isShip = cursorTarget isKindOf "Ship";
if(_isAir or _isShip) then {
_allowedDistance = 8;
};
 
if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cursorTarget < _allowedDistance) and _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 and magazines only once
_magazinesPlayer = magazines player;
 
//boiled Water
_hasbottleitem = "ItemWaterbottle" in _magazinesPlayer;
_hastinitem = false;
{
if (_x in _magazinesPlayer) then {
_hastinitem = true;
};
} forEach 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)];
};
} forEach _itemsPlayer;
 
_hasKnife = "ItemKnife" in _itemsPlayer;
_hasToolbox = "ItemToolbox" in _itemsPlayer;
 
_isMan = _cursorTarget isKindOf "Man";
_traderType = _typeOfCursorTarget;
_ownerID = _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;
_isModular = _cursorTarget isKindOf "ModularItems";
 
_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;
};
} forEach _rawmeat; 
 
_isFuel = false;
if (_hasFuelE or _hasFuelBarrelE) then {
{
if(_cursorTarget isKindOf _x) exitWith {_isFuel = true;};
} forEach 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];
};
} 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;
};
 
// CURSOR TARGET ALIVE
if(_isAlive) then {
 
//Allow player to delete objects
if(_isDestructable or _isWreck or _isRemovable or _isWreckBuilding) then {
if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
_player_deleteBuild = true;
};
};
 
//Allow owners to delete modulars
                if(_isModular and (dayz_characterID == _ownerID)) then {
                        if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
                                _player_deleteBuild = true;
                        };
                };
 
// CURSOR TARGET VEHICLE
if(_isVehicle) then {
 
//flip vehicle small vehicles by your self and all other vehicles with help nearby
if (!(canmove _cursorTarget) and (player distance _cursorTarget >= 2) and (count (crew _cursorTarget))== 0 and ((vectorUp _cursorTarget) select 2) < 0.5) then {
_playersNear = {isPlayer _x} count (player nearEntities ["CAManBase", 6]);
if(_isVehicletype or (_playersNear >= 2)) then {
_player_flipveh = true;
};
};
 
 
if(!_isMan and _ownerID != "0" and !(_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], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
};
 
// Mike comment OUT heli lift stuff STARTS
 
 
// Mike comment out old heli lift ENDS
 
// Mike adding in NEW heli lift STARTS
 
if (DZE_HeliLift) then {
_liftHeli = objNull;
_found = false;
_allowTow = false;
if ((count (crew _cursorTarget)) == 0) then {
{ if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowLight;
if(_allowTow) then { _lightweight = true; } else { _lightweight = false; };
};
if ((count (crew _cursorTarget)) == 0) then {
{ if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowMedium;
if(_allowTow and !_lightweight) then { _mediumweight = true; } else { _mediumweight = false; };
};
if ((count (crew _cursorTarget)) == 0) then {
{ if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowHeavy;
if(_allowTow and !_lightweight and !_mediumweight) then { _heavyweight = true; } else { _heavyweight = false; };
};
if ((count (crew _cursorTarget)) == 0) then {
{ if(!_allowTow) then { _allowTow = _cursorTarget isKindOf _x; }; } forEach DZE_HeliAllowToTowSuperHeavy;
if(_allowTow and !_lightweight and !_mediumweight and !_heavyweight) then { _superheavyweight = true; } else { _superheavyweight = false; };
};
//diag_log format["CREW: %1 ALLOW: %2",(count (crew _cursorTarget)),_allowTow];
if (_allowTow and _lightweight and !_found) then {
_liftHelis = nearestObjects [player, DZE_HeliAllowTowFromLight, 15];
{
if(!_found) then {
_posL = getPos _x;
_posC = getPos _cursorTarget;
_height = (_posL select 2) - (_posC select 2);
_hasAttached = _x getVariable["hasAttached",false];
if(_height < 15 and _height > 5 and (typeName _hasAttached != "OBJECT")) then {
if(((abs((_posL select 0) - (_posC select 0))) < 10) and ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
_liftHeli = _x;
_found = true;
};
};
};
} forEach _liftHelis;
};
if ( _allowTow and !_found and ( _mediumweight or _lightweight ) ) then {
_liftHelis = nearestObjects [player, DZE_HeliAllowTowFromMedium, 15];
{
if(!_found) then {
_posL = getPos _x;
_posC = getPos _cursorTarget;
_height = (_posL select 2) - (_posC select 2);
_hasAttached = _x getVariable["hasAttached",false];
if(_height < 15 and _height > 5 and (typeName _hasAttached != "OBJECT")) then {
if(((abs((_posL select 0) - (_posC select 0))) < 10) and ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
_liftHeli = _x;
_found = true;
};
};
};
} forEach _liftHelis;
};
if ( _allowTow and !_found and ( _heavyweight or _mediumweight or _lightweight ) ) then {
_liftHelis = nearestObjects [player, DZE_HeliAllowTowFromHeavy, 15];
{
if(!_found) then {
_posL = getPos _x;
_posC = getPos _cursorTarget;
_height = (_posL select 2) - (_posC select 2);
_hasAttached = _x getVariable["hasAttached",false];
if(_height < 15 and _height > 5 and (typeName _hasAttached != "OBJECT")) then {
if(((abs((_posL select 0) - (_posC select 0))) < 10) and ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
_liftHeli = _x;
_found = true;
};
};
};
} forEach _liftHelis;
};
if ( _allowTow and !_found and ( _superheavyweight or _heavyweight or _mediumweight or _lightweight ) ) then {
_liftHelis = nearestObjects [player, DZE_HeliAllowTowFromSuperHeavy, 15];
{
if(!_found) then {
_posL = getPos _x;
_posC = getPos _cursorTarget;
_height = (_posL select 2) - (_posC select 2);
_hasAttached = _x getVariable["hasAttached",false];
if(_height < 15 and _height > 5 and (typeName _hasAttached != "OBJECT")) then {
if(((abs((_posL select 0) - (_posC select 0))) < 10) and ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
_liftHeli = _x;
_found = true;
};
};
};
} forEach _liftHelis;
};
//diag_log format["HELI: %1 TARGET: %2",_found,_cursorTarget];
_attached = _cursorTarget getVariable["attached",false];
if(_found and _allowTow and _canDo and !locked _cursorTarget and !_isPZombie and (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;
};
};
 
// Mike adding in new heli lift ENDS
 
// Allow Owner to lock and unlock vehicle  
if(_player_lockUnlock_crtl) then {
if (s_player_lockUnlock_crtl < 0) then {
_hasKey = _ownerID in _temp_keys;
_oldOwner = (_ownerID == dayz_playerUID);
if(locked _cursorTarget) then {
if(_hasKey or _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 _ownerID))], 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 or _oldOwner) then {
_lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true, "", ""];
s_player_lockunlock set [count s_player_lockunlock,_lock];
s_player_lockUnlock_crtl = 1;
};
};
};
 
} else {
{player removeAction _x} forEach s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;
};
 
if(DZE_AllowForceSave) then {
//Allow player to force save
if((_isVehicle or _isTent) and !_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 or _isTent or _isnewstorage) and _isAlive and !_isMan and !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 and 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 or _hasFuelBarrelE) and _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 or _isZombie) and _hasKnife) then {
_isHarvested = _cursorTarget getVariable["meatHarvested",false];
if (!_isHarvested) then {
_player_butcher = true;
};
};
 
// Study body
if (_isMan and !_isZombie and !_isAnimal) then {
_player_studybody = true;
}
} else {
// unit alive
 
// gear access on surrendered player
if(_isMan and !_isZombie and !_isAnimal) then {
_isSurrendered = _cursorTarget getVariable ["DZE_Surrendered",false];
if (_isSurrendered) then {
_player_SurrenderedGear = true;
};
};
};
 
 
// Human Gut animal or 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
if (_player_studybody) then {
if (s_player_studybody < 0) then {
s_player_studybody = player addAction [localize "str_action_studybody", "\z\addons\dayz_code\actions\study_body.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_studybody;
s_player_studybody = -1;
};
 
// 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 and _hastinitem) then {
_player_boil = true;
};
};
 
if (_player_SurrenderedGear) then {
if (s_player_SurrenderedGear < 0) then {
s_player_SurrenderedGear = player addAction [localize "STR_EPOCH_ACTION_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) and !(inflamed _cursorTarget) and (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 and (player distance _cursorTarget < 3)) then {
if (_ownerID == dayz_characterID) 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) and ("ItemMatchbox_DZE" in weapons player)) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction [localize "STR_EPOCH_ACTIONS_DESTROYTENT", "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
};
};
} else {
player removeAction s_player_packtent;
s_player_packtent = -1;
};
 
//Allow owner to unlock vault
if((_typeOfCursorTarget in DZE_LockableStorage) and _ownerID != "0" and (player distance _cursorTarget < 3)) then {
if (s_player_unlockvault < 0) then {
if(_typeOfCursorTarget in DZE_LockedStorage) then {
if(_ownerID == dayz_combination or _ownerID == dayz_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(_ownerID != dayz_combination and _ownerID != dayz_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} forEach s_player_combi;s_player_combi = [];
s_player_unlockvault = -1;
};
 
//Allow owner to pack vault
if(_typeOfCursorTarget in DZE_UnLockedStorage and _ownerID != "0" and (player distance _cursorTarget < 3)) then {
 
if (s_player_lockvault < 0) then {
if(_ownerID == dayz_combination or _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 and (_ownerID == dayz_combination or _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;
};
 
//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 and (_x getVariable ["GeneratorRunning", false])) then {
_findNearestGen set [(count _findNearestGen),_x];
};
} foreach _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 and 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") or (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") or (_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], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
};
} else {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
 
// downgrade system
if((_isDestructable or _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" or _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") and (DZE_Lock_Door == _ownerID)) 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], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
};
} else {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
 
// inplace maintenance tool
if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase" or _typeOfCursorTarget == "LightPole_DZ") and (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 and player has jerry.
if((_cursorTarget getVariable ["GeneratorFilled", false])) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR2", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
if("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 and _ownerID == dayz_characterID) then {
if ((s_player_sleep < 0) and (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;
};
 
// Mike adding code for take clothes below
 //////////////////////////////////////////
 
 _clothesTaken = cursorTarget getVariable["clothesTaken",false];
 
    // Take clothes by Zabn @ BalotaBuddies.net
    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>"), "dayz_code\actions\player_takeClothes.sqf",cursorTarget, -10, false, true, "","];
        };
    } else {
        player removeAction s_player_clothes;
        s_player_clothes = -1;
        };
 
// Mike adding code for take clothes above
//////////////////////////////////////////
//Repairing Vehicles
if ((dayz_myCursorTarget != _cursorTarget) and _isVehicle and !_isMan and _hasToolbox and (damage _cursorTarget < 1) and !_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, "",""];
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} forEach s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
};
};
 
// All Traders
if (_isMan and !_isPZombie and _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(_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];
 
} forEach (_traderMenu select 1);
// 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} forEach s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
};
 
 
if(dayz_tameDogs) then {
 
//Dog
if (_isDog and _isAlive and (_hasRawMeat) and _ownerID == "0" and 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 and _ownerID == dayz_characterID and _isAlive) then {
_dogHandle = player getVariable ["dogID", 0];
if (s_player_feeddog < 0 and _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 and "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;
};
};
 
} else {
//Engineering
{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
 
{player removeAction _x} forEach s_player_combi;s_player_combi = [];
 
dayz_myCursorTarget = objNull;
s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
 
{player removeAction _x} forEach s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
 
{player removeAction _x} forEach 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_forceSave;
s_player_forceSave = -1;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
player removeAction s_player_sleep;
s_player_sleep = -1;
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
player removeAction s_player_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 by Zabn @ Balota Buddies
        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;
};
 
 
 
//Dog actions on player self
_dogHandle = player getVariable ["dogID", 0];
if (_dogHandle > 0) then {
_dog = _dogHandle getFSMVariable "_dog";
_ownerID = "0";
if (!isNull cursorTarget) then { _ownerID = cursorTarget getVariable ["CharacterID","0"]; };
if (_canDo and !_inVehicle and alive _dog and _ownerID != 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

disableSerialization;
 
//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"];
 
//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
 
//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_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;
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;
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;
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;
};
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 = [];
 
//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;
 
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;
} forEach 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"
];
 
// Mike commenting out old heli lift stuff STARTS
 
/*
 
DZE_HeliAllowTowFrom = [
"CH_47F_EP1_DZE",
"CH_47F_EP1_DZ",
"CH_47F_BAF",
"CH_47F_EP1",
"MV22_DZ",
"BAF_Merlin_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"
];
 
*/
 
// Mike commenting out old heli lift stuff ENDS
 
// Mike adding NEW heli lift stuff STARTS
 
DZE_HeliAllowTowFromSuperHeavy = ["CH_47F_EP1","CH_47F_BAF","CH_47F_EP1_DZ","CH_47F_EP1_DZE"];
DZE_HeliAllowTowFromHeavy = ["UH60_Base","BAF_Merlin_DZE","BAF_Merlin_HC3_D","Mi17_Base"];
DZE_HeliAllowTowFromMedium = ["UH1Y_DZE","UH1H_DZE","Ka60_PMC","Ka60_GL_PMC","Mi24_P"];
DZE_HeliAllowTowFromLight = ["AH6X_DZ","MH6J_DZ","pook_H13_medevac","pook_H13_amphib","pook_H13_transport"];
 
 
DZE_HeliAllowToTowSuperHeavy = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC"];
DZE_HeliAllowToTowHeavy = ["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","GLT_M300_LT","GLT_M300_ST","ATV_US_EP1","ATV_CZ_EP1","Motorcycle","Ship"];
DZE_HeliAllowToTowMedium = ["hilux1_civil_1_open","Lada_base","Offroad_DSHKM_base","Pickup_PK_base","SkodaBase","tractor","VWGolf","Volha_TK_CIV_Base_EP1","S1203_TK_CIV_EP1","SUV_Base_EP1","UAZ_Base","LandRover_Base","GLT_M300_LT","GLT_M300_ST","ATV_US_EP1","ATV_CZ_EP1","Motorcycle","Ship"];
DZE_HeliAllowToTowLight = ["Motorcycle","ATV_US_EP1","ATV_CZ_EP1"];
 
// Mike adding NEW heli lift stuff ENDS
 
//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;
 
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_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;
};
 
 
// 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_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","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"];
dayz_allowedObjects = ["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","MAP_Hangar_2","Land_Misc_Cargo2E","HeliHRescue","MAP_SS_hangar","MAP_a_stationhouse"];
 
DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];
DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
//["ModularItems", "DZE_Housebase", "BuiltItems", "Plastic_Pole_EP1_DZ" ,"FireBarrel_DZ"] - Skaronator, looks like some classes are missing not sure if this is intended
DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_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","M240Nest_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 = "";
 
//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;
};
 
DZE_safeVehicle = ["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_playerName = "Unknown";
dayz_sourceBleeding = objNull;
dayz_clientPreload = false;
dayz_authed = false;
dayz_panicCooldown = 0;
dayz_areaAffect = 2.5;
dayz_heartBeat = false;
dayzClickTime = 0;
dayz_spawnDelay = 120;
dayz_spawnWait = -120;
dayz_lootDelay = 3;
dayz_lootWait = -300;
dayz_spawnZombies = 0;
//used to count global zeds around players
dayz_CurrentZombies = 0;
//Used to limit overall zed counts
dayz_maxCurrentZeds = 0;
dayz_inVehicle = false;
dayz_Magazines = [];
dayzGearSave = false;
dayz_unsaved = false;
DZE_ActionInProgress = false;
dayz_scaleLight = 0;
dayzDebug = false;
dayzState = -1;
//uiNamespace setVariable ['DAYZ_GUI_display',displayNull];
//if (uiNamespace getVariable ['DZ_displayUI', 0] == 2) then {
// dayzDebug = true;
//};
 
// 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_HaloJump") then {
DZE_HaloJump = true;
};
 
if(isNil "DZE_AntiWallLimit") then {
DZE_AntiWallLimit = 1;
};
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_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;
};

 
In my init.sqf I have...
 

DZE_HeliLift = True;

 
and further down...
 

call compile preprocessFileLineNumbers "dayz_code\init\variables.sqf"; // Mike adding bypass for various mods

 
Isn't that everything?!

Share this post


Link to post
Share on other sites

Nobody able to spot what's wrong?

make sure in fn_selfactions.sqf at the top where it says 

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","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached"];

add 

,"_lightweight","_mediumweight","_heavyweight","_superheavyweight"

after "_attached" and inside the bracket

 

I've just spent like an hour before I realized that  :(

Share this post


Link to post
Share on other sites

armyf35 - this worked!
 

Thanks! Can't believe I missed it, lol :D

 

Thanks so much for pointing it out man :D

 

make sure in fn_selfactions.sqf at the top where it says 

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","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached"];

add 

,"_lightweight","_mediumweight","_heavyweight","_superheavyweight"

after "_attached" and inside the bracket

 

I've just spent like an hour before I realized that  :(

Share this post


Link to post
Share on other sites

I just can't get this to work. Added "DZE_HeliLift = True;" to my init.sqf. I've modified my fn_selfactions.sqf and variables.sqf as per the instructions, but no matter what, there's no lift option. I'll attach my files and maybe someone can see an error I made, but I simply cut and pasted per the instructions. I tested this with vehicles I spawned with my admin tool. Tried lifting a hummer and an SUV with both a UH60 and a Chinook.

 

compiles.sqf: https://www.dropbox.com/s/4g3nm9i041953cz/compiles.sqf

fn_selfactions.sqf: https://www.dropbox.com/s/z8uhxofnkiuk6px/fn_selfActions.sqf

Share this post


Link to post
Share on other sites

I just can't get this to work. Added "DZE_HeliLift = True;" to my init.sqf. I've modified my fn_selfactions.sqf and variables.sqf as per the instructions, but no matter what, there's no lift option. I'll attach my files and maybe someone can see an error I made, but I simply cut and pasted per the instructions. I tested this with vehicles I spawned with my admin tool. Tried lifting a hummer and an SUV with both a UH60 and a Chinook.

 

compiles.sqf: https://www.dropbox.com/s/4g3nm9i041953cz/compiles.sqf

fn_selfactions.sqf: https://www.dropbox.com/s/z8uhxofnkiuk6px/fn_selfActions.sqf

dumb question i know but, the author did say it needed 2 people right/, 1 in the heli, 1 on the ground to attach the vehicle

will be trying this out myself later and report back

Share this post


Link to post
Share on other sites

dumb question i know but, the author did say it needed 2 people right/, 1 in the heli, 1 on the ground to attach the vehicle

will be trying this out myself later and report back

 

Yes, I did have someone on the ground, going all around the vehicle, trying to find a "Lift" option. He tried looking up at the chopper and still no love.

Share this post


Link to post
Share on other sites

I just can't get this to work. Added "DZE_HeliLift = True;" to my init.sqf. I've modified my fn_selfactions.sqf and variables.sqf as per the instructions, but no matter what, there's no lift option. I'll attach my files and maybe someone can see an error I made, but I simply cut and pasted per the instructions. I tested this with vehicles I spawned with my admin tool. Tried lifting a hummer and an SUV with both a UH60 and a Chinook.

 

compiles.sqf: https://www.dropbox.com/s/4g3nm9i041953cz/compiles.sqf

fn_selfactions.sqf: https://www.dropbox.com/s/z8uhxofnkiuk6px/fn_selfActions.sqf

Did you do this 

That is what I did and it worked

Share this post


Link to post
Share on other sites

Did you do this 

That is what I did and it worked

 

Yes, I did.

 

I'm not sure if it didn't work because I was trying to hook up a spawned vehicle, which isn't in the database, because it's a temporary vehicle, but I can't imagine that would prevent it from working.

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

Loading...

  • Similar Content

    • By lordacus
      so i have been making a server between trying to get my provider to update their mods section. after getting this don i found the server with epoch and infistar were conflicting each other such as: when joining i can use infistar but when i press f9 or i to enter my inventory or f10 for the mobile pad it then conflicts (i think) infistar and i can no longer use it. any ideas on how to stop this
       
    • By vbawol
      Open world survival mod set just two years after the mass extinction of billions of people. Those that remain are left with remnants of a once technological society. Try to survive, build, or explore your way through the harsh dynamic environment.
      Features
      Powerful persistence framework for Arma 3 with native Windows and Linux dedicated server support. Fully configurable script based security checks. Base Building re-envisioned for Arma 3 PhysX. Persistent secure and insecure storage devices. Upgradeable locking doors. Barter based economy and trading systems backed a single currency ¤ called "Krypto". Hostile Environment with several different types of antagonists, Air and Water temperature extremes, and Earthquakes. Hunting, Fishing, Tame Dogs, Explore & Loot: Wrecked ships, Abandoned vehicles and buildings, Perform task based missions and more! Open source APL-SA Epoch Survival MP gamemode. Open source APL-SA Modders resource configs and Class List. Assets can be used as a mod dependency on Steam workshop.
    • By Achef
      Greetings!
      So I recently started up in a new host and haven't gotten to make the server run, found that a ca/modules bis_fnc issue is recurring but doesn't affect players when running coop missions like the default arma 2 oa ones, but when trying with Epoch hive won't connect/start despite being configured.
      Hive error
      Meanwhile at line 23...
       
      I'm still bad with Pastebin, sorry.
       
      This error has been chasing me for 2 days now
    • By WeepiestLem0n
      So I've been wanting to create a private ArmA 2 DayZ Epoch server for a bunch of my mates to play on, however I dont have a dedicated machine and want to run it on my PC. So I looked at the server download files on the GitHub page and followed the ReadMe, however I absolutely cannot figure out how to get the MySQL server and DB set up. I have downloaded MySQL Server on my PC and created the admin role, root passwords and ran it as a windows service. I now have no clue how to create the database and am wondering if anyone can help me set this up or let me know if I've done anything wrong. 

      I can add on Steam or Discord if need be for convenience.
    • By WinterLuka
      Winter Gaming is a gaming community, that was created in early 2018. We're currently running DayZ Epoch 1.0.6.2 server.
      Winter Gaming is a project created with passion – for players from players.
      On our server, the rules are equal for all players – no Pay2Win, no benefits for donating.
       
      Server IP: 164.132.203.240:2302
      Discord: https://discordapp.com/invite/ECBVKGA
      Website: http://www.wintergaming.eu
      Forum: http://www.wintergaming.eu/forums
       
      Server Configuration:
      Building Maintain - 10 Days Abandoned Vehicle Unlock - 7 Days Abandoned Safes/Lockboxes Unlock - 10 Days Building Limit – 250 Objects Max Base Height - 30m  
      Features:
      High FPS XP System (with awesome Perks and Trader) JSRS Compatible Wear Zombie Skin Plot Management Door Management Snap and Vector Building 20k Starting Money Coin System Running Zombies Ai Missions Ai Convoys Custom Loot Custom Locations Custom Traders Hidden Trader Selling Rare Items Toggle Grass/Environmental Sounds Deploy Bike/Motorcycle/Mozzie Walk Amongst The Dead Harvestable Hemp Tow/Lift Repair/Rearm – Service Points Bury Bodies Take Clothes Locate Vehicle Paychecks every 30 minutes Spawn Selection Abandoned Safe Mission Indestructible Metal/Cinder Bases Blow up door and more!  
      I hope to see You on the server!
  • Advertisement
  • Supporters
  • Discord

×
×
  • Create New...