mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
Adding UserActions to players (CAManBase) is not efficient, because the
condition evaluates onEachFrame when you are "inside" that vehicle type.
Also admins usually want to add more custom actions to dead bodies
anyway.
https://community.bistudio.com/wiki/addAction#Syntax
This partially reverts 3aad4b6.
32 lines
1.7 KiB
Plaintext
32 lines
1.7 KiB
Plaintext
#define CAN_DO (!r_drag_sqf && !r_player_unconscious && getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder") != 1)
|
|
#define HAS_TOOLBOX ("ItemToolbox" in items player)
|
|
#define IN_VEHICLE (vehicle player != player)
|
|
#define IS_ALIVE (damage _object < 1)
|
|
#define IS_DAMAGED (damage _object > 0)
|
|
#define IS_PZOMBIE (player isKindOf "PZombie_VB")
|
|
|
|
/*
|
|
(['Butcher',this] call userActionConditions)
|
|
|
|
Return - must be true for action to show.
|
|
*/
|
|
|
|
private ["_action","_object","_show"];
|
|
|
|
_action = _this select 0;
|
|
_object = _this select 1;
|
|
|
|
_show = switch _action do {
|
|
case "Butcher": {!IS_ALIVE && !IN_VEHICLE && CAN_DO && !(_object getVariable["meatHarvested",false]) && !IS_PZOMBIE};
|
|
case "Drink": {!IN_VEHICLE && CAN_DO && !dayz_isSwimming};
|
|
case "PushPlane": {IS_ALIVE && !IN_VEHICLE && CAN_DO && count crew _object == 0 && !isEngineOn _object && !IS_PZOMBIE};
|
|
//case "Repair": {IS_ALIVE && !IN_VEHICLE && CAN_DO && _object != dayz_myCursorTarget && HAS_TOOLBOX};
|
|
//case "Salvage": {IS_ALIVE && !IN_VEHICLE && CAN_DO && _object != dayz_myCursorTarget && HAS_TOOLBOX && (DZE_salvageLocked or !locked _object)};
|
|
//Built Items (Fence,Gates)
|
|
//case "ObjectUpgrade": {CAN_DO && !IN_VEHICLE && !(_object getVariable["BuildLock",false])};
|
|
//case "ObjectMaintenance": {CAN_DO && !IN_VEHICLE && (_object getVariable["Maintenance",false] or IS_DAMAGED)};
|
|
//case "ObjectDisassembly": {CAN_DO && !IN_VEHICLE && HAS_TOOLBOX && !(_object getVariable["BuildLock",false]) && (((getPlayerUID player) in (_object getVariable["ownerArray",[]])) or (count (_object getVariable["ownerArray",[]]) == 0) or (typeOf _object in ["WoodenFence_1_foundation","WoodenGate_foundation"]))};
|
|
default {false};
|
|
};
|
|
|
|
_show |