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