Files
DayZ-Epoch/SQF/dayz_code/actions/player_chopWood.sqf
ebayShopper 07d8543e1d Update vanilla chop wood
Vanilla commits:
a17b0572eb
7793017310
2018-01-17 16:43:12 -05:00

107 lines
3.7 KiB
Plaintext

if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
dayz_actionInProgress = true;
private ["_dis","_sfx","_breaking","_countOut","_counter","_isOk","_proceed","_finished","_itemOut","_tree","_distance2d","_chanceResult","_weapons"];
call gear_ui_init;
closeDialog 1;
_countOut = floor(random 3) + 2;
_tree = objNull;
{
if (typeOf _x in dayz_treeTypes && {alive _x} && {(_x call fn_getModelName) in dayz_trees}) exitWith {
// Exit since we found a tree
_tree = _x;
};
} count nearestObjects [getPosATL player, [], 20];
//if (["forest",dayz_surfaceType] call fnc_inString) then {// Need tree object for PVDZ_objgather_Knockdown
if (!isNull _tree) then {
_distance2d = [player, _tree] call BIS_fnc_distance2D;
if (_distance2d > 5) exitWith {localize "str_player_23" call dayz_rollingMessages;};
// Start chop tree loop
_counter = 0;
_isOk = true;
_proceed = false;
//check chance before loop, for a maximum amount of 5 loops allowing 5 possiable chances
_chanceResult = dayz_HarvestingChance call fn_chance;
while {_isOk} do {
_dis=20;
_sfx = "chopwood";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] call player_alertZombies;
//play action
_finished = ["Medic",1] call fn_loopAction;
_weapons = weapons player;
_weapons set [count _weapons,dayz_onBack];
//Make sure player did not drop hatchet
if (!_finished or !("MeleeHatchet" in _weapons or ("ItemHatchet" in _weapons))) exitWith {
_isOk = false;
_proceed = false;
};
if (_finished) then {
["Working",0,[50,10,5,0]] call dayz_NutritionSystem;
_breaking = false;
if (dayz_toolBreaking && _chanceResult) then {
_breaking = true;
if ("MeleeHatchet" in weapons player) then {
player removeWeapon "MeleeHatchet";
} else {
if ("ItemHatchet" in weapons player) then {
player removeWeapon "ItemHatchet";
} else {
if (dayz_onBack == "MeleeHatchet") then {
dayz_onBack = "";
if (!isNull findDisplay 106) then {findDisplay 106 displayCtrl 1209 ctrlSetText "";};
};
};
};
if (!("ItemHatchetBroken" in weapons player)) then {
player addWeapon "ItemHatchetBroken";
};
};
_counter = _counter + 1;
_itemOut = "PartWoodPile";
//Drop Item to ground
[_itemOut,1,1] call fn_dropItem;
};
if ((_counter == _countOut) || _breaking) exitWith {
if (_breaking) then {
localize "str_HatchetHandleBreaks" call dayz_rollingMessages;
} else {
localize "str_player_24_Stoped" call dayz_rollingMessages;
};
_isOk = false;
_proceed = true;
uiSleep 1;
};
format[localize "str_player_24_progress", _counter,_countOut] call dayz_rollingMessages;
};
if (_proceed || (_counter > 0)) then {
//localize "str_choppingTree" call dayz_rollingMessages;
//localize "str_player_25" call dayz_rollingMessages;
if (typeOf _tree == "") then {
// Ask server to setDamage on tree and sync for JIP
PVDZ_objgather_Knockdown = [_tree,player];
publicVariableServer "PVDZ_objgather_Knockdown";
} else {
deleteVehicle _tree;
};
};
if !(_proceed) then {
localize "str_player_24_Stoped" call dayz_rollingMessages;
};
} else {
localize "str_player_23" call dayz_rollingMessages;
};
dayz_actionInProgress = false;