Jump to content

[Release] Build Vectors - Rotate objects in Dayz Epoch (v2.34 P4L & non-P4L)


striker

Recommended Posts

Waking through walls sure. But I'm talking about full sprinting through the wall without slowing down or anything. I tested it by surrounding myself with 4 regular cinder walls then spawned a bunch of zombies and started shooting, no zombies got to me. Then I surrounded myself in 4 cinder walls that were rotated 90 degrees and did the same thing and immediately I was covered in zombies. They run through the walls like they're not even there.

Doesn't happen for me, I checked. They won't even come in if I open the doors for them

9OEtsaf.jpg

Link to comment
Share on other sites

Hello everybody,

 

i've an issue with building vectors. No Action Menu Entrys for rotating if i hold an object for building. Also if i snap the object to another i get following error messages in my clientside arma2oa.rpt file

 

Error in expression <;
_upX = 0;
_upY = 0;
_upZ = 1;
if (_aroundX != 0) then {
_dirY = cos _arou>
Error position: <_aroundX != 0) then {
_dirY = cos _arou>
Error Nicht definierte Variable in Ausdruck: _aroundx
File mpmissions\__CUR_MP.lingor\custom\BuildVectors\fnc_SetPitchBankYaw.sqf, line 14
Error in expression <stClosestPointFoundDir;
[_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memD>
Error position: <DZE_memForBack,DZE_memLeftRight,DZE_memD>
Error Nicht definierte Variable in Ausdruck: dze_memforback
File mpmissions\__CUR_MP.lingor\custom\snap_pro\snap_build.sqf, line 155

 

I am using Plot Management 2.1, Snap Build 1.4.1 and Precise Base Building at the moment (still in the setup phase for my server files)

No errors are shown in the serverside rpt.

 

 

Here is my fnc_SetPitchBankYaw.sqf

 

 private ["_object","_rotations","_aroundX","_aroundY","_aroundZ","_dirX","_dirY","_dirZ","_upX","_upY","_upZ","_dir","_up","_dirXTemp",
    "_upXTemp"];
    _object = _this select 0;
    _rotations = _this select 1;
    _aroundX = _rotations select 0;
    _aroundY = _rotations select 1;
    _aroundZ = (360 - (_rotations select 2)) - 360;
    _dirX = 0;
    _dirY = 1;
    _dirZ = 0;
    _upX = 0;
    _upY = 0;
    _upZ = 1;
    if (_aroundX != 0) then {
        _dirY = cos _aroundX;
        _dirZ = sin _aroundX;
        _upY = -sin _aroundX;
        _upZ = cos _aroundX;
    };
    if (_aroundY != 0) then {
        _dirX = _dirZ * sin _aroundY;
        _dirZ = _dirZ * cos _aroundY;
        _upX = _upZ * sin _aroundY;
        _upZ = _upZ * cos _aroundY;
    };
    if (_aroundZ != 0) then {
        _dirXTemp = _dirX;
        _dirX = (_dirXTemp* cos _aroundZ) - (_dirY * sin _aroundZ);
        _dirY = (_dirY * cos _aroundZ) + (_dirXTemp * sin _aroundZ);        
        _upXTemp = _upX;
        _upX = (_upXTemp * cos _aroundZ) - (_upY * sin _aroundZ);
        _upY = (_upY * cos _aroundZ) + (_upXTemp * sin _aroundZ);         
    };
    _dir = [_dirX,_dirY,_dirZ];
    _up = [_upX,_upY,_upZ];
    _object setVectorDirAndUp [_dir,_up];

 

An here my snap_build.sqf

/*-----------------------------------------------------------*/
// Created by Raymix
// Last update - August 21 2014
/*-----------------------------------------------------------*/

private ["_object","_objectSnapGizmo","_objColorActive","_objColorInactive","_classname","_whitelist","_points","_radius","_cfg","_cnt","_pos","_findWhitelisted","_nearbyObject","_posNearby","_selectedAction","_newPos","_pointsNearby","_onWater","_waterBase"];
//Args
snapActionState = _this select 3 select 0;
_object = _this select 3 select 1;
_classname = _this select 3 select 2;
_objectHelper = _this select 3 select 3;
_selectedAction = _this select 3 select 4;

//Snap config file
_cfg = (missionConfigFile >> "SnapBuilding" >> _classname);
_whitelist = getArray (_cfg >> "snapTo");
_points = getArray (_cfg >> "points");
_radius = getNumber (_cfg >> "radius");

//colors
_objColorActive = "#(argb,8,8,3)color(0,0.92,0.06,1,ca)";
_objColorInactive = "#(argb,8,8,3)color(0.04,0.84,0.92,0.3,ca)";


fnc_snapActionCleanup = {
    private ["_s1","_s2","_s3","_cnt"];
    _s1 = _this select 0;
    _s2 = _this select 1;
    _s3 = _this select 2;
    player removeAction s_player_toggleSnap; s_player_toggleSnap = -1;
    player removeAction s_player_toggleSnapSelect; s_player_toggleSnapSelect = -1;
    if (count s_player_toggleSnapSelectPoint != 0) then {{player removeAction _x;} count s_player_toggleSnapSelectPoint; s_player_toggleSnapSelectPoint=[]; snapActions = -1;};
    if (_s1 > 0) then {
        s_player_toggleSnap = player addaction [format[("<t color=""#ffffff"">" + ("Snap: %1") +"</t>"),snapActionState],"custom\snap_pro\snap_build.sqf",[snapActionState,_object,_classname,_objectHelper],10,false,true];
    };
    if (_s2 > 0) then {
        s_player_toggleSnapSelect = player addaction [format[("<t color=""#ffffff"">" + ("Snap Point: %1") +"</t>"),snapActionStateSelect],"custom\snap_pro\snap_build.sqf",[snapActionStateSelect,_object,_classname,_objectHelper],9,false,true];
    };
    if (_s3 > 0) then {
        s_player_toggleSnapSelectPoint=[];
        _cnt = 0;
        {snapActions = player addaction [format[("<t color=""#ffffff"">" + ("%1)Select: %2") +"</t>"),_cnt,_x select 3],"custom\snap_pro\snap_build.sqf",["Selected",_object,_classname,_objectHelper,_cnt],8,false,false];
        s_player_toggleSnapSelectPoint set [count s_player_toggleSnapSelectPoint,snapActions];
        _cnt = _cnt+1;
    }count _points;
    };
};

fnc_initSnapPoints = {
    snapGizmos = [];
    {
        _objectSnapGizmo = "Sign_sphere10cm_EP1" createVehicleLocal [0,0,0];
        _objectSnapGizmo setobjecttexture [0,_objColorInactive];
        _objectSnapGizmo attachTo [_object,[_x select 0,_x select 1,_x select 2]];
        snapGizmos set [count snapGizmos,_objectSnapGizmo];
    } count _points;
};

fnc_initSnapPointsNearby = {
    _pos = [_object] call FNC_GetPos;
    _findWhitelisted = []; _pointsNearby = [];
    _findWhitelisted = nearestObjects [_pos,_whitelist,(_radius + DZE_snapExtraRange)]-[_object];
    snapGizmosNearby = [];    
    {    
        _nearbyObject = _x;
        _pointsNearby = getArray (missionConfigFile >> "SnapBuilding" >> (typeOf _x) >> "points");
        {
            _objectSnapGizmo = "Sign_sphere10cm_EP1" createVehicleLocal [0,0,0];
            _objectSnapGizmo setobjecttexture [0,_objColorInactive];
            _objectSnapGizmo setDir (_nearbyObject getVariable["memDir",0]);
            _posNearby = _nearbyObject modelToWorld [_x select 0,_x select 1,_x select 2];
            if (surfaceIsWater _posNearby) then {
                _objectSnapGizmo setPosASL [(_posNearby) select 0,(_posNearby) select 1,(getPosASL _nearbyObject select 2) + (_x select 2)];
            } else {
                _objectSnapGizmo setPosATL _posNearby;
            };
            snapGizmosNearby set [count snapGizmosNearby,_objectSnapGizmo];
        } count _pointsNearby;
    } forEach _findWhitelisted;
};

fnc_initSnapPointsCleanup = {
    {detach _x;deleteVehicle _x;}count snapGizmos;snapGizmos=[];
    {detach _x;deleteVehicle _x;}count snapGizmosNearby;snapGizmosNearby=[];
    snapActionState = "OFF";
};

fnc_snapDistanceCheck = {
    while {snapActionState != "OFF"} do {
    private ["_distClosestPointFound","_distCheck","_distClosest","_distClosestPoint","_testXPos","_testXDir","_distClosestPointFoundPos","_distClosestPointFoundDir","_distClosestAttached","_distCheckAttached","_distClosestAttachedFoundPos"];
    _distClosestPointFound = objNull; _distCheck = 0; _distClosest = 10; _distClosestPoint = objNull; _testXPos = []; _distClosestPointFoundPos =[]; _distClosestPointFoundDir = 0;
        {    
            if (_x !=_distClosestPointFound) then {_x setobjecttexture [0,_objColorInactive];};
            _testXPos = [_x] call FNC_GetPos;
            _distCheck = _objectHelper distance _testXPos;
            _distClosestPoint = _x;
                if (_distCheck < _distClosest) then {
                    _distClosest = _distCheck;
                    _distClosestPointFound setobjecttexture [0,_objColorInactive];
                    _distClosestPointFound = _x;
                    _distClosestPointFound setobjecttexture [0,_objColorActive];
                };
        } count snapGizmosNearby;    
        
        if (!isNull _distClosestPointFound) then {
            if (snapActionStateSelect == "Manual") then {
                if (helperDetach) then {
                    _onWater = surfaceIsWater position _distClosestPointFound;
                    _distClosestPointFoundDir = getDir _distClosestPointFound;
                    if (_onWater) then {
                        _distClosestPointFoundPos = getPosASL _distClosestPointFound;
                        _objectHelper setPosASL _distClosestPointFoundPos;
                    } else {
                        _distClosestPointFoundPos = getPosATL _distClosestPointFound;
                        _objectHelper setPosATL _distClosestPointFoundPos;
                    };
                    DZE_memDir = _distClosestPointFoundDir;
                    [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
                    waitUntil {sleep 0.1; !helperDetach};
                };
            } else {
                _distClosestAttached = objNull; _distCheckAttached = 0; _distClosest = 10; _distClosestAttachedFoundPos = [];
                {
                    if (_x !=_distClosestAttached) then {_x setobjecttexture [0,_objColorInactive];};
                    _testXPos = [_x] call FNC_GetPos;
                    _distCheckAttached = _distClosestPointFound distance _testXPos;
                    _distClosestPoint = _x;
                        if (_distCheckAttached < _distClosest) then {
                            _distClosest = _distCheckAttached;
                            _distClosestAttached setobjecttexture [0,_objColorInactive];
                            _distClosestAttached = _x;
                            _distClosestAttached setobjecttexture [0,_objColorActive];
                        };
                } count snapGizmos;
            
                if (helperDetach) then {
                    _distClosestPointFoundDir = getDir _distClosestPointFound;
                    _onWater = surfaceIsWater position _distClosestPointFound;
                    if (_onWater) then {
                        _distClosestPointFoundPos = getPosASL _distClosestPointFound;
                        _distClosestAttachedFoundPos = getPosASL _distClosestAttached;
                        detach _object;
                        _objectHelper setPosASL _distClosestAttachedFoundPos;
                        _object attachTo [_objectHelper];
                        _objectHelper setPosASL _distClosestPointFoundPos;
                    } else {
                        _distClosestPointFoundPos = getPosATL _distClosestPointFound;
                        _distClosestAttachedFoundPos = getPosATL _distClosestAttached;
                        detach _object;
                        _objectHelper setPosATL _distClosestAttachedFoundPos;
                        _object attachTo [_objectHelper];
                        _objectHelper setPosATL _distClosestPointFoundPos;
                    };
                    DZE_memDir = _distClosestPointFoundDir;
                    [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
                    waitUntil {sleep 0.1; !helperDetach};
                };
            };
        };
        sleep 0.1;
    };
};

fnc_initSnapTutorial = {
/*
    Shows help dialog for player ONCE per log in, explaining controls.
    Add snapTutorial = false; to your init.sqf to disable this tutorial completely.
    You can also add this bool to the end of this function to only show tutorial once per player login (not recommended)
*/
    private ["_bldTxtSwitch","_bldTxtEnable","_bldTxtClrO","_bldTxtClrC","_bldTxtClrW","_bldTxtClrR","_bldTxtClrG","_bldTxtSz","_bldTxtSzT","_bldTxtShdw","_bldTxtAlgnL","_bldTxtUndrln","_bldTxtBold","_bldTxtFinal","_bldTxtStringTitle","_bldTxtStringSD","_bldTxtStringSE","_bldTxtStringSA","_bldTxtStringSM","_bldTxtStringPG","_bldTxtStringAPG","_bldTxtStringCPG","_bldTxtStringQE","_bldTxtStringQEF","_bldTxtStringFD","_bldTxtStringFS"];
        if (isNil "snapTutorial") then {
            _bldTxtSwitch = _this select 0;
            _bldTxtEnable = _this select 1;
            _bldTxtClrO = "color='#ff8800'"; //orange
            _bldTxtClrC = "color='#17DBEC'"; //cyan
            _bldTxtClrW = "color='#ffffff'"; //white
            _bldTxtClrR = "color='#fd0a05'"; //red
            _bldTxtClrG = "color='#11ef00'"; //green
            _bldTxtSz = "size='0.76'"; //Title font size
            _bldTxtSzT = "size='0.4'"; //Text font size
            _bldTxtShdw = "shadow='1'"; //Font shadow
            _bldTxtAlgnL = "align='left'"; //Text align left
            _bldTxtUndrln = "underline='true'";
            _bldTxtBold = "font='Zeppelin33'"; //Bold text
            _bldTxtFinal = "";
            
            //Delete on init
            800 cutRsc ["Default", "PLAIN"];
            sleep 0.1;
            
            //Init Tutorial text
            if (_bldTxtEnable) then {
                _bldTxtStringTitle = format ["<t %1%2%3%4>Snap Building <t %5%6%7>Pro 1.4</t></t><br />",_bldTxtClrO,_bldTxtSz,_bldTxtShdw,_bldTxtAlgnL,_bldTxtClrW,_bldTxtUndrln,_bldTxtBold];
                _bldTxtStringSD = format["<t %1%4%5%6>[Snap]<t %2> Disabled:</t> <t %3>use action menu to enable.</t></t><br /><br />",_bldTxtClrC,_bldTxtClrR,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringSE = format["<t %1%4%5%6>[Snap]<t %2> Enabled:</t> <t %3>use action menu to disable.</t></t><br /><br />",_bldTxtClrC,_bldTxtClrG,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringSA = format["<t %1%3%4%5>[Snap Point]<t %2> AUTOMATIC: Automatic snap point detection.</t></t><br /><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringSM = format["<t %1%3%4%5>[Snap Point]<t %2> MANUAL: Select your preferred snap point.</t></t><br /><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringPG = format["<t %1%3%4%5>[PgUP / PgDOWN]<t %2>: Adjust height of object by 10cm</t></t><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringAPG = format["<t %1%3%4%5>[Alt]+[PgUP / PgDOWN]<t %2>: Adjust height of object by 1m</t></t><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringCPG = format["<t %1%3%4%5>[Ctrl]+[PgUP / PgDOWN]<t %2>: Adjust height of object by 1cm</t></t><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringQE = format["<t %1%3%4%5>[Q / E]<t %2>: Rotate object 180 degrees while holding.</t></t><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringQEF = format["<t %1%3%4%5>[Q / E]<t %2>: Rotate object 45 degrees while dropped or snapped.</t></t><br /><br />",_bldTxtClrC,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringFD = format["<t %1%3%4%5>[F]<t %2>: Drop / Pick up object.</t></t><br />",_bldTxtClrO,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                _bldTxtStringFS = format["<t %1%3%4%5>[F]<t %2>: Snap /Pick up object.</t></t><br />",_bldTxtClrO,_bldTxtClrW,_bldTxtSzT,_bldTxtShdw,_bldTxtAlgnL];
                switch (_bldTxtSwitch) do {
                    case "init": {
                        _bldTxtFinal = _bldTxtStringTitle + _bldTxtStringSD + _bldTxtStringPG + _bldTxtStringAPG + _bldTxtStringCPG + _bldTxtStringQE + _bldTxtStringQEF + _bldTxtStringFD;
                    };
                    case "OnAuto": {
                        _bldTxtFinal = _bldTxtStringTitle + _bldTxtStringSE + _bldTxtStringSA + _bldTxtStringPG + _bldTxtStringAPG + _bldTxtStringCPG + _bldTxtStringQE + _bldTxtStringQEF + _bldTxtStringFS;
                    };
                    case "manual": {
                        _bldTxtFinal = _bldTxtStringTitle + _bldTxtStringSE + _bldTxtStringSM + _bldTxtStringPG + _bldTxtStringAPG + _bldTxtStringCPG + _bldTxtStringQE + _bldTxtStringQEF + _bldTxtStringFS;
                    };
                };

                [
                    _bldTxtFinal, //structured text
                    0.73 * safezoneW + safezoneX, //number - x
                    0.65 * safezoneH + safezoneY, //number - y
                    30, //number - duration
                    1, // number - fade in time
                    0, // number - delta y
                    800 //number - layer ID
                ] spawn bis_fnc_dynamicText;
            };
        };    
};

switch (snapActionState) do {
    case "Init": {
        ["init",true] call fnc_initSnapTutorial;
        snapActionState = "OFF";
        [1,0,0] call fnc_snapActionCleanup;
        [] spawn {
        while {true} do {
            if(!DZE_ActionInProgress || DZE_cancelBuilding) exitWith {call fnc_initSnapPointsCleanup;[0,0,0] call fnc_snapActionCleanup; ["",false] call fnc_initSnapTutorial; snapActionState = "OFF";};
            sleep 2;
            };
        };
    };
    case "OFF": {
        ["OnAuto",true] call fnc_initSnapTutorial;
        snapActionState = "ON"; snapActionStateSelect = "Auto";
        [1,1,0] call fnc_snapActionCleanup;
        call fnc_initSnapPoints;
        call fnc_initSnapPointsNearby;
        sleep 0.25;
        call fnc_snapDistanceCheck;
    };
    
    case "ON": {
        ["init",true] call fnc_initSnapTutorial;
        snapActionState = "OFF";
        [1,0,0] call fnc_snapActionCleanup;
        call fnc_initSnapPointsCleanup;
    };
    
    case "Auto": {
        ["manual",true] call fnc_initSnapTutorial;
        snapActionState = "ON";snapActionStateSelect = "Manual";
        [1,1,1] call fnc_snapActionCleanup;
    };
    
    case "Manual": {
        ["OnAuto",true] call fnc_initSnapTutorial;
        snapActionState = "ON";snapActionStateSelect = "Auto";
        [1,1,0] call fnc_snapActionCleanup;
    };
    
    case "Selected": { _cnt = 0; _newPos = [];
{    
    _x setobjecttexture [0,_objColorInactive];
    if (_cnt == _selectedAction) then {
        _newPos = [(getPosATL _x select 0),(getPosATL _x select 1),(getPosATL _x select 2)];
        detach _object;
        detach _objectHelper;
        _objectHelper setDir (getDir _object);
        _objectHelper setPosATL _newPos;
        _object attachTo [_objectHelper];
        _x setobjecttexture [0,_objColorActive];
        if (!helperDetach) then {_objectHelper attachTo [player]; _objectHelper setDir ((getDir _objectHelper)-(getDir player));};    
        
        [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
    
    };
    _cnt = _cnt+1;
}count snapGizmos;
    };
};

 

Fixed: Messed up the player_build.sqf merge with my other scripts. Merged now correct and works great.

Link to comment
Share on other sites

Im getting couldnt find custom/variables.sqf which leads into server authentication error. Can someome please help?

you dont have variables.sqf in a folder called custom, but you're telling your server to look there. So when it looks there, and doesn't find it, it crashes. Make sure your variables.sqf is in a folder called custom which should be in the root of your mission folder.

Link to comment
Share on other sites

Hi very new to this i installed pfl and snap as directed tested works fine instlled vectors as per instructed when i test now i get no option for vectors in menu and snap is all buggered up get the option it snaps to it once snapped i cant do anythin at all no q or e  any ideas :huh:

Link to comment
Share on other sites

Hey striker i think you code is a lil messed up :( it's all jumbled and such.. i think it's been like this for a while

dayz_objectUID2 = {	private["_position","_dir","_key"];	if((count _this) == 2) then{		_dir = _this select 0;		_key = "";		_position = _this select 1;		{			_x = _x * 10;			if ( _x &amp;lt; 0 ) then { _x = _x * -10 };			_key = _key + str(round(_x));		} count _position;		_key = _key + str(round(_dir));	}else{		if((count _this) == 3) then{					if(typename (_this select 2) == "ARRAY")then{							_vector = _this select 2;							if(count _vector == 2)then{								if(((count (_vector select 0)) == 3) &amp;amp;&amp;amp; ((count (_vector select 1)) == 3))then{										_key = "";										_position = _this select 1;										{											_x = _x * 10;											if ( _x &amp;lt; 0 ) then { _x = _x * -10 };											_key = _key + str(round(_x));										} count _position;																				_vecCnt = 0;										{											_set = _x;											{												_vecCnt = _vecCnt + (round (_x * 100))																							} foreach _set;																					} foreach _vector;										if(_vecCnt &amp;lt; 0)then{											_vecCnt = ((_vecCnt * -1) * 3);										};										_key = _key + str(_vecCnt);									}else{									_dir = _this select 0;									_key = "";									_position = _this select 1;									{										_x = _x * 10;										if ( _x &amp;lt; 0 ) then { _x = _x * -10 };										_key = _key + str(round(_x));									} count _position;									_key = _key + str(round(_dir));								};							}else{								_dir = _this select 0;								_key = "";								_position = _this select 1;								{									_x = _x * 10;									if ( _x &amp;lt; 0 ) then { _x = _x * -10 };									_key = _key + str(round(_x));								} count _position;								_key = _key + str(round(_dir));							};											}else{						_dir = _this select 0;						_key = "";						_position = _this select 1;						{							_x = _x * 10;							if ( _x &amp;lt; 0 ) then { _x = _x * -10 };							_key = _key + str(round(_x));						} count _position;						_key = _key + str(round(_dir));					};		}else{			if((count _this) == 4) then{					if(typename (_this select 3) == "ARRAY")then{						_vector = _this select 3;						if(count _vector == 2)then{							if(((count (_vector select 0)) == 3) &amp;amp;&amp;amp; ((count (_vector select 1)) == 3))then{										_key = "";										_position = _this select 1;										{											_x = _x * 10;											if ( _x &amp;lt; 0 ) then { _x = _x * -10 };											_key = _key + str(round(_x));										} count _position;																				_vecCnt = 0;										{											_set = _x;											{												_vecCnt = _vecCnt + (round (_x * 100))																							} foreach _set;																					} foreach _vector;										if(_vecCnt &amp;lt; 0)then{											_vecCnt = ((_vecCnt * -1) * 3);										};										_key = _key + str(_vecCnt);								}else{								_dir = _this select 0;								_key = "";								_position = _this select 1;								{									_x = _x * 10;									if ( _x &amp;lt; 0 ) then { _x = _x * -10 };									_key = _key + str(round(_x));								} count _position;								_key = _key + str(round(_dir));							};						}else{							_dir = _this select 0;							_key = "";							_position = _this select 1;							{								_x = _x * 10;								if ( _x &amp;lt; 0 ) then { _x = _x * -10 };								_key = _key + str(round(_x));							} count _position;							_key = _key + str(round(_dir));						};					}else{						if(typename (_this select 2) == "ARRAY")then{							_vector = _this select 2;							if(count _vector == 2)then{								if(((count (_vector select 0)) == 3) &amp;amp;&amp;amp; ((count (_vector select 1)) == 3))then{											_key = "";											_position = _this select 1;											{												_x = _x * 10;												if ( _x &amp;lt; 0 ) then { _x = _x * -10 };												_key = _key + str(round(_x));											} count _position;																						_vecCnt = 0;											{												_set = _x;												{													_vecCnt = _vecCnt + (round (_x * 100))																									} foreach _set;																							} foreach _vector;											if(_vecCnt &amp;lt; 0)then{												_vecCnt = ((_vecCnt * -1) * 3);											};											_key = _key + str(_vecCnt);									}else{									_dir = _this select 0;									_key = "";									_position = _this select 1;									{										_x = _x * 10;										if ( _x &amp;lt; 0 ) then { _x = _x * -10 };										_key = _key + str(round(_x));									} count _position;									_key = _key + str(round(_dir));								};							}else{								_dir = _this select 0;								_key = "";								_position = _this select 1;								{									_x = _x * 10;									if ( _x &amp;lt; 0 ) then { _x = _x * -10 };									_key = _key + str(round(_x));								} count _position;								_key = _key + str(round(_dir));							};						}else{							_dir = _this select 0;							_key = "";							_position = _this select 1;							{								_x = _x * 10;								if ( _x &amp;lt; 0 ) then { _x = _x * -10 };								_key = _key + str(round(_x));							} count _position;							_key = _key + str(round(_dir));						};					};			}else{				_dir = _this select 0;				_key = "";				_position = _this select 1;				{					_x = _x * 10;					if ( _x &amp;lt; 0 ) then { _x = _x * -10 };					_key = _key + str(round(_x));				} count _position;				_key = _key + str(round(_dir));			};		};			};	_key}; 

all so

// # NOW SPAWN OBJECTS #	_totalvehicles = 0;	{		_idKey = 		_x select 1;		_type =			_x select 2;		_ownerID = 		_x select 3;		_worldspace = 	_x select 4;		_intentory =	_x select 5;		_hitPoints =	_x select 6;		_fuel =			_x select 7;		_damage = 		_x select 8;				_dir = 0;				_pos = [0,0,0];		_wsDone = false;		if (count _worldspace &amp;gt;= 2) then		{			if ((typeName (_worldspace select 0)) == "STRING") then {				_worldspace set [0, call compile (_worldspace select 0)];				_worldspace set [1, call compile (_worldspace select 1)];			};			_dir = _worldspace select 0;			if (count (_worldspace select 1) == 3) then {				_pos = _worldspace select 1;				_wsDone = true;			}		};					if (!_wsDone) then {			if (count _worldspace &amp;gt;= 1) then { _dir = _worldspace select 0; };			_pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos;			if (count _pos &amp;lt; 3) then { _pos = [_pos select 0,_pos select 1,0]; };			diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));		};				_vector = [[0,0,0],[0,0,0]];		_vecExists = false;		_ownerPUID = "0";		if (count _worldspace &amp;gt;= 3) then{			if(count _worldspace == 3) then{					if(typename (_worldspace select 2) == "STRING")then{						_ownerPUID = _worldspace select 2;					}else{						 if(typename (_worldspace select 2) == "ARRAY")then{							_vector = _worldspace select 2;							if(count _vector == 2)then{								if(((count (_vector select 0)) == 3) &amp;amp;&amp;amp; ((count (_vector select 1)) == 3))then{									_vecExists = true;								};							};						};										};								}else{				//Was not 3 elements, so check if 4 or more				if(count _worldspace == 4) then{					if(typename (_worldspace select 3) == "STRING")then{						_ownerPUID = _worldspace select 3;					}else{						if(typename (_worldspace select 2) == "STRING")then{							_ownerPUID = _worldspace select 2;						};					};											if(typename (_worldspace select 2) == "ARRAY")then{						_vector = _worldspace select 2;						if(count _vector == 2)then{							if(((count (_vector select 0)) == 3) &amp;amp;&amp;amp; ((count (_vector select 1)) == 3))then{								_vecExists = true;							};						};					}else{						if(typename (_worldspace select 3) == "ARRAY")then{							_vector = _worldspace select 3;							if(count _vector == 2)then{								if(((count (_vector select 0)) == 3) &amp;amp;&amp;amp; ((count (_vector select 1)) == 3))then{									_vecExists = true;								};							};						};					};									}else{					//More than 3 or 4 elements found					//Might add a search for the vector, ownerPUID will equal 0				};			};		};		   	   		// diag_log format["Server_monitor: [ObjectID = %1]  [ClassID = %2] [_ownerPUID = %3]", _idKey, _type, _ownerPUID];				if (_damage &amp;lt; 1) then {			//diag_log format["OBJ: %1 - %2", _idKey,_type];						//Create it			_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];			_object setVariable ["lastUpdate",time];			_object setVariable ["ObjectID", _idKey, true];			_object setVariable ["OwnerPUID", _ownerPUID, true];						_lockable = 0;			if(isNumber (configFile &amp;gt;&amp;gt; "CfgVehicles" &amp;gt;&amp;gt; _type &amp;gt;&amp;gt; "lockable")) then {				_lockable = getNumber(configFile &amp;gt;&amp;gt; "CfgVehicles" &amp;gt;&amp;gt; _type &amp;gt;&amp;gt; "lockable");			};			// fix for leading zero issues on safe codes after restart			if (_lockable == 4) then {				_codeCount = (count (toArray _ownerID));				if(_codeCount == 3) then {					_ownerID = format["0%1", _ownerID];				};				if(_codeCount == 2) then {					_ownerID = format["00%1", _ownerID];				};				if(_codeCount == 1) then {					_ownerID = format["000%1", _ownerID];				};			};			if (_lockable == 3) then {				_codeCount = (count (toArray _ownerID));				if(_codeCount == 2) then {					_ownerID = format["0%1", _ownerID];				};				if(_codeCount == 1) then {					_ownerID = format["00%1", _ownerID];				};			};			_object setVariable ["CharacterID", _ownerID, true];						clearWeaponCargoGlobal  _object;			clearMagazineCargoGlobal  _object;			// _object setVehicleAmmo DZE_vehicleAmmo;						_object setdir _dir;						if(_vecExists)then{				_object setVectorDirAndUp _vector;			};						_object setposATL _pos;			_object setDamage _damage;						if ((typeOf _object) in dayz_allowedObjects) then {				if (DZE_GodModeBase) then {					_object addEventHandler ["HandleDamage", {false}];				} else {					_object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}];				};				// Test disabling simulation server side on buildables only.				_object enableSimulation false;				// used for inplace upgrades &amp;amp;&amp;amp; lock/unlock of safe				_object setVariable ["OEMPos", _pos, true];							};			if (count _intentory &amp;gt; 0) then {				if (_type in DZE_LockedStorage) then {					// Fill variables with loot					_object setVariable ["WeaponCargo", (_intentory select 0),true];					_object setVariable ["MagazineCargo", (_intentory select 1),true];					_object setVariable ["BackpackCargo", (_intentory select 2),true];				} else {					//Add weapons					_objWpnTypes = (_intentory select 0) select 0;					_objWpnQty = (_intentory select 0) select 1;					_countr = 0;										{						if(_x in (DZE_REPLACE_WEAPONS select 0)) then {							_x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);						};						_isOK = 	isClass(configFile &amp;gt;&amp;gt; "CfgWeapons" &amp;gt;&amp;gt; _x);						if (_isOK) then {							_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];						};						_countr = _countr + 1;					} count _objWpnTypes; 									//Add Magazines					_objWpnTypes = (_intentory select 1) select 0;					_objWpnQty = (_intentory select 1) select 1;					_countr = 0;					{						if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow						if (_x == "ItemTent") then { _x = "ItemTentOld" };						_isOK = 	isClass(configFile &amp;gt;&amp;gt; "CfgMagazines" &amp;gt;&amp;gt; _x);						if (_isOK) then {							_object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];						};						_countr = _countr + 1;					} count _objWpnTypes;					//Add Backpacks					_objWpnTypes = (_intentory select 2) select 0;					_objWpnQty = (_intentory select 2) select 1;					_countr = 0;					{						_isOK = 	isClass(configFile &amp;gt;&amp;gt; "CfgVehicles" &amp;gt;&amp;gt; _x);						if (_isOK) then {							_object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];						};						_countr = _countr + 1;					} count _objWpnTypes;				};			};							if (_object isKindOf "AllVehicles") then {				{					_selection = _x select 0;					_dam = _x select 1;					if (_selection in dayZ_explosiveParts &amp;amp;&amp;amp; _dam &amp;gt; 0.8) then {_dam = 0.8};					[_object,_selection,_dam] call object_setFixServer;				} count _hitpoints;				_object setFuel _fuel;				if (!((typeOf _object) in dayz_allowedObjects)) then {										//_object setvelocity [0,0,1];					_object call fnc_veh_ResetEH;												if(_ownerID != "0" &amp;amp;&amp;amp; !(_object isKindOf "Bicycle")) then {						_object setvehiclelock "locked";					};										_totalvehicles = _totalvehicles + 1;					// total each vehicle					serverVehicleCounter set [count serverVehicleCounter,_type];				};			};			//Monitor the object			PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];		};	} count (_BuildingQueue + _objectQueue);	// # END SPAWN OBJECTS #

If You Can fix this it would be GREAT :) 

Link to comment
Share on other sites

Did anyone ever manage to fix these 2 errors? Haven't seen a reply to previous posts about them...

Error in expression <Array = [_cancel,_reason,_position,_dir,_vector];
_passArray 
>
  Error position: <_vector];
_passArray 
>
  Error Undefined variable in expression: _vector
File mpmissions\__CUR_MP.Chernarus\custom\A_Plot_for_Life\Action\player_build_controls.sqf, line 224
Error in expression <text, _isPole, _lockable,_dir, _reason, _vector] call player_build_publish;
};
}>
  Error position: <_vector] call player_build_publish;
};
}>
  Error Undefined variable in expression: _vector
File mpmissions\__CUR_MP.Chernarus\custom\A_Plot_for_Life\Action\modular_build.sqf, line 91

Thanks

Link to comment
Share on other sites

 

Did anyone ever manage to fix these 2 errors? Haven't seen a reply to previous posts about them...

Error in expression <Array = [_cancel,_reason,_position,_dir,_vector];
_passArray 
>
  Error position: <_vector];
_passArray 
>
  Error Undefined variable in expression: _vector
File mpmissions\__CUR_MP.Chernarus\custom\A_Plot_for_Life\Action\player_build_controls.sqf, line 224
Error in expression <text, _isPole, _lockable,_dir, _reason, _vector] call player_build_publish;
};
}>
  Error position: <_vector] call player_build_publish;
};
}>
  Error Undefined variable in expression: _vector
File mpmissions\__CUR_MP.Chernarus\custom\A_Plot_for_Life\Action\modular_build.sqf, line 91

Thanks

 

no but i think you may have to add _vector to the array on the .sqf did you merge them? hope on my ts ill see whats going on

Link to comment
Share on other sites

no but i think you may have to add _vector to the array on the .sqf did you merge them? hope on my ts ill see whats going on

Hi, thanks for the reply.

 

_vector is in the private arrays at the top of both files. That's why I'm puzzled.

 

Everything is working fine, P4L 2.35, Precise & Vector just get these 2 errors spammed in the client rpt.

Link to comment
Share on other sites

ok i have an issue that i cant figure out every works just fine untill i up grade the wall or anything.. when it's rotated...

 

it goes back to standard position... like it's not saving.

 

i have reinstalled everything and dont have p4L 

 

Craft a door with a lock before you install it. It will stay in the set position and not revert. Players doing the upgrades in place on our server are experiencing the same thing.

 

-CJ-

Link to comment
Share on other sites

I am having an issue where only the admin (myself) seems to be able to use build vectors... Does anyone else have this issue or am I just missing something here... lol

 

I thought it might have tied in with my actions menu (which has the admin list in it with Player UID's), but I removed the action menu from the server so shouldn't have been able to call it, and it still is admin only. 

 

 

 

 

b_560x95.png

Link to comment
Share on other sites

I am having an issue where only the admin (myself) seems to be able to use build vectors... Does anyone else have this issue or am I just missing something here... lol

 

I thought it might have tied in with my actions menu (which has the admin list in it with Player UID's), but I removed the action menu from the server so shouldn't have been able to call it, and it still is admin only. 

 

 

 

 

b_560x95.png

if ever you encounter something that an admin can do, any regular players cannot do it, it is antihack related. your antihack is blocking the action, you need to whitelist the action or disable the check completely.

Link to comment
Share on other sites

This line:

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

Needs to be change to:

s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "custom\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""]; 

or the path that you have it in.

 

That should solve your issue.  ;)

 

striker

even this didn't work for me because the file is already as you wrote.

 

using zupa's single currency 3.0 and the non p4l version of snap build, and infistar.

 

player upgrade:

/*

DayZ Base Building Upgrades

Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].

*/

private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1","_combination_2","_combination_3","_combination","_objectCharacterID","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_distance","_needText","_findNearestPoles","_findNearestPole","_IsNearPlot","_vector"];

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_52") , "PLAIN DOWN"]; };

DZE_ActionInProgress = true;

player removeAction s_player_upgrade_build;

s_player_upgrade_build = 1;

_distance = 30;

_needText = localize "str_epoch_player_246";

// check for near plot

_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance];

_findNearestPole = [];

{

if (alive _x) then {

_findNearestPole set [(count _findNearestPole),_x];

};

} count _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

_canBuildOnPlot = false;

if(_IsNearPlot == 0) then {

_canBuildOnPlot = true;

} else {

// check nearby plots ownership && then for friend status

_nearestPole = _findNearestPole select 0;

// Find owner

_ownerID = _nearestPole getVariable["CharacterID","0"];

// diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID];

// check if friendly to owner

if(dayz_characterID == _ownerID) then {

_canBuildOnPlot = true;

} else {

_friendlies = player getVariable ["friendlyTo",[]];

// check if friendly to owner

if(_ownerID in _friendlies) then {

_canBuildOnPlot = true;

};

};

};

// exit if not allowed due to plot pole

if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_157"),_needText,_distance] , "PLAIN DOWN"]; };

// get cursortarget from addaction

_obj = _this select 3;

// Find objectID

_objectID = _obj getVariable ["ObjectID","0"];

// Find objectUID

_objectUID = _obj getVariable ["ObjectUID","0"];

if(_objectID == "0" && _objectUID == "0") exitWith {DZE_ActionInProgress = false; s_player_upgrade_build = -1; cutText [(localize "str_epoch_player_50"), "PLAIN DOWN"];};

// Get classname

_classname = typeOf _obj;

// Find display name

_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");

// Find next upgrade

_upgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "upgradeBuilding");

if ((count _upgrade) > 0) then {

_newclassname = _upgrade select 0;

_lockable = 0;

if(isNumber (configFile >> "CfgVehicles" >> _newclassname >> "lockable")) then {

_lockable = getNumber(configFile >> "CfgVehicles" >> _newclassname >> "lockable");

};

_requirements = _upgrade select 1;

_missingQty = 0;

_missing = "";

_proceed = true;

{

_itemIn = _x select 0;

_countIn = _x select 1;

_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;

if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };

} forEach _requirements;

if (_proceed) then {

[1,1] call dayz_HungerThirst;

player playActionNow "Medic";

[player,20,true,(getPosATL player)] spawn player_alertZombies;

_temp_removed_array = [];

_removed_total = 0;

_tobe_removed_total = 0;

{

_removed = 0;

_itemIn = _x select 0;

_countIn = _x select 1;

// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];

_tobe_removed_total = _tobe_removed_total + _countIn;

{

if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {

_num_removed = ([player,_x] call BIS_fnc_invRemove);

_removed = _removed + _num_removed;

_removed_total = _removed_total + _num_removed;

if(_num_removed >= 1) then {

_temp_removed_array set [count _temp_removed_array,_x];

};

};

} forEach magazines player;

} forEach _requirements;

// all parts removed proceed

if (_tobe_removed_total == _removed_total) then {

// Get position

_location = _obj getVariable["OEMPos",(getposATL _obj)];

// Get direction

_dir = getDir _obj;

// Get vector

_vector = [(vectorDir _obj),(vectorUp _obj)];

// Current charID

_objectCharacterID = _obj getVariable ["CharacterID","0"];

_classname = _newclassname;

// Create new object

_object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"];

// Set direction

_object setDir _dir;

_object setVariable["memDir",_dir,true];

// Set vector

_object setVectorDirAndUp _vector;

// Set location

_object setPosATL _location;

if (_lockable == 3) then {

_combination_1 = floor(random 10);

_combination_2 = floor(random 10);

_combination_3 = floor(random 10);

_combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];

_objectCharacterID = _combination;

cutText [format[(localize "str_epoch_player_158"),_combination,_text], "PLAIN DOWN", 5];

} else {

cutText [format[(localize "str_epoch_player_159"),_text], "PLAIN DOWN", 5];

};

PVDZE_obj_Swap = [_objectCharacterID,_object,[_dir,_location,_vector],_classname,_obj,player];

publicVariableServer "PVDZE_obj_Swap";

player reveal _object;

} else {

{player addMagazine _x;} count _temp_removed_array;

cutText [format[(localize "str_epoch_player_145"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];

};

} else {

_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");

cutText [format[(localize "str_epoch_player_146"),_missingQty, _textMissing], "PLAIN DOWN"];

};

} else {

cutText [(localize "str_epoch_player_82"), "PLAIN DOWN"];

};

DZE_ActionInProgress = false;

s_player_upgrade_build = -1;

 

fn selfactions:

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

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;

};

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;

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

_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["%1",localize "STR_EPOCH_ACTIONS_MAINTAREA"], "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];

s_player_maintain_area_preview = player addAction [format["%1",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 || _isWreck || _isRemovable || _isWreckBuilding) then {

if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {

_player_deleteBuild = true;

};

};

//Allow owners to delete modulars

if(_isModular && (dayz_characterID == _ownerID)) then {

if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {

_player_deleteBuild = true;

};

};

//Allow owners to delete modular doors without locks

if(_isModularDoor && (dayz_characterID == _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 && _ownerID != "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], "\z\addons\dayz_code\actions\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 = _ownerID in _temp_keys;

_oldOwner = (_ownerID == 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 _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["%1",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];

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

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 && _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 == 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) && ("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) && _ownerID != "0" && (player distance _cursorTarget < 3)) then {

if (s_player_unlockvault < 0) then {

if(_typeOfCursorTarget in DZE_LockedStorage) then {

if(_ownerID == dayz_combination || _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 && _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} count s_player_combi;s_player_combi = [];

s_player_unlockvault = -1;

};

//Allow owner to pack vault

if(_typeOfCursorTarget in DZE_UnLockedStorage && _ownerID != "0" && (player distance _cursorTarget < 3)) then {

if (s_player_lockvault < 0) then {

if(_ownerID == 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 && (_ownerID == dayz_combination || _ownerID == dayz_playerUID)) then {

s_player_packvault = player addAction [format["%1",(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 && (_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["%1",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["%1",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\BuildVectors\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 == _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], "custom\BuildVectors\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 == dayz_characterID) 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;

};

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

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;

};

};

// 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(_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);

// 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) && _ownerID == "0" && player getVariable ["dogID", 0] == 0) then {

if (s_player_tamedog < 0) then {

s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];

};

} else {

player removeAction s_player_tamedog;

s_player_tamedog = -1;

};

if (_isDog && _ownerID == 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;

};

};

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

//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 && !_inVehicle && alive _dog && _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;

};

Link to comment
Share on other sites

even this didn't work for me because the file is already as you wrote.

 

using zupa's single currency 3.0 and the non p4l version of snap build, and infistar.

 

player upgrade:

/*

DayZ Base Building Upgrades

Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].

*/

private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1","_combination_2","_combination_3","_combination","_objectCharacterID","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_distance","_needText","_findNearestPoles","_findNearestPole","_IsNearPlot","_vector"];

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_52") , "PLAIN DOWN"]; };

DZE_ActionInProgress = true;

player removeAction s_player_upgrade_build;

s_player_upgrade_build = 1;

_distance = 30;

_needText = localize "str_epoch_player_246";

// check for near plot

_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance];

_findNearestPole = [];

{

if (alive _x) then {

_findNearestPole set [(count _findNearestPole),_x];

};

} count _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

_canBuildOnPlot = false;

if(_IsNearPlot == 0) then {

_canBuildOnPlot = true;

} else {

// check nearby plots ownership && then for friend status

_nearestPole = _findNearestPole select 0;

// Find owner

_ownerID = _nearestPole getVariable["CharacterID","0"];

// diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID];

// check if friendly to owner

if(dayz_characterID == _ownerID) then {

_canBuildOnPlot = true;

} else {

_friendlies = player getVariable ["friendlyTo",[]];

// check if friendly to owner

if(_ownerID in _friendlies) then {

_canBuildOnPlot = true;

};

};

};

// exit if not allowed due to plot pole

if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_157"),_needText,_distance] , "PLAIN DOWN"]; };

// get cursortarget from addaction

_obj = _this select 3;

// Find objectID

_objectID = _obj getVariable ["ObjectID","0"];

// Find objectUID

_objectUID = _obj getVariable ["ObjectUID","0"];

if(_objectID == "0" && _objectUID == "0") exitWith {DZE_ActionInProgress = false; s_player_upgrade_build = -1; cutText [(localize "str_epoch_player_50"), "PLAIN DOWN"];};

// Get classname

_classname = typeOf _obj;

// Find display name

_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");

// Find next upgrade

_upgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "upgradeBuilding");

if ((count _upgrade) > 0) then {

_newclassname = _upgrade select 0;

_lockable = 0;

if(isNumber (configFile >> "CfgVehicles" >> _newclassname >> "lockable")) then {

_lockable = getNumber(configFile >> "CfgVehicles" >> _newclassname >> "lockable");

};

_requirements = _upgrade select 1;

_missingQty = 0;

_missing = "";

_proceed = true;

{

_itemIn = _x select 0;

_countIn = _x select 1;

_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;

if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };

} forEach _requirements;

if (_proceed) then {

[1,1] call dayz_HungerThirst;

player playActionNow "Medic";

[player,20,true,(getPosATL player)] spawn player_alertZombies;

_temp_removed_array = [];

_removed_total = 0;

_tobe_removed_total = 0;

{

_removed = 0;

_itemIn = _x select 0;

_countIn = _x select 1;

// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];

_tobe_removed_total = _tobe_removed_total + _countIn;

{

if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {

_num_removed = ([player,_x] call BIS_fnc_invRemove);

_removed = _removed + _num_removed;

_removed_total = _removed_total + _num_removed;

if(_num_removed >= 1) then {

_temp_removed_array set [count _temp_removed_array,_x];

};

};

} forEach magazines player;

} forEach _requirements;

// all parts removed proceed

if (_tobe_removed_total == _removed_total) then {

// Get position

_location = _obj getVariable["OEMPos",(getposATL _obj)];

// Get direction

_dir = getDir _obj;

// Get vector

_vector = [(vectorDir _obj),(vectorUp _obj)];

// Current charID

_objectCharacterID = _obj getVariable ["CharacterID","0"];

_classname = _newclassname;

// Create new object

_object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"];

// Set direction

_object setDir _dir;

_object setVariable["memDir",_dir,true];

// Set vector

_object setVectorDirAndUp _vector;

// Set location

_object setPosATL _location;

if (_lockable == 3) then {

_combination_1 = floor(random 10);

_combination_2 = floor(random 10);

_combination_3 = floor(random 10);

_combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];

_objectCharacterID = _combination;

cutText [format[(localize "str_epoch_player_158"),_combination,_text], "PLAIN DOWN", 5];

} else {

cutText [format[(localize "str_epoch_player_159"),_text], "PLAIN DOWN", 5];

};

PVDZE_obj_Swap = [_objectCharacterID,_object,[_dir,_location,_vector],_classname,_obj,player];

publicVariableServer "PVDZE_obj_Swap";

player reveal _object;

} else {

{player addMagazine _x;} count _temp_removed_array;

cutText [format[(localize "str_epoch_player_145"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];

};

} else {

_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");

cutText [format[(localize "str_epoch_player_146"),_missingQty, _textMissing], "PLAIN DOWN"];

};

} else {

cutText [(localize "str_epoch_player_82"), "PLAIN DOWN"];

};

DZE_ActionInProgress = false;

s_player_upgrade_build = -1;

 

fn selfactions:

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

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;

};

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;

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

_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["%1",localize "STR_EPOCH_ACTIONS_MAINTAREA"], "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];

s_player_maintain_area_preview = player addAction [format["%1",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 || _isWreck || _isRemovable || _isWreckBuilding) then {

if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {

_player_deleteBuild = true;

};

};

//Allow owners to delete modulars

if(_isModular && (dayz_characterID == _ownerID)) then {

if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {

_player_deleteBuild = true;

};

};

//Allow owners to delete modular doors without locks

if(_isModularDoor && (dayz_characterID == _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 && _ownerID != "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], "\z\addons\dayz_code\actions\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 = _ownerID in _temp_keys;

_oldOwner = (_ownerID == 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 _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["%1",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];

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

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 && _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 == 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) && ("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) && _ownerID != "0" && (player distance _cursorTarget < 3)) then {

if (s_player_unlockvault < 0) then {

if(_typeOfCursorTarget in DZE_LockedStorage) then {

if(_ownerID == dayz_combination || _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 && _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} count s_player_combi;s_player_combi = [];

s_player_unlockvault = -1;

};

//Allow owner to pack vault

if(_typeOfCursorTarget in DZE_UnLockedStorage && _ownerID != "0" && (player distance _cursorTarget < 3)) then {

if (s_player_lockvault < 0) then {

if(_ownerID == 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 && (_ownerID == dayz_combination || _ownerID == dayz_playerUID)) then {

s_player_packvault = player addAction [format["%1",(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 && (_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["%1",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["%1",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\BuildVectors\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 == _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], "custom\BuildVectors\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 == dayz_characterID) 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;

};

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

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;

};

};

// 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(_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);

// 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) && _ownerID == "0" && player getVariable ["dogID", 0] == 0) then {

if (s_player_tamedog < 0) then {

s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];

};

} else {

player removeAction s_player_tamedog;

s_player_tamedog = -1;

};

if (_isDog && _ownerID == 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;

};

};

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

//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 && !_inVehicle && alive _dog && _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;

};

 

 

ya man same here 

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
×
×
  • Create New...