From 3aad4b61e9c6072d51f2ce8628a915731c106c50 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Sun, 20 Nov 2016 19:47:10 -0500 Subject: [PATCH] Move some addActions to config UserActions Should improve client FPS while still allowing conditions and scripts to be customized. Some special vehicles like MV22, UH1Y, etc. have UserActions overwritten in their configs, so please let me know if you find any others that do not get the option to repair or salvage because UserActions is overwritten in their config. I think I got them all. Vanilla commits: https://github.com/DayZMod/DayZ/commit/a8c4238c0c1a35fbe8415b53c4ee220d28d18b92 https://github.com/DayZMod/DayZ/commit/350d73abe1e39f15b3b41d38400ce9ec2d0d74e8 --- SQF/dayz_code/Configs/CfgArma.hpp | 4 +- SQF/dayz_code/Configs/CfgVehicles/Animal.hpp | 46 +++++++--- .../Configs/CfgVehicles/Boat/RHIB.hpp | 5 ++ .../Configs/CfgVehicles/CfgVehicles.hpp | 22 ++++- .../Configs/CfgVehicles/CommonActions.hpp | 30 +++++++ .../Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp | 9 +- .../Configs/CfgVehicles/DZE/Prop_Defs.hpp | 2 +- .../Configs/CfgVehicles/Helicopter/CH53.hpp | 78 +++++++++++++++++ .../Configs/CfgVehicles/Helicopter/MI17.hpp | 5 +- .../Configs/CfgVehicles/Helicopter/UH1Y.hpp | 22 +++++ .../Configs/CfgVehicles/Plane/MV22.hpp | 6 ++ SQF/dayz_code/Configs/CfgVehicles/Skins.hpp | 18 +++- .../Configs/CfgVehicles/Zeds/Zeds.hpp | 17 ++++ SQF/dayz_code/actions/gather_meat.sqf | 42 +++++++--- SQF/dayz_code/actions/gather_zparts.sqf | 83 ------------------- SQF/dayz_code/actions/player_pushPlane.sqf | 5 +- SQF/dayz_code/actions/pzombie/pz_feed.sqf | 5 -- SQF/dayz_code/actions/repair_cancel.sqf | 1 - SQF/dayz_code/actions/repair_vehicle.sqf | 3 +- SQF/dayz_code/actions/salvage.sqf | 2 - SQF/dayz_code/actions/salvage_vehicle.sqf | 3 +- SQF/dayz_code/actions/study_body.sqf | 2 +- .../actions/userActionConditions.sqf | 22 +++++ SQF/dayz_code/compile/fn_selfActions.sqf | 80 +----------------- SQF/dayz_code/compile/local_gutObject.sqf | 10 ++- SQF/dayz_code/compile/local_gutObjectZ.sqf | 31 ------- SQF/dayz_code/init/compiles.sqf | 7 +- SQF/dayz_code/init/publicEH.sqf | 1 - SQF/dayz_code/init/variables.sqf | 5 -- SQF/dayz_code/stringtable.xml | 3 +- .../system/scheduler/sched_animals.sqf | 4 +- Server Files/Battleye/createvehicle.txt | 2 +- Server Files/Battleye/publicvariable.txt | 2 +- Server Files/Battleye/scripts.txt | 2 +- 34 files changed, 320 insertions(+), 259 deletions(-) create mode 100644 SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp delete mode 100644 SQF/dayz_code/actions/gather_zparts.sqf create mode 100644 SQF/dayz_code/actions/userActionConditions.sqf delete mode 100644 SQF/dayz_code/compile/local_gutObjectZ.sqf diff --git a/SQF/dayz_code/Configs/CfgArma.hpp b/SQF/dayz_code/Configs/CfgArma.hpp index 623343b72..a68f274f3 100644 --- a/SQF/dayz_code/Configs/CfgArma.hpp +++ b/SQF/dayz_code/Configs/CfgArma.hpp @@ -534,10 +534,10 @@ class CfgSurvival { rawfoodtype = "FoodchickenRaw"; }; class Cock: Hen {}; - class DZ_Fin: Default { + class Fin: Default { rawfoodtype = "FoodDogRaw"; }; - class DZ_Pastor: DZ_Fin {}; + class Pastor: Fin {}; class Rabbit: Default { yield = 2; rawfoodtype = "FoodrabbitRaw"; diff --git a/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp b/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp index 47f33f5f4..f9dd11273 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp @@ -1,15 +1,30 @@ - -class CAAnimalBase; -class animal_DZ: CAAnimalBase +class Animal; +class CAAnimalBase: Animal { class Eventhandlers { //local = "_z = _this select 0; if ((!isServer and !isNull _z) and {(side _z != civilian)}) exitWith { PVDZ_sec_atp = [ 'wrong side', player ]; publicVariableServer 'PVDZ_sec_atp'; deleteVehicle _z; }; if ((_this select 1) and isServer) exitWith { _z call sched_co_deleteVehicle; };"; local = "_z = _this select 0; if ((_this select 1) and isServer) exitWith { _z call sched_co_deleteVehicle; };"; }; + class UserActions + { + class Butcher + { + displayName = $STR_ACTIONS_SELF_04; + displayNameDefault = $STR_ACTIONS_SELF_04; + priority = 3; + radius = 3; + position = ""; + showWindow = 1; + onlyForPlayer = 1; + shortcut = ""; + condition = "(['Butcher',this] call userActionConditions)"; + statement = "this spawn player_butcher;"; + }; + }; }; -class DZ_Pastor : Pastor { +class Pastor: CAAnimalBase { scope = public; side = 1; model = "\ca\animals2\Dogs\Pastor\Pastor"; @@ -30,7 +45,7 @@ class DZ_Pastor : Pastor { class VariablesString {}; }; -class DZ_Fin : Fin { +class Fin: CAAnimalBase { scope = public; model = "\ca\animals2\Dogs\Fin\Fin"; displayName = "Fin"; @@ -40,7 +55,7 @@ class DZ_Fin : Fin { fsmFormation = ""; }; -class Cow: animal_DZ +class Cow: CAAnimalBase { scope = private; model = "\ca\animals2\cow\cow"; @@ -96,8 +111,10 @@ class Cow04: Cow01 displayName = "$STR_DN_COW04"; hiddenSelectionsTextures[] = {"ca\animals2\cow\data\cow4_co.PAA"}; }; +class Cow_Base_EP1 : Cow {}; +class Cow01_EP1 : Cow_Base_EP1 {}; -class Goat: animal_DZ +class Goat: CAAnimalBase { scope = public; model = "\ca\animals2\Goat\Goat"; @@ -121,8 +138,11 @@ class Goat: animal_DZ mat[] = {"ca\animals2\Goat\data\goat.rvmat","ca\animals2\Goat\data\W1_goat.rvmat","ca\animals2\Goat\data\W2_goat.rvmat"}; }; }; +class Goat_Base_EP1 : Goat {}; +class Goat01_EP1 : Goat_Base_EP1 {}; +class Goat02_EP1 : Goat01_EP1 {}; -class Rabbit: animal_DZ +class Rabbit: CAAnimalBase { scope = public; side = 3; @@ -156,7 +176,7 @@ class Rabbit: animal_DZ }; }; -class Sheep: animal_DZ +class Sheep: CAAnimalBase { scope = public; model = "\ca\animals2\Sheep\Sheep"; @@ -181,9 +201,11 @@ class Sheep: animal_DZ _sound3 = "sheep_03"; }; }; +class Sheep_Base_EP1 : Sheep {}; +class Sheep01_EP1 : Sheep_Base_EP1 {}; +class Sheep02_EP1 : Sheep01_EP1 {}; - -class WildBoar: animal_DZ +class WildBoar: CAAnimalBase { scope = public; model = "\ca\animals2\WildBoar\WildBoar"; @@ -203,3 +225,5 @@ class WildBoar: animal_DZ }; }; +class Hen : CAAnimalBase {}; +class Cock : Hen {}; diff --git a/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp b/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp index 1a18c0536..e6d0d345a 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp @@ -5,6 +5,11 @@ //class DefaultEventhandlers; class Ship : AllVehicles { + class UserActions + { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; + }; transportMaxMagazines = 2000; transportMaxWeapons = 200; transportMaxBackpacks = 40; diff --git a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp index 16ced11f2..12e695f0b 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp @@ -1,3 +1,4 @@ +#include "CommonActions.hpp" class WeaponFireGun; // External class reference class WeaponCloudsGun; // External class reference class WeaponFireMGun; // External class reference @@ -136,6 +137,11 @@ class CfgVehicles { class ViewOptics; }; }; + class UserActions + { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; + }; }; class Plane: Air { @@ -147,6 +153,12 @@ class CfgVehicles { class HitHull; }; class AnimationSources; + class UserActions + { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; + class PushPlane {ACTION_PUSH;}; + }; }; class Land; // External class reference class LandVehicle : Land @@ -179,6 +191,11 @@ class CfgVehicles { brightness = 0.5; }; }; + class UserActions + { + class Repair {ACTION_REPAIR; radius = 4;}; + class Salvage {ACTION_SALVAGE; radius = 4;}; + }; }; class Car: LandVehicle { class HitPoints @@ -440,9 +457,6 @@ class CfgVehicles { class Strategic; class NonStrategic; // class Land_Fire; - class Animal; - class Pastor; - class Fin; class BuiltItems; class Building; class ReammoBox; @@ -531,7 +545,7 @@ class CfgVehicles { #include "Bikes\TT650_Civ.hpp" #include "Bikes\M1030.hpp" //Boat - #include "Boat\RHIB.hpp" + #include "Boat\RHIB.hpp" //Must be first boat, includes Ship base class #include "Boat\PBX.hpp" #include "Boat\Fishing_Boat.hpp" #include "Boat\smallboat.hpp" diff --git a/SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp b/SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp new file mode 100644 index 000000000..527c0ff37 --- /dev/null +++ b/SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp @@ -0,0 +1,30 @@ +#define ACTION_REPAIR displayName = $STR_ACTIONS_REPAIRVEH;\ + displayNameDefault = $STR_ACTIONS_REPAIRVEH;\ + priority = 0;\ + position = "";\ + showWindow = 0;\ + onlyForPlayer = 1;\ + shortcut = "";\ + condition = "(['Repair',this] call userActionConditions)";\ + statement = "this call player_repairVehicle;" + +#define ACTION_SALVAGE displayName = $STR_ACTIONS_SALVAGEVEH;\ + displayNameDefault = $STR_ACTIONS_SALVAGEVEH;\ + priority = 0;\ + position = "";\ + showWindow = 0;\ + onlyForPlayer = 1;\ + shortcut = "";\ + condition = "(['Salvage',this] call userActionConditions)";\ + statement = "this call player_salvageVehicle;" + +#define ACTION_PUSH displayName = $STR_ACTIONS_PUSH;\ + displayNameDefault = $STR_ACTIONS_PUSH;\ + priority = 0;\ + radius = 8;\ + position = "";\ + showWindow = 0;\ + onlyForPlayer = 1;\ + shortcut = "";\ + condition = "(['PushPlane',this] call userActionConditions)";\ + statement = "this call player_pushPlane;" \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp b/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp index 5f9896bc5..d13bdfa81 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp @@ -105,13 +105,15 @@ class CSJ_GyroP: Plane }; class push { - displayName = "push aircraft"; + displayName = $STR_ACTIONS_PUSH; position = "osa leve smerovky"; onlyforplayer = 0; radius = 2; condition = "(Count (Crew this)==0) and ((getpos this select 2) <1) and (!isengineon this)"; statement = "this exec ""\CSJ_GyroAC\scripts\CSJ_moveGyro.sqs"" "; }; + class Repair {ACTION_REPAIR; radius = 4;}; + class Salvage {ACTION_SALVAGE; radius = 4;}; }; class DefaultEventhandlers; class EventHandlers: DefaultEventhandlers @@ -220,7 +222,10 @@ class CSJ_GyroC: Helicopter dammageFull[] = {}; class Reflectors{}; class AnimationSources: AnimationSources{}; - class UserActions{}; + class UserActions { + class Repair {ACTION_REPAIR; radius = 4;}; + class Salvage {ACTION_SALVAGE; radius = 4;}; + }; class DefaultEventhandlers; class EventHandlers: DefaultEventhandlers { diff --git a/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp b/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp index 9211222f1..ea5e94598 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp @@ -483,7 +483,7 @@ class M240Nest_DZ: USMC_WarfareBMGNest_M240 transportMaxBackpacks = 1; constructioncount = 10; removeoutput[] = {{"m240_nest_kit",1}}; - + class UserActions {delete Repair; delete Salvage;}; }; class Land_covering_hut_EP1; class CanvasHut_DZ: Land_covering_hut_EP1 diff --git a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp index 4ee4c1cea..5e043783e 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp @@ -33,4 +33,82 @@ class CH53_DZE : USEC_ch53_E { init = "MonitorVM = [_this select 0] execvm '\usec_ch53\scripts\ch53_monitor.sqf';MonitorSFXVM = [_this select 0] execvm '\usec_ch53\scripts\ch53_monitorSFX.sqf';"; killed = "_this spawn BIS_Effects_EH_Killed;"; }; + class UserActions { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; + class RampOpen { + displayName = "Open Ramp"; + position = "ramp action"; + showWindow = 0; + radius = 5; + condition = "this animationPhase ""ramp_bottom"" < 0.50;"; + statement = "if(((getPos this) select 2) < 2) then {this animate [""ramp_bottom"",1];this animate [""ramp_top"",1];} else {this animate [""ramp_bottom"",0.56];this animate [""ramp_top"",1];};"; + onlyforplayer = 0; + }; + class RampClose { + displayName = "Close Ramp"; + position = "ramp action"; + showWindow = 0; + radius = 5; + condition = "this animationPhase ""ramp_bottom"" > 0.50;"; + statement = "this animate [""ramp_bottom"",0];this animate [""ramp_top"",0];"; + onlyforplayer = 0; + }; + class LandingGear_down { + displayName = "Gear Down"; + position = "ramp action"; + showWindow = 0; + onlyforplayer = 0; + shortcut = "landGear"; + radius = 5; + condition = "(this animationPhase ""gear_nose_1"" > 0.9)&&(player == driver this)"; + statement = "[this] execvm ""\usec_ch53\scripts\ch53_geardown.sqf"""; + }; + class LandingGear_up { + displayName = "Gear Up"; + position = "ramp action"; + showWindow = 0; + onlyforplayer = 0; + shortcut = "landGear"; + radius = 5; + condition = "(this animationPhase ""gear_nose_1"" < 0.1)&&(player == driver this)"; + statement = "[this] execvm ""\usec_ch53\scripts\ch53_gearup.sqf"""; + }; + class StropDown { + displayName = "Attach Strop"; + position = "ramp action"; + showWindow = 0; + onlyforplayer = 0; + radius = 5; + condition = "(this animationPhase ""Strop1_Empty"" == 1)&&((this animationPhase 'cargo' == 1) AND (this animationPhase 'cargo2' == 1))&&(player == driver this)"; + statement = "[this,true] execvm ""\usec_ch53\scripts\ch53_strop.sqf"""; + }; + class StropUp { + displayName = "Detach Strop"; + position = "ramp action"; + showWindow = 0; + onlyforplayer = 0; + radius = 5; + condition = "(this animationPhase ""Strop1_Empty"" == 0)&&(player == driver this)"; + statement = "[this,false] execvm ""\usec_ch53\scripts\ch53_strop.sqf"""; + }; + class CollectCargo { + displayName = "Collect Cargo"; + position = "ramp action"; + showWindow = 1; + onlyforplayer = 0; + radius = 5; + condition = "(count(nearestObjects [(this modeltoworld [0,0,-10]), [""USEC_CargoContainer1"",""USEC_CargoContainer2""], 6])>0) and (this animationPhase 'Strop1_Empty' == 0) and (this animationPhase 'cargo' == 1);"; + statement = "[this] execvm ""\usec_ch53\scripts\ch53_cargo.sqf"";"; + }; + class DetachCargo { + displayName = "Detach Cargo"; + position = "ramp action"; + showWindow = 1; + onlyforplayer = 0; + radius = 5; + condition = "((this animationPhase 'cargo' == 0) OR (this animationPhase 'cargo2' == 0));"; + statement = "[this] execvm ""\usec_ch53\scripts\ch53_cargodrop.sqf"";"; + }; + }; }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp index 221a47cc0..64ee280ac 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp @@ -295,6 +295,8 @@ class Mi171Sh_CZ_EP1_DZ: Mi17_base { }; class UserActions { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; class HUDoff { displayName = $STR_AM_HUDON; displayNameDefault = $STR_AM_HUDON; @@ -303,8 +305,7 @@ class Mi171Sh_CZ_EP1_DZ: Mi17_base { onlyForPlayer = 1; condition = "(player==driver this)and(this animationphase ""HUDAction"" !=0)"; statement = "this animate [""HUDAction"",0];this animate [""HUDaction_Hide"",0]"; - }; - + }; class HUDon { displayName = $STR_AM_HUDOFF; displayNameDefault = $STR_AM_HUDOFF; diff --git a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp index a351f948c..8a7eb36a1 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp @@ -88,6 +88,28 @@ class UH1Y_DZ: UH1_Base { magazines[] = {"2000Rnd_762x51_M134"}; }; };*/ + class UserActions { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; + class HUDoff { + displayName = $STR_AM_HUDON; + displayNameDefault = $STR_AM_HUDON; + position = "zamerny"; + radius = 1; + onlyForPlayer = 1; + condition = "(player==driver this)and(this animationphase ""HUDAction"" !=1)"; + statement = "this animate [""HUDAction"",1];this animate [""HUDAction_1"",1]"; + }; + class HUDon { + displayName = $STR_AM_HUDOFF; + displayNameDefault = $STR_AM_HUDOFF; + position = "zamerny"; + radius = 1; + onlyForPlayer = 1; + condition = "(player==driver this)and(this animationphase ""HUDAction"" !=0)"; + statement = "this animate [""HUDAction"",0];this animate [""HUDAction_1"",0]"; + }; + }; }; class UH1Y_DZE: UH1Y_DZ { class Turrets : Turrets { diff --git a/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp b/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp index 45930879f..e5ad33626 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp @@ -14,4 +14,10 @@ class MV22_DZ : MV22 { transportMaxMagazines = 400; transportmaxbackpacks = 10; fuelCapacity = 6513; + class UserActions + { + class Repair {ACTION_REPAIR; radius = 8;}; + class Salvage {ACTION_SALVAGE; radius = 8;}; + class PushPlane {ACTION_PUSH;}; + }; }; diff --git a/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp b/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp index c41d186d4..503e3dfb6 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp @@ -1,6 +1,6 @@ class Man; -class CAManBase: Man +class CAManBase: Man //Covers all custom Epoch skins { class TalkTopics; class HitPoints @@ -8,6 +8,22 @@ class CAManBase: Man class HitHead; class HitBody; }; + class UserActions + { + class StudyBody + { + displayName = $STR_ACTION_STUDYBODY; + displayNameDefault = $STR_ACTION_STUDYBODY; + priority = 0; + radius = 3; + position = ""; + showWindow = 0; + onlyForPlayer = 1; + shortcut = ""; + condition = "(['StudyBody',this] call userActionConditions)"; + statement = "this call player_studyBody;"; + }; + }; }; class Civilian: CAManBase { diff --git a/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp b/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp index 2e37f794a..d79ee2514 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp @@ -57,6 +57,23 @@ class zZombie_Base : Zed_Base { local = "_z = _this select 0; if (!(_this select 1)) exitWith {}; if (isServer) exitWith { _z call sched_co_deleteVehicle; }; [(position _z), _z, true] execFSM '\z\AddOns\dayz_code\system\zombie_agent.fsm';"; }; + class UserActions + { + class Butcher + { + displayName = $STR_EPOCH_ACTIONS_GUTZOM; + displayNameDefault = $STR_EPOCH_ACTIONS_GUTZOM; + priority = 0; + radius = 3; + position = ""; + showWindow = 1; + onlyForPlayer = 1; + shortcut = ""; + condition = "(['Butcher',this] call userActionConditions)"; + statement = "this spawn player_butcher;"; + }; + }; + class HitPoints { class HitHead { armor = 0.1; diff --git a/SQF/dayz_code/actions/gather_meat.sqf b/SQF/dayz_code/actions/gather_meat.sqf index be7165281..3fbb8fa5f 100644 --- a/SQF/dayz_code/actions/gather_meat.sqf +++ b/SQF/dayz_code/actions/gather_meat.sqf @@ -1,17 +1,21 @@ -private ["_item","_type","_hasHarvested","_config","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_dis","_sfx","_sharpnessRemaining","_qty","_chance","_string"]; -if (dayz_actionInProgress) exitWith {localize "str_epoch_player_29" call dayz_rollingMessages;}; +private ["_item","_type","_hasHarvested","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_dis","_sfx","_sharpnessRemaining","_qty","_chance","_string","_isZombie","_humanity"]; + +_isZombie = _this isKindOf "zZombie_base"; +if (dayz_actionInProgress) exitWith { + if (_isZombie) then { + localize "str_epoch_player_31" call dayz_rollingMessages; + } else { + localize "str_epoch_player_29" call dayz_rollingMessages; + }; +}; dayz_actionInProgress = true; -_item = _this select 3; +_item = _this; _type = typeOf _item; _hasHarvested = _item getVariable["meatHarvested",false]; -_config = configFile >> "CfgSurvival" >> "Meat" >> _type; _knifeArray = []; -player removeAction s_player_butcher; -s_player_butcher = -1; - _PlayerNear = {isPlayer _x} count ((getPosATL _item) nearEntities ["CAManBase", 10]) > 1; if (_PlayerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessages; dayz_actionInProgress = false;}; @@ -22,8 +26,14 @@ if (_PlayerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessag }; } count Dayz_Gutting; -if ((count _knifeArray) < 1) exitWith { localize "str_cannotgut" call dayz_rollingMessages; dayz_actionInProgress = false; }; - +if ((count _knifeArray) < 1) exitWith { + if (_isZombie) then { + format[localize "str_missing_to_do_this",localize "STR_EQUIP_NAME_4"] call dayz_rollingMessages; + } else { + localize "str_cannotgut" call dayz_rollingMessages; + }; + dayz_actionInProgress = false; +}; if ((count _knifeArray > 0) and !_hasHarvested) then { private "_qty"; @@ -32,7 +42,7 @@ if ((count _knifeArray > 0) and !_hasHarvested) then { _activeKnife = _knifeArray call BIS_fnc_selectRandom; //Get Animal Type - _isListed = isClass _config; + _isListed = isClass (configFile >> "CfgSurvival" >> "Meat" >> _type); _text = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); player playActionNow "Medic"; @@ -46,7 +56,7 @@ if ((count _knifeArray > 0) and !_hasHarvested) then { _item setVariable ["meatHarvested",true,true]; - _qty = if (_isListed) then {getNumber (_config >> "yield")} else {2}; + _qty = if (_isListed) then {getNumber (configFile >> "CfgSurvival" >> "Meat" >> _type >> "yield")} else {2}; if (_activeKnife == "ItemKnifeBlunt") then { _qty = round(_qty / 2); }; if (local _item) then { @@ -83,7 +93,15 @@ if ((count _knifeArray > 0) and !_hasHarvested) then { }; uiSleep 6; - _string = format[localize "str_success_gutted_animal",_text,_qty]; + if (_isZombie) then { + // Reduce humanity for gutting zeds + _humanity = player getVariable ["humanity",0]; + _humanity = _humanity - 10; + player setVariable ["humanity",_humanity,true]; + _string = format[localize "str_success_gutted_zombie",_text]; //%1 has been gutted, zombie parts are now on the carcass + } else { + _string = format[localize "str_success_gutted_animal",_text,_qty]; + }; closeDialog 0; uiSleep 0.02; _string call dayz_rollingMessages; diff --git a/SQF/dayz_code/actions/gather_zparts.sqf b/SQF/dayz_code/actions/gather_zparts.sqf deleted file mode 100644 index 17958140a..000000000 --- a/SQF/dayz_code/actions/gather_zparts.sqf +++ /dev/null @@ -1,83 +0,0 @@ -private ["_item","_type","_hasHarvested","_config","_knifeArray","_playerNear","_isListed","_activeKnife","_text","_sharpnessRemaining","_qty","_chance","_string"]; -if (dayz_actionInProgress) exitWith {localize "str_epoch_player_31" call dayz_rollingMessages;}; -dayz_actionInProgress = true; - -_item = _this select 3; -_type = typeOf _item; -_hasHarvested = _item getVariable ["meatHarvested",false]; -//_config = configFile >> "CfgSurvival" >> "Meat" >> _type; -_knifeArray = []; -player removeAction s_player_butcher; -s_player_butcher = -1; - -_playerNear = {isPlayer _x} count ((getPosATL _item) nearEntities ["CAManBase", 10]) > 1; -if (_playerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessages; dayz_actionInProgress = false;}; - -//Count how many active tools the player has -{ - if (_x in items player) then {_knifeArray set [count _knifeArray, _x];}; -} count Dayz_Gutting; - -if ((count _knifeArray) < 1) exitWith {format[localize "str_missing_to_do_this",localize "STR_EQUIP_NAME_4"] call dayz_rollingMessages; dayz_actionInProgress = false; }; - -if ((count _knifeArray > 0) && !_hasHarvested) then { - private "_qty"; - - //Select random can from array - _activeKnife = _knifeArray call BIS_fnc_selectRandom; - - //Get Zombie Type - //_isListed = isClass _config; - _text = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); - - player playActionNow "Medic"; - [player,"gut",0,false,10] call dayz_zombieSpeak; - [player,10,true,(getPosATL player)] call player_alertZombies; - ["Working",0,[20,40,15,0]] call dayz_NutritionSystem; // Added Nutrition-Factor for work - - _item setVariable ["meatHarvested",true,true]; - - _qty = 2; //not used for gutting zombies - if (_activeKnife == "ItemKnifeBlunt") then { _qty = round(_qty / 2); }; - - if (local _item) then { - [_item,_qty] spawn local_gutObjectZ; //leave as spawn (sleeping in loops will work but can freeze the script) - } else { - PVDZE_plr_GutBodyZ = [_item,_qty]; - publicVariable "PVDZE_plr_GutBodyZ"; - }; - - if (dayz_knifeDulling) then { - _sharpnessRemaining = getText (configFile >> "cfgWeapons" >> _activeKnife >> "sharpnessRemaining"); - switch _activeKnife do { - case "ItemKnife" : { - //_chance = getNumber (configFile >> "cfgWeapons" >> _activeKnife >> "chance"); - if ([0.2] call fn_chance) then { - player removeWeapon _activeKnife; - player addWeapon _sharpnessRemaining; - - //systemChat (localize "str_info_bluntknife"); - localize "str_info_bluntknife" call dayz_rollingMessages; - }; - }; - case "ItemKnifeBlunt" : { - //do nothing - }; - default { - player removeWeapon _activeKnife; - player addWeapon _sharpnessRemaining; - }; - }; - }; - // Reduce humanity for gutting zeds - _humanity = player getVariable ["humanity",0]; - _humanity = _humanity - 10; - player setVariable ["humanity",_humanity,true]; - - uiSleep 6; - _string = format[localize "str_success_gutted_zombie",_text]; //%1 has been gutted, zombie parts are now on the carcass - closeDialog 0; - uiSleep 0.02; - _string call dayz_rollingMessages; -}; -dayz_actionInProgress = false; \ No newline at end of file diff --git a/SQF/dayz_code/actions/player_pushPlane.sqf b/SQF/dayz_code/actions/player_pushPlane.sqf index 5316e2411..48ad16fdd 100644 --- a/SQF/dayz_code/actions/player_pushPlane.sqf +++ b/SQF/dayz_code/actions/player_pushPlane.sqf @@ -1,8 +1,5 @@ private ["_dir","_nearPlayers","_object","_speed","_vel"]; -_object = _this select 3; - -player removeAction s_player_pushPlane; -s_player_pushPlane = -1; +_object = _this; if (!local _object) exitWith { localize "str_actions_pilot_seat" call dayz_rollingMessages; diff --git a/SQF/dayz_code/actions/pzombie/pz_feed.sqf b/SQF/dayz_code/actions/pzombie/pz_feed.sqf index 69a23246d..db005e413 100644 --- a/SQF/dayz_code/actions/pzombie/pz_feed.sqf +++ b/SQF/dayz_code/actions/pzombie/pz_feed.sqf @@ -4,9 +4,6 @@ _item = _this select 3; disableSerialization; -player removeAction s_player_butcher; -s_player_butcher = 1; - if !(alive _item) then { _rnd = (round(random 4)) + 1; @@ -94,5 +91,3 @@ if !(alive _item) then { format[localize "str_player_consumed",getText(configFile >> "CfgVehicles" >> _animalType >> "displayName")] call dayz_rollingMessages; player switchmove ""; }; - -s_player_butcher = -1; diff --git a/SQF/dayz_code/actions/repair_cancel.sqf b/SQF/dayz_code/actions/repair_cancel.sqf index 7cd6319c5..54a347f6e 100644 --- a/SQF/dayz_code/actions/repair_cancel.sqf +++ b/SQF/dayz_code/actions/repair_cancel.sqf @@ -1,3 +1,2 @@ {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = []; -s_player_repair_crtl = -1; dayz_myCursorTarget = objNull; \ No newline at end of file diff --git a/SQF/dayz_code/actions/repair_vehicle.sqf b/SQF/dayz_code/actions/repair_vehicle.sqf index a2ddf688d..af00b62e7 100644 --- a/SQF/dayz_code/actions/repair_vehicle.sqf +++ b/SQF/dayz_code/actions/repair_vehicle.sqf @@ -1,6 +1,6 @@ private ["_part","_cancel","_color","_string","_handle","_damage","_cmpt","_vehicle","_hitpoints","_damagePercent","_configVeh"]; -_vehicle = _this select 3; +_vehicle = _this; {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = []; dayz_myCursorTarget = _vehicle; @@ -39,5 +39,4 @@ if (count _hitpoints > 0) then { // Localized in A2OA\Expansion\dta\languagecore _cancel = dayz_myCursorTarget addAction [localize "str_action_cancel_action", "\z\addons\dayz_code\actions\repair_cancel.sqf","repair", 0, true, false]; s_player_repairActions set [count s_player_repairActions,_cancel]; - s_player_repair_crtl = 1; }; \ No newline at end of file diff --git a/SQF/dayz_code/actions/salvage.sqf b/SQF/dayz_code/actions/salvage.sqf index cdbe3cb8a..f7d653812 100644 --- a/SQF/dayz_code/actions/salvage.sqf +++ b/SQF/dayz_code/actions/salvage.sqf @@ -19,7 +19,6 @@ _namePart = getText(configFile >> "cfgMagazines" >> _part >> "displayName"); {_vehicle removeAction _x} count s_player_repairActions; s_player_repairActions = []; -s_player_repair_crtl = 1; if (_hasToolbox) then { player playActionNow "Medic"; @@ -94,7 +93,6 @@ if (_hasToolbox) then { }; dayz_myCursorTarget = objNull; -s_player_repair_crtl = -1; dayz_salvageInProgress = false; //adding melee mags back if needed diff --git a/SQF/dayz_code/actions/salvage_vehicle.sqf b/SQF/dayz_code/actions/salvage_vehicle.sqf index 9894de69d..f7c6cce30 100644 --- a/SQF/dayz_code/actions/salvage_vehicle.sqf +++ b/SQF/dayz_code/actions/salvage_vehicle.sqf @@ -1,7 +1,7 @@ private ["_part","_color","_vehicle","_PlayerNear","_hitpoints","_isATV","_is6WheelType","_HasNoGlassKind", "_6WheelTypeArray","_NoGlassArray","_NoExtraWheelsArray","_RemovedPartsArray","_damage","_cmpt","_configVeh","_damagePercent","_string","_handle","_cancel","_type"]; -_vehicle = _this select 3; +_vehicle = _this; {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = []; _PlayerNear = {isPlayer _x} count ((getPosATL _vehicle) nearEntities ["CAManBase", 10]) > 1; @@ -73,5 +73,4 @@ if (count _hitpoints > 0 ) then { // Localized in A2OA\Expansion\dta\languagecore _cancel = dayz_myCursorTarget addAction [localize "str_action_cancel_action", "\z\addons\dayz_code\actions\repair_cancel.sqf","repair", 0, true, false]; s_player_repairActions set [count s_player_repairActions,_cancel]; - s_player_repair_crtl = 1; }; \ No newline at end of file diff --git a/SQF/dayz_code/actions/study_body.sqf b/SQF/dayz_code/actions/study_body.sqf index a664c047c..dcf5415fb 100644 --- a/SQF/dayz_code/actions/study_body.sqf +++ b/SQF/dayz_code/actions/study_body.sqf @@ -1,6 +1,6 @@ private["_body","_name","_method","_methodStr","_message","_killingBlow"]; -_body = _this select 3; +_body = _this; _name = _body getVariable["bodyName","unknown"]; _method = _body getVariable["deathType","unknown"]; _methodStr = localize format ["str_death_%1",_method]; diff --git a/SQF/dayz_code/actions/userActionConditions.sqf b/SQF/dayz_code/actions/userActionConditions.sqf new file mode 100644 index 000000000..976176889 --- /dev/null +++ b/SQF/dayz_code/actions/userActionConditions.sqf @@ -0,0 +1,22 @@ +#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_BIKE (_object isKindOf "Bicycle") +#define IS_PZOMBIE (player isKindOf "PZombie_VB") + +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 "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 && !IS_BIKE && (DZE_salvageLocked or !locked _object)}; + case "StudyBody": {!IS_ALIVE && !IN_VEHICLE && !(_object isKindOf "zZombie_base")}; + default {false}; +}; + +_show \ No newline at end of file diff --git a/SQF/dayz_code/compile/fn_selfActions.sqf b/SQF/dayz_code/compile/fn_selfActions.sqf index 1019fbb0e..77155132e 100644 --- a/SQF/dayz_code/compile/fn_selfActions.sqf +++ b/SQF/dayz_code/compile/fn_selfActions.sqf @@ -14,7 +14,7 @@ private ["_canPickLight","_text","_dir","_canDoThis","_w2m","_bb","_waterHoles", "_isModular","_isModularDoor","_isHouse","_isGate","_isFence","_isLockableGate","_isUnlocked","_isOpen","_isClosed","_ownerArray","_ownerBuildLock", "_ownerPID","_speed","_dog","_vehicle","_inVehicle","_cursorTarget","_primaryWeapon","_currentWeapon","_magazinesPlayer","_onLadder","_canDo", "_nearLight","_vehicleOwnerID","_hasHotwireKit","_isPZombie","_dogHandle","_allowedDistance","_id","_upgrade","_weaponsPlayer","_hasCrowbar", -"_isPlane","_allowed","_hasAccess","_uid"]; +"_allowed","_hasAccess","_uid"]; _vehicle = vehicle player; _inVehicle = (_vehicle != player); @@ -238,12 +238,10 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur _typeOfCursorTarget = typeOf _cursorTarget; _isVehicle = _cursorTarget isKindOf "AllVehicles"; _isBicycle = _cursorTarget isKindOf "Bicycle"; - _isPlane = _cursorTarget isKindOf "Plane"; _isMan = _cursorTarget isKindOf "Man"; _isAnimal = _cursorTarget isKindOf "Animal"; _isZombie = _cursorTarget isKindOf "zZombie_base"; _isDestructable = _cursorTarget isKindOf "BuiltItems"; - _isHarvested = _cursorTarget getVariable["meatHarvested",false]; _isGenerator = _cursorTarget isKindOf "Generator_DZ"; //_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"]; //Checked in player_flipvehicle _isFuel = false; @@ -273,7 +271,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur }; _isDisallowRefuel = _typeOfCursorTarget in ["M240Nest_DZ","MMT_Civ","MMT_USMC","Old_bike_TK_CIV_EP1","Old_bike_TK_INS_EP1"]; - _isDog = (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin"); + _isDog = (_cursorTarget isKindOf "Pastor" || _cursorTarget isKindOf "Fin"); _isModular = _cursorTarget isKindOf "ModularItems"; _isModularDoor = _typeOfCursorTarget in ["Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","CinderWallDoor_DZ","CinderWallDoorSmall_DZ"]; _player_deleteBuild = false; @@ -301,15 +299,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur s_player_flipveh = -1; }; - if (_isPlane && {_isAlive} && {count (crew _cursorTarget) == 0}) then { - if (s_player_pushPlane < 0) then { - s_player_pushPlane = player addAction [format[localize "str_actions_push",_text], "\z\addons\dayz_code\actions\player_pushPlane.sqf",_cursorTarget,1,true,true]; - }; - } else { - player removeAction s_player_pushPlane; - s_player_pushPlane = -1; - }; - //Allow player to fill Fuel can if (_hasEmptyFuelCan && {_isFuel} && {!a_player_jerryfilling} && {_isAlive}) then { if (s_player_fillfuel < 0) then { @@ -375,27 +364,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur s_player_siphonfuel = -1; }; - //Harvested - if (!_isAlive && (_isAnimal or _isZombie) && !_isHarvested) then { - //_hasknife = {_x in ["ItemKnife","ItemKnife5","ItemKnife4","ItemKnife3","ItemKnife2","ItemKnifeBlunt"]} count _itemsPlayer > 0; - //make sure the player has a knife - //if (_hasknife) 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; - //}; - } else { - player removeAction s_player_butcher; - s_player_butcher = -1; - }; - //Fireplace Actions check if ((_cursorTarget call isInflamed) or (inflamed _cursorTarget)) then { _hasRawMeat = {_x in Dayz_meatraw} count _magazinesPlayer > 0; @@ -526,16 +494,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur player removeAction s_player_sleep; s_player_sleep = -1; }; - - //Study Body - if (_isMan && {!_isAlive} && {!_isZombie} && {!_isAnimal}) 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; - }; /* //Carbomb _hasCarBomb = "ItemCarBomb" in _magazinesPlayer; @@ -548,30 +506,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur s_player_attach_bomb = -1; }; */ - //Repairing Vehicles - if (_isVehicle && {!_isMan} && {dayz_myCursorTarget != _cursorTarget} && {_hasToolbox} && {damage _cursorTarget < 1} && {_typeOfCursorTarget != "M240Nest_DZ"}) then { - if (s_player_repair_crtl < 0) then { - dayz_myCursorTarget = _cursorTarget; - _menu = dayz_myCursorTarget addAction [localize "str_actions_repairveh", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false]; - if (!_isBicycle) then { //Bike wheels should not give full size tires. Also model does not update to show removed wheels. - if (!DZE_salvageLocked) then { - if (!locked _cursorTarget) then { - _menu1 = dayz_myCursorTarget addAction [localize "str_actions_salvageveh", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false]; - s_player_repairActions set [count s_player_repairActions,_menu1]; - }; - } else { - _menu1 = dayz_myCursorTarget addAction [localize "str_actions_salvageveh", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false]; - s_player_repairActions set [count s_player_repairActions,_menu1]; - }; - }; - s_player_repairActions set [count s_player_repairActions,_menu]; - s_player_repair_crtl = 1; - } else { - {dayz_myCursorTarget removeAction _x} forEach s_player_repairActions; - s_player_repairActions = []; - s_player_repair_crtl = -1; - }; - }; /* //Vanilla base building currently not used in Epoch // House locking and unlocking _isHouse = _typeOfCursorTarget in ["SurvivorWorkshopAStage5", "SurvivorWorkshopBStage5", "SurvivorWorkshopCStage5"]; @@ -1090,20 +1024,12 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur s_player_plot_take_ownership = -1; player removeAction s_player_plotManagement; s_player_plotManagement = -1; - {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = []; - player removeAction s_player_repair_crtl; - s_player_repair_crtl = -1; - dayz_myCursorTarget = objNull; player removeAction s_player_flipveh; s_player_flipveh = -1; - player removeAction s_player_pushPlane; - s_player_pushPlane = -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; @@ -1116,8 +1042,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur s_player_packtentinfected = -1; player removeAction s_player_fillfuel; s_player_fillfuel = -1; - player removeAction s_player_studybody; - s_player_studybody = -1; //fuel player removeAction s_player_fillfuel210; s_player_fillfuel210 = -1; diff --git a/SQF/dayz_code/compile/local_gutObject.sqf b/SQF/dayz_code/compile/local_gutObject.sqf index b00163d2c..d4a50f6b7 100644 --- a/SQF/dayz_code/compile/local_gutObject.sqf +++ b/SQF/dayz_code/compile/local_gutObject.sqf @@ -1,6 +1,14 @@ +private ["_amount","_animalbody","_rawfoodtype","_qty"]; + _animalbody = _this select 0; _qty = _this select 1; -_rawfoodtype = getText (configFile >> "CfgSurvival" >> "Meat" >> typeOf _animalbody >> "rawfoodtype"); + +if (_animalbody isKindOf "zZombie_base") then { + _qty = 1; + _rawfoodtype = "ItemZombieParts"; +} else { + _rawfoodtype = getText (configFile >> "CfgSurvival" >> "Meat" >> typeOf _animalbody >> "rawfoodtype"); +}; if (local _animalbody) then { for "_i" from 1 to _qty do { diff --git a/SQF/dayz_code/compile/local_gutObjectZ.sqf b/SQF/dayz_code/compile/local_gutObjectZ.sqf deleted file mode 100644 index 223a83452..000000000 --- a/SQF/dayz_code/compile/local_gutObjectZ.sqf +++ /dev/null @@ -1,31 +0,0 @@ -private "_zombiebody"; -_zombiebody = _this select 0; -// _qty = _this select 1; - -if (local _zombiebody) then { - _zombiebody addMagazine "ItemZombieParts"; - - [time, _zombiebody] spawn { - private ["_timer","_body"]; - _timer = _this select 0; - _body = _this select 1; - _pos = getPosATL _body; - while {(count magazines _body > 0) && (time - _timer < 300)} do { - uiSleep 5; - }; - - hideBody _body; - - _inRange = _pos nearEntities ["CAManBase",100]; - { - if ((isPlayer _x) && {_x != player}) then { - PVDZ_send = [_x,"HideBody",[_body]]; - publicVariableServer "PVDZ_send"; - }; - } count _inRange; - - uiSleep 5; - deleteVehicle _body; - true - }; -}; \ No newline at end of file diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index de36543a5..278cec3f4 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -76,6 +76,7 @@ if (!isDedicated) then { //zombie_generateSwarm = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\swarm_generate.sqf"; //actions + userActionConditions = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\userActionConditions.sqf"; player_addToolbelt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addToolbelt.sqf"; player_addtoBack = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addtoBack.sqf"; player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.sqf"; @@ -124,6 +125,11 @@ if (!isDedicated) then { //object_remove = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf"; player_fixHatchet = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fixTools.sqf"; player_sharpen = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sharpen.sqf"; + player_butcher = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\gather_meat.sqf"; + player_pushPlane = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_pushPlane.sqf"; + player_repairVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\repair_vehicle.sqf"; + player_salvageVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\salvage_vehicle.sqf"; + player_studyBody = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\study_body.sqf"; //ui player_toggleSoundMute = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_toggleSoundMute.sqf"; @@ -682,7 +688,6 @@ call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\psrnd.sqf"; BIS_fnc_numberDigits = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_numberDigits.sqf"; BIS_fnc_numberText = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_numberText.sqf"; local_lockUnlock = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_lockUnlock.sqf"; //When vehicle is local to unit perform locking vehicle -local_gutObjectZ = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_gutObjectZ.sqf"; //Generated on the server (or local to unit) when gutting an object local_spawnObjects = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_spawnObjects.sqf"; FNC_GetSetPos = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fnc_getSetPos.sqf"; FNC_GetPos = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fnc_getPos.sqf"; diff --git a/SQF/dayz_code/init/publicEH.sqf b/SQF/dayz_code/init/publicEH.sqf index d4b4f6b02..9bac8c744 100644 --- a/SQF/dayz_code/init/publicEH.sqf +++ b/SQF/dayz_code/init/publicEH.sqf @@ -13,7 +13,6 @@ // EPOCH ADDITIONS "PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) call local_lockUnlock}; -"PVDZE_plr_GutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ}; "PVDZE_veh_Init" addPublicVariableEventHandler {(_this select 1) call fnc_veh_ResetEH}; "PVDZE_obj_Remove" addPublicVariableEventHandler {_pos = (_this select 1); _obj = nearestObjects [_pos, DZE_isWreckBuilding, 5]; if (count _obj > 0) then {deleteVehicle (_obj select 0);};}; if (dayz_groupSystem) then { diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 617dd3d93..2d0a73d3d 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -170,7 +170,6 @@ dayz_resetSelfActions = { s_player_cook = -1; s_player_boil = -1; s_player_fireout = -1; - s_player_butcher = -1; s_player_packtent = -1; s_player_packtentinfected = -1; s_player_fillwater = -1; @@ -179,20 +178,17 @@ dayz_resetSelfActions = { s_player_grabflare = -1; s_player_removeflare = -1; s_player_painkiller = -1; - s_player_studybody = -1; s_build_Sandbag1_DZ = -1; s_build_Hedgehog_DZ = -1; s_build_Wire_cat1 = -1; s_player_deleteBuild = -1; s_player_flipveh = -1; - s_player_pushPlane = -1; s_player_stats = -1; s_player_sleep = -1; s_player_fillfuel210 = -1; s_player_fillfuel20 = -1; s_player_fillfuel5 = -1; s_player_siphonfuel = -1; - s_player_repair_crtl = -1; s_player_fishing = -1; s_player_fishing_veh = -1; s_player_gather = -1; @@ -315,7 +311,6 @@ r_public_blood = r_player_blood; r_player_bloodDanger = r_player_bloodTotal * 0.2; r_player_actions = []; r_handlerCount = 0; -r_action_repair = false; r_action_targets = []; r_pitchWhine = false; r_isBandit = false; diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml index df5af6bdb..0494b803b 100644 --- a/SQF/dayz_code/stringtable.xml +++ b/SQF/dayz_code/stringtable.xml @@ -871,8 +871,7 @@ Otočit %1 - Push %1 - %1 schieben + Push Plane Enable Stats diff --git a/SQF/dayz_code/system/scheduler/sched_animals.sqf b/SQF/dayz_code/system/scheduler/sched_animals.sqf index bf092eb00..bce4ccea8 100644 --- a/SQF/dayz_code/system/scheduler/sched_animals.sqf +++ b/SQF/dayz_code/system/scheduler/sched_animals.sqf @@ -65,7 +65,7 @@ sched_animals = { _type = _animalssupported select floor random count _animalssupported; }; if (_type == "Dog") then { - _animalssupported = ["DZ_Fin","DZ_Pastor"]; + _animalssupported = ["Fin","Pastor"]; _type = _animalssupported select floor random count _animalssupported; }; _root = configFile >> "CfgVehicles" >> _type; @@ -79,7 +79,7 @@ sched_animals = { if (count _PosList > 0) then { _Pos = (_PosList select 0) select 0; if ((!surfaceIsWater _Pos) AND {(0 == {alive _x} count (_Pos nearEntities [ AllPlayers, 200 ]))}) then { - _agent = if (_type == "DZ_Pastor") then {createAgent [_type, _Pos, [], 0, "NONE"]} else {createAgent [_type, _Pos, [], 0, "FORM"]}; + _agent = if (_type == "Pastor") then {createAgent [_type, _Pos, [], 0, "NONE"]} else {createAgent [_type, _Pos, [], 0, "FORM"]}; [_pos,_agent] execFSM "\z\addons\dayz_code\system\animal_agent.fsm"; _agent setVariable [ "", true ]; _count = _count + 1; diff --git a/Server Files/Battleye/createvehicle.txt b/Server Files/Battleye/createvehicle.txt index b991b7fde..c41c24581 100644 --- a/Server Files/Battleye/createvehicle.txt +++ b/Server Files/Battleye/createvehicle.txt @@ -1,5 +1,5 @@ //new -5 !(^DZ_|^z_|^pz_|^WeaponHolder|Box|dog|PZombie_VB|^Smoke|^Chem|^._40mm|_DZ$|^Trap) !=(SeaGull|SmallSecondary|HelicopterExplo(Small|Big)|DesertTentStorage|Stash(Small|Medium)(|[1-4])|(|Dome)TentStorage(|[0-4])) !=(CZ_VestPouch_EP1|R_M136_AT|R_MEEWS_HEAT|Wire_cat1) !=(JackDaniels|(Tin|Soda)Can|RoadFlare|WoodenArrowF|zZombie_Base|Parachute(West|C)|Grenade(_|HandTimed)(West|East)) !=(CMflareAmmo|Pipebomb) !=(WildBoar|Rabbit|Sheep|Sheep(01_EP1|02_EP1)|Goat|Goat(01_EP1|02_EP1)|Hen|Cow0[1234]|Cow01_EP1|Cock) !=Blood_Trail_DZ !^(Wooden|Metal)Fence !^WoodenGate_ !=(ShantyHouse(|Stage[2-7])|SurvivorWorkshop(|Stage2|[ABC]Stage[345])|WorkBench) !=explosive_bolt !"Land_" !=Sign_(arrow_down_large|sphere10cm)_EP1 !="MAP_c_fern" !="Grave" !"VaultStorage" !="LaserTargetW" !Fort_ !Nest !CMflare !="GyroGrenade" !="CraterLong" !="pook_camel_HE" +5 !(^DZ_|^z_|^pz_|^WeaponHolder|Box|dog|PZombie_VB|^Smoke|^Chem|^._40mm|_DZ$|^Trap) !=(SeaGull|SmallSecondary|HelicopterExplo(Small|Big)|DesertTentStorage|Stash(Small|Medium)(|[1-4])|(|Dome)TentStorage(|[0-4])) !=(CZ_VestPouch_EP1|R_M136_AT|R_MEEWS_HEAT|Wire_cat1) !=(JackDaniels|(Tin|Soda)Can|RoadFlare|WoodenArrowF|zZombie_Base|Parachute(West|C)|Grenade(_|HandTimed)(West|East)) !=(CMflareAmmo|Pipebomb) !=(WildBoar|Rabbit|Sheep|Sheep(01_EP1|02_EP1)|Goat|Goat(01_EP1|02_EP1)|Hen|Cow0[1234]|Cow01_EP1|Cock) !=Blood_Trail_DZ !^(Wooden|Metal)Fence !^WoodenGate_ !=(ShantyHouse(|Stage[2-7])|SurvivorWorkshop(|Stage2|[ABC]Stage[345])|WorkBench) !=explosive_bolt !"Land_" !=Sign_(arrow_down_large|sphere10cm)_EP1 !="MAP_c_fern" !="Grave" !"VaultStorage" !="LaserTargetW" !Fort_ !Nest !CMflare !="GyroGrenade" !="CraterLong" !="pook_camel_HE" !="Fin" !="Pastor" 5 SeaGull //set to its own line so we know which kick we have here with out looking in the logs 1 ^DZ_ !=DZ_(British_ACU|Czech_Vest_Pouch|(TK_Assault_Pack|Patrol_Pack|Assault_Pack|ALICE_Pack|CivilBackpack|Backpack)_EP1) 1 ^z_ !=z_((|new_)villager[1234]|(|new_)worker[1234]|teacher|hunter|suit[12]|soldier(|_pilot|_heavy)|policeman|doctor|priest) diff --git a/Server Files/Battleye/publicvariable.txt b/Server Files/Battleye/publicvariable.txt index db5302300..b77c03412 100644 --- a/Server Files/Battleye/publicvariable.txt +++ b/Server Files/Battleye/publicvariable.txt @@ -1,3 +1,3 @@ //new -5 !=(remExField|remExFP) !=(PVCDZ_obj_GutBody|drn_AskServerDynamicWeatherEventArgs|BIS_effects_gepv|achievement|dayzFlies) !=PVDZ_(drg_(RaDrag|RaLW|RLact)|getTickTime|hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove)|Server(_Simulation|StoreVar)|sec_atp) !=PVDZ_(playerMedicalSync|object_replace|groupInvite) !=PVDZ_(send(|Unconscious)) !=PVDZ_Server_(buildLock|LogIt|UpdateGroup) !=PVDZ_Server_process(Code|SetAccessCode) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Delete|Publish|Swap|Trade)|fullobj_Publish|maintainArea|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ|GutBodyZ|TradeMenu)) +5 !=(remExField|remExFP) !=(PVCDZ_obj_GutBody|drn_AskServerDynamicWeatherEventArgs|BIS_effects_gepv|achievement|dayzFlies) !=PVDZ_(drg_(RaDrag|RaLW|RLact)|getTickTime|hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove)|Server(_Simulation|StoreVar)|sec_atp) !=PVDZ_(playerMedicalSync|object_replace|groupInvite) !=PVDZ_(send(|Unconscious)) !=PVDZ_Server_(buildLock|LogIt|UpdateGroup) !=PVDZ_Server_process(Code|SetAccessCode) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Delete|Publish|Swap|Trade)|fullobj_Publish|maintainArea|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ|TradeMenu)) 1=BIS_effects_gepv|PVDZ_(drg_RaDrag|hlt_Bleed|obj_Delete|obj_Destroy|obj_Publish|plr_Death|plr_LoginRecord|sec_atp|send|veh_SF) \ No newline at end of file diff --git a/Server Files/Battleye/scripts.txt b/Server Files/Battleye/scripts.txt index 184a7f023..b5eb6144b 100644 --- a/Server Files/Battleye/scripts.txt +++ b/Server Files/Battleye/scripts.txt @@ -8,7 +8,7 @@ 5 "buttonSetAction" 5 "callExtension" 5 "closeDisplay" !"'closeDisplay'" !"closeDisplay 0" !"closeDisplay 2" !"if (!isNil \"closeDisplay\") then {" -5 "createAgent" !="_agent = createAgent [_type, _position, [], _radius, \"CAN_COLLIDE\"];" !="_agent = if (_type == \"DZ_Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];" +5 "createAgent" !="_agent = createAgent [_type, _position, [], _radius, \"CAN_COLLIDE\"];" !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];" 5 "createDialog" !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !="createDialog 'RscDisplayCraftingMenu';" !="createDialog \"DAYZ_PADLOCK\";" !="createDialog \"horde_journal_front_cover\";" !="createDialog 'horde_journal_pages_headshots';" !="createDialog 'horde_journal_pages_murders';" !="createDialog 'horde_journal_pages_journal_humanity';" !="createDialog 'horde_journal_pages_zombies';" !="createDialog 'horde_journal_pages_bandits';" !="createDialog 'horde_journal_pages_humanity_art';" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_trader_data = (_this select 3);\n\n_dialog = createdialog \"TraderDialog\";" !="_ok = createdialog \"SafeKeyPad\";" !="_ok = createdialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";" 5 "createDisplay" 5 "createMarker" !"\"createMarkerLocal\",\n\"setMarkerPosLocal\"," !="rcreateMarkerLocal = 'createMarkerLocal'" !"rcreateMarkerLocalcode" !"\"createMarkerLocal\", \"createSimpleTask\"," !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" !="_marker = createMarkerLocal [\"MyBody\",_pos];"