Jump to content

[Release] - A Plot for life v2.5. Keep your buildables on death. Take plot ownership


Recommended Posts

Hello survivors,

i installed P4L many times successfully without any problems.

Now i updated to the latest version and all seems ok, but after death iam not able to remove any previous built items or the plotpole itself.
My Char-ID was saved to the database, but it seems that i am not the owner.

Has anyone a clue what file can cause this or where i have to take a look at?

Thanks, Ryker

 

==========================================

Edit: Another wired issue, that on a fresh server - without any other scripts installed - P4L gives me a a warning about "server_monitor.sqf in line 105". I stuck at black auth-screen, hearing sound, but it doesent continue.

 

Edited by ryker
Link to comment
Share on other sites

Combined this script with 3.0 SC errors in the server not in the client only

Error in expression <ge='ZSC\gui\Money.paa'/>", [Money] call BIS_fnc_numberText];
_vitals ctrlCommit >
Error position: <BIS_fnc_numberText];
_vitals ctrlCommit >
Error Undefined variable in expression: bis_fnc_numbertext
File mpmissions\__CUR_MP.Sauerland\ZSC\compiles\playerHud.sqf, line 8

now nakryvaya safes don't even have that menu, also have cars and dealers

Link to comment
Share on other sites

{REMOVE} by OP.   The idea was to have the "changes" that the modders were doing in a separate file. example: variables.sqf, whatever changes would be zipped up as variables2.sqf and only contained those changes relative to the mod. Etc. so-forth with any other changes.

I'm just diff merging . . .  I don't know if the above suggestion would be more of ahassle or easier for someone "new" to applying mods to servers or not.

Edited by Just_R
Link to comment
Share on other sites

As did not try it was impossible to combine on the server with additions. Therefore has begun all with zero on the server with CS 3.0. Has united all works ID in a raft remains also constructions. Only I will not understand where was mistaken some times has checked up the raft radius does not work a line is same always I press and site borders do not vanish. Errors in RPT are not present. Thanks for addition very necessary thing.

Edited by Persei
Link to comment
Share on other sites

With a menu call has understood has removed
From fn_selfActions.sqf
If (_PlotsmarkersNear == 0) then {

};
Only now two menus that is inconvenient but nonlethal.

I will not understand what action should occur by a call how many I press that does not occur.

if (s_player_plot_take_ownership < 0) then {
            if (DZE_PlotOwnership) then {
                _isowner = [player, _cursorTarget] call FNC_check_owner;
                If (( _isowner select 0 )) then{
                    s_player_plot_take_ownership = player addAction ["Take plot items ownership", "Custom\A_Plot_for_Life\Action\plot_take_ownership.sqf", "", 1, false];
                };
            };
        };

Here which some errors I cannot find where they.

 

Error in expression <_bank_dialog2 = -1;
player removeAction s_player_packOBJ;
s_player_packOBJ = -1;>
  Error position: <s_player_packOBJ;
s_player_packOBJ = -1;>
  Error Undefined variable in expression: s_player_packobj
File mpmissions\__CUR_MP.Sauerland\custom\compile\fn_selfActions.sqf, line 1017

 

Error in expression <hen {
_losCheck = 0;
_cantSee = [_agent,_target] call dayz_losCheck;
};
>
  Error position: <_target] call dayz_losCheck;
};
>
  Error Undefined variable in expression: _target
Error in expression < = alive _agent;
_targetPos = getPosATL _target;



_agent moveTo _targetPos;
_a>
  Error position: <_target;



_agent moveTo _targetPos;
_a>
  Error Undefined variable in expression: _target
Error in expression < = alive _agent;
_targetPos = getPosATL _target;



_agent moveTo _targetPos;
_a>
  Error position: <_target;



_agent moveTo _targetPos;
_a>
  Error Undefined variable in expression: _target
Error in expression <hen {
_losCheck = 0;
_cantSee = [_agent,_target] call dayz_losCheck;
};
>
  Error position: <_target] call dayz_losCheck;
};
>
  Error Undefined variable in expression: _target
Error in expression < = alive _agent;
_targetPos =
 
Link to comment
Share on other sites

Just a curious question. I'm getting a test server within the next few days, I'll be installing P4L and many other scripts and moving everything to my main server. My question is, will there be any issues considering players already have bases on my main server. I just want to know if I'll have to wipe the bases from my main server to add this.

Link to comment
Share on other sites

Just a curious question. I'm getting a test server within the next few days, I'll be installing P4L and many other scripts and moving everything to my main server. My question is, will there be any issues considering players already have bases on my main server. I just want to know if I'll have to wipe the bases from my main server to add this.

No you don't. Theres even an option to apply P4L to old bases with the "take plot ownership" option

Link to comment
Share on other sites

Hey guys. I'm  back again. Got a new server and I was trying to install Plot Management with P4L, but once again I'm having issues. I installed P4L first (after learning the hard way the last time), a few other scripts and now Plot Management. I followed the installation instructions word for word,dotted my eyes and  crossed my tees and yet it still doesn't work.

The entire thing works perfectly fine (all of my other scripts, including P4L), until I install Plot Management. Now, what I've noticed with Plot Management is that I don't get any upgrade options and I can't even see the plot pole necessarily (i.e. no maintain or show plot boundary, etc) so I have a feeling my issue is within my fn_selfActions.sqf. I'll post it here, if someone doesn't mind pointing out to me what I've done wrong. Thank you!

No idea why the file ends like that but I don't get any errors from it. I know it wasn't like that when I put it in (that's what she said).. I wonder if it's a Vilayer thing.

 
scriptName "Functions\misc\fn_selfActions.sqf";
/***********************************************************
    ADD ACTIONS FOR SELF
    - Function
    - [] call fnc_usec_selfActions;
************************************************************/
private ["_isWreckBuilding","_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors","_player_deleteBuild","_player_flipveh","_player_lockUnlock_crtl","_player_butcher","_player_studybody","_player_cook","_player_boil","_hasFuelBarrelE","_hasHotwireKit","_player_SurrenderedGear","_isSurrendered","_isModular","_isModularDoor","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached","_playerUID","_characterID","_plotDistance","_PlotsNear", "_classname","_isowner"];
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;
    if (DZE_APlotforLife) then {
        _playerUID = [player] call FNC_GetPlayerUID;
    }else{
        _playerUID = dayz_characterID;
    };
    _isMan = _cursorTarget isKindOf "Man";
    _traderType = _typeOfCursorTarget;
    _ownerID = _cursorTarget getVariable ["ownerPUID","0"];
    _characterID = _cursorTarget getVariable ["CharacterID","0"];
    _isAnimal = _cursorTarget isKindOf "Animal";
    _isDog =  (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin");
    _isZombie = _cursorTarget isKindOf "zZombie_base";
    _isDestructable = _cursorTarget isKindOf "BuiltItems";
    _isWreck = _typeOfCursorTarget in DZE_isWreck;
    _isWreckBuilding = _typeOfCursorTarget in DZE_isWreckBuilding;
    _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 {
    
     //PLOT MANAGEMENT
     if (s_player_plotManagement < 0) then {
    _adminList = ["0152"]; // Add admins here if you admins to able to manage all plotpoles
    _owner = _cursorTarget getVariable ["ownerPUID","0"];
    _friends = _cursorTarget getVariable ["plotfriends", []];
    _fuid = [];
    {
    _friendUID = _x select 0;
    _fuid = _fuid + [_friendUID];
    } forEach _friends;
    _allowed = [_owner];    
    _allowed = [_owner] + _adminList + _fuid;
    if((getPlayerUID player) in _allowed)then{            
    s_player_plotManagement = player addAction ["<t color='#0059FF'>Manage Plot</t>", "plotManagement\initPlotManagement.sqf", [], 5, false];
    };
};
// PLOT MANAGEMENT END
    
    
         if (s_player_maintain_area < 0) then {
              s_player_maintain_area = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTAREA"], "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];
             s_player_maintain_area_preview = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTPREV"], "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
         };
         _plotDistance = (DZE_PlotPole select 0);
        _PlotsmarkersNear = count (_cursorTarget nearEntities ["Land_coneLight", _PlotDistance]);
        if (s_player_plot_boundary_on < 0) then {
            If (_PlotsmarkersNear == 0 ) then{
                s_player_plot_boundary_on = player addAction ["Show plot boundary", "Custom\A_Plot_for_Life\Action\object_showPlotRadius.sqf", "", 1, false];
            };
         };    
         if (s_player_plot_boundary_off < 0) then {
            If (_PlotsmarkersNear > 0 ) then{
                s_player_plot_boundary_off = player addAction ["Remove plot boundary", "Custom\A_Plot_for_Life\Action\object_removePlotRadius.sqf", "", 1, false];
            };
        };
        if (s_player_plot_take_ownership < 0) then {
            if (DZE_PlotOwnership) then {
                _isowner = [player, _cursorTarget] call FNC_check_owner;
                If (( _isowner select 0 )) then{
                    s_player_plot_take_ownership = player addAction ["Take plot items ownership", "Custom\A_Plot_for_Life\Action\plot_take_ownership.sqf", "", 1, false];
                };
            };
        };
     } else {
     //PLOT MANAGEMENT
        player removeAction s_player_plotManagement;
        s_player_plotManagement = -1;
        //PLOT MANAGEMENT
           player removeAction s_player_maintain_area;
           s_player_maintain_area = -1;
           player removeAction s_player_maintain_area_preview;
           s_player_maintain_area_preview = -1;
        player removeAction s_player_plot_boundary_on;
        s_player_plot_boundary_on = -1;
        player removeAction s_player_plot_boundary_off;
        s_player_plot_boundary_off = -1;
        player removeAction s_player_plot_take_ownership;
        s_player_plot_take_ownership = -1;
    };
    // CURSOR TARGET ALIVE
    if(_isAlive) then {
        
        //Allow player to delete objects
        if(_isDestructable || _isWreck || _isRemovable || _isWreckBuilding) then {
            if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
                _player_deleteBuild = true;
            };
        };
        
//PLOT MANAGEMENT
///Allow owners to delete modulars
if(_isModular) then {
        if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
            _findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], DZE_PlotPole select 0];
            _IsNearPlot = count (_findNearestPoles);
            _fuid  = [];
            _allowed = [];
            if(_IsNearPlot > 0)then{
                _thePlot = _findNearestPoles select 0;
                _owner =  _thePlot getVariable ["ownerPUID","010"];
                _friends = _thePlot getVariable ["plotfriends", []];
                {
                  _friendUID = _x select 0;
                  _fuid  =  _fuid  + [_friendUID];
                } forEach _friends;
                _allowed = [_owner];    
                _allowed = [_owner] +  _fuid;   
                if ( _playerUID in _allowed && _ownerID in _allowed ) then {  
                    _player_deleteBuild = true;
                };                  
            }else{
                if(_ownerID == _playerUID)then{
                    _player_deleteBuild = true;
                };
            };                                        
        };
};
//Allow owners to delete modular doors without locks
if(_isModularDoor) then {
        if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {         
            _findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], DZE_PlotPole select 0];
            _IsNearPlot = count (_findNearestPoles);
            _fuid  = [];
            _allowed = [];
            if(_IsNearPlot > 0)then{
                _thePlot = _findNearestPoles select 0;
                _owner =  _thePlot getVariable ["ownerPUID","010"];
                _friends = _thePlot getVariable ["plotfriends", []];
                {
                  _friendUID = _x select 0;
                  _fuid  =  _fuid  + [_friendUID];
                } forEach _friends;
                _allowed = [_owner];    
                _allowed = [_owner] +  _fuid;   
                if ( _playerUID in _allowed && _ownerID in _allowed) then {
                    _player_deleteBuild = true;
                };                  
            }else{
                if(_ownerID == _playerUID)then{
                    _player_deleteBuild = true;
                };
            };                              
        };      
};
//PLOT MANAGEMENT END
        // CURSOR TARGET VEHICLE
        if(_isVehicle) then {
            
            //flip vehicle small vehicles by your self && all other vehicles with help nearby
            if (!(canmove _cursorTarget) && (player distance _cursorTarget >= 2) && (count (crew _cursorTarget))== 0 && ((vectorUp _cursorTarget) select 2) < 0.5) then {
                _playersNear = {isPlayer _x} count (player nearEntities ["CAManBase", 6]);
                if(_isVehicletype || (_playersNear >= 2)) then {
                    _player_flipveh = true;    
                };
            };

            if(!_isMan && _characterID != "0" && !(_cursorTarget isKindOf "Bicycle")) then {
                _player_lockUnlock_crtl = true;
            };
        };
    
    };
    if(_player_deleteBuild) then {
        if (s_player_deleteBuild < 0) then {
            s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "Custom\A_Plot_for_Life\Action\remove.sqf",_cursorTarget, 1, true, true, "", ""];
        };
    } else {
        player removeAction s_player_deleteBuild;
        s_player_deleteBuild = -1;
    };
    
    if (DZE_HeliLift) then {
        _liftHeli = objNull;
        _found = false;
    
        _allowTow = false;
        if ((count (crew _cursorTarget)) == 0) then {
            {
                if(!_allowTow) then {
                    _allowTow = _cursorTarget isKindOf _x;
                };
            } count DZE_HeliAllowToTow;
        };
        //diag_log format["CREW: %1 ALLOW: %2",(count (crew _cursorTarget)),_allowTow];
        if (_allowTow) then {
            _liftHelis = (position player) nearEntities [DZE_HeliAllowTowFrom, 15];
            {
                if(!_found) then {
                    _posL = [_x] call FNC_getPos;
                    _posC = [_cursorTarget] call FNC_getPos;
                    _height = (_posL select 2) - (_posC select 2);
                    _hasAttached = _x getVariable["hasAttached",false];
                    if(_height < 15 && _height > 5 && (typeName _hasAttached != "OBJECT")) then {
                        if(((abs((_posL select 0) - (_posC select 0))) < 10) && ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
                            _liftHeli = _x;
                            _found = true;
                        };
                    };
                };
            } count _liftHelis;
        };
        //diag_log format["HELI: %1 TARGET: %2",_found,_cursorTarget];
        _attached = _cursorTarget getVariable["attached",false];
        if(_found && _allowTow && _canDo && !locked _cursorTarget && !_isPZombie && (typeName _attached != "OBJECT")) then {
            if (s_player_heli_lift < 0) then {
                s_player_heli_lift = player addAction ["Attach to Heli", "\z\addons\dayz_code\actions\player_heliLift.sqf",[_liftHeli,_cursorTarget], -10, false, true, "",""];
            };
        } else {
            player removeAction s_player_heli_lift;
            s_player_heli_lift = -1;
        };
    };
    
    // Allow Owner to lock && unlock vehicle  
    if(_player_lockUnlock_crtl) then {
        if (s_player_lockUnlock_crtl < 0) then {
            _hasKey = _characterID in _temp_keys;
            _oldOwner = (_characterID == dayz_playerUID);
            if(locked _cursorTarget) then {
                if(_hasKey || _oldOwner) then {
                    _Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (parseNumber _characterID))], 2, true, true, "", ""];
                    s_player_lockunlock set [count s_player_lockunlock,_Unlock];
                    s_player_lockUnlock_crtl = 1;
                } else {
                    if(_hasHotwireKit) then {
                        _Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true, "", ""];
                    } else {
                        _Unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, true, true, "", ""];
                    };
                    s_player_lockunlock set [count s_player_lockunlock,_Unlock];
                    s_player_lockUnlock_crtl = 1;
                };
            } else {
                if(_hasKey || _oldOwner) then {
                    _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true, "", ""];
                    s_player_lockunlock set [count s_player_lockunlock,_lock];
                    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 [("<t color=""#FF0000"">"+("Steal Shekels") + "</t>"), "ZSC\actions\check_wallet.sqf",_cursorTarget, 0, false, true, "",""];
    };
} else {
    player removeAction s_player_studybody;
    s_player_studybody = -1;
};
    // logic vars
    _player_cook = false;
    _player_boil = false;
    // CURSOR TARGET IS FIRE
    if (inflamed _cursorTarget) then {
        
        //Fireplace Actions check
        if (_hasRawMeat) then {
            _player_cook = true;    
        };
        
        // Boil water
        if (_hasbottleitem && _hastinitem) then {
            _player_boil = true;
        };
    };
    if (_player_SurrenderedGear) then {
        if (s_player_SurrenderedGear < 0) then {
            s_player_SurrenderedGear = player addAction [localize "STR_EPOCH_ACTIONS_GEAR", "\z\addons\dayz_code\actions\surrender_gear.sqf",_cursorTarget, 1, true, true, "", ""];
        };
    } else {
        player removeAction s_player_SurrenderedGear;
        s_player_SurrenderedGear = -1;
    };
    //Fireplace Actions check
    if (_player_cook) then {
        if (s_player_cook < 0) then {
            s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true, "", ""];
        };
    } else {
        player removeAction s_player_cook;
        s_player_cook = -1;
    };
    
    // Boil water
    if (_player_boil) then {
        if (s_player_boil < 0) then {
            s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true, "", ""];
        };
    } else {
        player removeAction s_player_boil;
        s_player_boil = -1;
    };
    
    if(_cursorTarget == dayz_hasFire) then {
        if ((s_player_fireout < 0) && !(inflamed _cursorTarget) && (player distance _cursorTarget < 3)) then {
            s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_fireout;
        s_player_fireout = -1;
    };
    
    //Packing my tent
    if(_isTent && (player distance _cursorTarget < 3)) then {
        if (_ownerID == _playerUID) then {
            if (s_player_packtent < 0) then {
                s_player_packtent = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true, "",""];
            };
        } else {
            if(("ItemJerrycan" in _magazinesPlayer) && ("ItemMatchbox_DZE" in weapons player)) then {
                if (s_player_packtent < 0) then {
                    s_player_packtent = player addAction [localize "STR_EPOCH_ACTIONS_DESTROYTENT", "Custom\A_Plot_for_Life\Action\remove.sqf",_cursorTarget, 1, true, true, "", ""];
                };
            };
        };
    } else {
        player removeAction s_player_packtent;
        s_player_packtent = -1;
    };
    //Allow owner to unlock vault
    if((_typeOfCursorTarget in DZE_LockableStorage) && _characterID != "0" && (player distance _cursorTarget < 3)) then {
        if (s_player_unlockvault < 0) then {
            if(_typeOfCursorTarget in DZE_LockedStorage) then {
                if(_characterID == dayz_combination || _ownerID == _playerUID) then {
                    _combi = player addAction [format[localize "STR_EPOCH_ACTIONS_OPEN",_text], "\z\addons\dayz_code\actions\vault_unlock.sqf",_cursorTarget, 0, false, true, "",""];
                    s_player_combi set [count s_player_combi,_combi];
                } else {
                    _combi = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
                    s_player_combi set [count s_player_combi,_combi];
                };
                s_player_unlockvault = 1;
            } else {
                if(_characterID != dayz_combination && _ownerID != _playerUID) then {
                    _combi = player addAction [localize "STR_EPOCH_ACTIONS_RECOMBO", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
                    s_player_combi set [count s_player_combi,_combi];
                    s_player_unlockvault = 1;
                };
            };
        };
    } else {
        {player removeAction _x} count s_player_combi;s_player_combi = [];
        s_player_unlockvault = -1;
    };
    
    if(_typeOfCursorTarget in ZSC_MoneyStorage && (player distance _cursorTarget < 5)) then {
    if (s_bank_dialog < 0) then {
        s_bank_dialog = player addAction ["Money Storage", "ZSC\actions\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
    };
} else {
    player removeAction s_bank_dialog;
    s_bank_dialog = -1;
};
// cars
if( _isVehicle && !_isMan &&_isAlive && !_isMan && !locked _cursorTarget && !(_cursorTarget isKindOf "Bicycle") && (player distance _cursorTarget < 5)) then {  
    if (s_bank_dialog2 < 0) then {
        s_bank_dialog2 = player addAction ["Money Storage", "ZSC\actions\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
    };
} else {
    player removeAction s_bank_dialog2;
    s_bank_dialog2 = -1;
};
    
    
    //Allow owner to pack vault
    if(_typeOfCursorTarget in DZE_UnLockedStorage && _characterID != "0" && (player distance _cursorTarget < 3)) then {
        if (s_player_lockvault < 0) then {
            if(_characterID == dayz_combination || _ownerID == dayz_playerUID) then {
                s_player_lockvault = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true, "",""];
            };
        };
        if (s_player_packvault < 0 && (_characterID == dayz_combination || _ownerID == dayz_playerUID)) then {
            s_player_packvault = player addAction [format["<t color='#ff0000'>%1</t>",(format[localize "STR_EPOCH_ACTIONS_PACK",_text])], "\z\addons\dayz_code\actions\vault_pack.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_packvault;
        s_player_packvault = -1;
        player removeAction s_player_lockvault;
        s_player_lockvault = -1;
    };
    
    //Player Deaths
    if(_typeOfCursorTarget == "Info_Board_EP1") then {
        if (s_player_information < 0) then {
            s_player_information = player addAction [localize "STR_EPOCH_ACTIONS_MURDERS", "\z\addons\dayz_code\actions\list_playerDeaths.sqf",[], 7, false, true, "",""];
        };
    } else {
        player removeAction s_player_information;
        s_player_information = -1;
    };
    
    //Fuel Pump
    if (_isMan and _isAlive and !_isZombie and !_isAnimal and !(_traderType in serverTraders)) then {
    if (s_givemoney_dialog < 0) then {
        s_givemoney_dialog = player addAction [format["Give some Shekels to %1", (name _cursorTarget)], "ZSC\actions\give_player_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
    };
 } else {
    player removeAction s_givemoney_dialog;
    s_givemoney_dialog = -1;
};
    
    
    
    if(_typeOfCursorTarget in dayz_fuelpumparray) then {    
        if (s_player_fuelauto < 0) then {
            
            // check if Generator_DZ is running within 30 meters
            _findNearestGens = (position player) nearEntities ["Generator_DZ", 30];
            _findNearestGen = [];
            {
                if (alive _x && (_x getVariable ["GeneratorRunning", false])) then {
                    _findNearestGen set [(count _findNearestGen),_x];
                };
            } count _findNearestGens;
            _IsNearRunningGen = count (_findNearestGen);
            
            // show that pump needs power if no generator nearby.
            if(_IsNearRunningGen > 0) then {
                s_player_fuelauto = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true, "",""];
            } else {
                s_player_fuelauto = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_NEEDPOWER"], "",[], 0, false, true, "",""];
            };
        };
    } else {
        player removeAction s_player_fuelauto;
        s_player_fuelauto = -1;
    };
    //Fuel Pump on truck
    if(_typeOfCursorTarget in DZE_fueltruckarray && alive _cursorTarget) then {    
        if (s_player_fuelauto2 < 0) then {
            // show that fuel truck pump needs power.
            if(isEngineOn _cursorTarget) then {
                s_player_fuelauto2 = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",_cursorTarget, 0, false, true, "",""];
            } else {
                s_player_fuelauto2 = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_NEEDPOWER"], "",[], 0, false, true, "",""];
            };
        };
    } else {
        player removeAction s_player_fuelauto2;
        s_player_fuelauto2 = -1;
    };
    // inplace upgrade tool
    if ((_cursorTarget isKindOf "ModularItems") || (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") || (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
        if ((s_player_lastTarget select 0) != _cursorTarget) then {
            if (s_player_upgrade_build > 0) then {
                player removeAction s_player_upgrade_build;
                s_player_upgrade_build = -1;
            };
        };
        if (s_player_upgrade_build < 0) then {
            // s_player_lastTarget = _cursorTarget;
            s_player_lastTarget set [0,_cursorTarget];
            s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "Custom\A_Plot_for_Life\Action\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
        };
    } else {
        player removeAction s_player_upgrade_build;
        s_player_upgrade_build = -1;
    };
    
    // downgrade system
    if((_isDestructable || _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" || _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") && (DZE_Lock_Door == _characterID)) then {
        if ((s_player_lastTarget select 1) != _cursorTarget) then {
            if (s_player_downgrade_build > 0) then {    
                player removeAction s_player_downgrade_build;
                s_player_downgrade_build = -1;
            };
        };
        if (s_player_downgrade_build < 0) then {
            s_player_lastTarget set [1,_cursorTarget];
            s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "Custom\A_Plot_for_Life\Action\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
        };
    } else {
        player removeAction s_player_downgrade_build;
        s_player_downgrade_build = -1;
    };
    // inplace maintenance tool
    if((_cursorTarget isKindOf "ModularItems" || _cursorTarget isKindOf "DZE_Housebase" || _typeOfCursorTarget == "LightPole_DZ") && (damage _cursorTarget >= DZE_DamageBeforeMaint)) then {
        if ((s_player_lastTarget select 2) != _cursorTarget) then {
            if (s_player_maint_build > 0) then {    
                player removeAction s_player_maint_build;
                s_player_maint_build = -1;
            };
        };
        if (s_player_maint_build < 0) then {
            s_player_lastTarget set [2,_cursorTarget];
            s_player_maint_build = player addAction [format[localize "STR_EPOCH_ACTIONS_MAINTAIN",_text], "\z\addons\dayz_code\actions\player_buildingMaint.sqf",_cursorTarget, -2, false, true, "",""];
        };
    } else {
        player removeAction s_player_maint_build;
        s_player_maint_build = -1;
    };

    //Start Generator
    if(_cursorTarget isKindOf "Generator_DZ") then {
        if (s_player_fillgen < 0) then {
            
            // check if not running
            if((_cursorTarget getVariable ["GeneratorRunning", false])) then {
                s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR1", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true, "",""];                
            } else {
            // check if not filled && player has jerry.
                if((_cursorTarget getVariable ["GeneratorFilled", false])) then {
                    s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR2", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
                } else {
                    if("ItemJerrycan" in _magazinesPlayer) then {
                        s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR3", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
                    };
                };
            };
        };
    } else {
        player removeAction s_player_fillgen;
        s_player_fillgen = -1;
    };
    //Towing with tow truck
    /*
    if(_typeOfCursorTarget == "TOW_DZE") then {
        if (s_player_towing < 0) then {
            if(!(_cursorTarget getVariable ["DZEinTow", false])) then {
                s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true, "",""];                
            } else {
                s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true, "",""];                
            };
        };
    } else {
        player removeAction s_player_towing;
        s_player_towing = -1;
    };
    */

    //Sleep
    if(_isTent && _ownerID == _playerUID) then {
        if ((s_player_sleep < 0) && (player distance _cursorTarget < 3)) then {
            s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false, true, "",""];
        };
    } else {
        player removeAction s_player_sleep;
        s_player_sleep = -1;
    };
    
    //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);
                
                _buyV = player addAction ["<t color='#0059FF'>Advanced Trading</t>", "zupa\advancedTrading\init.sqf",(_traderMenu select 0), 999, true, false, "",""];
                 s_player_parts set [count s_player_parts,_buyV];
                
                // Database menu
                _buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 999, true, false, "",""];
                s_player_parts set [count s_player_parts,_buy];
            };
            s_player_parts_crtl = 1;
            
        };
    } else {
        {player removeAction _x} count s_player_parts;s_player_parts = [];
        s_player_parts_crtl = -1;
    };
    
    if(dayz_tameDogs) then {
        
        //Dog
        if (_isDog && _isAlive && (_hasRawMeat) && _characterID == "0" && player getVariable ["dogID", 0] == 0) then {
            if (s_player_tamedog < 0) then {
                s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];
            };
        } else {
            player removeAction s_player_tamedog;
            s_player_tamedog = -1;
        };
        if (_isDog && _characterID == dayz_characterID && _isAlive) then {
            _dogHandle = player getVariable ["dogID", 0];
            if (s_player_feeddog < 0 && _hasRawMeat) then {
                s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true,"",""];
            };
            if (s_player_waterdog < 0 && "ItemWaterbottle" in _magazinesPlayer) then {
                s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true,"",""];
            };
            if (s_player_staydog < 0) then {
                _lieDown = _dogHandle getFSMVariable "_actionLieDown";
                if (_lieDown) then { _text = "str_actions_liedog"; } else { _text = "str_actions_sitdog"; };
                s_player_staydog = player addAction [localize _text,"\z\addons\dayz_code\actions\dog\stay.sqf", _dogHandle, 5, false, true,"",""];
            };
            if (s_player_trackdog < 0) then {
                s_player_trackdog = player addAction [localize "str_actions_trackdog","\z\addons\dayz_code\actions\dog\track.sqf", _dogHandle, 4, false, true,"",""];
            };
            if (s_player_barkdog < 0) then {
                s_player_barkdog = player addAction [localize "str_actions_barkdog","\z\addons\dayz_code\actions\dog\speak.sqf", _cursorTarget, 3, false, true,"",""];
            };
            if (s_player_warndog < 0) then {
                _warn = _dogHandle getFSMVariable "_watchDog";
                if (_warn) then { _text = (localize "str_epoch_player_247"); _warn = false; } else { _text = (localize "str_epoch_player_248"); _warn = true; };
                s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true,"",""];        
            };
            if (s_player_followdog < 0) then {
                s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true,"",""];
            };
        } else {
            player removeAction s_player_feeddog;
            s_player_feeddog = -1;
            player removeAction s_player_waterdog;
            s_player_waterdog = -1;
            player removeAction s_player_staydog;
            s_player_staydog = -1;
            player removeAction s_player_trackdog;
            s_player_trackdog = -1;
            player removeAction s_player_barkdog;
            s_player_barkdog = -1;
            player removeAction s_player_warndog;
            s_player_warndog = -1;
            player removeAction s_player_followdog;
            s_player_followdog = -1;
        };
    };
} else {
    //Engineering
    //PLOT MANAGEMENT
    player removeAction s_player_plotManagement;
    s_player_plotManagement = -1;
    //PLOT MANAGEMENT END
    {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
    s_player_repair_crtl = -1;
    {player removeAction _x} count s_player_combi;s_player_combi = [];
        
    dayz_myCursorTarget = objNull;
    s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
    {player removeAction _x} count s_player_parts;s_player_parts = [];
    s_player_parts_crtl = -1;
    {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
    s_player_lockUnlock_crtl = -1;
    player removeAction s_player_checkGear;
    s_player_checkGear = -1;
    player removeAction s_player_SurrenderedGear;
    s_player_SurrenderedGear = -1;
    //Others
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
    player removeAction s_player_plot_boundary_on;
    s_player_plot_boundary_on = -1;
    player removeAction s_player_plot_boundary_off;
    s_player_plot_boundary_off = -1;
    player removeAction s_player_plot_take_ownership;
    s_player_plot_take_ownership = -1;
    player removeAction s_player_forceSave;
    s_player_forceSave = -1;
    player removeAction s_player_flipveh;
    s_player_flipveh = -1;
    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_givemoney_dialog;
s_givemoney_dialog = -1;
player removeAction s_bank_dialog;
s_bank_dialog = -1;
player removeAction s_bank_dialog2;
s_bank_dialog2 = -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";
    _characterID = "0";
    if (!isNull cursorTarget) then { _characterID = cursorTarget getVariable ["CharacterID","0"]; };
    if (_canDo && !_inVehicle && alive _dog && _characterID != dayz_characterID) then {
        if (s_player_movedog < 0) then {
            s_player_movedog = player addAction [localize "str_actions_movedog", "\z\addons\dayz_code\actions\dog\move.sqf", player getVariable ["dogID", 0], 1, false, true, "", ""];
        };
        if (s_player_speeddog < 0) then {
            _text = (localize "str_epoch_player_249");
            _speed = 0;
            if (_dog getVariable ["currentSpeed",1] == 0) then { _speed = 1; _text = (localize "str_epoch_player_250"); };
            s_player_speeddog = player addAction [format[localize "str_actions_speeddog", _text], "\z\addons\dayz_code\actions\dog\speed.sqf",[player getVariable ["dogID", 0],_speed], 0, false, true, "", ""];
        };
        if (s_player_calldog < 0) then {
            s_player_calldog = player addAction [localize "str_actions_calldog", "\z\addons\dayz_code\actions\dog\follow.sqf", [player getVariable ["dogID", 0], true], 2, false, tr
  
Link to comment
Share on other sites

If a problem in display of borders. Whether a problem that he does not want to define that there are borders I has solved removal of a line

If (_PlotsmarkersNear == 0 ) then{           

 If (_PlotsmarkersNear > 0 ) then{

There will be two lines but it is not critical.

Prompt that should occur by pressing  Take plot items ownership?

Link to comment
Share on other sites

I got plot 4 life installed, but I do have a question regarding it. I installed it to a clean server with nothing else on it. I just replaced my files with the one provided, though I did change the paths so it works in my server pbo. Now in my mission file I didn't have a custom compiles or variables.sqf, I used the ones from DayZ code. Plot for life however included both of those files. My question is when I go to install other scripts that require me to make changes to my compiles/variables.sqf would I edit the ones plot 4 life gave me or should I create a new one?

I'm a little stuck because if I have to use those ones they'll be considered my 'custom' variable and compiles.sqf and I would like to move them to their own folder for easier access if I have to use them.

Link to comment
Share on other sites

compare and merge them :)

 

this should help

http://sourceforge.net/projects/npp-compare/

I agree and disagree.  You can't always just merge from one file to the next.  One section of code will take priority over the other. fn_selfactions is prime example.  What people should be doing is only releasing the changes they did.  This way all we have to do is diff-merge the custom whatever.sqf with whatever updates is needed.

Link to comment
Share on other sites

Whenever I try to place an object after I put up a plot pole I get the "This X needs a plot pole within 50 meters" or something.
This is from my client.rpt

if(_isTent && _ownerID == _playerUID) then {
if ((s_player_sleep <>
  Error position: <_playerUID) then {
if ((s_player_sleep <>
  Error Undefined variable in expression: _playeruid
File mpmissions\__CUR_MP.namalsk\custom\exec\fn_selfActions.sqf, line 782
Error in expression <y = false;

_playerUID = [_player] call FNC_GetPlayerUID;
_ObjectOwner = _object>
  Error position: <FNC_GetPlayerUID;
_ObjectOwner = _object>
  Error Undefined variable in expression: fnc_getplayeruid
File mpmissions\__CUR_MP.namalsk\custom\A_Plot_for_Life\Compile\fn_check_owner.sqf, line 10
Error in expression <Life) then {
_playerUID = [player] call FNC_GetPlayerUID;
}else{
_playerUID = da>
  Error position: <FNC_GetPlayerUID;
}else{
_playerUID = da>
  Error Undefined variable in expression: fnc_getplayeruid
File mpmissions\__CUR_MP.namalsk\custom\exec\fn_selfActions.sqf, line 164
Error in expression <uild = true;
};
};

 

if(_isModular && (_playerUID == _ownerID)) then {
if(_hasT>
  Error position: <_playerUID == _ownerID)) then {
if(_hasT>
  Error Undefined variable in expression: _playeruid
File mpmissions\__CUR_MP.namalsk\custom\exec\fn_selfActions.sqf, line 265
Error in expression <

Any suggestion on what's wrong? I've gone over it a few times now and I can't find any problems. The paths are correct also.

Link to comment
Share on other sites

  • 3 weeks later...

I think i followed the exact instructions from your manual. Clean epoch server install with ONLY this mod and I only get:

Maintain option

Preview Maintain option

show plot boundary

 

I cant take ownership and snap building is also not working. Are there any additional steps that weren't in the instruction?

init.sqf changes

call compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\init\variables.sqf";				//Initilize the Variables (IMPORTANT: Must happen very early)
call compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\init\publicEH.sqf";				//Initilize the publicVariable event handlers
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf";	//Functions used by CLIENT for medical
call compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\init\compiles.sqf";			//Compile regular functions
_serverMonitor = [] execVM "custom\system\server_monitor.sqf";

 

I added this line to description.ext

#include "custom\snap_pro\snappoints.hpp"

Up to this everything seems to be working since i do get the option to show the plot boundary and i dont get any errors.

I put these settings in variables.sqf, didnt work. Also if i put them in init.sqf it also doesnt seem to give me the options to takeownership and snap building doesnt work.

DZE_APlotforLife = true;
DZE_PlotOwnership = true;
DZE_modularBuild = true;

DZE_PlotOwnership = true;

 

Any help would be appreciated. (and i copied all the files to the appropriate locations)

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

So i got this mod working great :) 

I have 1 question though and its probably a easy solution.. How would i be able to change the plot size from the default 30m to say 50m ? 

And what would i need to change to make the cones show the new plot size that i will be setting ?

Thanx :) 

Link to comment
Share on other sites

  • 2 weeks later...
On 24.11.2015, 20:27:49, EagerBeaver said:

So i got this mod working great :) 

I have 1 question though and its probably a easy solution.. How would i be able to change the plot size from the default 30m to say 50m ? 

And what would i need to change to make the cones show the new plot size that i will be setting ?

Thanx :) 

By setting 

DZE_PlotPole = [x,y];

in your init.sqf. The cones will automatically show the chosen settings ingame

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