From 100f9f5da898345241db6710451cc460d6c7371f Mon Sep 17 00:00:00 2001 From: ebayShopper Date: Mon, 20 Mar 2017 14:58:49 -0400 Subject: [PATCH] Fix unable to chop down POI trees Vanilla commit: https://github.com/DayZMod/DayZ/commit/0bc12e21b0b6c103f6c7631310788e14ec96b8d8 --- CHANGE LOG 1.0.6.2.txt | 1 + SQF/dayz_code/actions/player_chopWood.sqf | 10 +++++++--- SQF/dayz_code/compile/player_harvest.sqf | 13 ++++++++----- SQF/dayz_code/init/variables.sqf | 3 +++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/CHANGE LOG 1.0.6.2.txt b/CHANGE LOG 1.0.6.2.txt index 51d479be4..92ff31a2d 100644 --- a/CHANGE LOG 1.0.6.2.txt +++ b/CHANGE LOG 1.0.6.2.txt @@ -1,6 +1,7 @@ [NEW] Added a few loot positions for Namalsk and Takistan. @skigoggles [FIXED] Kamaz refuel trucks no longer allow automatic refueling. #1855 @coresync2k @dreamforceinc +[FIXED] Trees at POIs can be chopped down now. Other trees spawned with createVehicle can be added to dayz_treeTypes in variables.sqf to allow chopping them down. [FIXED] POIs were moved back to global spawn again. This synchronizes the POI buildings and trees destroyed/chopped status for all clients. [NOTE] Fixes below are included in the mission file and server pbo as part of server package 1.0.6.1A (March 10th 2017) diff --git a/SQF/dayz_code/actions/player_chopWood.sqf b/SQF/dayz_code/actions/player_chopWood.sqf index afb1d73ab..98a6cfa25 100644 --- a/SQF/dayz_code/actions/player_chopWood.sqf +++ b/SQF/dayz_code/actions/player_chopWood.sqf @@ -1,5 +1,5 @@ -private ["_item","_result","_dis","_sfx","_num","_breaking","_countOut","_findNearestTree","_objName","_counter","_isOk","_proceed","_animState","_started","_finished","_isMedic","_itemOut","_tree","_distance2d"]; +private ["_addedTree","_objType","_item","_result","_dis","_sfx","_num","_breaking","_countOut","_findNearestTree","_objName","_counter","_isOk","_proceed","_animState","_started","_finished","_isMedic","_itemOut","_tree","_distance2d"]; _item = _this; call gear_ui_init; @@ -8,10 +8,14 @@ _countOut = floor(random 3) + 2; _findNearestTree = []; { - if (("" == typeOf _x) && {alive _x}) then { + _objType = typeOf _x; + _addedTree = _objType in dayz_treeTypes; + + if ((_objType == "" or _addedTree) && {alive _x}) then { _objName = _x call fn_getModelName; // Exit since we found a tree - if (_objName in dayz_trees) exitWith { _findNearestTree set [count _findNearestTree,_x]; }; + //model name has "remote" on client when tree is spawned on server with createVehicle + if (_objName in dayz_trees or _addedTree) exitWith { _findNearestTree set [count _findNearestTree,_x]; }; }; } count nearestObjects [getPosATL player, [], 20]; diff --git a/SQF/dayz_code/compile/player_harvest.sqf b/SQF/dayz_code/compile/player_harvest.sqf index af7c32e37..b07ba137c 100644 --- a/SQF/dayz_code/compile/player_harvest.sqf +++ b/SQF/dayz_code/compile/player_harvest.sqf @@ -1,4 +1,4 @@ -private ["_unit","_ammo","_distance","_weapon","_projectile","_endPos","_dir","_doWait","_vel"]; +private ["_addedTree","_objType","_unit","_ammo","_weapon","_projectile"]; _unit = _this select 0; _weapon = _this select 1; _ammo = _this select 4; @@ -7,10 +7,14 @@ _projectile = _this select 6; if (_ammo in ["Hatchet_Swing_Ammo","Chainsaw_Swing_Ammo"]) then { _findNearestTree = []; { - if (("" == typeOf _x) && {alive _x}) then { + _objType = typeOf _x; + _addedTree = _objType in dayz_treeTypes; + + if ((_objType == "" or _addedTree) && {alive _x}) then { _objName = _x call fn_getModelName; // Exit since we found a tree - if (_objName in dayz_trees) exitWith { _findNearestTree set [count _findNearestTree,_x]; }; + //model name has "remote" on client when tree is spawned on server with createVehicle + if (_objName in dayz_trees or _addedTree) exitWith { _findNearestTree set [count _findNearestTree,_x]; }; }; } count nearestObjects [getPosATL player, [], 20]; @@ -35,8 +39,7 @@ if (_ammo in ["Hatchet_Swing_Ammo","Chainsaw_Swing_Ammo"]) then { _itemOut = if (_ammo == "Chainsaw_Swing_Ammo") then {"PartWoodLumber"} else {"PartWoodPile"}; // Log can be crafted to > 2x plank > 4x woodpile [_itemOut,1,1] call fn_dropItem; - _distance = 60; - [player,_distance,false,getPosATL player] spawn player_alertZombies; + [player,60,false,getPosATL player] spawn player_alertZombies; }; DZE_TEMP_treedmg = _damage; }; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 4a5ca4f39..aadb1baf0 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -61,7 +61,10 @@ DayZ_GearedObjects = ["Car","Helicopter","Motorcycle","Ship","TentStorage_base", DayZ_RestingAnims = ["amovpsitmstpsnonwpstdnon_ground","amovpsitmstpsnonwpstdnon_smoking","amovpsitmstpsraswrfldnon_weaponcheck1","amovpsitmstpsraswrfldnon"]; dayz_typedBags = ["bloodTester","bloodBagANEG","bloodBagAPOS","bloodBagBNEG","bloodBagBPOS","bloodBagABNEG","bloodBagABPOS","bloodBagONEG","bloodBagOPOS","wholeBloodBagANEG","wholeBloodBagAPOS","wholeBloodBagBNEG","wholeBloodBagBPOS","wholeBloodBagABNEG","wholeBloodBagABPOS","wholeBloodBagONEG","wholeBloodBagOPOS"]; dayz_playerAchievements = []; //[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] +//Needed for ambient map trees dayz_trees = ["ind_timbers.p3d","t_picea2s_snow.p3d","b_corylus.p3d","t_quercus3s.p3d","t_larix3s.p3d","t_pyrus2s.p3d","str_briza_kriva.p3d","dd_borovice.p3d","les_singlestrom_b.p3d","les_singlestrom.p3d","smrk_velky.p3d","smrk_siroky.p3d","smrk_maly.p3d","les_buk.p3d","str krovisko vysoke.p3d","str_fikovnik_ker.p3d","str_fikovnik.p3d","str vrba.p3d","hrusen2.p3d","str dub jiny.p3d","str lipa.p3d","str briza.p3d","p_akat02s.p3d","jablon.p3d","p_buk.p3d","str_topol.p3d","str_topol2.p3d","p_osika.p3d","t_picea3f.p3d","t_picea2s.p3d","t_picea1s.p3d","t_fagus2w.p3d","t_fagus2s.p3d","t_fagus2f.p3d","t_betula1f.p3d","t_betula2f.p3d","t_betula2s.p3d","t_betula2w.p3d","t_alnus2s.p3d","t_acer2s.p3d","t_populus3s.p3d","t_quercus2f.p3d","t_sorbus2s.p3d","t_malus1s.p3d","t_salix2s.p3d","t_picea1s_w.p3d","t_picea2s_w.p3d","t_ficusb2s_ep1.p3d","t_populusb2s_ep1.p3d","t_populusf2s_ep1.p3d","t_amygdalusc2s_ep1.p3d","t_pistacial2s_ep1.p3d","t_pinuse2s_ep1.p3d","t_pinuss3s_ep1.p3d","t_prunuss2s_ep1.p3d","t_pinusn2s.p3d","t_pinusn1s.p3d","t_pinuss2f.p3d","t_poplar2f_dead_pmc.p3d","misc_torzotree_pmc.p3d","misc_burnspruce_pmc.p3d","brg_cocunutpalm8.p3d","brg_umbrella_acacia01b.p3d","brg_jungle_tree_canopy_1.p3d","brg_jungle_tree_canopy_2.p3d","brg_cocunutpalm4.p3d","brg_cocunutpalm3.p3d","palm_01.p3d","palm_02.p3d","palm_03.p3d","palm_04.p3d","palm_09.p3d","palm_10.p3d","brg_cocunutpalm2.p3d","brg_jungle_tree_antiaris.p3d","brg_cocunutpalm1.p3d","str habr.p3d","brg_bird_1.p3d","brg_bird_2.p3d","brg_bird_3.p3d","brg_umbrella_acacia02b.p3d","brg_africandoumpalm_1.p3d","brg_umbrella_acacia04b.p3d","brg_datepalm_4.p3d","brg_datepalm_1.p3d","brg_umbrella_acacia03b.p3d","brg_bottle_4.p3d","brg_aloe1.p3d","brg_umbrella_acacia03.p3d","brg_umbrella_acacia01.p3d","brg_umbrella_acacia04.p3d","brg_aloe2.p3d","brg_umbrella_acacia02.p3d","brg_aloe3.p3d","brg_bottle_1.p3d","brg_datepalm_3.p3d","brg_datepalm_2.p3d","brg_baobab_1.p3d","brg_bottle_2.p3d","brg_bottle_3.p3d","t_fraxinus2s.p3d","t_carpinus2s.p3d"]; +//Needed for trees spawned with createVehicle like POI (typeOf returns class instead of "") +dayz_treeTypes = ["MAP_t_picea1s","MAP_t_picea2s","MAP_t_picea3f","MAP_t_pinusN2s","MAP_t_pinusS2f","MAP_t_populus3s","MAP_t_betula2s","MAP_t_fagus2s","MAP_t_fagus2W","MAP_t_malus1s"]; Dayz_meatraw = [