Jump to content

[WIP] Nuke a random town from laptop.


Recommended Posts

Shep

make something like this :

if (isServer) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\dynamic_vehicle.sqf";
//Compile vehicle configs
 
// Add trader citys
_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
_serverMonitor = [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
execVM "Nuke\server_Nuke.sqf";
};

 

 

if (!isDedicated) then {
//Conduct map operations
//[] execVM "scripts\Server_WelcomeCredits.sqf";
......
_nil = [] execVM "fixes\remote_messages.sqf";
execVM "Nuke\Effects\effects.sqf"; 
};

 

 

and at the end

//Nuke Settings 0 = off for first 4 options.
Blood_LossPS = 125; // set blood loss per sec in radiation zone here for non antiRadSkins. 
destruction_zone = 400; //Set the destruction zone size here. Any vehicles, buildings and some (if not all) epoch buildables in this zone will be destroyed 
radiation_zone = 1500; //Set the radiation zone size here 1500 = 1500m.
death_zone = 200; //Set the size of the zone people will die in as the nuke goes off. (200 = 200m)
antiRadSkins = ["BanditW1_DZ","BanditW2_DZ","Bandit2_DZ","GUE_Soldier_MG_DZ","INS_Lopotev_DZ"]; //Set skins that will block blood loss in the radiation zone. 
laptop_Pos = [x.y.z]; //set laptop position Here x y z.
laptop_Dir = -588.9624; //set the direction the laptop is facing here.
laptop_Type = "Laptop_EP1"; //can edit to be anything if you like.
//
execVM "radiationZone\blowoutZone.sqf"

 

 

Link to comment
Share on other sites

Hello, does not work for me, no menu on the laptop, I have misplaced my code in the fn_selfAction.sqf ?

 

 

 

scriptName "Functions\misc\fn_selfActions.sqf";


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

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

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

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

//####----####----####---- Base Building 1.3 Start ----####----####----####
_currentSkin = typeOf(player);
_hasToolbox = "ItemToolbox" in items player;
_baseBuildAdmin = ((getPlayerUID player) in BBSuperAdminAccess);
_baseBuildLAdmin = ((getPlayerUID player) in BBLowerAdminAccess);
//Get objects that can't be targetted
_flagBasePole = nearestObject [player, BBTypeOfFlag];
//All untargetable objects (except Base Flag), searches a 12 meter radius, you can add any new objects you put in the build list that can't be targetted
_untargetableArray = nearestObjects [player, ["Land_CamoNetB_EAST","Land_CamoNetVar_EAST","Land_CamoNet_EAST","Land_CamoNetB_NATO","Land_CamoNetVar_NATO","Land_CamoNet_NATO","Land_Ind_IlluminantTower","Land_sara_hasic_zbroj","Land_A_Castle_Bergfrit","Land_A_Castle_Gate","Land_A_Castle_Bastion","Land_A_Castle_Wall1_20","Land_A_Castle_Wall1_20_Turn","Land_A_Castle_Wall2_30","HeliH","HeliHCivil","Land_Ind_Shed_01_main","RampConcrete","Land_Ind_Shed_01_end","Land_Ind_SawMillPen"],12];//The number at the end is the range to look for items, if you have issues with some items try increasing it by one or two at a time.
_nearUntargetable = count _untargetableArray > 0; //Check if anything is in range
_closestUntargetable = if (_nearUntargetable) then {_untargetableArray select 0};//Selects the closest returned item
_nettingNames = ["Land_CamoNetB_EAST","Land_CamoNetVar_EAST","Land_CamoNet_EAST","Land_CamoNetB_NATO","Land_CamoNetVar_NATO","Land_CamoNet_NATO"]; //Used for menu options
_castleNames = ["Land_A_Castle_Bergfrit","Land_A_Castle_Gate","Land_A_Castle_Bastion","Land_A_Castle_Wall1_20","Land_A_Castle_Wall1_20_Turn","Land_A_Castle_Wall2_30"];
_heliPadNames = ["HeliH","HeliHCivil"];
_roofNames = ["Land_Ind_Shed_01_main","Land_Ind_Shed_01_end","Land_Ind_SawMillPen"];
_buildingNames = [];//Can add generic building names here
_displayName = "Base Build Object";//Default menu option name if none of the following match
if (typeOf(_closestUntargetable) in _nettingNames) then {_displayName = "Netting";};
if (typeOf(_closestUntargetable) in _castleNames) then {_displayName = "Castle";};
if (typeOf(_closestUntargetable) in _heliPadNames) then {_displayName = "HeliPad";};
if (typeOf(_closestUntargetable) in _roofNames) then {_displayName = "Roof";};
if (typeOf(_closestUntargetable) in _buildingNames) then {_displayName = "Building";};
if (typeOf(_closestUntargetable) == "Land_Ind_IlluminantTower") then {_displayName = "Tower";};


// Check mags in player inventory to show build recipe menu
_mags = magazines player;
if ("ItemTankTrap" in _mags || "ItemSandbag" in _mags || "ItemWire" in _mags || "PartWoodPile" in _mags || "PartGeneric" in _mags || "equip_scrapelectronics" in _mags || "ItemCamoNet" in _mags || "equip_crate" in _mags || "equip_brick" in _mags || "equip_string" in _mags || "equip_duct_tape" in _mags) then {
hasBuildItem = true;
} else { hasBuildItem = false;};
//Build Recipe Menu Action
if((speed player <= 1) && hasBuildItem && _canDo) then {
if (s_player_recipeMenu < 0) then {
s_player_recipeMenu = player addaction [("" + ("Build Recipes") +""),"buildRecipeBook\build_recipe_dialog.sqf","",5,false,true,"",""];
};
if (s_player_buildHelp < 0) then {
s_player_buildHelp = player addaction [("" + ("Base Building Help") +""),"dayz_code\actions\build_help.sqf","",5,false,true,"",""];
};
if (s_player_showFlags < 0) then {
s_player_showFlags = player addAction [("" + ("Show My Flags") +""),"dayz_code\actions\show_flag_markers.sqf","",5,false,true,"",""];
};
} else {
player removeAction s_player_buildHelp;
s_player_buildHelp = -1;
player removeAction s_player_recipeMenu;
s_player_recipeMenu = -1;
player removeAction s_player_showFlags;
s_player_showFlags = -1;
};

//Add in custom eventhandlers or whatever on skin change
if (_currentSkin != globalSkin) then {
globalSkin = _currentSkin;
player removeMPEventHandler ["MPHit", 0];
player removeEventHandler ["AnimChanged", 0];
ehWall = player addEventHandler ["AnimChanged", { player call antiWall; }];
empHit = player addMPEventHandler ["MPHit", {_this spawn fnc_plyrHit;}];
};

//General Untargetable Objects
if((isNull cursorTarget) && _canDo && !remProc && !procBuild && _nearUntargetable) then {
_ownerUnT = _closestUntargetable getVariable ["characterID", "0"]; //Checks owner IDs of untargetable objects, simply to avoid RPT spam with map objects
_unTauthUID = _closestUntargetable getVariable ["AuthorizedUID", []]; //Gets master AuthUID from untargetable objects
_unTauthGateCodes = if ((_ownerUnT != "0") && (count _unTauthUID > 0)) then {((getPlayerUID player) in (_unTauthUID select 1));}; //Checks for player access to untargetable objects
_adminText = if (!_unTauthGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered
if (_unTauthGateCodes || _baseBuildAdmin) then {
if (s_player_camoBaseOwnerAccess < 0) then {
s_player_camoBaseOwnerAccess = player addAction [format["%2%1: Give all base owners (from flagpole) access",_displayName,_adminText], "dayz_code\external\keypad\fnc_keyPad\functions\give_gateAccess.sqf",_closestUntargetable, 1, false, true, "", ""];
};
if (s_player_addCamoAuth < 0) then {
s_player_addCamoAuth = player addAction [format["%2%1: Add Player UIDs",_displayName,_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeAdd.sqf",_closestUntargetable, 1, false, true, "", ""];
};
if (s_player_removeCamoAuth < 0) then {
s_player_removeCamoAuth = player addAction [format[("" + ("%2%1: Remove Player UIDs") +""),_displayName,_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeRemove.sqf",_closestUntargetable, 1, false, true, "", ""];
};
};
if (_ownerUnT != "0" && (_hasToolbox || _baseBuildAdmin || _baseBuildLAdmin)) then {
if (s_player_deleteCamoNet < 0) then {
s_player_deleteCamoNet = player addaction [format[("" + ("Remove %1") +""),_displayName,_adminText],"dayz_code\actions\player_remove.sqf",_closestUntargetable,1,false,true,"",""];
};
};
} else {
player removeAction s_player_camoBaseOwnerAccess;
s_player_camoBaseOwnerAccess = -1;
player removeAction s_player_addCamoAuth;
s_player_addCamoAuth = -1;
player removeAction s_player_removeCamoAuth;
s_player_removeCamoAuth = -1;
player removeAction s_player_deleteCamoNet;
s_player_deleteCamoNet = -1;
};

// FlagPole Access (more reliable than cursortarget)
if ((isNull cursorTarget) && _canDo && !remProc && !procBuild && (_flagBasePole distance player < 10)) then {
_ownerFlag = _flagBasePole getVariable ["characterID", "0"]; //Checks owner IDs of flags, simply to avoid RPT spam with map objects
_flagAuthUID = _flagBasePole getVariable ["AuthorizedUID", []]; //Gets master AuthUID from
_flagAuthGateCodes = if ((_ownerFlag != "0") && (count _flagAuthUID > 0)) then {((getPlayerUID player) in (_flagAuthUID select 1));}; //Checks if player has access to flag
_adminText = if (!_flagAuthGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered
if (_flagAuthGateCodes || _baseBuildAdmin) then {
if (s_player_addFlagAuth < 0) then {
s_player_addFlagAuth = player addAction [format["%1FlagPole: Add Player UIDs for Base Building Access",_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeAdd.sqf", _flagBasePole, 1, false, true, "", ""];
};
if (s_player_removeFlagAuth < 0) then {
s_player_removeFlagAuth = player addaction [format[("" + ("%1FlagPole: Remove Player UIDs") +""),_adminText],"dayz_code\external\keypad\fnc_keyPad\enterCodeRemove.sqf", _flagBasePole, 1, false, true, "", ""];
};
if (s_player_removeFlag < 0) then {
s_player_removeFlag = player addaction [format[("" + ("%1Permanently Remove Flag (restrictions apply)") +""),_adminText],"dayz_code\actions\player_remove.sqf", _flagBasePole,1,false,true,"",""];
};
if (bbAIGuards == 1) then {
if (s_player_guardToggle < 0) then {
s_player_guardToggle = player addaction [format[("" + ("%1Toggle Guards to Kill all non-base owners (default on)") +""),_adminText],"dayz_code\actions\toggle_base_guards.sqf",_flagBasePole,1,false,true,"",""];
};
};
};
} else {
player removeAction s_player_removeFlag;
s_player_removeFlag = -1;
player removeAction s_player_addFlagAuth;
s_player_addFlagAuth = -1;
player removeAction s_player_removeFlagAuth;
s_player_removeFlagAuth = -1;
player removeAction s_player_guardToggle;
s_player_guardToggle = -1;
};
//####----####----####---- Base Building 1.3 END ----####----####----####

_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 and !dayz_hasLight and !_isPZombie) then {
if (s_player_grabflare < 0) then {
_text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");
s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""];
s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true, "", ""];
};
} else {
player removeAction s_player_grabflare;
player removeAction s_player_removeflare;
s_player_grabflare = -1;
s_player_removeflare = -1;
};
//====================MV22+SUV Animation====================
if (_inVehicle and (_vehicle isKindOf "MV22") and !(isEngineOn _vehicle)) then {
if (mv22_fold < 0) then {
themv22 = _vehicle;
mv22_fold = themv22 addAction ["Fold","Scripts\animate\fold.sqf","",5,false,true];
mv22_unfold = themv22 addAction ["UnFold","Scripts\animate\unfold.sqf","",5,false,true];
};
} else {
themv22 removeAction mv22_fold;
mv22_fold = -1;
themv22 removeAction mv22_unfold;
mv22_unfold = -1;
};

if (_inVehicle and (_vehicle isKindOf "ArmoredSUV_Base_PMC")) then {
if (suv_close < 0) then {
thesuv = _vehicle;
suv_close = thesuv addAction ["Close Hatch","Scripts\animate\close.sqf","",5,false,true];
suv_open = thesuv addAction ["Open Hatch","Scripts\animate\open.sqf","",5,false,true];
};
} else {
thesuv removeAction suv_close;
suv_close = -1;
thesuv removeAction suv_open;
suv_open = -1;
};
//====================MV22+SUV Animation====================
if (DZE_HeliLift) then {
_hasAttached = _vehicle getVariable["hasAttached",false];
if(_inVehicle and (_vehicle isKindOf "Air") and ((getPos _vehicle select 2) < 30) and (speed _vehicle < 5) and (typeName _hasAttached == "OBJECT")) then {
if (s_player_heli_detach < 0) then {
dayz_myLiftVehicle = _vehicle;
s_player_heli_detach = dayz_myLiftVehicle addAction ["Detach Vehicle","\z\addons\dayz_code\actions\player_heliDetach.sqf",[dayz_myLiftVehicle,_hasAttached],2,false,true,"",""];
};
} else {
dayz_myLiftVehicle removeAction s_player_heli_detach;
s_player_heli_detach = -1;
};
};
// ---------------------------------------Krixes Self Bloodbag Start------------------------------------
_mags = magazines player;

// Krixes Self Bloodbag
if ("ItemBloodbag" in _mags) then {
hasBagItem = true;
} else { hasBagItem = false;};
if((speed player <= 1) && hasBagItem && _canDo) then {
if (s_player_selfBloodbag < 0) then {
s_player_selfBloodbag = player addaction[("" + ("Self Bloodbag") +""),"Scripts\player_selfbloodbag.sqf","",5,false,true,"", ""];
};
} else {
player removeAction s_player_selfBloodbag;
s_player_selfBloodbag = -1;
};
// ---------------------------------------Krixes Self Bloodbag End------------------------------------
if(DZE_HaloJump) then {
if(_inVehicle and (_vehicle isKindOf "Air") and ((getPos _vehicle select 2) > 400)) then {
if (s_halo_action < 0) then {
DZE_myHaloVehicle = _vehicle;
s_halo_action = DZE_myHaloVehicle addAction [localize "STR_EPOCH_ACTIONS_HALO","\z\addons\dayz_code\actions\halo_jump.sqf",[],2,false,true,"",""];
};
} else {
DZE_myHaloVehicle removeAction s_halo_action;
s_halo_action = -1;
};
};

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

if(_isPZombie) then {
if (s_player_callzombies < 0) then {
s_player_callzombies = player addAction [localize "STR_EPOCH_ACTIONS_RAISEHORDE", "\z\addons\dayz_code\actions\call_zombies.sqf",player, 5, true, false, "",""];
};
if (DZE_PZATTACK) then {
call pz_attack;
DZE_PZATTACK = false;
};
if (s_player_pzombiesvision < 0) then {
s_player_pzombiesvision = player addAction [localize "STR_EPOCH_ACTIONS_NIGHTVIS", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"];
};
if (!isNull cursorTarget and (player distance cursorTarget < 3)) then { //Has some kind of target
_isAnimal = cursorTarget isKindOf "Animal";
_isZombie = cursorTarget isKindOf "zZombie_base";
_isHarvested = cursorTarget getVariable["meatHarvested",false];
_isMan = cursorTarget isKindOf "Man";
// Pzombie Gut human corpse or animal
if (!alive cursorTarget and (_isAnimal or _isMan) and !_isZombie and !_isHarvested) then {
if (s_player_pzombiesfeed < 0) then {
s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",cursorTarget, 3, true, false, "",""];
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
};

// Increase distance only if AIR OR SHIP
_allowedDistance = 4;
_isAir = cursorTarget isKindOf "Air";
_isShip = cursorTarget isKindOf "Ship";
if(_isAir or _isShip) then {
_allowedDistance = 8;
};

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

// set cursortarget to variable
_cursorTarget = cursorTarget;

// get typeof cursortarget once
_typeOfCursorTarget = typeOf _cursorTarget;

// hintsilent _typeOfCursorTarget;

_isVehicle = _cursorTarget isKindOf "AllVehicles";
_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"];
_isnewstorage = _typeOfCursorTarget in DZE_isNewStorage;

// get items and magazines only once
_magazinesPlayer = magazines player;

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

_itemsPlayer = items player;

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

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

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

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

_isTent = _cursorTarget isKindOf "TentStorage";

_isAlive = alive _cursorTarget;

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

_rawmeat = meatraw;
_hasRawMeat = false;
{
if (_x in _magazinesPlayer) then {
_hasRawMeat = true;
};
} forEach _rawmeat;

_isFuel = false;
if (_hasFuelE or _hasFuelBarrelE) then {
{
if(_cursorTarget isKindOf _x) exitWith {_isFuel = true;};
} forEach dayz_fuelsources;
};

// diag_log ("OWNERID = " + _ownerID + " CHARID = " + dayz_characterID + " " + str(_ownerID == dayz_characterID));

// logic vars
_player_flipveh = false;
_player_deleteBuild = false;
_player_lockUnlock_crtl = false;

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {
if (s_player_maintain_area < 0) then {
s_player_maintain_area = player addAction [format["%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 or _isWreck or _isRemovable or _isWreckBuilding) then {
if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
_player_deleteBuild = true;
};
};

//Allow owners to delete modulars
if(_isModular and (dayz_characterID == _ownerID)) then {
if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
if(_cursorTarget in DZE_DoorsLocked) exitwith {cutText ["You must remove the lock to delete this item!", "PLAIN DOWN"]; };
_player_deleteBuild = true;
};
};

// CURSOR TARGET VEHICLE
if(_isVehicle) then {

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


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

};

};

if(_player_deleteBuild) then {
if (s_player_deleteBuild < 0) then {
s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
};


if (DZE_HeliLift) then {
_liftHeli = objNull;
_found = false;

_allowTow = false;
if ((count (crew _cursorTarget)) == 0) then {
{
if(!_allowTow) then {
_allowTow = _cursorTarget isKindOf _x;
};
} forEach DZE_HeliAllowToTow;
};

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

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

};

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

_attached = _cursorTarget getVariable["attached",false];
if(_found and _allowTow and _canDo and !locked _cursorTarget and !_isPZombie and (typeName _attached != "OBJECT")) then {

if (s_player_heli_lift < 0) then {
s_player_heli_lift = player addAction ["Attach to Heli", "\z\addons\dayz_code\actions\player_heliLift.sqf",[_liftHeli,_cursorTarget], -10, false, true, "",""];
};
} else {



player removeAction s_player_heli_lift;
s_player_heli_lift = -1;
};

};
//####----####----####---- Base Building 1.3 Start ----####----####----####
_lever = cursorTarget;
_codePanels = ["Infostand_2_EP1", "Fence_corrugated_plate"];
_baseBuildAdmin = ((getPlayerUID player) in BBSuperAdminAccess);
_baseBuildLAdmin = ((getPlayerUID player) in BBLowerAdminAccess);
_authorizedUID = cursorTarget getVariable ["AuthorizedUID", []];
_authorizedGateCodes = if ((_ownerID != "0") && (count _authorizedUID > 0)) then {((getPlayerUID player) in (_authorizedUID select 1));}; //Check it's not a map object/unbuilt object to avoid RPT spam
_adminText = if (!_authorizedGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered

//Let players check the UID of other players when near their flags
if (_isMan && (_flagBasePole distance player < 10)) then {
_ownerFlag = _flagBasePole getVariable ["characterID", "0"]; //Checks owner IDs of flags, simply to avoid RPT spam with map objects
_flagAuthUID = _flagBasePole getVariable ["AuthorizedUID", []]; //Gets master AuthUID from
_flagAuthGateCodes = if (_ownerFlag != "0") then {((getPlayerUID player) in (_flagAuthUID select 1));}; //Checks if player has access to flag
_adminText = if (!_flagAuthGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered
if (_flagAuthGateCodes || _baseBuildAdmin) then {
if (s_player_getTargetUID < 0) then {
s_player_getTargetUID = player addAction [format["%1Get UID of Targeted Player",_adminText], "dayz_code\actions\get_player_UID.sqf", cursorTarget, 4, false, true, "", ""];
};
};
} else {
player removeAction s_player_getTargetUID;
s_player_getTargetUID = -1;
};

// Operate Gates AND Add Authorization to Gate
if (((typeOf(cursortarget) in _codePanels) && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) || ((typeOf(cursortarget) in allbuildables_class) && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild)) then {
_gates = nearestObjects [_lever, ["Concrete_Wall_EP1"], 15];
if (s_player_gateActions < 0) then {
if (typeOf(cursortarget) == "Fence_corrugated_plate") then {
s_player_gateActions = player addAction [format[("" + ("%1Operate Single Metal Gate") +""),_adminText], "dayz_code\external\keypad\fnc_keyPad\operate_gates.sqf", _lever, 6, true, true, "", ""];
} else {
if (typeOf(cursortarget) == "Infostand_2_EP1") then {
if (count _gates > 0) then {
s_player_gateActions = player addAction [format[("" + ("%1Operate Nearest Concrete Gates Within 15 meters") +""),_adminText], "dayz_code\external\keypad\fnc_keyPad\operate_gates.sqf", _lever, 6, true, true, "", ""];
} else {s_player_gateActions = player addAction [format[("" + ("%1No gates around to operate") +""),_adminText], "", _lever, 6, false, true, "", ""];};
};
};
};
if (s_player_giveBaseOwnerAccess < 0) then {
s_player_giveBaseOwnerAccess = player addAction [format["%1Give all base owners (from flagpole) access to object/gate",_adminText], "dayz_code\external\keypad\fnc_keyPad\functions\give_gateAccess.sqf", _lever, 1, false, true, "", ""];
};
if (s_player_addGateAuthorization < 0) then {
s_player_addGateAuthorization = player addAction [format["%1Add Player UIDs to Grant Gate/Object Access",_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeAdd.sqf", _lever, 1, false, true, "", ""];
};
if (s_player_removeGateAuthorization < 0) then {
s_player_removeGateAuthorization = player addaction [format[("" + ("%1Remove Player UIDs from Gate/Object Access") +""),_adminText],"dayz_code\external\keypad\fnc_keyPad\enterCodeRemove.sqf", _lever, 1, false, true, "", ""];
};
} else {
player removeAction s_player_giveBaseOwnerAccess;
s_player_giveBaseOwnerAccess = -1;
player removeAction s_player_gateActions;
s_player_gateActions = -1;
player removeAction s_player_addGateAuthorization;
s_player_addGateAuthorization = -1;
player removeAction s_player_removeGateAuthorization;
s_player_removeGateAuthorization = -1;
};
// Operate ROOFS
if ((typeOf(cursortarget) in _codePanels) && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) then {
_gates = nearestObjects [_lever, ["Land_Ind_Shed_01_main","Land_Ind_Shed_01_end","Land_Ind_SawMillPen"], BBFlagRadius];
if (s_player_roofToggle < 0) then {
if (typeOf(cursortarget) == "Infostand_2_EP1") then {
if (count _gates > 0) then {
s_player_roofToggle = player addAction [format[("" + ("%1Operate Roof Covers") +""),_adminText], "dayz_code\external\keypad\fnc_keyPad\operate_roofs.sqf", _lever, 6, false, true, "", ""];
} else {s_player_roofToggle = player addAction [format[("" + ("%1No roof covers around to operate") +""),_adminText], "", _lever, 6, false, true, "", ""];};
};
};
} else {
player removeAction s_player_roofToggle;
s_player_roofToggle = -1;
};

// Remove Object
if((typeOf(cursortarget) in allremovables)&& (_ownerID != "0") && (_hasToolbox || _baseBuildAdmin || _baseBuildLAdmin) && _canDo && !remProc && !procBuild && !removeObject) then {
if (s_player_deleteBuild < 0) then {
s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "dayz_code\actions\player_remove.sqf",cursorTarget, 1, false, true, "", ""];
};
} else {
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
};
// Disarm Booby Trap Action
if((cursortarget iskindof "Grave" && cursortarget distance player < 2.5) && (_ownerID != "0") && (_hasToolbox || _baseBuildAdmin || _baseBuildLAdmin) && _canDo && !remProc && !procBuild) then {
if (s_player_disarmBomb < 0) then {
s_player_disarmBomb = player addaction [format[("" + ("%1Disarm Bomb") +""),_adminText],"dayz_code\actions\player_disarmBomb.sqf","",1,true,true,"", ""];
};
} else {
player removeAction s_player_disarmBomb;
s_player_disarmBomb = -1;
};

//Light Menu
if((typeOf(cursortarget) == "Infostand_2_EP1") && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) then {
_nearestFlags = nearestObjects [_lever, [bBTypeOfFlag], BBFlagRadius];
_baseFlag = _nearestFlags select 0;
_barrels = nearestObjects [_baseFlag, ["Land_Fire_Barrel"], BBFlagRadius];//Makes sure there are barrels in range of the flag
_towers = nearestObjects [_baseFlag, ["Land_Ind_IlluminantTower"], BBFlagRadius];//Makes sure there are towers in range of the flag
if (count _barrels > 0 || count _towers >0) then {
if (s_player_bbLightMenu < 0) then {
s_player_bbLightMenu = player addAction [format[("" + ("%1Light Options") +""),_adminText], "dayz_code\actions\lights\lightMenu.sqf", _lever, 5, false, false, "", ""];
};
} else {
if (s_player_bbLightMenu < 0) then {
s_player_bbLightMenu = player addAction [format[("" + ("%1No Barrel/Tower Lights in Range of Flag") +""),_adminText], "", _lever, 5, false, true, "", ""];
};
};
} else {
player removeAction s_player_bbLightMenu;
s_player_bbLightMenu = -1;
};

//Zombie Shield
if ((typeOf(cursorTarget) == BBTypeOfZShield) &&(_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) then {
if (s_player_giveBaseOwnerAccess > 0) then { //Temp fix to prevent players having more than the max allowed number of shield gens
player removeAction s_player_giveBaseOwnerAccess;
s_player_giveBaseOwnerAccess = -1;
};
if (BBEnableZShield == 1) then {
if (s_player_bbZombieShield_on < 0) then {
s_player_bbZombieShield_on = player addAction [format[("" + ("%1Zombie Shield On") +""),_adminText], "dayz_code\actions\shield\bbZombieShield.sqf", [_lever, true], 6, true, true, "", ""];
};
if (s_player_bbZombieShield_off < 0) then {
s_player_bbZombieShield_off = player addAction [format[("" + ("%1Zombie Shield Off") +""),_adminText], "dayz_code\actions\shield\bbZombieShield.sqf", [_lever, false], 6, false, true, "", ""];
};
} else {
if (s_player_bbZombieShield_on < 0) then {
s_player_bbZombieShield_on = player addAction [format[("" + ("%1Zombie Shields are disabled on this server") +""),_adminText], "", [], 6, false, true, "", ""];
};
player removeAction s_player_bbZombieShield_off;
s_player_bbZombieShield_off = -1;
};
} else {
player removeAction s_player_bbZombieShield_on;
s_player_bbZombieShield_on = -1;
player removeAction s_player_bbZombieShield_off;
s_player_bbZombieShield_off = -1;
};
//####----####----####---- Base Building 1.3 End ----####----####----####


// Allow Owner to lock and unlock vehicle
if(_player_lockUnlock_crtl) then {
if (s_player_lockUnlock_crtl < 0) then {
_hasKey = _ownerID in _temp_keys;
_oldOwner = (_ownerID == dayz_playerUID);
if(locked _cursorTarget) then {
if(_hasKey or _oldOwner) then {
_Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (parseNumber _ownerID))], 2, true, true, "", ""];
s_player_lockunlock set [count s_player_lockunlock,_Unlock];
s_player_lockUnlock_crtl = 1;
} else {
if(_hasHotwireKit) then {
_Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true, "", ""];
} else {
_Unlock = player addAction [format["%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 or _oldOwner) then {
_lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true, "", ""];
s_player_lockunlock set [count s_player_lockunlock,_lock];
s_player_lockUnlock_crtl = 1;
};
};
};

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

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



If(DZE_AllowCargoCheck) then {
if((_isVehicle or _isTent or _isnewstorage) and _isAlive and !_isMan and !locked _cursorTarget) then {
if (s_player_checkGear < 0) then {
s_player_checkGear = player addAction [localize "STR_EPOCH_PLAYER_CARGO", "\z\addons\dayz_code\actions\cargocheck.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_checkGear;
s_player_checkGear = -1;
};
};


//flip vehicle small vehicles by your self and all other vehicles with help nearby
if(_player_flipveh) then {
if (s_player_flipveh < 0) then {
s_player_flipveh = player addAction [format[localize "str_actions_flipveh",_text], "\z\addons\dayz_code\actions\player_flipvehicle.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_flipveh;
s_player_flipveh = -1;
};

//Allow player to fill jerrycan
if((_hasFuelE or _hasFuelBarrelE) and _isFuel) then {
if (s_player_fillfuel < 0) then {
s_player_fillfuel = player addAction [localize "str_actions_self_10", "\z\addons\dayz_code\actions\jerry_fill.sqf",[], 1, false, true, "", ""];
};
} else {
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
};

// logic vars for addactions
_player_butcher = false;
_player_studybody = false;
_player_SurrenderedGear = false;

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

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

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

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


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

// Study Body
if (_player_studybody) then {
if (s_player_studybody < 0) then {
s_player_studybody = player addAction [localize "str_action_studybody", "\z\addons\dayz_code\actions\study_body.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_studybody;
s_player_studybody = -1;
};
//====================Nuke Bombe====================
if (cursorTarget == LAPTOP) then {
_lap = cursorTarget;
if (s_player_nuke < 0) then {
s_player_nuke = player addAction [("" + ("Set Off Nuke") +""),"Nuke\nuke_On.sqf",_lap, 5, false, true, "",""];
};
} else {
player removeAction s_player_nuke;
s_player_nuke = -1;
};
//====================Nuke Bombe====================
// logic vars
_player_cook = false;
_player_boil = false;

// CURSOR TARGET IS FIRE
if (inflamed _cursorTarget) then {

//Fireplace Actions check
if (_hasRawMeat) then {
_player_cook = true;
};

// Boil water
if (_hasbottleitem and _hastinitem) then {
_player_boil = true;
};
};

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

//Fireplace Actions check
if (_player_cook) then {
if (s_player_cook < 0) then {
s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true, "", ""];
};
} else {
player removeAction s_player_cook;
s_player_cook = -1;
};

// Boil water
if (_player_boil) then {
if (s_player_boil < 0) then {
s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true, "", ""];
};
} else {
player removeAction s_player_boil;
s_player_boil = -1;
};

if(_cursorTarget == dayz_hasFire) then {
if ((s_player_fireout < 0) and !(inflamed _cursorTarget) and (player distance _cursorTarget < 3)) then {
s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_fireout;
s_player_fireout = -1;
};

//Packing my tent
if(_isTent and (player distance _cursorTarget < 3)) then {
if (_ownerID == dayz_characterID) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
if(("ItemJerrycan" in _magazinesPlayer) and ("ItemMatchbox_DZE" in weapons player)) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction [localize "STR_EPOCH_ACTIONS_DESTROYTENT", "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
};
};
} else {
player removeAction s_player_packtent;
s_player_packtent = -1;
};

//Allow owner to unlock vault
if((_typeOfCursorTarget in DZE_LockableStorage) and _ownerID != "0" and (player distance _cursorTarget < 3)) then {
if (s_player_unlockvault < 0) then {
if(_typeOfCursorTarget in DZE_LockedStorage) then {
if(_ownerID == dayz_combination or _ownerID == dayz_playerUID) then {
_combi = player addAction [format["Open %1",_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["Unlock %1",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
};
s_player_unlockvault = 1;
} else {
if(_ownerID != dayz_combination and _ownerID != dayz_playerUID) then {
_combi = player addAction ["Re-Enter Combination", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
s_player_unlockvault = 1;
};
};
};
} else {
{player removeAction _x} forEach s_player_combi;s_player_combi = [];
s_player_unlockvault = -1;
};

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

if (s_player_lockvault < 0) then {
if(_ownerID == dayz_combination or _ownerID == dayz_playerUID) then {
s_player_lockvault = player addAction [format["Lock %1",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true, "",""];
};
};
if (s_player_packvault < 0 and (_ownerID == dayz_combination or _ownerID == dayz_playerUID)) then {
s_player_packvault = player addAction [format["Pack %1",_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 ["Recent Murders", "\z\addons\dayz_code\actions\list_playerDeaths.sqf",[], 7, false, true, "",""];
};
} else {
player removeAction s_player_information;
s_player_information = -1;
};

//Fuel Pump
if(_typeOfCursorTarget in dayz_fuelpumparray) then {
if (s_player_fuelauto < 0) then {

// check if Generator_DZ is running within 30 meters
_findNearestGens = nearestObjects [player, ["Generator_DZ"], 30];
_findNearestGen = [];
{
if (alive _x and (_x getVariable ["GeneratorRunning", false])) then {
_findNearestGen set [(count _findNearestGen),_x];
};
} foreach _findNearestGens;
_IsNearRunningGen = count (_findNearestGen);

// show that pump needs power if no generator nearby.
if(_IsNearRunningGen > 0) then {
s_player_fuelauto = player addAction ["Fill Vehicle", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true, "",""];
} else {
s_player_fuelauto = player addAction ["Needs Power", "",[], 0, false, true, "",""];
};
};
} else {
player removeAction s_player_fuelauto;
s_player_fuelauto = -1;
};

//Fuel Pump on truck
if(_typeOfCursorTarget in DZE_fueltruckarray and alive _cursorTarget) then {
if (s_player_fuelauto2 < 0) then {
// show that fuel truck pump needs power.
if(isEngineOn _cursorTarget) then {
s_player_fuelauto2 = player addAction ["Fill Vehicle", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_fuelauto2 = player addAction ["Needs Power", "",[], 0, false, true, "",""];
};
};
} else {
player removeAction s_player_fuelauto2;
s_player_fuelauto2 = -1;
};

// inplace upgrade tool
if ((_cursorTarget isKindOf "ModularItems") or (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") or (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
if ((s_player_lastTarget select 0) != _cursorTarget) then {
if (s_player_upgrade_build > 0) then {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
};
if (s_player_upgrade_build < 0) then {
// s_player_lastTarget = _cursorTarget;
s_player_lastTarget set [0,_cursorTarget];
s_player_upgrade_build = player addAction [format["Upgrade %1",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
};
} else {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};

// downgrade system
if((_isDestructable or _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" or _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") and (DZE_Lock_Door == _ownerID)) then {
if ((s_player_lastTarget select 1) != _cursorTarget) then {
if (s_player_downgrade_build > 0) then {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
};

if (s_player_downgrade_build < 0) then {
s_player_lastTarget set [1,_cursorTarget];
s_player_downgrade_build = player addAction [format["Remove Lock from %1",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
};
} else {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};

// inplace maintenance tool
if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase" or _typeOfCursorTarget in DZE_ExtraMaintain) and (damage _cursorTarget >= 0.1)) 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["Maintain %1",_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 ["Stop Generator", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
// check if not filled and player has jerry.
if((_cursorTarget getVariable ["GeneratorFilled", false])) then {
s_player_fillgen = player addAction ["Start Generator", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
if("ItemJerrycan" in _magazinesPlayer) then {
s_player_fillgen = player addAction ["Fill and Start Generator", "\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 ["Attach Straps", "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_towing = player addAction ["Detach Straps", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true, "",""];
};
};
} else {
player removeAction s_player_towing;
s_player_towing = -1;
};
*/


//Sleep
if(_isTent and _ownerID == dayz_characterID) then {
if ((s_player_sleep < 0) and (player distance _cursorTarget < 3)) then {
s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_sleep;
s_player_sleep = -1;
};
//------------Take clothes------------
_clothesTaken = cursorTarget getVariable["clothesTaken",false];
if (_isMan and !_isAlive and !_isAnimal and !_clothesTaken) then {
if (s_player_clothes < 0) then {
s_player_clothes = player addAction [("")+("Take Clothes")+(""), "Scripts\takeclothes.sqf",cursorTarget, -10, false, true];
};
} else {
player removeAction s_player_clothes;
s_player_clothes = -1;
};
//------------Take clothes------------

//Repairing Vehicles
if ((dayz_myCursorTarget != _cursorTarget) and _isVehicle and !_isMan and _hasToolbox and (damage _cursorTarget < 1) and !_isDisallowRepair) then {
if (s_player_repair_crtl < 0) then {
dayz_myCursorTarget = _cursorTarget;
_menu = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_REPAIRV", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
_menu1 = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_SALVAGEV", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
s_player_repairActions set [count s_player_repairActions,_menu];
s_player_repairActions set [count s_player_repairActions,_menu1];
s_player_repair_crtl = 1;
} else {
{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
};
};

// All Traders
if (_isMan and !_isPZombie and _traderType in serverTraders) then {

if (s_player_parts_crtl < 0) then {

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

// diag_log ("TRADER = " + str(_traderMenu));

_low_high = "low";
_humanity_logic = false;
if((_traderMenu select 2) == "friendly") then {
_humanity_logic = (_humanity < -5000);
};
if((_traderMenu select 2) == "hostile") then {
_low_high = "high";
_humanity_logic = (_humanity > -5000);
};
if((_traderMenu select 2) == "hero") then {
_humanity_logic = (_humanity < 5000);
};
if(_humanity_logic) then {
_cancel = player addAction [format["Your humanity is too %1 this trader refuses to talk to you.",_low_high], "\z\addons\dayz_code\actions\trade_cancel.sqf",["na"], 0, true, false, "",""];
s_player_parts set [count s_player_parts,_cancel];
} else {

// Static Menu
{
//diag_log format["DEBUG TRADER: %1", _x];
_buy = player addAction [format["Trade %1 %2 for %3 %4",(_x select 3),(_x select 5),(_x select 2),(_x select 6)], "\z\addons\dayz_code\actions\trade_items_wo_db.sqf",[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4),(_x select 5),(_x select 6)], (_x select 7), true, true, "",""];
s_player_parts set [count s_player_parts,_buy];

} forEach (_traderMenu select 1);
// Database menu
_buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 99, true, false, "",""];
s_player_parts set [count s_player_parts,_buy];

// Add static metals trader options under sub menu
_metals_trader = player addAction [localize "STR_EPOCH_PLAYER_301", "\z\addons\dayz_code\actions\trade_metals.sqf",["na"], 0, true, false, "",""];
s_player_parts set [count s_player_parts,_metals_trader];

};
s_player_parts_crtl = 1;

};
} else {
{player removeAction _x} forEach s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
};


if(dayz_tameDogs) then {

//Dog
if (_isDog and _isAlive and (_hasRawMeat) and _ownerID == "0" and player getVariable ["dogID", 0] == 0) then {
if (s_player_tamedog < 0) then {
s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];
};
} else {
player removeAction s_player_tamedog;
s_player_tamedog = -1;
};
if (_isDog and _ownerID == dayz_characterID and _isAlive) then {
_dogHandle = player getVariable ["dogID", 0];
if (s_player_feeddog < 0 and _hasRawMeat) then {
s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true,"",""];
};
if (s_player_waterdog < 0 and "ItemWaterbottle" in _magazinesPlayer) then {
s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true,"",""];
};
if (s_player_staydog < 0) then {
_lieDown = _dogHandle getFSMVariable "_actionLieDown";
if (_lieDown) then { _text = "str_actions_liedog"; } else { _text = "str_actions_sitdog"; };
s_player_staydog = player addAction [localize _text,"\z\addons\dayz_code\actions\dog\stay.sqf", _dogHandle, 5, false, true,"",""];
};
if (s_player_trackdog < 0) then {
s_player_trackdog = player addAction [localize "str_actions_trackdog","\z\addons\dayz_code\actions\dog\track.sqf", _dogHandle, 4, false, true,"",""];
};
if (s_player_barkdog < 0) then {
s_player_barkdog = player addAction [localize "str_actions_barkdog","\z\addons\dayz_code\actions\dog\speak.sqf", _cursorTarget, 3, false, true,"",""];
};
if (s_player_warndog < 0) then {
_warn = _dogHandle getFSMVariable "_watchDog";
if (_warn) then { _text = (localize "str_epoch_player_247"); _warn = false; } else { _text = (localize "str_epoch_player_248"); _warn = true; };
s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true,"",""];
};
if (s_player_followdog < 0) then {
s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true,"",""];
};
} else {
player removeAction s_player_feeddog;
s_player_feeddog = -1;
player removeAction s_player_waterdog;
s_player_waterdog = -1;
player removeAction s_player_staydog;
s_player_staydog = -1;
player removeAction s_player_trackdog;
s_player_trackdog = -1;
player removeAction s_player_barkdog;
s_player_barkdog = -1;
player removeAction s_player_warndog;
s_player_warndog = -1;
player removeAction s_player_followdog;
s_player_followdog = -1;
};
};

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

{player removeAction _x} forEach s_player_combi;s_player_combi = [];

dayz_myCursorTarget = objNull;
s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];

{player removeAction _x} forEach s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;

{player removeAction _x} forEach s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;

player removeAction s_player_checkGear;
s_player_checkGear = -1;

player removeAction s_player_SurrenderedGear;
s_player_SurrenderedGear = -1;
//####----####----####---- Base Building 1.3 Start ----####----####----####
player removeAction s_player_getTargetUID;
s_player_getTargetUID = -1;
player removeAction s_player_giveBaseOwnerAccess;
s_player_giveBaseOwnerAccess = -1;
player removeAction s_player_gateActions;
s_player_gateActions = -1;
player removeAction s_player_roofToggle;
s_player_roofToggle = -1;
player removeAction s_player_addGateAuthorization;
s_player_addGateAuthorization = -1;
player removeAction s_player_removeGateAuthorization;
s_player_removeGateAuthorization = -1;
player removeAction s_player_disarmBomb;
s_player_disarmBomb = -1;
player removeAction s_player_bbZombieShield_on;
s_player_bbZombieShield_on = -1;
player removeAction s_player_bbZombieShield_off;
s_player_bbZombieShield_off = -1;
player removeAction s_player_inflameBarrels;
s_player_inflameBarrels = -1;
player removeAction s_player_deflameBarrels;
s_player_deflameBarrels = -1;
player removeAction s_player_towerLightsOn;
s_player_towerLightsOn = -1;
player removeAction s_player_towerLightsOff;
s_player_towerLightsOff = -1;
player removeAction s_player_bbLightMenu;
s_player_bbLightMenu = -1;
//####----####----####---- Base Building 1.3 End ----####----####----####
//Others
player removeAction s_player_forceSave;
s_player_forceSave = -1;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
player removeAction s_player_sleep;
s_player_sleep = -1;
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
player removeAction s_player_butcher;
s_player_butcher = -1;
player removeAction s_player_cook;
s_player_cook = -1;
player removeAction s_player_boil;
s_player_boil = -1;
player removeAction s_player_fireout;
s_player_fireout = -1;
player removeAction s_player_packtent;
s_player_packtent = -1;
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
player removeAction s_player_studybody;
s_player_studybody = -1;
//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;
//------------Take Clothes------------
player removeAction s_player_clothes;
s_player_clothes = -1;
//------------Take Clothes------------
};



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

Link to comment
Share on other sites

Hi. Thanks for the cool script :D  But I did not get to run the script with siren and explosion :( . Running with the laptop all is well. Messages with "%" are all well. Then silence for about 3-4 minutes and then run a script with radiation.

 

Here are my files. Maybe I missed something or made ​​a mistake?

 

init.sqf

 

startLoadingScreen ["","RscDisplayLoadCustom"];
cutText ["","BLACK OUT"];
enableSaving [false, false];
 
//REALLY IMPORTANT VALUES
dayZ_instance = 24; //The instance
dayzHiveRequest = [];
initialized = false;
dayz_previousID = 0;
 
//disable greeting menu 
player setVariable ["BIS_noCoreConversations", true];
//disable radio messages to be heard and shown in the left lower corner of the screen
enableRadio false;
// May prevent "how are you civillian?" messages from NPC
enableSentences false;
 
// DayZ Epochconfig
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
// 
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100
dayz_MapArea = 18000; // Default = 10000
 
dayz_minpos = -1000; 
dayz_maxpos = 26000;
 
dayz_paraSpawn = false; // Старт на парашюте
 
dayz_sellDistance_vehicle = 20;
dayz_sellDistance_boat = 30;
dayz_sellDistance_air = 40;
 
dayz_maxAnimals = 8; // Default: 8
dayz_tameDogs = true;
DynamicVehicleDamageLow = 10; // Default: 0
DynamicVehicleDamageHigh = 90; // Default: 100
 
DZE_BuildOnRoads = true; // Default: False
 
EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]];
dayz_fullMoonNights = true;
 
//Nuke Settings
//Nuke Settings 0 = off for first 4 options.
Blood_LossPS = 55; // set blood loss per sec in radiation zone here for non antiRadSkins. 
destruction_zone = 150; //Set the destruction zone size here. Any vehicles, buildings and some (if not all) epoch buildables in this zone will be destroyed 
radiation_zone = 500; //Set the radiation zone size here 1500 = 1500m.
death_zone = 300; //Set the size of the zone people will die in as the nuke goes off. (200 = 200m)
antiRadSkins = ["BanditW1_DZ","BanditW2_DZ","Bandit2_DZ","GUE_Soldier_MG_DZ","INS_Lopotev_DZ"]; //Set skins that will block blood loss in the radiation zone. 
laptop_Pos = [8094.72, 15617.8, 0]; //set laptop position Here x y z.
laptop_Dir = -588.9624; //set the direction the laptop is facing here.
laptop_Type = "Laptop_EP1"; //can edit to be anything if you like.
//
execVM "radiationZone\blowoutZone.sqf" // Radiation
 
//Load in compiled functions
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; //Initilize the Variables (IMPORTANT: Must happen very early)
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf"; //Initilize the publicVariable event handlers
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf"; //Functions used by CLIENT for medical
progressLoadingScreen 0.4;
// call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; //Compile regular functions
call compile preprocessFileLineNumbers "custom\compiles.sqf"; // ДебагМонитор
progressLoadingScreen 0.5;
fnc_usec_selfActions = compile preprocessFileLineNumbers "scripts\fn_selfActions.sqf";
call compile preprocessFileLineNumbers "server_traders.sqf"; //Compile trader configs
progressLoadingScreen 1.0;
 
"filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";
 
playerstats = compile preprocessFileLineNumbers "custom\playerstats.sqf"; // ДебагМонитор
 
if (isServer) then {
 
//Compile vehicle configs
call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_24.Napf\dynamic_vehicle.sqf";
// Add trader citys
_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_24.Napf\mission.sqf";
 
_serverMonitor = [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
 
execVM "Nuke\server_Nuke.sqf"; //Nuke
};
 
if (!isDedicated) then {
 
//Conduct map operations
0 fadeSound 0;
waitUntil {!isNil "dayz_loadScreenMsg"};
dayz_loadScreenMsg = (localize "STR_AUTHENTICATING");
 
//Custom Loadouts
[] ExecVM "Scripts\loadout.sqf";
 
//Run the player monitor
_id = player addEventHandler ["Respawn", {_id = [] spawn player_death;}];
_playerMonitor = [] execVM "\z\addons\dayz_code\system\player_monitor.sqf";
 
//anti Hack
[] execVM "admintools\AdminList.sqf";
if ( !((getPlayerUID player) in AdminList) && !((getPlayerUID player) in ModList) && !((getPlayerUID player) in tempList)) then
{
    [] execVM "\z\addons\dayz_code\system\antihack.sqf";
};
 
//Lights
//[false,12] execVM "\z\addons\dayz_code\compile\local_lights_init.sqf";
execVM "Nuke\Effects\effects.sqf"; //Nuke
};
 
#include "\z\addons\dayz_code\system\BIS_Effects\init.sqf"
#include "\z\addons\dayz_code\system\REsec.sqf"
execVM "\z\addons\dayz_code\external\DynamicWeatherEffects.sqf"; //Start Dynamic Weather
execVM "R3F_ARTY_AND_LOG\init.sqf"; // Буксировка и подъем
[] execVM "admintools\Activate.sqf"; // Epoch Admin Tools
[] execVM "service_point\service_point.sqf"; // АЗС
[] execVM "Scripts\weedfarms.sqf"; // Фермы

 

description.ext

 

respawn = "BASE";
respawndelay = 5;
onLoadMission="DayZ_Epoch Napf";
OnLoadIntro = "Welcome to Napf";
OnLoadIntroTime = False;
OnLoadMissionTime = False;
disabledAI = true;
disableChannels[]={0,2,6};
enableItemsDropping=0;
 
briefing = 0;
debriefing = 0;
 
onPauseScript = "";
loadScreen = "custom\logo.paa";
 
class Header
{
 gameType = COOP;            //DM, Team, Coop, ...
 minPlayers = 1;             //min # of players the mission supports
 maxPlayers = 100;            //Max # of players the mission supports
};
 
aiKills = 1;
diagRadio = 1;
diagHit = 1;
 
class RscText
{
type = 0;
idc = -1;
x = 0;
y = 0;
h = 0.037;
w = 0.3;
style = 0x100; 
font = Zeppelin32;
SizeEx = 0.03921;
colorText[] = {1,1,1,1};
colorBackground[] = {0, 0, 0, 0};
linespacing = 1;
};
class RscPicture
{
access=0;
type=0;
idc=-1;
style=48;
colorBackground[]={0,0,0,0};
colorText[]={1,1,1,1};
font="TahomaB";
sizeEx=0;
lineSpacing=0;
text="";
};
 
class CfgSounds
{
    sounds[] = {siren,nam,eve,puk};
  
class nam
  {
    name = "Siren1";
    sound[] = {Nuke\sound\SirenLoopMono.ogg, db+20, 1.0};
    titles[] = {""};
  };
class eve
  {
    name = "Siren2";
    sound[] = {Nuke\sound\Sirens.ogg, db+20, 1.0};
    titles[] = {""};
  };
class puk
  {
    name = "Siren3";
    sound[] = {Nuke\sound\Sirens2.ogg, db+20, 1.0};
    titles[] = {""};
  };
 
class siren
    {
name = "siren";
sound[] = {scripts\sirens\siren.ogg,0.5,1};
titles[] = {};
    };  
};
 
class RscLoadingText : RscText
{
style = 2;
x = 0.323532;
y = 0.666672;
w = 0.352944;
h = 0.039216;
sizeEx = 0.03921;
colorText[] = {0.543,0.5742,0.4102,1.0};
};
class RscProgress
{
x = 0.344;
y = 0.619;
w = 0.313726;
h = 0.0261438;
texture = "\ca\ui\data\loadscreen_progressbar_ca.paa";
colorFrame[] = {0,0,0,0};
colorBar[] = {1,1,1,1};
};
class RscProgressNotFreeze
{
idc = -1;
type = 45;
style = 0;
x = 0.022059;
y = 0.911772;
w = 0.029412;
h = 0.039216;
texture = "#(argb,8,8,3)color(0,0,0,0)";
};
//
// the loading screen itself
//
class DayZ_loadingScreen
idd = -1;
duration = 10e10;
fadein = 0;
fadeout = 0;
name = "loading screen";
class controlsBackground
{
class blackBG : RscText
{
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
text = "";
colorText[] = {0,0,0,0};
colorBackground[] = {0,0,0,1};
};
/*
class nicePic : RscPicture
{
style = 48 + 0x800; // ST_PICTURE + ST_KEEP_ASPECT_RATIO
x = safezoneX + safezoneW/2 - 0.25;
y = safezoneY + safezoneH/2 - 0.2;
w = 0.5;
h = 0.4;
text = "img\nicePic.paa";
};
*/
};
class controls
{
class Title1 : RscLoadingText
{
text = "$STR_LOADING"; // "Loading" text in the middle of the screen
};
class CA_Progress : RscProgress // progress bar, has to have idc 104
{
idc = 104;
type = 8; // CT_PROGRESS
style = 0; // ST_SINGLE
texture = "\ca\ui\data\loadscreen_progressbar_ca.paa";
};
class CA_Progress2 : RscProgressNotFreeze // progress bar that will go reverse
{
idc = 103;
};
class Name2: RscText // the text on the top-left
{
idc = 101;
x = 0.05;
y = 0.029412;
w = 0.9;
h = 0.04902;
text = "";
sizeEx = 0.05;
colorText[] = {0.543,0.5742,0.4102,1.0};
};
};
};
 
 
#include "admintools\dialog.hpp"
 
#include "custom\extra_rc.hpp"
 

 

fn_selfAction.sqf

scriptName "Functions\misc\fn_selfActions.sqf";

/***********************************************************
ADD ACTIONS FOR SELF
- Function
- [] call fnc_usec_selfActions;
************************************************************/
private ["_isWreckBuilding","_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors","_player_deleteBuild","_player_flipveh","_player_lockUnlock_crtl","_player_butcher","_player_studybody","_player_cook","_player_boil","_hasFuelBarrelE","_hasHotwireKit","_player_SurrenderedGear","_isSurrendered","_isModular","_ownerKeyName","_temp_keys_names"];
 
if (DZE_ActionInProgress) exitWith {}; // Do not allow if any script is running.
 
_vehicle = vehicle player;
_isPZombie = player isKindOf "PZombie_VB";
_inVehicle = (_vehicle != player);
 
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
 
_mags = magazines player;
    
    // Krixes Self Bloodbag
    if ("ItemBloodbag" in _mags) then {
        hasBagItem = true;
    } else { hasBagItem = false;};
    if((speed player <= 1) && hasBagItem && _canDo) then {
        if (s_player_selfBloodbag < 0) then {
            s_player_selfBloodbag = player addaction[("<t color="#c70000"">" + ("Залить себе кровь") +"</t>"),"Scripts\selfbloodbag\player_selfbloodbag.sqf","",5,false,true,"", "];
        };
    } else {
        player removeAction s_player_selfBloodbag;
        s_player_selfBloodbag = -1;
    };
 
_nearLight = nearestObject [player,"LitObject"];
_canPickLight = false;
if (!isNull _nearLight) then {
if (_nearLight distance player < 4) then {
_canPickLight = isNull (_nearLight getVariable ["owner",objNull]);
};
};
 
//Sirens
_isCopcar = typeOf _vehicle in ["ArmoredSUV_PMC_DZE","SUV_Camo","SUV_Yellow","SUV_White","SUV_Silver","SUV_Red","SUV_Pink","SUV_Orange","SUV_Green","SUV_Charcoal","SUV_Blue","SUV_TK_CIV_EP1","SUV_TK_CIV_EP1_DZE1","SUV_TK_CIV_EP1_DZE2","SUV_TK_CIV_EP1_DZE3","SUV_TK_CIV_EP1_DZE4","LadaLM","LadaLM_DZE1","LadaLM_DZE2","LadaLM_DZE3","LadaLM_DZE4","policecar"];
 
if (_inVehicle and _isCopcar and (driver _vehicle == player)) then {
        dayz_addsirens = _vehicle;
    if (s_player_sirens_on < 0) then {
        s_player_sirens_on = dayz_addsirens addAction ["Вкл Сирену","scripts\sirens\sirens_on.sqf",dayz_addsirens,2,false,true,"",""];
        s_player_sirens_off = dayz_addsirens addAction ["Выкл Сирену","scripts\sirens\sirens_off.sqf",dayz_addsirens,2,false,true,"",""];
        };
    } else {
        dayz_addsirens removeAction s_player_sirens_on;
        dayz_addsirens removeAction s_player_sirens_off;
        s_player_sirens_on = -1;
        s_player_sirens_off = -1;
    };
 
//Grab Flare
if (_canPickLight and !dayz_hasLight and !_isPZombie) then {
if (s_player_grabflare < 0) then {
_text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");
s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""];
s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true, "", ""];
};
} else {
player removeAction s_player_grabflare;
player removeAction s_player_removeflare;
s_player_grabflare = -1;
s_player_removeflare = -1;
};
 
if(DZE_HaloJump) then {
if(_inVehicle and (_vehicle isKindOf "Air") and ((getPos _vehicle select 2) > 400)) then {
if (s_halo_action < 0) then {
DZE_myHaloVehicle = _vehicle;
s_halo_action = DZE_myHaloVehicle addAction ["HALO Jump","\z\addons\dayz_code\actions\halo_jump.sqf",[],2,false,true,"",""];
};
} else {
DZE_myHaloVehicle removeAction s_halo_action;
s_halo_action = -1;
};
};
 
if (!DZE_ForceNameTagsOff) then {
if (s_player_showname < 0 and !_isPZombie) then {
if (DZE_ForceNameTags) then {
s_player_showname = 1;
player setVariable["DZE_display_name",true,true];
} else {
s_player_showname = player addAction ["Display Name (Yes)", "\z\addons\dayz_code\actions\display_name.sqf",true, 0, true, false, "",""];
s_player_showname1 = player addAction ["Display Name (No)", "\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 ["Raise Horde", "\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 ["Night Vision", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"];
};
if (!isNull cursorTarget and (player distance cursorTarget < 3)) then { //Has some kind of target
_isAnimal = cursorTarget isKindOf "Animal";
_isZombie = cursorTarget isKindOf "zZombie_base";
_isHarvested = cursorTarget getVariable["meatHarvested",false];
_isMan = cursorTarget isKindOf "Man";
// Pzombie Gut human corpse or animal
if (!alive cursorTarget and (_isAnimal or _isMan) and !_isZombie and !_isHarvested) then {
if (s_player_pzombiesfeed < 0) then {
s_player_pzombiesfeed = player addAction ["Feed", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",cursorTarget, 3, true, false, "",""];
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
};
 
// Increase distance only if AIR OR SHIP
_allowedDistance = 4;
_isAir = cursorTarget isKindOf "Air";
_isShip = cursorTarget isKindOf "Ship";
if(_isAir or _isShip) then {
_allowedDistance = 6;
};
 
if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cursorTarget < _allowedDistance) and _canDo) then { //Has some kind of target
 
// set cursortarget to variable
_cursorTarget = cursorTarget;
 
// get typeof cursortarget once
_typeOfCursorTarget = typeOf _cursorTarget;
 
// hintsilent _typeOfCursorTarget;
 
_isVehicle = _cursorTarget isKindOf "AllVehicles";
_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"];
_isnewstorage = _typeOfCursorTarget in DZE_isNewStorage;
 
// get items and magazines only once
_magazinesPlayer = magazines player;
 
//boiled Water
_hasbottleitem = "ItemWaterbottle" in _magazinesPlayer;
_hastinitem = false;
{
if (_x in _magazinesPlayer) then {
_hastinitem = true;
};
} forEach boil_tin_cans;
_hasFuelE = "ItemJerrycanEmpty" in _magazinesPlayer;
_hasFuelBarrelE = "ItemFuelBarrelEmpty" in _magazinesPlayer;
_hasHotwireKit = "ItemHotwireKit" in _magazinesPlayer;
 
_itemsPlayer = items player;
 
_temp_keys = [];
_temp_keys_names = [];
// find available keys
_key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];
{
if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in _key_colors) then {
_ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid");
_ownerKeyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName");
_temp_keys_names set [_ownerKeyId,_ownerKeyName];
_temp_keys set [count _temp_keys,str(_ownerKeyId)];
};
} forEach _itemsPlayer;
 
_hasKnife = "ItemKnife" in _itemsPlayer;
_hasToolbox = "ItemToolbox" in _itemsPlayer;
 
_isMan = _cursorTarget isKindOf "Man";
_traderType = _typeOfCursorTarget;
_ownerID = _cursorTarget getVariable ["CharacterID","0"];
_isAnimal = _cursorTarget isKindOf "Animal";
_isDog =  (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin");
_isZombie = _cursorTarget isKindOf "zZombie_base";
_isDestructable = _cursorTarget isKindOf "BuiltItems";
_isWreck = _typeOfCursorTarget in DZE_isWreck;
_isWreckBuilding = _typeOfCursorTarget in DZE_isWreckBuilding;
_isModular = _cursorTarget isKindOf "ModularItems";
 
_isRemovable = _typeOfCursorTarget in DZE_isRemovable;
_isDisallowRepair = _typeOfCursorTarget in ["M240Nest_DZ"];
 
_isTent = _cursorTarget isKindOf "TentStorage";
 
_isAlive = alive _cursorTarget;
 
_text = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName");
 
_rawmeat = meatraw;
_hasRawMeat = false;
{
if (_x in _magazinesPlayer) then {
_hasRawMeat = true;
};
} forEach _rawmeat; 
 
_isFuel = false;
if (_hasFuelE or _hasFuelBarrelE) then {
{
if(_cursorTarget isKindOf _x) exitWith {_isFuel = true;};
} forEach dayz_fuelsources;
};
 
// diag_log ("OWNERID = " + _ownerID + " CHARID = " + dayz_characterID + " " + str(_ownerID == dayz_characterID));
 
// logic vars
_player_flipveh = false;
_player_deleteBuild = false;
_player_lockUnlock_crtl = false;
 
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {
if (s_player_maintain_area < 0) then {
  s_player_maintain_area = player addAction ["<t color=""#ffffff"">Maintain Area</t>", "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];
s_player_maintain_area_preview = player addAction ["<t color=""#ccffffff"">Maintain Area Preview</t>", "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
};
} else {
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};
 
// CURSOR TARGET ALIVE
if(_isAlive) then {
 
//Allow player to delete objects
if(_isDestructable or _isWreck or _isRemovable or _isWreckBuilding) then {
if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
_player_deleteBuild = true;
};
};
 
//Allow owners to delete modulars
                if(_isModular and (dayz_characterID == _ownerID)) then {
                        if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
                        if(_cursorTarget in DZE_DoorsLocked) exitwith  {cutText ["You must remove the lock to delete this item!", "PLAIN DOWN"]; };
                                _player_deleteBuild = true;
                        };
                };
 
// CURSOR TARGET VEHICLE
if(_isVehicle) then {
 
//flip vehicle small vehicles by your self and all other vehicles with help nearby
if (!(canmove _cursorTarget) and (player distance _cursorTarget >= 2) and (count (crew _cursorTarget))== 0 and ((vectorUp _cursorTarget) select 2) < 0.5) then {
_playersNear = {isPlayer _x} count (player nearEntities ["CAManBase", 6]);
if(_isVehicletype or (_playersNear >= 2)) then {
_player_flipveh = true;
};
};
 
 
if(!_isMan and _ownerID != "0" and !(_cursorTarget isKindOf "Bicycle")) then {
_player_lockUnlock_crtl = true;
};
 
};
 
};
 
if(_player_deleteBuild) then {
if (s_player_deleteBuild < 0) then {
s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
};
 
 
// Allow Owner to lock and unlock vehicle  
if(_player_lockUnlock_crtl) then {
if (s_player_lockUnlock_crtl < 0) then {
_hasKey = _ownerID in _temp_keys;
_oldOwner = (_ownerID == dayz_playerUID);
if(locked _cursorTarget) then {
if(_hasKey or _oldOwner) then {
_Unlock = player addAction [format["Unlock %1",_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["Hotwire %1",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true, "", ""];
} else {
_Unlock = player addAction ["<t color=#ff0000'>Vehicle Locked</t>", "",_cursorTarget, 2, true, true, "", "];
};
s_player_lockunlock set [count s_player_lockunlock,_Unlock];
s_player_lockUnlock_crtl = 1;
};
} else {
if(_hasKey or _oldOwner) then {
_lock = player addAction [format["Lock %1",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true, "", ""];
s_player_lockunlock set [count s_player_lockunlock,_lock];
s_player_lockUnlock_crtl = 1;
};
};
};
 
} else {
{player removeAction _x} forEach s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;
};
 
if(DZE_AllowForceSave) then {
//Allow player to force save
if((_isVehicle or _isTent) and !_isMan) then {
if (s_player_forceSave < 0) then {
s_player_forceSave = player addAction [format[localize "str_actions_save",_text], "\z\addons\dayz_code\actions\forcesave.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_forceSave;
s_player_forceSave = -1;
};
};
 
 
 
If(DZE_AllowCargoCheck) then {
if((_isVehicle or _isTent or _isnewstorage) and _isAlive and !_isMan and !locked _cursorTarget) then {
if (s_player_checkGear < 0) then {
s_player_checkGear = player addAction [localize "STR_EPOCH_PLAYER_CARGO", "\z\addons\dayz_code\actions\cargocheck.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_checkGear;
s_player_checkGear = -1;
};
};
 
 
//flip vehicle small vehicles by your self and all other vehicles with help nearby
if(_player_flipveh) then {
if (s_player_flipveh  < 0) then {
s_player_flipveh = player addAction [format[localize "str_actions_flipveh",_text], "\z\addons\dayz_code\actions\player_flipvehicle.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_flipveh;
s_player_flipveh = -1;
}; 
 
//Allow player to fill jerrycan
if((_hasFuelE or _hasFuelBarrelE) and _isFuel) then {
if (s_player_fillfuel < 0) then {
s_player_fillfuel = player addAction [localize "str_actions_self_10", "\z\addons\dayz_code\actions\jerry_fill.sqf",[], 1, false, true, "", ""];
};
} else {
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
};
 
// logic vars for addactions
_player_butcher = false;
_player_studybody = false;
_player_SurrenderedGear = false;
 
// CURSOR TARGET NOT ALIVE
if (!_isAlive) then {
 
// Gut animal/zed
if((_isAnimal or _isZombie) and _hasKnife) then {
_isHarvested = _cursorTarget getVariable["meatHarvested",false];
if (!_isHarvested) then {
_player_butcher = true;
};
};
 
// Study body
if (_isMan and !_isZombie and !_isAnimal) then {
_player_studybody = true;
}
} else {
// unit alive
 
// gear access on surrendered player
if(_isMan and !_isZombie and !_isAnimal) then {
_isSurrendered = _cursorTarget getVariable ["DZE_Surrendered",false];
if (_isSurrendered) then {
_player_SurrenderedGear = true;
};
};
};
 
 
// Human Gut animal or zombie
if (_player_butcher) then {
if (s_player_butcher < 0) then {
if(_isZombie) then {
s_player_butcher = player addAction ["Gut Zombie", "\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;
};
 
//Put This Under //Study Body Section.
if (cursorTarget == LAPTOP) then {
_lap = cursorTarget;
if (s_player_nuke < 0) then {
s_player_nuke = player addAction [("<t color="#FF0000"">" + ("Set Off Nuke") +"</t>"),"Nuke\nuke_On.sqf",_lap, 5, false, true, "","];
};
} else {
player removeAction s_player_nuke;
s_player_nuke = -1;
};
 
// logic vars
_player_cook = false;
_player_boil = false;
 
// CURSOR TARGET IS FIRE
if (inflamed _cursorTarget) then {
 
//Fireplace Actions check
if (_hasRawMeat) then {
_player_cook = true;
};
 
// Boil water
if (_hasbottleitem and _hastinitem) then {
_player_boil = true;
};
};
 
if (_player_SurrenderedGear) then {
if (s_player_SurrenderedGear < 0) then {
s_player_SurrenderedGear = player addAction ["Gear", "\z\addons\dayz_code\actions\surrender_gear.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_SurrenderedGear;
s_player_SurrenderedGear = -1;
};
 
//Fireplace Actions check
if (_player_cook) then {
if (s_player_cook < 0) then {
s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true, "", ""];
};
} else {
player removeAction s_player_cook;
s_player_cook = -1;
};
 
// Boil water
if (_player_boil) then {
if (s_player_boil < 0) then {
s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true, "", ""];
};
} else {
player removeAction s_player_boil;
s_player_boil = -1;
};
 
if(_cursorTarget == dayz_hasFire) then {
if ((s_player_fireout < 0) and !(inflamed _cursorTarget) and (player distance _cursorTarget < 3)) then {
s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_fireout;
s_player_fireout = -1;
};
 
//Packing my tent
if(_isTent and (player distance _cursorTarget < 3)) then {
if (_ownerID == dayz_characterID) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
if(("ItemJerrycan" in _magazinesPlayer) and ("ItemMatchbox_DZE" in weapons player)) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction ["Destroy Tent", "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
};
};
} else {
player removeAction s_player_packtent;
s_player_packtent = -1;
};
 
//Allow owner to unlock vault
if((_typeOfCursorTarget in DZE_LockableStorage) and _ownerID != "0" and (player distance _cursorTarget < 3)) then {
if (s_player_unlockvault < 0) then {
if(_typeOfCursorTarget in DZE_LockedStorage) then {
if(_ownerID == dayz_combination or _ownerID == dayz_playerUID) then {
_combi = player addAction [format["Open %1",_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["Unlock %1",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
};
s_player_unlockvault = 1;
} else {
if(_ownerID != dayz_combination and _ownerID != dayz_playerUID) then {
_combi = player addAction ["Re-Enter Combination", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
s_player_unlockvault = 1;
};
};
};
} else {
{player removeAction _x} forEach s_player_combi;s_player_combi = [];
s_player_unlockvault = -1;
};
 
//Allow owner to pack vault
if(_typeOfCursorTarget in DZE_UnLockedStorage and _ownerID != "0" and (player distance _cursorTarget < 3)) then {
 
if (s_player_lockvault < 0) then {
if(_ownerID == dayz_combination or _ownerID == dayz_playerUID) then {
s_player_lockvault = player addAction [format["Lock %1",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true, "",""];
};
};
if (s_player_packvault < 0 and (_ownerID == dayz_combination or _ownerID == dayz_playerUID)) then {
s_player_packvault = player addAction [format["<t color=#ff0000'>Pack %1</t>",_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 ["Recent Murders", "\z\addons\dayz_code\actions\list_playerDeaths.sqf",[], 7, false, true, "",""];
};
} else {
player removeAction s_player_information;
s_player_information = -1;
};
 
//Fuel Pump
if(_typeOfCursorTarget in dayz_fuelpumparray) then {
if (s_player_fuelauto < 0) then {
 
// check if Generator_DZ is running within 30 meters
_findNearestGens = nearestObjects [player, ["Generator_DZ"], 30];
_findNearestGen = [];
{
if (alive _x and (_x getVariable ["GeneratorRunning", false])) then {
_findNearestGen set [(count _findNearestGen),_x];
};
} foreach _findNearestGens;
_IsNearRunningGen = count (_findNearestGen);
 
// show that pump needs power if no generator nearby.
if(_IsNearRunningGen > 0) then {
s_player_fuelauto = player addAction ["Fill Vehicle", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true, "",""];
} else {
s_player_fuelauto = player addAction ["<t color=#ff0000'>Needs Power</t>", "",[], 0, false, true, "","];
};
};
} else {
player removeAction s_player_fuelauto;
s_player_fuelauto = -1;
};
 
//Fuel Pump on truck
if(_typeOfCursorTarget in DZE_fueltruckarray and alive _cursorTarget) then {
if (s_player_fuelauto2 < 0) then {
// show that fuel truck pump needs power.
if(isEngineOn _cursorTarget) then {
s_player_fuelauto2 = player addAction ["Fill Vehicle", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_fuelauto2 = player addAction ["<t color=#ff0000'>Needs Power</t>", "",[], 0, false, true, "","];
};
};
} else {
player removeAction s_player_fuelauto2;
s_player_fuelauto2 = -1;
};
 
// inplace upgrade tool
if ((_cursorTarget isKindOf "ModularItems") or (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") or (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
if ((s_player_lastTarget select 0) != _cursorTarget) then {
if (s_player_upgrade_build > 0) then {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
};
if (s_player_upgrade_build < 0) then {
// s_player_lastTarget = _cursorTarget;
s_player_lastTarget set [0,_cursorTarget];
s_player_upgrade_build = player addAction [format["Upgrade %1",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
};
} else {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
 
// downgrade system
if((_isDestructable or _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" or _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") and (DZE_Lock_Door == _ownerID)) then {
if ((s_player_lastTarget select 1) != _cursorTarget) then {
if (s_player_downgrade_build > 0) then {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
};
 
if (s_player_downgrade_build < 0) then {
s_player_lastTarget set [1,_cursorTarget];
s_player_downgrade_build = player addAction [format["Remove Lock from %1",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
};
} else {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
 
// inplace maintenance tool
if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase" or _typeOfCursorTarget in DZE_ExtraMaintain) and (damage _cursorTarget >= 0.1)) 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["Maintain %1",_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 ["Stop Generator", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
// check if not filled and player has jerry.
if((_cursorTarget getVariable ["GeneratorFilled", false])) then {
s_player_fillgen = player addAction ["Start Generator", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
if("ItemJerrycan" in _magazinesPlayer) then {
s_player_fillgen = player addAction ["Fill and Start Generator", "\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 ["Attach Straps", "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_towing = player addAction ["Detach Straps", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true, "",""];
};
};
} else {
player removeAction s_player_towing;
s_player_towing = -1;
};
*/
 
 
    //Sleep
if(_isTent and _ownerID == dayz_characterID) then {
if ((s_player_sleep < 0) and (player distance _cursorTarget < 3)) then {
s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_sleep;
s_player_sleep = -1;
};
_clothesTaken = cursorTarget getVariable["clothesTaken",false];
                       
               // Take clothes by Zabn @ BalotaBuddies.net
               if (_isMan and !_isAlive and !_isZombie and !_clothesTaken and !_isAnimal) then {
                   if (s_player_clothes < 0) then {
                       s_player_clothes
= player addAction [("<t color='#0096ff'>")+("Take
Clothes")+("</t>"), "scripts\player_takeClothes.sqf",cursorTarget,
-10, false, true, "",""];
                   };
               } else {
                   player removeAction s_player_clothes;
                   s_player_clothes = -1;
                   };
 
//Repairing Vehicles
if ((dayz_myCursorTarget != _cursorTarget) and _isVehicle and !_isMan and _hasToolbox and (damage _cursorTarget < 1) and !_isDisallowRepair) then {
if (s_player_repair_crtl < 0) then {
dayz_myCursorTarget = _cursorTarget;
_menu = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_REPAIRV", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
_menu1 = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_SALVAGEV", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
s_player_repairActions set [count s_player_repairActions,_menu];
s_player_repairActions set [count s_player_repairActions,_menu1];
s_player_repair_crtl = 1;
} else {
{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
};
};
 
// All Traders
if (_isMan and !_isPZombie and _traderType in serverTraders) then {
 
if (s_player_parts_crtl < 0) then {
 
// get humanity
_humanity = player getVariable ["humanity",0];
_traderMenu = call compile format["menu_%1;",_traderType];
 
// diag_log ("TRADER = " + str(_traderMenu));
 
_low_high = "low";
_humanity_logic = false;
if((_traderMenu select 2) == "friendly") then {
_humanity_logic = (_humanity < -5000);
};
if((_traderMenu select 2) == "hostile") then {
_low_high = "high";
_humanity_logic = (_humanity > -5000);
};
if((_traderMenu select 2) == "hero") then {
_humanity_logic = (_humanity < 5000);
};
if(_humanity_logic) then {
_cancel = player addAction [format["Your humanity is too %1 this trader refuses to talk to you.",_low_high], "\z\addons\dayz_code\actions\trade_cancel.sqf",["na"], 0, true, false, "",""];
s_player_parts set [count s_player_parts,_cancel];
} else {
 
// Static Menu
{
//diag_log format["DEBUG TRADER: %1", _x];
_buy = player addAction [format["Trade %1 %2 for %3 %4",(_x select 3),(_x select 5),(_x select 2),(_x select 6)], "\z\addons\dayz_code\actions\trade_items_wo_db.sqf",[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4),(_x select 5),(_x select 6)], (_x select 7), true, true, "",""];
s_player_parts set [count s_player_parts,_buy];
 
} forEach (_traderMenu select 1);
// Database menu 
_buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 99, true, false, "",""];
s_player_parts set [count s_player_parts,_buy];
 
// Add static metals trader options under sub menu
_metals_trader = player addAction [localize "STR_EPOCH_PLAYER_301", "\z\addons\dayz_code\actions\trade_metals.sqf",["na"], 0, true, false, "",""];
s_player_parts set [count s_player_parts,_metals_trader];
 
};
s_player_parts_crtl = 1;
 
};
} else {
{player removeAction _x} forEach s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
};
 
 
if(dayz_tameDogs) then {
 
//Dog
if (_isDog and _isAlive and (_hasRawMeat) and _ownerID == "0" and player getVariable ["dogID", 0] == 0) then {
if (s_player_tamedog < 0) then {
s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];
};
} else {
player removeAction s_player_tamedog;
s_player_tamedog = -1;
};
if (_isDog and _ownerID == dayz_characterID and _isAlive) then {
_dogHandle = player getVariable ["dogID", 0];
if (s_player_feeddog < 0 and _hasRawMeat) then {
s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true,"",""];
};
if (s_player_waterdog < 0 and "ItemWaterbottle" in _magazinesPlayer) then {
s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true,"",""];
};
if (s_player_staydog < 0) then {
_lieDown = _dogHandle getFSMVariable "_actionLieDown";
if (_lieDown) then { _text = "str_actions_liedog"; } else { _text = "str_actions_sitdog"; };
s_player_staydog = player addAction [localize _text,"\z\addons\dayz_code\actions\dog\stay.sqf", _dogHandle, 5, false, true,"",""];
};
if (s_player_trackdog < 0) then {
s_player_trackdog = player addAction [localize "str_actions_trackdog","\z\addons\dayz_code\actions\dog\track.sqf", _dogHandle, 4, false, true,"",""];
};
if (s_player_barkdog < 0) then {
s_player_barkdog = player addAction [localize "str_actions_barkdog","\z\addons\dayz_code\actions\dog\speak.sqf", _cursorTarget, 3, false, true,"",""];
};
if (s_player_warndog < 0) then {
_warn = _dogHandle getFSMVariable "_watchDog";
if (_warn) then { _text = (localize "str_epoch_player_247"); _warn = false; } else { _text = (localize "str_epoch_player_248"); _warn = true; };
s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true,"",""];
};
if (s_player_followdog < 0) then {
s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true,"",""];
};
} else {
player removeAction s_player_feeddog;
s_player_feeddog = -1;
player removeAction s_player_waterdog;
s_player_waterdog = -1;
player removeAction s_player_staydog;
s_player_staydog = -1;
player removeAction s_player_trackdog;
s_player_trackdog = -1;
player removeAction s_player_barkdog;
s_player_barkdog = -1;
player removeAction s_player_warndog;
s_player_warndog = -1;
player removeAction s_player_followdog;
s_player_followdog = -1;
};
};
 
} else {
//Engineering
{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
 
{player removeAction _x} forEach s_player_combi;s_player_combi = [];
 
dayz_myCursorTarget = objNull;
s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
 
{player removeAction _x} forEach s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
 
{player removeAction _x} forEach s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;
 
player removeAction s_player_checkGear;
s_player_checkGear = -1;
 
player removeAction s_player_SurrenderedGear;
s_player_SurrenderedGear = -1;
 
//Others
player removeAction s_player_forceSave;
s_player_forceSave = -1;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
player removeAction s_player_sleep;
s_player_sleep = -1;
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
player removeAction s_player_butcher;
s_player_butcher = -1;
player removeAction s_player_cook;
s_player_cook = -1;
player removeAction s_player_boil;
s_player_boil = -1;
player removeAction s_player_fireout;
s_player_fireout = -1;
player removeAction s_player_packtent;
s_player_packtent = -1;
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
player removeAction s_player_studybody;
s_player_studybody = -1;
//Dog
player removeAction s_player_tamedog;
s_player_tamedog = -1;
player removeAction s_player_feeddog;
s_player_feeddog = -1;
player removeAction s_player_waterdog;
s_player_waterdog = -1;
player removeAction s_player_staydog;
s_player_staydog = -1;
player removeAction s_player_trackdog;
s_player_trackdog = -1;
player removeAction s_player_barkdog;
s_player_barkdog = -1;
player removeAction s_player_warndog;
s_player_warndog = -1;
player removeAction s_player_followdog;
s_player_followdog = -1;
    
    // vault
player removeAction s_player_unlockvault;
s_player_unlockvault = -1;
player removeAction s_player_packvault;
s_player_packvault = -1;
player removeAction s_player_lockvault;
s_player_lockvault = -1;
 
player removeAction s_player_information;
s_player_information = -1;
player removeAction s_player_fillgen;
s_player_fillgen = -1;
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
player removeAction s_player_maint_build;
s_player_maint_build = -1;
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
player removeAction s_player_towing;
s_player_towing = -1;
player removeAction s_player_fuelauto;
s_player_fuelauto = -1;
player removeAction s_player_fuelauto2;
s_player_fuelauto2 = -1;
};
 
 
 
//Dog actions on player self
_dogHandle = player getVariable ["dogID", 0];
if (_dogHandle > 0) then {
_dog = _dogHandle getFSMVariable "_dog";
_ownerID = "0";
if (!isNull cursorTarget) then { _ownerID = cursorTarget getVariable ["CharacterID","0"]; };
if (_canDo and !_inVehicle and alive _dog and _ownerID != dayz_characterID) then {
if (s_player_movedog < 0) then {
s_player_movedog = player addAction [localize "str_actions_movedog", "\z\addons\dayz_code\actions\dog\move.sqf", player getVariable ["dogID", 0], 1, false, true, "", ""];
};
if (s_player_speeddog < 0) then {
_text = (localize "str_epoch_player_249");
_speed = 0;
if (_dog getVariable ["currentSpeed",1] == 0) then { _speed = 1; _text = (localize "str_epoch_player_250"); };
s_player_speeddog = player addAction [format[localize "str_actions_speeddog", _text], "\z\addons\dayz_code\actions\dog\speed.sqf",[player getVariable ["dogID", 0],_speed], 0, false, true, "", ""];
};
if (s_player_calldog < 0) then {
s_player_calldog = player addAction [localize "str_actions_calldog", "\z\addons\dayz_code\actions\dog\follow.sqf", [player getVariable ["dogID", 0], true], 2, false, true, "", ""];
};
};
} else {
player removeAction s_player_movedog;
s_player_movedog = -1;
player removeAction s_player_speeddog;
s_player_speeddog = -1;
player removeAction s_player_calldog;
s_player_calldog = -1;
};
 
// ---------------------------------------SUICIDE START------------------------------------
 
private ["_handGun"];
_handGun = currentWeapon player;
if ((_handGun in ["glock17_EP1","M9","M9SD","Makarov","MakarovSD","revolver_EP1","UZI_EP1","Sa61_EP1","Colt1911"]) && (player ammo _handGun > 0)) then {
    hasSecondary = true;
} else {
    hasSecondary = false;
};
if((speed player <= 1) && hasSecondary && _canDo) then {
    if (s_player_suicide < 0) then {
        s_player_suicide = player addaction[("<t color="#ff0000"">" + ("Покинуть этот мир") +"</t>"),"suicide.sqf",_handGun,0,false,true,"", "];
    };
} else {
    player removeAction s_player_suicide;
    s_player_suicide = -1;
};
 
// ---------------------------------------SUICIDE END------------------------------------

 

//Thanks for the help...

Link to comment
Share on other sites

Hello, does not work for me, no menu on the laptop, I have misplaced my code in the fn_selfAction.sqf ?

 

 

 

scriptName "Functions\misc\fn_selfActions.sqf";

/***********************************************************

ADD ACTIONS FOR SELF

- Function

- [] call fnc_usec_selfActions;

************************************************************/

private ["_isWreckBuilding","_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors","_player_deleteBuild","_player_flipveh","_player_lockUnlock_crtl","_player_butcher","_player_studybody","_player_cook","_player_boil","_hasFuelBarrelE","_hasHotwireKit","_player_SurrenderedGear","_isSurrendered","_isModular","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached"];

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

_vehicle = vehicle player;

_isPZombie = player isKindOf "PZombie_VB";

_inVehicle = (_vehicle != player);

_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;

_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);

//####----####----####---- Base Building 1.3 Start ----####----####----####

_currentSkin = typeOf(player);

_hasToolbox = "ItemToolbox" in items player;

_baseBuildAdmin = ((getPlayerUID player) in BBSuperAdminAccess);

_baseBuildLAdmin = ((getPlayerUID player) in BBLowerAdminAccess);

//Get objects that can't be targetted

_flagBasePole = nearestObject [player, BBTypeOfFlag];

//All untargetable objects (except Base Flag), searches a 12 meter radius, you can add any new objects you put in the build list that can't be targetted

_untargetableArray = nearestObjects [player, ["Land_CamoNetB_EAST","Land_CamoNetVar_EAST","Land_CamoNet_EAST","Land_CamoNetB_NATO","Land_CamoNetVar_NATO","Land_CamoNet_NATO","Land_Ind_IlluminantTower","Land_sara_hasic_zbroj","Land_A_Castle_Bergfrit","Land_A_Castle_Gate","Land_A_Castle_Bastion","Land_A_Castle_Wall1_20","Land_A_Castle_Wall1_20_Turn","Land_A_Castle_Wall2_30","HeliH","HeliHCivil","Land_Ind_Shed_01_main","RampConcrete","Land_Ind_Shed_01_end","Land_Ind_SawMillPen"],12];//The number at the end is the range to look for items, if you have issues with some items try increasing it by one or two at a time.

_nearUntargetable = count _untargetableArray > 0; //Check if anything is in range

_closestUntargetable = if (_nearUntargetable) then {_untargetableArray select 0};//Selects the closest returned item

_nettingNames = ["Land_CamoNetB_EAST","Land_CamoNetVar_EAST","Land_CamoNet_EAST","Land_CamoNetB_NATO","Land_CamoNetVar_NATO","Land_CamoNet_NATO"]; //Used for menu options

_castleNames = ["Land_A_Castle_Bergfrit","Land_A_Castle_Gate","Land_A_Castle_Bastion","Land_A_Castle_Wall1_20","Land_A_Castle_Wall1_20_Turn","Land_A_Castle_Wall2_30"];

_heliPadNames = ["HeliH","HeliHCivil"];

_roofNames = ["Land_Ind_Shed_01_main","Land_Ind_Shed_01_end","Land_Ind_SawMillPen"];

_buildingNames = [];//Can add generic building names here

_displayName = "Base Build Object";//Default menu option name if none of the following match

if (typeOf(_closestUntargetable) in _nettingNames) then {_displayName = "Netting";};

if (typeOf(_closestUntargetable) in _castleNames) then {_displayName = "Castle";};

if (typeOf(_closestUntargetable) in _heliPadNames) then {_displayName = "HeliPad";};

if (typeOf(_closestUntargetable) in _roofNames) then {_displayName = "Roof";};

if (typeOf(_closestUntargetable) in _buildingNames) then {_displayName = "Building";};

if (typeOf(_closestUntargetable) == "Land_Ind_IlluminantTower") then {_displayName = "Tower";};

// Check mags in player inventory to show build recipe menu

_mags = magazines player;

if ("ItemTankTrap" in _mags || "ItemSandbag" in _mags || "ItemWire" in _mags || "PartWoodPile" in _mags || "PartGeneric" in _mags || "equip_scrapelectronics" in _mags || "ItemCamoNet" in _mags || "equip_crate" in _mags || "equip_brick" in _mags || "equip_string" in _mags || "equip_duct_tape" in _mags) then {

hasBuildItem = true;

} else { hasBuildItem = false;};

//Build Recipe Menu Action

if((speed player <= 1) && hasBuildItem && _canDo) then {

if (s_player_recipeMenu < 0) then {

s_player_recipeMenu = player addaction [("" + ("Build Recipes") +""),"buildRecipeBook\build_recipe_dialog.sqf","",5,false,true,"",""];

};

if (s_player_buildHelp < 0) then {

s_player_buildHelp = player addaction [("" + ("Base Building Help") +""),"dayz_code\actions\build_help.sqf","",5,false,true,"",""];

};

if (s_player_showFlags < 0) then {

s_player_showFlags = player addAction [("" + ("Show My Flags") +""),"dayz_code\actions\show_flag_markers.sqf","",5,false,true,"",""];

};

} else {

player removeAction s_player_buildHelp;

s_player_buildHelp = -1;

player removeAction s_player_recipeMenu;

s_player_recipeMenu = -1;

player removeAction s_player_showFlags;

s_player_showFlags = -1;

};

//Add in custom eventhandlers or whatever on skin change

if (_currentSkin != globalSkin) then {

globalSkin = _currentSkin;

player removeMPEventHandler ["MPHit", 0];

player removeEventHandler ["AnimChanged", 0];

ehWall = player addEventHandler ["AnimChanged", { player call antiWall; }];

empHit = player addMPEventHandler ["MPHit", {_this spawn fnc_plyrHit;}];

};

//General Untargetable Objects

if((isNull cursorTarget) && _canDo && !remProc && !procBuild && _nearUntargetable) then {

_ownerUnT = _closestUntargetable getVariable ["characterID", "0"]; //Checks owner IDs of untargetable objects, simply to avoid RPT spam with map objects

_unTauthUID = _closestUntargetable getVariable ["AuthorizedUID", []]; //Gets master AuthUID from untargetable objects

_unTauthGateCodes = if ((_ownerUnT != "0") && (count _unTauthUID > 0)) then {((getPlayerUID player) in (_unTauthUID select 1));}; //Checks for player access to untargetable objects

_adminText = if (!_unTauthGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered

if (_unTauthGateCodes || _baseBuildAdmin) then {

if (s_player_camoBaseOwnerAccess < 0) then {

s_player_camoBaseOwnerAccess = player addAction [format["%2%1: Give all base owners (from flagpole) access",_displayName,_adminText], "dayz_code\external\keypad\fnc_keyPad\functions\give_gateAccess.sqf",_closestUntargetable, 1, false, true, "", ""];

};

if (s_player_addCamoAuth < 0) then {

s_player_addCamoAuth = player addAction [format["%2%1: Add Player UIDs",_displayName,_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeAdd.sqf",_closestUntargetable, 1, false, true, "", ""];

};

if (s_player_removeCamoAuth < 0) then {

s_player_removeCamoAuth = player addAction [format[("" + ("%2%1: Remove Player UIDs") +""),_displayName,_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeRemove.sqf",_closestUntargetable, 1, false, true, "", ""];

};

};

if (_ownerUnT != "0" && (_hasToolbox || _baseBuildAdmin || _baseBuildLAdmin)) then {

if (s_player_deleteCamoNet < 0) then {

s_player_deleteCamoNet = player addaction [format[("" + ("Remove %1") +""),_displayName,_adminText],"dayz_code\actions\player_remove.sqf",_closestUntargetable,1,false,true,"",""];

};

};

} else {

player removeAction s_player_camoBaseOwnerAccess;

s_player_camoBaseOwnerAccess = -1;

player removeAction s_player_addCamoAuth;

s_player_addCamoAuth = -1;

player removeAction s_player_removeCamoAuth;

s_player_removeCamoAuth = -1;

player removeAction s_player_deleteCamoNet;

s_player_deleteCamoNet = -1;

};

// FlagPole Access (more reliable than cursortarget)

if ((isNull cursorTarget) && _canDo && !remProc && !procBuild && (_flagBasePole distance player < 10)) then {

_ownerFlag = _flagBasePole getVariable ["characterID", "0"]; //Checks owner IDs of flags, simply to avoid RPT spam with map objects

_flagAuthUID = _flagBasePole getVariable ["AuthorizedUID", []]; //Gets master AuthUID from

_flagAuthGateCodes = if ((_ownerFlag != "0") && (count _flagAuthUID > 0)) then {((getPlayerUID player) in (_flagAuthUID select 1));}; //Checks if player has access to flag

_adminText = if (!_flagAuthGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered

if (_flagAuthGateCodes || _baseBuildAdmin) then {

if (s_player_addFlagAuth < 0) then {

s_player_addFlagAuth = player addAction [format["%1FlagPole: Add Player UIDs for Base Building Access",_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeAdd.sqf", _flagBasePole, 1, false, true, "", ""];

};

if (s_player_removeFlagAuth < 0) then {

s_player_removeFlagAuth = player addaction [format[("" + ("%1FlagPole: Remove Player UIDs") +""),_adminText],"dayz_code\external\keypad\fnc_keyPad\enterCodeRemove.sqf", _flagBasePole, 1, false, true, "", ""];

};

if (s_player_removeFlag < 0) then {

s_player_removeFlag = player addaction [format[("" + ("%1Permanently Remove Flag (restrictions apply)") +""),_adminText],"dayz_code\actions\player_remove.sqf", _flagBasePole,1,false,true,"",""];

};

if (bbAIGuards == 1) then {

if (s_player_guardToggle < 0) then {

s_player_guardToggle = player addaction [format[("" + ("%1Toggle Guards to Kill all non-base owners (default on)") +""),_adminText],"dayz_code\actions\toggle_base_guards.sqf",_flagBasePole,1,false,true,"",""];

};

};

};

} else {

player removeAction s_player_removeFlag;

s_player_removeFlag = -1;

player removeAction s_player_addFlagAuth;

s_player_addFlagAuth = -1;

player removeAction s_player_removeFlagAuth;

s_player_removeFlagAuth = -1;

player removeAction s_player_guardToggle;

s_player_guardToggle = -1;

};

//####----####----####---- Base Building 1.3 END ----####----####----####

_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 and !dayz_hasLight and !_isPZombie) then {

if (s_player_grabflare < 0) then {

_text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");

s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""];

s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true, "", ""];

};

} else {

player removeAction s_player_grabflare;

player removeAction s_player_removeflare;

s_player_grabflare = -1;

s_player_removeflare = -1;

};

//====================MV22+SUV Animation====================

if (_inVehicle and (_vehicle isKindOf "MV22") and !(isEngineOn _vehicle)) then {

if (mv22_fold < 0) then {

themv22 = _vehicle;

mv22_fold = themv22 addAction ["Fold","Scripts\animate\fold.sqf","",5,false,true];

mv22_unfold = themv22 addAction ["UnFold","Scripts\animate\unfold.sqf","",5,false,true];

};

} else {

themv22 removeAction mv22_fold;

mv22_fold = -1;

themv22 removeAction mv22_unfold;

mv22_unfold = -1;

};

if (_inVehicle and (_vehicle isKindOf "ArmoredSUV_Base_PMC")) then {

if (suv_close < 0) then {

thesuv = _vehicle;

suv_close = thesuv addAction ["Close Hatch","Scripts\animate\close.sqf","",5,false,true];

suv_open = thesuv addAction ["Open Hatch","Scripts\animate\open.sqf","",5,false,true];

};

} else {

thesuv removeAction suv_close;

suv_close = -1;

thesuv removeAction suv_open;

suv_open = -1;

};

//====================MV22+SUV Animation====================

if (DZE_HeliLift) then {

_hasAttached = _vehicle getVariable["hasAttached",false];

if(_inVehicle and (_vehicle isKindOf "Air") and ((getPos _vehicle select 2) < 30) and (speed _vehicle < 5) and (typeName _hasAttached == "OBJECT")) then {

if (s_player_heli_detach < 0) then {

dayz_myLiftVehicle = _vehicle;

s_player_heli_detach = dayz_myLiftVehicle addAction ["Detach Vehicle","\z\addons\dayz_code\actions\player_heliDetach.sqf",[dayz_myLiftVehicle,_hasAttached],2,false,true,"",""];

};

} else {

dayz_myLiftVehicle removeAction s_player_heli_detach;

s_player_heli_detach = -1;

};

};

// ---------------------------------------Krixes Self Bloodbag Start------------------------------------

_mags = magazines player;

// Krixes Self Bloodbag

if ("ItemBloodbag" in _mags) then {

hasBagItem = true;

} else { hasBagItem = false;};

if((speed player <= 1) && hasBagItem && _canDo) then {

if (s_player_selfBloodbag < 0) then {

s_player_selfBloodbag = player addaction[("" + ("Self Bloodbag") +""),"Scripts\player_selfbloodbag.sqf","",5,false,true,"", ""];

};

} else {

player removeAction s_player_selfBloodbag;

s_player_selfBloodbag = -1;

};

// ---------------------------------------Krixes Self Bloodbag End------------------------------------

if(DZE_HaloJump) then {

if(_inVehicle and (_vehicle isKindOf "Air") and ((getPos _vehicle select 2) > 400)) then {

if (s_halo_action < 0) then {

DZE_myHaloVehicle = _vehicle;

s_halo_action = DZE_myHaloVehicle addAction [localize "STR_EPOCH_ACTIONS_HALO","\z\addons\dayz_code\actions\halo_jump.sqf",[],2,false,true,"",""];

};

} else {

DZE_myHaloVehicle removeAction s_halo_action;

s_halo_action = -1;

};

};

if (!DZE_ForceNameTagsOff) then {

if (s_player_showname < 0 and !_isPZombie) then {

if (DZE_ForceNameTags) then {

s_player_showname = 1;

player setVariable["DZE_display_name",true,true];

} else {

s_player_showname = player addAction [localize "STR_EPOCH_ACTIONS_NAMEYES", "\z\addons\dayz_code\actions\display_name.sqf",true, 0, true, false, "",""];

s_player_showname1 = player addAction [localize "STR_EPOCH_ACTIONS_NAMENO", "\z\addons\dayz_code\actions\display_name.sqf",false, 0, true, false, "",""];

};

};

};

if(_isPZombie) then {

if (s_player_callzombies < 0) then {

s_player_callzombies = player addAction [localize "STR_EPOCH_ACTIONS_RAISEHORDE", "\z\addons\dayz_code\actions\call_zombies.sqf",player, 5, true, false, "",""];

};

if (DZE_PZATTACK) then {

call pz_attack;

DZE_PZATTACK = false;

};

if (s_player_pzombiesvision < 0) then {

s_player_pzombiesvision = player addAction [localize "STR_EPOCH_ACTIONS_NIGHTVIS", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"];

};

if (!isNull cursorTarget and (player distance cursorTarget < 3)) then { //Has some kind of target

_isAnimal = cursorTarget isKindOf "Animal";

_isZombie = cursorTarget isKindOf "zZombie_base";

_isHarvested = cursorTarget getVariable["meatHarvested",false];

_isMan = cursorTarget isKindOf "Man";

// Pzombie Gut human corpse or animal

if (!alive cursorTarget and (_isAnimal or _isMan) and !_isZombie and !_isHarvested) then {

if (s_player_pzombiesfeed < 0) then {

s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",cursorTarget, 3, true, false, "",""];

};

} else {

player removeAction s_player_pzombiesfeed;

s_player_pzombiesfeed = -1;

};

} else {

player removeAction s_player_pzombiesfeed;

s_player_pzombiesfeed = -1;

};

};

// Increase distance only if AIR OR SHIP

_allowedDistance = 4;

_isAir = cursorTarget isKindOf "Air";

_isShip = cursorTarget isKindOf "Ship";

if(_isAir or _isShip) then {

_allowedDistance = 8;

};

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

// set cursortarget to variable

_cursorTarget = cursorTarget;

// get typeof cursortarget once

_typeOfCursorTarget = typeOf _cursorTarget;

// hintsilent _typeOfCursorTarget;

_isVehicle = _cursorTarget isKindOf "AllVehicles";

_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"];

_isnewstorage = _typeOfCursorTarget in DZE_isNewStorage;

// get items and magazines only once

_magazinesPlayer = magazines player;

//boiled Water

_hasbottleitem = "ItemWaterbottle" in _magazinesPlayer;

_hastinitem = false;

{

if (_x in _magazinesPlayer) then {

_hastinitem = true;

};

} forEach boil_tin_cans;

_hasFuelE = "ItemJerrycanEmpty" in _magazinesPlayer;

_hasFuelBarrelE = "ItemFuelBarrelEmpty" in _magazinesPlayer;

_hasHotwireKit = "ItemHotwireKit" in _magazinesPlayer;

_itemsPlayer = items player;

_temp_keys = [];

_temp_keys_names = [];

// find available keys

_key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];

{

if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in _key_colors) then {

_ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid");

_ownerKeyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName");

_temp_keys_names set [_ownerKeyId,_ownerKeyName];

_temp_keys set [count _temp_keys,str(_ownerKeyId)];

};

} forEach _itemsPlayer;

_hasKnife = "ItemKnife" in _itemsPlayer;

_hasToolbox = "ItemToolbox" in _itemsPlayer;

_isMan = _cursorTarget isKindOf "Man";

_traderType = _typeOfCursorTarget;

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

_isAnimal = _cursorTarget isKindOf "Animal";

_isDog = (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin");

_isZombie = _cursorTarget isKindOf "zZombie_base";

_isDestructable = _cursorTarget isKindOf "BuiltItems";

_isWreck = _typeOfCursorTarget in DZE_isWreck;

_isWreckBuilding = _typeOfCursorTarget in DZE_isWreckBuilding;

_isModular = _cursorTarget isKindOf "ModularItems";

_isRemovable = _typeOfCursorTarget in DZE_isRemovable;

_isDisallowRepair = _typeOfCursorTarget in ["M240Nest_DZ"];

_isTent = _cursorTarget isKindOf "TentStorage";

_isAlive = alive _cursorTarget;

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

_rawmeat = meatraw;

_hasRawMeat = false;

{

if (_x in _magazinesPlayer) then {

_hasRawMeat = true;

};

} forEach _rawmeat;

_isFuel = false;

if (_hasFuelE or _hasFuelBarrelE) then {

{

if(_cursorTarget isKindOf _x) exitWith {_isFuel = true;};

} forEach dayz_fuelsources;

};

// diag_log ("OWNERID = " + _ownerID + " CHARID = " + dayz_characterID + " " + str(_ownerID == dayz_characterID));

// logic vars

_player_flipveh = false;

_player_deleteBuild = false;

_player_lockUnlock_crtl = false;

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

if (s_player_maintain_area < 0) then {

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

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

_player_deleteBuild = true;

};

};

//Allow owners to delete modulars

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

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

if(_cursorTarget in DZE_DoorsLocked) exitwith {cutText ["You must remove the lock to delete this item!", "PLAIN DOWN"]; };

_player_deleteBuild = true;

};

};

// CURSOR TARGET VEHICLE

if(_isVehicle) then {

//flip vehicle small vehicles by your self and all other vehicles with help nearby

if (!(canmove _cursorTarget) and (player distance _cursorTarget >= 2) and (count (crew _cursorTarget))== 0 and ((vectorUp _cursorTarget) select 2) < 0.5) then {

_playersNear = {isPlayer _x} count (player nearEntities ["CAManBase", 6]);

if(_isVehicletype or (_playersNear >= 2)) then {

_player_flipveh = true;

};

};

if(!_isMan and _ownerID != "0" and !(_cursorTarget isKindOf "Bicycle")) then {

_player_lockUnlock_crtl = true;

};

};

};

if(_player_deleteBuild) then {

if (s_player_deleteBuild < 0) then {

s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];

};

} else {

player removeAction s_player_deleteBuild;

s_player_deleteBuild = -1;

};

if (DZE_HeliLift) then {

_liftHeli = objNull;

_found = false;

_allowTow = false;

if ((count (crew _cursorTarget)) == 0) then {

{

if(!_allowTow) then {

_allowTow = _cursorTarget isKindOf _x;

};

} forEach DZE_HeliAllowToTow;

};

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

if (_allowTow) then {

_liftHelis = nearestObjects [player, DZE_HeliAllowTowFrom, 15];

{

if(!_found) then {

_posL = getPos _x;

_posC = getPos _cursorTarget;

_height = (_posL select 2) - (_posC select 2);

_hasAttached = _x getVariable["hasAttached",false];

if(_height < 15 and _height > 5 and (typeName _hasAttached != "OBJECT")) then {

if(((abs((_posL select 0) - (_posC select 0))) < 10) and ((abs((_posL select 1) - (_posC select 1))) < 10)) then {

_liftHeli = _x;

_found = true;

};

};

};

} forEach _liftHelis;

};

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

_attached = _cursorTarget getVariable["attached",false];

if(_found and _allowTow and _canDo and !locked _cursorTarget and !_isPZombie and (typeName _attached != "OBJECT")) then {

if (s_player_heli_lift < 0) then {

s_player_heli_lift = player addAction ["Attach to Heli", "\z\addons\dayz_code\actions\player_heliLift.sqf",[_liftHeli,_cursorTarget], -10, false, true, "",""];

};

} else {

player removeAction s_player_heli_lift;

s_player_heli_lift = -1;

};

};

//####----####----####---- Base Building 1.3 Start ----####----####----####

_lever = cursorTarget;

_codePanels = ["Infostand_2_EP1", "Fence_corrugated_plate"];

_baseBuildAdmin = ((getPlayerUID player) in BBSuperAdminAccess);

_baseBuildLAdmin = ((getPlayerUID player) in BBLowerAdminAccess);

_authorizedUID = cursorTarget getVariable ["AuthorizedUID", []];

_authorizedGateCodes = if ((_ownerID != "0") && (count _authorizedUID > 0)) then {((getPlayerUID player) in (_authorizedUID select 1));}; //Check it's not a map object/unbuilt object to avoid RPT spam

_adminText = if (!_authorizedGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered

//Let players check the UID of other players when near their flags

if (_isMan && (_flagBasePole distance player < 10)) then {

_ownerFlag = _flagBasePole getVariable ["characterID", "0"]; //Checks owner IDs of flags, simply to avoid RPT spam with map objects

_flagAuthUID = _flagBasePole getVariable ["AuthorizedUID", []]; //Gets master AuthUID from

_flagAuthGateCodes = if (_ownerFlag != "0") then {((getPlayerUID player) in (_flagAuthUID select 1));}; //Checks if player has access to flag

_adminText = if (!_flagAuthGateCodes && _baseBuildAdmin) then {"ADMIN:";}else{"";};//Let admins know they aren't registered

if (_flagAuthGateCodes || _baseBuildAdmin) then {

if (s_player_getTargetUID < 0) then {

s_player_getTargetUID = player addAction [format["%1Get UID of Targeted Player",_adminText], "dayz_code\actions\get_player_UID.sqf", cursorTarget, 4, false, true, "", ""];

};

};

} else {

player removeAction s_player_getTargetUID;

s_player_getTargetUID = -1;

};

// Operate Gates AND Add Authorization to Gate

if (((typeOf(cursortarget) in _codePanels) && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) || ((typeOf(cursortarget) in allbuildables_class) && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild)) then {

_gates = nearestObjects [_lever, ["Concrete_Wall_EP1"], 15];

if (s_player_gateActions < 0) then {

if (typeOf(cursortarget) == "Fence_corrugated_plate") then {

s_player_gateActions = player addAction [format[("" + ("%1Operate Single Metal Gate") +""),_adminText], "dayz_code\external\keypad\fnc_keyPad\operate_gates.sqf", _lever, 6, true, true, "", ""];

} else {

if (typeOf(cursortarget) == "Infostand_2_EP1") then {

if (count _gates > 0) then {

s_player_gateActions = player addAction [format[("" + ("%1Operate Nearest Concrete Gates Within 15 meters") +""),_adminText], "dayz_code\external\keypad\fnc_keyPad\operate_gates.sqf", _lever, 6, true, true, "", ""];

} else {s_player_gateActions = player addAction [format[("" + ("%1No gates around to operate") +""),_adminText], "", _lever, 6, false, true, "", ""];};

};

};

};

if (s_player_giveBaseOwnerAccess < 0) then {

s_player_giveBaseOwnerAccess = player addAction [format["%1Give all base owners (from flagpole) access to object/gate",_adminText], "dayz_code\external\keypad\fnc_keyPad\functions\give_gateAccess.sqf", _lever, 1, false, true, "", ""];

};

if (s_player_addGateAuthorization < 0) then {

s_player_addGateAuthorization = player addAction [format["%1Add Player UIDs to Grant Gate/Object Access",_adminText], "dayz_code\external\keypad\fnc_keyPad\enterCodeAdd.sqf", _lever, 1, false, true, "", ""];

};

if (s_player_removeGateAuthorization < 0) then {

s_player_removeGateAuthorization = player addaction [format[("" + ("%1Remove Player UIDs from Gate/Object Access") +""),_adminText],"dayz_code\external\keypad\fnc_keyPad\enterCodeRemove.sqf", _lever, 1, false, true, "", ""];

};

} else {

player removeAction s_player_giveBaseOwnerAccess;

s_player_giveBaseOwnerAccess = -1;

player removeAction s_player_gateActions;

s_player_gateActions = -1;

player removeAction s_player_addGateAuthorization;

s_player_addGateAuthorization = -1;

player removeAction s_player_removeGateAuthorization;

s_player_removeGateAuthorization = -1;

};

// Operate ROOFS

if ((typeOf(cursortarget) in _codePanels) && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) then {

_gates = nearestObjects [_lever, ["Land_Ind_Shed_01_main","Land_Ind_Shed_01_end","Land_Ind_SawMillPen"], BBFlagRadius];

if (s_player_roofToggle < 0) then {

if (typeOf(cursortarget) == "Infostand_2_EP1") then {

if (count _gates > 0) then {

s_player_roofToggle = player addAction [format[("" + ("%1Operate Roof Covers") +""),_adminText], "dayz_code\external\keypad\fnc_keyPad\operate_roofs.sqf", _lever, 6, false, true, "", ""];

} else {s_player_roofToggle = player addAction [format[("" + ("%1No roof covers around to operate") +""),_adminText], "", _lever, 6, false, true, "", ""];};

};

};

} else {

player removeAction s_player_roofToggle;

s_player_roofToggle = -1;

};

// Remove Object

if((typeOf(cursortarget) in allremovables)&& (_ownerID != "0") && (_hasToolbox || _baseBuildAdmin || _baseBuildLAdmin) && _canDo && !remProc && !procBuild && !removeObject) then {

if (s_player_deleteBuild < 0) then {

s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "dayz_code\actions\player_remove.sqf",cursorTarget, 1, false, true, "", ""];

};

} else {

player removeAction s_player_deleteBuild;

s_player_deleteBuild = -1;

};

// Disarm Booby Trap Action

if((cursortarget iskindof "Grave" && cursortarget distance player < 2.5) && (_ownerID != "0") && (_hasToolbox || _baseBuildAdmin || _baseBuildLAdmin) && _canDo && !remProc && !procBuild) then {

if (s_player_disarmBomb < 0) then {

s_player_disarmBomb = player addaction [format[("" + ("%1Disarm Bomb") +""),_adminText],"dayz_code\actions\player_disarmBomb.sqf","",1,true,true,"", ""];

};

} else {

player removeAction s_player_disarmBomb;

s_player_disarmBomb = -1;

};

//Light Menu

if((typeOf(cursortarget) == "Infostand_2_EP1") && (_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) then {

_nearestFlags = nearestObjects [_lever, [bBTypeOfFlag], BBFlagRadius];

_baseFlag = _nearestFlags select 0;

_barrels = nearestObjects [_baseFlag, ["Land_Fire_Barrel"], BBFlagRadius];//Makes sure there are barrels in range of the flag

_towers = nearestObjects [_baseFlag, ["Land_Ind_IlluminantTower"], BBFlagRadius];//Makes sure there are towers in range of the flag

if (count _barrels > 0 || count _towers >0) then {

if (s_player_bbLightMenu < 0) then {

s_player_bbLightMenu = player addAction [format[("" + ("%1Light Options") +""),_adminText], "dayz_code\actions\lights\lightMenu.sqf", _lever, 5, false, false, "", ""];

};

} else {

if (s_player_bbLightMenu < 0) then {

s_player_bbLightMenu = player addAction [format[("" + ("%1No Barrel/Tower Lights in Range of Flag") +""),_adminText], "", _lever, 5, false, true, "", ""];

};

};

} else {

player removeAction s_player_bbLightMenu;

s_player_bbLightMenu = -1;

};

//Zombie Shield

if ((typeOf(cursorTarget) == BBTypeOfZShield) &&(_authorizedGateCodes || _baseBuildAdmin) && !remProc && !procBuild) then {

if (s_player_giveBaseOwnerAccess > 0) then { //Temp fix to prevent players having more than the max allowed number of shield gens

player removeAction s_player_giveBaseOwnerAccess;

s_player_giveBaseOwnerAccess = -1;

};

if (BBEnableZShield == 1) then {

if (s_player_bbZombieShield_on < 0) then {

s_player_bbZombieShield_on = player addAction [format[("" + ("%1Zombie Shield On") +""),_adminText], "dayz_code\actions\shield\bbZombieShield.sqf", [_lever, true], 6, true, true, "", ""];

};

if (s_player_bbZombieShield_off < 0) then {

s_player_bbZombieShield_off = player addAction [format[("" + ("%1Zombie Shield Off") +""),_adminText], "dayz_code\actions\shield\bbZombieShield.sqf", [_lever, false], 6, false, true, "", ""];

};

} else {

if (s_player_bbZombieShield_on < 0) then {

s_player_bbZombieShield_on = player addAction [format[("" + ("%1Zombie Shields are disabled on this server") +""),_adminText], "", [], 6, false, true, "", ""];

};

player removeAction s_player_bbZombieShield_off;

s_player_bbZombieShield_off = -1;

};

} else {

player removeAction s_player_bbZombieShield_on;

s_player_bbZombieShield_on = -1;

player removeAction s_player_bbZombieShield_off;

s_player_bbZombieShield_off = -1;

};

//####----####----####---- Base Building 1.3 End ----####----####----####

// Allow Owner to lock and unlock vehicle

if(_player_lockUnlock_crtl) then {

if (s_player_lockUnlock_crtl < 0) then {

_hasKey = _ownerID in _temp_keys;

_oldOwner = (_ownerID == dayz_playerUID);

if(locked _cursorTarget) then {

if(_hasKey or _oldOwner) then {

_Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (parseNumber _ownerID))], 2, true, true, "", ""];

s_player_lockunlock set [count s_player_lockunlock,_Unlock];

s_player_lockUnlock_crtl = 1;

} else {

if(_hasHotwireKit) then {

_Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true, "", ""];

} else {

_Unlock = player addAction [format["%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 or _oldOwner) then {

_lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true, "", ""];

s_player_lockunlock set [count s_player_lockunlock,_lock];

s_player_lockUnlock_crtl = 1;

};

};

};

} else {

{player removeAction _x} forEach s_player_lockunlock;s_player_lockunlock = [];

s_player_lockUnlock_crtl = -1;

};

if(DZE_AllowForceSave) then {

//Allow player to force save

if((_isVehicle or _isTent) and !_isMan) then {

if (s_player_forceSave < 0) then {

s_player_forceSave = player addAction [format[localize "str_actions_save",_text], "\z\addons\dayz_code\actions\forcesave.sqf",_cursorTarget, 1, true, true, "", ""];

};

} else {

player removeAction s_player_forceSave;

s_player_forceSave = -1;

};

};

If(DZE_AllowCargoCheck) then {

if((_isVehicle or _isTent or _isnewstorage) and _isAlive and !_isMan and !locked _cursorTarget) then {

if (s_player_checkGear < 0) then {

s_player_checkGear = player addAction [localize "STR_EPOCH_PLAYER_CARGO", "\z\addons\dayz_code\actions\cargocheck.sqf",_cursorTarget, 1, true, true, "", ""];

};

} else {

player removeAction s_player_checkGear;

s_player_checkGear = -1;

};

};

//flip vehicle small vehicles by your self and all other vehicles with help nearby

if(_player_flipveh) then {

if (s_player_flipveh < 0) then {

s_player_flipveh = player addAction [format[localize "str_actions_flipveh",_text], "\z\addons\dayz_code\actions\player_flipvehicle.sqf",_cursorTarget, 1, true, true, "", ""];

};

} else {

player removeAction s_player_flipveh;

s_player_flipveh = -1;

};

//Allow player to fill jerrycan

if((_hasFuelE or _hasFuelBarrelE) and _isFuel) then {

if (s_player_fillfuel < 0) then {

s_player_fillfuel = player addAction [localize "str_actions_self_10", "\z\addons\dayz_code\actions\jerry_fill.sqf",[], 1, false, true, "", ""];

};

} else {

player removeAction s_player_fillfuel;

s_player_fillfuel = -1;

};

// logic vars for addactions

_player_butcher = false;

_player_studybody = false;

_player_SurrenderedGear = false;

// CURSOR TARGET NOT ALIVE

if (!_isAlive) then {

// Gut animal/zed

if((_isAnimal or _isZombie) and _hasKnife) then {

_isHarvested = _cursorTarget getVariable["meatHarvested",false];

if (!_isHarvested) then {

_player_butcher = true;

};

};

// Study body

if (_isMan and !_isZombie and !_isAnimal) then {

_player_studybody = true;

}

} else {

// unit alive

// gear access on surrendered player

if(_isMan and !_isZombie and !_isAnimal) then {

_isSurrendered = _cursorTarget getVariable ["DZE_Surrendered",false];

if (_isSurrendered) then {

_player_SurrenderedGear = true;

};

};

};

// Human Gut animal or zombie

if (_player_butcher) then {

if (s_player_butcher < 0) then {

if(_isZombie) then {

s_player_butcher = player addAction [localize "STR_EPOCH_ACTIONS_GUTZOM", "\z\addons\dayz_code\actions\gather_zparts.sqf",_cursorTarget, 0, true, true, "", ""];

} else {

s_player_butcher = player addAction [localize "str_actions_self_04", "\z\addons\dayz_code\actions\gather_meat.sqf",_cursorTarget, 3, true, true, "", ""];

};

};

} else {

player removeAction s_player_butcher;

s_player_butcher = -1;

};

// Study Body

if (_player_studybody) then {

if (s_player_studybody < 0) then {

s_player_studybody = player addAction [localize "str_action_studybody", "\z\addons\dayz_code\actions\study_body.sqf",_cursorTarget, 0, false, true, "",""];

};

} else {

player removeAction s_player_studybody;

s_player_studybody = -1;

};

//====================Nuke Bombe====================

if (cursorTarget == LAPTOP) then {

_lap = cursorTarget;

if (s_player_nuke < 0) then {

s_player_nuke = player addAction [("" + ("Set Off Nuke") +""),"Nuke\nuke_On.sqf",_lap, 5, false, true, "",""];

};

} else {

player removeAction s_player_nuke;

s_player_nuke = -1;

};

//====================Nuke Bombe====================

// logic vars

_player_cook = false;

_player_boil = false;

// CURSOR TARGET IS FIRE

if (inflamed _cursorTarget) then {

//Fireplace Actions check

if (_hasRawMeat) then {

_player_cook = true;

};

// Boil water

if (_hasbottleitem and _hastinitem) then {

_player_boil = true;

};

};

if (_player_SurrenderedGear) then {

if (s_player_SurrenderedGear < 0) then {

s_player_SurrenderedGear = player addAction [localize "STR_EPOCH_ACTION_GEAR", "\z\addons\dayz_code\actions\surrender_gear.sqf",_cursorTarget, 1, true, true, "", ""];

};

} else {

player removeAction s_player_SurrenderedGear;

s_player_SurrenderedGear = -1;

};

//Fireplace Actions check

if (_player_cook) then {

if (s_player_cook < 0) then {

s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true, "", ""];

};

} else {

player removeAction s_player_cook;

s_player_cook = -1;

};

// Boil water

if (_player_boil) then {

if (s_player_boil < 0) then {

s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true, "", ""];

};

} else {

player removeAction s_player_boil;

s_player_boil = -1;

};

if(_cursorTarget == dayz_hasFire) then {

if ((s_player_fireout < 0) and !(inflamed _cursorTarget) and (player distance _cursorTarget < 3)) then {

s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true, "",""];

};

} else {

player removeAction s_player_fireout;

s_player_fireout = -1;

};

//Packing my tent

if(_isTent and (player distance _cursorTarget < 3)) then {

if (_ownerID == dayz_characterID) then {

if (s_player_packtent < 0) then {

s_player_packtent = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true, "",""];

};

} else {

if(("ItemJerrycan" in _magazinesPlayer) and ("ItemMatchbox_DZE" in weapons player)) then {

if (s_player_packtent < 0) then {

s_player_packtent = player addAction [localize "STR_EPOCH_ACTIONS_DESTROYTENT", "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""];

};

};

};

} else {

player removeAction s_player_packtent;

s_player_packtent = -1;

};

//Allow owner to unlock vault

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

if (s_player_unlockvault < 0) then {

if(_typeOfCursorTarget in DZE_LockedStorage) then {

if(_ownerID == dayz_combination or _ownerID == dayz_playerUID) then {

_combi = player addAction [format["Open %1",_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["Unlock %1",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];

s_player_combi set [count s_player_combi,_combi];

};

s_player_unlockvault = 1;

} else {

if(_ownerID != dayz_combination and _ownerID != dayz_playerUID) then {

_combi = player addAction ["Re-Enter Combination", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];

s_player_combi set [count s_player_combi,_combi];

s_player_unlockvault = 1;

};

};

};

} else {

{player removeAction _x} forEach s_player_combi;s_player_combi = [];

s_player_unlockvault = -1;

};

//Allow owner to pack vault

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

if (s_player_lockvault < 0) then {

if(_ownerID == dayz_combination or _ownerID == dayz_playerUID) then {

s_player_lockvault = player addAction [format["Lock %1",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true, "",""];

};

};

if (s_player_packvault < 0 and (_ownerID == dayz_combination or _ownerID == dayz_playerUID)) then {

s_player_packvault = player addAction [format["Pack %1",_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 ["Recent Murders", "\z\addons\dayz_code\actions\list_playerDeaths.sqf",[], 7, false, true, "",""];

};

} else {

player removeAction s_player_information;

s_player_information = -1;

};

//Fuel Pump

if(_typeOfCursorTarget in dayz_fuelpumparray) then {

if (s_player_fuelauto < 0) then {

// check if Generator_DZ is running within 30 meters

_findNearestGens = nearestObjects [player, ["Generator_DZ"], 30];

_findNearestGen = [];

{

if (alive _x and (_x getVariable ["GeneratorRunning", false])) then {

_findNearestGen set [(count _findNearestGen),_x];

};

} foreach _findNearestGens;

_IsNearRunningGen = count (_findNearestGen);

// show that pump needs power if no generator nearby.

if(_IsNearRunningGen > 0) then {

s_player_fuelauto = player addAction ["Fill Vehicle", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true, "",""];

} else {

s_player_fuelauto = player addAction ["Needs Power", "",[], 0, false, true, "",""];

};

};

} else {

player removeAction s_player_fuelauto;

s_player_fuelauto = -1;

};

//Fuel Pump on truck

if(_typeOfCursorTarget in DZE_fueltruckarray and alive _cursorTarget) then {

if (s_player_fuelauto2 < 0) then {

// show that fuel truck pump needs power.

if(isEngineOn _cursorTarget) then {

s_player_fuelauto2 = player addAction ["Fill Vehicle", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",_cursorTarget, 0, false, true, "",""];

} else {

s_player_fuelauto2 = player addAction ["Needs Power", "",[], 0, false, true, "",""];

};

};

} else {

player removeAction s_player_fuelauto2;

s_player_fuelauto2 = -1;

};

// inplace upgrade tool

if ((_cursorTarget isKindOf "ModularItems") or (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") or (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {

if ((s_player_lastTarget select 0) != _cursorTarget) then {

if (s_player_upgrade_build > 0) then {

player removeAction s_player_upgrade_build;

s_player_upgrade_build = -1;

};

};

if (s_player_upgrade_build < 0) then {

// s_player_lastTarget = _cursorTarget;

s_player_lastTarget set [0,_cursorTarget];

s_player_upgrade_build = player addAction [format["Upgrade %1",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];

};

} else {

player removeAction s_player_upgrade_build;

s_player_upgrade_build = -1;

};

// downgrade system

if((_isDestructable or _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" or _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") and (DZE_Lock_Door == _ownerID)) then {

if ((s_player_lastTarget select 1) != _cursorTarget) then {

if (s_player_downgrade_build > 0) then {

player removeAction s_player_downgrade_build;

s_player_downgrade_build = -1;

};

};

if (s_player_downgrade_build < 0) then {

s_player_lastTarget set [1,_cursorTarget];

s_player_downgrade_build = player addAction [format["Remove Lock from %1",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];

};

} else {

player removeAction s_player_downgrade_build;

s_player_downgrade_build = -1;

};

// inplace maintenance tool

if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase" or _typeOfCursorTarget in DZE_ExtraMaintain) and (damage _cursorTarget >= 0.1)) 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["Maintain %1",_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 ["Stop Generator", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true, "",""];

} else {

// check if not filled and player has jerry.

if((_cursorTarget getVariable ["GeneratorFilled", false])) then {

s_player_fillgen = player addAction ["Start Generator", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];

} else {

if("ItemJerrycan" in _magazinesPlayer) then {

s_player_fillgen = player addAction ["Fill and Start Generator", "\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 ["Attach Straps", "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true, "",""];

} else {

s_player_towing = player addAction ["Detach Straps", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true, "",""];

};

};

} else {

player removeAction s_player_towing;

s_player_towing = -1;

};

*/

//Sleep

if(_isTent and _ownerID == dayz_characterID) then {

if ((s_player_sleep < 0) and (player distance _cursorTarget < 3)) then {

s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false, true, "",""];

};

} else {

player removeAction s_player_sleep;

s_player_sleep = -1;

};

//------------Take clothes------------

_clothesTaken = cursorTarget getVariable["clothesTaken",false];

if (_isMan and !_isAlive and !_isAnimal and !_clothesTaken) then {

if (s_player_clothes < 0) then {

s_player_clothes = player addAction [("")+("Take Clothes")+(""), "Scripts\takeclothes.sqf",cursorTarget, -10, false, true];

};

} else {

player removeAction s_player_clothes;

s_player_clothes = -1;

};

//------------Take clothes------------

//Repairing Vehicles

if ((dayz_myCursorTarget != _cursorTarget) and _isVehicle and !_isMan and _hasToolbox and (damage _cursorTarget < 1) and !_isDisallowRepair) then {

if (s_player_repair_crtl < 0) then {

dayz_myCursorTarget = _cursorTarget;

_menu = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_REPAIRV", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false, "",""];

_menu1 = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_SALVAGEV", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false, "",""];

s_player_repairActions set [count s_player_repairActions,_menu];

s_player_repairActions set [count s_player_repairActions,_menu1];

s_player_repair_crtl = 1;

} else {

{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = [];

s_player_repair_crtl = -1;

};

};

// All Traders

if (_isMan and !_isPZombie and _traderType in serverTraders) then {

if (s_player_parts_crtl < 0) then {

// get humanity

_humanity = player getVariable ["humanity",0];

_traderMenu = call compile format["menu_%1;",_traderType];

// diag_log ("TRADER = " + str(_traderMenu));

_low_high = "low";

_humanity_logic = false;

if((_traderMenu select 2) == "friendly") then {

_humanity_logic = (_humanity < -5000);

};

if((_traderMenu select 2) == "hostile") then {

_low_high = "high";

_humanity_logic = (_humanity > -5000);

};

if((_traderMenu select 2) == "hero") then {

_humanity_logic = (_humanity < 5000);

};

if(_humanity_logic) then {

_cancel = player addAction [format["Your humanity is too %1 this trader refuses to talk to you.",_low_high], "\z\addons\dayz_code\actions\trade_cancel.sqf",["na"], 0, true, false, "",""];

s_player_parts set [count s_player_parts,_cancel];

} else {

// Static Menu

{

//diag_log format["DEBUG TRADER: %1", _x];

_buy = player addAction [format["Trade %1 %2 for %3 %4",(_x select 3),(_x select 5),(_x select 2),(_x select 6)], "\z\addons\dayz_code\actions\trade_items_wo_db.sqf",[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4),(_x select 5),(_x select 6)], (_x select 7), true, true, "",""];

s_player_parts set [count s_player_parts,_buy];

} forEach (_traderMenu select 1);

// Database menu

_buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 99, true, false, "",""];

s_player_parts set [count s_player_parts,_buy];

// Add static metals trader options under sub menu

_metals_trader = player addAction [localize "STR_EPOCH_PLAYER_301", "\z\addons\dayz_code\actions\trade_metals.sqf",["na"], 0, true, false, "",""];

s_player_parts set [count s_player_parts,_metals_trader];

};

s_player_parts_crtl = 1;

};

} else {

{player removeAction _x} forEach s_player_parts;s_player_parts = [];

s_player_parts_crtl = -1;

};

if(dayz_tameDogs) then {

//Dog

if (_isDog and _isAlive and (_hasRawMeat) and _ownerID == "0" and player getVariable ["dogID", 0] == 0) then {

if (s_player_tamedog < 0) then {

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

};

} else {

player removeAction s_player_tamedog;

s_player_tamedog = -1;

};

if (_isDog and _ownerID == dayz_characterID and _isAlive) then {

_dogHandle = player getVariable ["dogID", 0];

if (s_player_feeddog < 0 and _hasRawMeat) then {

s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true,"",""];

};

if (s_player_waterdog < 0 and "ItemWaterbottle" in _magazinesPlayer) then {

s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true,"",""];

};

if (s_player_staydog < 0) then {

_lieDown = _dogHandle getFSMVariable "_actionLieDown";

if (_lieDown) then { _text = "str_actions_liedog"; } else { _text = "str_actions_sitdog"; };

s_player_staydog = player addAction [localize _text,"\z\addons\dayz_code\actions\dog\stay.sqf", _dogHandle, 5, false, true,"",""];

};

if (s_player_trackdog < 0) then {

s_player_trackdog = player addAction [localize "str_actions_trackdog","\z\addons\dayz_code\actions\dog\track.sqf", _dogHandle, 4, false, true,"",""];

};

if (s_player_barkdog < 0) then {

s_player_barkdog = player addAction [localize "str_actions_barkdog","\z\addons\dayz_code\actions\dog\speak.sqf", _cursorTarget, 3, false, true,"",""];

};

if (s_player_warndog < 0) then {

_warn = _dogHandle getFSMVariable "_watchDog";

if (_warn) then { _text = (localize "str_epoch_player_247"); _warn = false; } else { _text = (localize "str_epoch_player_248"); _warn = true; };

s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true,"",""];

};

if (s_player_followdog < 0) then {

s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true,"",""];

};

} else {

player removeAction s_player_feeddog;

s_player_feeddog = -1;

player removeAction s_player_waterdog;

s_player_waterdog = -1;

player removeAction s_player_staydog;

s_player_staydog = -1;

player removeAction s_player_trackdog;

s_player_trackdog = -1;

player removeAction s_player_barkdog;

s_player_barkdog = -1;

player removeAction s_player_warndog;

s_player_warndog = -1;

player removeAction s_player_followdog;

s_player_followdog = -1;

};

};

} else {

//Engineering

{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = [];

s_player_repair_crtl = -1;

{player removeAction _x} forEach s_player_combi;s_player_combi = [];

dayz_myCursorTarget = objNull;

s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];

{player removeAction _x} forEach s_player_parts;s_player_parts = [];

s_player_parts_crtl = -1;

{player removeAction _x} forEach s_player_lockunlock;s_player_lockunlock = [];

s_player_lockUnlock_crtl = -1;

player removeAction s_player_checkGear;

s_player_checkGear = -1;

player removeAction s_player_SurrenderedGear;

s_player_SurrenderedGear = -1;

//####----####----####---- Base Building 1.3 Start ----####----####----####

player removeAction s_player_getTargetUID;

s_player_getTargetUID = -1;

player removeAction s_player_giveBaseOwnerAccess;

s_player_giveBaseOwnerAccess = -1;

player removeAction s_player_gateActions;

s_player_gateActions = -1;

player removeAction s_player_roofToggle;

s_player_roofToggle = -1;

player removeAction s_player_addGateAuthorization;

s_player_addGateAuthorization = -1;

player removeAction s_player_removeGateAuthorization;

s_player_removeGateAuthorization = -1;

player removeAction s_player_disarmBomb;

s_player_disarmBomb = -1;

player removeAction s_player_bbZombieShield_on;

s_player_bbZombieShield_on = -1;

player removeAction s_player_bbZombieShield_off;

s_player_bbZombieShield_off = -1;

player removeAction s_player_inflameBarrels;

s_player_inflameBarrels = -1;

player removeAction s_player_deflameBarrels;

s_player_deflameBarrels = -1;

player removeAction s_player_towerLightsOn;

s_player_towerLightsOn = -1;

player removeAction s_player_towerLightsOff;

s_player_towerLightsOff = -1;

player removeAction s_player_bbLightMenu;

s_player_bbLightMenu = -1;

//####----####----####---- Base Building 1.3 End ----####----####----####

//Others

player removeAction s_player_forceSave;

s_player_forceSave = -1;

player removeAction s_player_flipveh;

s_player_flipveh = -1;

player removeAction s_player_sleep;

s_player_sleep = -1;

player removeAction s_player_deleteBuild;

s_player_deleteBuild = -1;

player removeAction s_player_butcher;

s_player_butcher = -1;

player removeAction s_player_cook;

s_player_cook = -1;

player removeAction s_player_boil;

s_player_boil = -1;

player removeAction s_player_fireout;

s_player_fireout = -1;

player removeAction s_player_packtent;

s_player_packtent = -1;

player removeAction s_player_fillfuel;

s_player_fillfuel = -1;

player removeAction s_player_studybody;

s_player_studybody = -1;

//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;

//------------Take Clothes------------

player removeAction s_player_clothes;

s_player_clothes = -1;

//------------Take Clothes------------

};

//Dog actions on player self

_dogHandle = player getVariable ["dogID", 0];

if (_dogHandle > 0) then {

_dog = _dogHandle getFSMVariable "_dog";

_ownerID = "0";

if (!isNull cursorTarget) then { _ownerID = cursorTarget getVariable ["CharacterID","0"]; };

if (_canDo and !_inVehicle and alive _dog and _ownerID != dayz_characterID) then {

if (s_player_movedog < 0) then {

s_player_movedog = player addAction [localize "str_actions_movedog", "\z\addons\dayz_code\actions\dog\move.sqf", player getVariable ["dogID", 0], 1, false, true, "", ""];

};

if (s_player_speeddog < 0) then {

_text = (localize "str_epoch_player_249");

_speed = 0;

if (_dog getVariable ["currentSpeed",1] == 0) then { _speed = 1; _text = (localize "str_epoch_player_250"); };

s_player_speeddog = player addAction [format[localize "str_actions_speeddog", _text], "\z\addons\dayz_code\actions\dog\speed.sqf",[player getVariable ["dogID", 0],_speed], 0, false, true, "", ""];

};

if (s_player_calldog < 0) then {

s_player_calldog = player addAction [localize "str_actions_calldog", "\z\addons\dayz_code\actions\dog\follow.sqf", [player getVariable ["dogID", 0], true], 2, false, true, "", ""];

};

};

} else {

player removeAction s_player_movedog;

s_player_movedog = -1;

player removeAction s_player_speeddog;

s_player_speeddog = -1;

player removeAction s_player_calldog;

s_player_calldog = -1;

};

 

Still with same problem.. Did everything like the tutorial, but i have no options on the laptop..

Any idea?

Link to comment
Share on other sites

HellWalker Do you like this?

if (cursorTarget == LAPTOP) then {
_lap = cursorTarget;
if (s_player_nuke < 0) then {
s_player_nuke = player addAction [("<t color=""#FF0000"">" + ("Set Off Nuke") +"</t>"),"Nuke\nuke_On.sqf",_lap, 5, false, true, "","];
};
} else {
player removeAction s_player_nuke;
s_player_nuke = -1;
};

Link to comment
Share on other sites

HellWalker Do you like this?

if (cursorTarget == LAPTOP) then {
_lap = cursorTarget;
if (s_player_nuke < 0) then {
s_player_nuke = player addAction [("<t color=""#FF0000"">" + ("Set Off Nuke") +"</t>"),"Nuke\nuke_On.sqf",_lap, 5, false, true, "","];
};
} else {
player removeAction s_player_nuke;
s_player_nuke = -1;
};

 

Yes, with some changes, because i'm using other scripts in my server. I don't think they are interfering in this nuke scripts, except for the fn_selfactions.sqf Because i'm using a custom selfactions, and not from the dayz_code.pbo this is the only difference. I'm uploading it in dropbox so you can also see my directories, the file i'm sending to you is inside the MPMission > DayZ_Epoch_24.Napf > 'link i gave to you'

 

These are my files: https://www.dropbox.com/sh/8jl0xil02umgb3b/AACiSIXJO7wyNp2S3tNX81XNa

 

I don't know what may be wrong.. The laptop is spawning, i just don't get the option to activate the script... Hope you can help me.

 

Thanks!

Link to comment
Share on other sites

Hey 

TayTayTheKiller

 

First i have to say: Nice work ! :)

Iam testing this atm... 

 

But i have a question.

The nuke appears, the explosion is there BUT, i dont can see the atomic cloud (this one like a mushroom you know )

I only see dark smoke at the explosion position. 

Could the reason be any video setting in my game or do i anything wrong ?

 

cheers

Link to comment
Share on other sites

and some issue with infi..for normal player

 

in rpt
1:47:33 "infiSTAR.de Log: $triker53rus (id) | BadVar: firstrun = "firstrun" (BANNED)   |DayZ Instance: 11|"

 

in publicvariable:

21.06.2014 01:47:26: $triker53rus (ip) uid- #10 "PVAHR_0_imscphjjkirp" = ["$triker53rus","id",[66,97,100,86,97,114,58,32,102,105,114,115,116,114,117,110,32,61,32,34,102,105,114,115,116,114,117,110,34],[66,65,78,78,69,68]]

 

for admins all god//

Link to comment
Share on other sites

Hey I haven't had much time to work on this.

I made a quick update that should fix the kick for normal players with infiSTAR AH

 

@Sp4rkY

 

How far away where you from the detonation one of the issues with it is the effects depend on your view distance if you are to far away you wont see it.

 

 

Also if your not getting the action off the laptop you need to white list 

 

s_player_nuke

 

in your antihack.

Link to comment
Share on other sites

Hi TayTay ;)

 

So i figured out what you have wrote... Now i can see the mushroom, but not so good like in your video. But that isn´t really the problem now, it is working and I can use this script now to figure out some new things ;)

 

-----------------------------------------------------------------------------

Other thing for your ToDo List (perhaps its useful for you ?!):

 

You want to setup an option for running this as an epoch event.

I figured out an other way:

 

Just comment out the "laptop" parts in init.sqf and comment out everything from the first line in server_nuke.sqf so this file starts with

if (isNil "firstRun") then {

Then go to your dayz_server.pbo. Create a new file "nuke.sqf" and move it to the modules folder. In this file only type this:

execVM "Nuke\server_Nuke.sqf";

Now you can run this like an epoch event.

 

There are many ways to play around with this script ;)

Link to comment
Share on other sites

Hi TayTay ;)

 

So i figured out what you have wrote... Now i can see the mushroom, but not so good like in your video. But that isn´t really the problem now, it is working and I can use this script now to figure out some new things ;)

 

-----------------------------------------------------------------------------

Other thing for your ToDo List (perhaps its useful for you ?!):

 

You want to setup an option for running this as an epoch event.

I figured out an other way:

 

Just comment out the "laptop" parts in init.sqf and comment out everything from the first line in server_nuke.sqf so this file starts with

if (isNil "firstRun") then {

Then go to your dayz_server.pbo. Create a new file "nuke.sqf" and move it to the modules folder. In this file only type this:

execVM "Nuke\server_Nuke.sqf";

Now you can run this like an epoch event.

 

There are many ways to play around with this script ;)

 

 

Do you have any idea why this script is not working for me?? please.

I just sayd my problem here 

 

Hope you can help me!

Link to comment
Share on other sites

Also if your not getting the action off the laptop you need to white list 

 

s_player_nuke

 

in your antihack.

 

Perhaps this could clear your problem ? I dont know, but i dont can get the option at the laptop too. Thats the reason, why i use other methods for testing.

Look at my second last post, there i was explaining, how to run this with epoch events. Just the same way you can get this running at scroll menu with an "addAction" or with AdminTools or something else other. You only have to comment out the laptop lines.

 

Try it this way:

Create a new file and put this in it:

sleep 5;
waituntil { alive player };
if ((getPlayerUID player) in ["xxxxxx"]) then {
sleep 10;
player addaction [("<t color=""#CAC9C8"">" + ("Nuke") +"</t>"),"Nuke\server_Nuke.sqf","",5,false,true,"",""];
};
Link to comment
Share on other sites

Hi TayTay ;)

 

So i figured out what you have wrote... Now i can see the mushroom, but not so good like in your video. But that isn´t really the problem now, it is working and I can use this script now to figure out some new things ;)

 

-----------------------------------------------------------------------------

Other thing for your ToDo List (perhaps its useful for you ?!):

 

You want to setup an option for running this as an epoch event.

I figured out an other way:

 

Just comment out the "laptop" parts in init.sqf and comment out everything from the first line in server_nuke.sqf so this file starts with

if (isNil "firstRun") then {

Then go to your dayz_server.pbo. Create a new file "nuke.sqf" and move it to the modules folder. In this file only type this:

execVM "Nuke\server_Nuke.sqf";

Now you can run this like an epoch event.

 

There are many ways to play around with this script ;)

 

Yeah my test version I just execVM the script form my admin tool.

When I get some time I'm going to look into adding some more stuff and when done ill knock up an event version and trigger version.

I Want to get a jet flying over just before it goes off next. Small thing I know lol but will be cool.

Link to comment
Share on other sites

Easy... no stress :)

but hey, perhaps we can help us each other... 

 

Actually i setup a function which create a marker at the map for the radiation area... :)

 

Can you tell me, how much time will the radiation area stay activ (the whole server running time or will it disappear after a bunch of minutes).

 

And another question: Is it possible to deactivate the geiger-counter sound ? When i go to the radiation zone, the geiger is starting clicking sounds (thats ok, but for me this sounds doesnt stop playing when i leave this area) I dont know why, but i have these clicking sounds forever since it starts. :) Would be great if there is a way to stop them from playing. (bad english, i know)

Link to comment
Share on other sites

Easy... no stress :)

but hey, perhaps we can help us each other... 

 

Actually i setup a function which create a marker at the map for the radiation area... :)

 

Can you tell me, how much time will the radiation area stay activ (the whole server running time or will it disappear after a bunch of minutes).

 

And another question: Is it possible to deactivate the geiger-counter sound ? When i go to the radiation zone, the geiger is starting clicking sounds (thats ok, but for me this sounds doesnt stop playing when i leave this area) I dont know why, but i have these clicking sounds forever since it starts. :) Would be great if there is a way to stop them from playing. (bad english, i know)

Odd they should stop when you leave. The trigger sets the effects to false when you leave the trigger area. Maybe I messed up in the version I posted I will check this out in a bit. (You can see this working in my vid)

 

I was thinking about a marker but in the end I thought that would be no fun because 90% of people would just avoid it and never see it.

 

Also the zone stays till restart. You could always get the server to delete the trigger after a set time if you don't want it to last  till next restart.

Link to comment
Share on other sites

Ok little update.

1. Added an option to enable a marker showing the radiation zone to all players on the map (including people who join after)

2. Added an option to enable a timer on the radiation zone so when the timer is up it will delete the zone/marker and reset all effects on players in the zone (damage will stay to buildings even for people who join after)

3. moved all settings & location options to one file.

4. renamed most variables to save hassle with BE filters.

 

Tested so far with infistar AH as admin and working, but I haven't tried as a normal player yet.

If you have used an old version you will need to look at the install guide again as the install is slightly different.

 

V0.4 is up for testing :)

Link to comment
Share on other sites

Hey guys, I just can't make it work.. i don't know why...

 

I've tried to make the step by step over and over again, but i can't get access to the notebook. 

I'm still with no options to select. I think it's something with the selfactions, but since i'm very noob to programming, i don't know what may be wrong.

 

Can anyone help me please?

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...