mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
Add medic anim function with proper interrupt
Closes #1386 Vanilla commits applied:f99a3deced731b957e8eRemoved two unused files and a few variables made redundant by actionInProgress
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
[FIXED] Purchased boats sometimes not spawning on helipad even when it is free of obstructions.
|
||||
[FIXED] Unable to fill water at some ponds and wells on Napf and Namalsk due to missing or misplaced waterHoleProxy.
|
||||
[FIXED] Potential undefined error for dayz_characterID on login. @oiad
|
||||
[FIXED] Actions like cook, gather meat, repair, etc. are now interrupted properly if the player vaults, moves or enters a vehicle during the medic animation. #1942 @SmokeyBR
|
||||
|
||||
[NOTE] Fixes below are included in the mission file and server pbo as part of server package 1.0.6.1A (March 10th 2017)
|
||||
[FIXED] Fixed food and drink going down 10x faster from melee and other "working" actions.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_bottletext","_tin1text","_tin2text","_tintext","_hastinitem","_qty","_dis","_sfx","_WB2Add"];
|
||||
private ["_bottletext","_tin1text","_tin2text","_tintext","_hastinitem","_qty","_dis","_sfx","_WB2Add","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -8,10 +8,7 @@ _tin1text = getText (configFile >> "CfgMagazines" >> "TrashTinCan" >> "displayNa
|
||||
_tin2text = getText (configFile >> "CfgMagazines" >> "ItemSodaEmpty" >> "displayName");
|
||||
_tintext = format["%1 / %2",_tin1text,_tin2text];
|
||||
//_hasbottleitem = (("ItemWaterBottle" in magazines player) || {"ItemWaterBottleInfected" in magazines player} || {"ItemWaterBottleSafe" in magazines player});
|
||||
_qty = 0;
|
||||
_qty = _qty + ({
|
||||
_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"];
|
||||
} count magazines player);
|
||||
_qty = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"]} count magazines player;
|
||||
a_player_boil = true;
|
||||
player removeAction s_player_boil;
|
||||
//s_player_boil = -1;
|
||||
@@ -28,13 +25,17 @@ _hastinitem = false;
|
||||
if (!_hastinitem) exitWith {format[localize "str_player_31",_tintext,localize "str_player_31_fill"] call dayz_rollingMessages; a_player_boil = false; dayz_actionInProgress = false;};
|
||||
*/
|
||||
if (_qty > 0) then {
|
||||
player playActionNow "Medic";
|
||||
uiSleep 1;
|
||||
_dis=10;
|
||||
_sfx = "cook";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
uiSleep 5;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
// Double check player did not drop item
|
||||
_qty = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"]} count magazines player;
|
||||
|
||||
if (_qty == 0 or !_finished) exitWith {};
|
||||
|
||||
for "_x" from 1 to _qty do {
|
||||
_WB2Add = "ItemWaterBottleBoiled";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_rawmeat","_cookedmeat","_meat","_meatcooked","_text","_qty","_dis","_sfx"];
|
||||
private ["_rawmeat","_cookedmeat","_meat","_meatcooked","_text","_qty","_dis","_sfx","_finished"];
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
//diag_log ("Cook Enabled");
|
||||
@@ -8,21 +8,24 @@ s_player_cook = -1;
|
||||
_rawmeat = Dayz_meatraw;
|
||||
_cookedmeat = Dayz_meatcooked;
|
||||
a_player_cooking = true;
|
||||
_finished = true;
|
||||
|
||||
{
|
||||
_meat = _x;
|
||||
_meatcooked = _cookedmeat select (_rawmeat find _meat);
|
||||
if (_meat in magazines player) then {
|
||||
_text = getText (configFile >> "CfgMagazines" >> _meatcooked >> "displayName");
|
||||
_qty = {_x == _meat} count magazines player;
|
||||
player playActionNow "Medic";
|
||||
|
||||
_dis=6;
|
||||
_sfx = "cook";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
uiSleep _qty;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
_qty = {_x == _meat} count magazines player;
|
||||
|
||||
for "_x" from 1 to _qty do {
|
||||
player removeMagazine _meat;
|
||||
player addMagazine _meatcooked;
|
||||
@@ -31,6 +34,8 @@ a_player_cooking = true;
|
||||
};
|
||||
format[localize "str_success_cooked",_qty,_text] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
if (!_finished) exitWith {};
|
||||
} forEach _rawmeat;
|
||||
|
||||
a_player_cooking = false;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_isFuelTruck","_fuelTruckCapacity","_started","_finished","_animState","_isMedic","_newFuel","_abort","_newFuelSrc","_canSize","_vehicle","_configVeh","_capacity","_nameText","_fuelTruck","_findNearestVehicle"];
|
||||
private ["_isFuelTruck","_fuelTruckCapacity","_finished","_newFuel","_abort","_newFuelSrc","_canSize","_vehicle","_configVeh","_capacity","_nameText","_fuelTruck","_findNearestVehicle"];
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
@@ -15,10 +15,10 @@ if (!isNull _fuelTruck) then {
|
||||
|
||||
_findNearestVehicle = [];
|
||||
{
|
||||
if ((alive _x) && (_x != _fuelTruck) && (!(_x isKindOf "Man"))) exitWith {
|
||||
if (_x != _fuelTruck) exitWith {
|
||||
_findNearestVehicle set [(count _findNearestVehicle),_x];
|
||||
};
|
||||
} count (nearestObjects [player, ["AllVehicles"], 30]);
|
||||
} count (([player] call fnc_getPos) nearEntities [["Air","LandVehicle","Ship"],30]);
|
||||
|
||||
if (count _findNearestVehicle >= 1) then {
|
||||
// select the nearest one
|
||||
@@ -35,43 +35,10 @@ if (count _findNearestVehicle >= 1) then {
|
||||
_canSize = (_capacity / 10);
|
||||
|
||||
format[localize "str_epoch_player_131",_nameText] call dayz_rollingMessages;
|
||||
|
||||
// alert zombies
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
_finished = false;
|
||||
|
||||
// force animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if(!_finished) then {
|
||||
r_interrupt = false;
|
||||
if ((vehicle player) == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
if (!_finished) then {
|
||||
_abort = true;
|
||||
} else {
|
||||
_newFuel = (((fuel _vehicle) * _capacity) + _canSize);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_vehicle","_started","_finished","_animState","_isMedic","_soundSource","_fuelCan","_emptyCan"];
|
||||
private ["_vehicle","_finished","_soundSource","_fuelCan","_emptyCan"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -7,46 +7,13 @@ player removeAction s_player_fillgen;
|
||||
s_player_fillgen = 1;
|
||||
|
||||
// Use target from addaction
|
||||
_vehicle = _this select 3;
|
||||
|
||||
// force animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
_vehicle = _this select 3;
|
||||
|
||||
localize "str_epoch_player_25" call dayz_rollingMessages;
|
||||
|
||||
[player,50,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if(!_finished) then {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
localize "str_epoch_player_26" call dayz_rollingMessages;
|
||||
};
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
_fuelCan = nil;
|
||||
{
|
||||
@@ -91,6 +58,8 @@ if (_finished) then {
|
||||
|
||||
localize "str_epoch_player_28" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
localize "str_epoch_player_26" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
private "_obj";
|
||||
_obj = _this select 3;
|
||||
|
||||
player playActionNow "Medic";
|
||||
uiSleep 6;
|
||||
|
||||
if (_obj isKindOf "Land_fire") then {
|
||||
dayz_hasFire = objNull;
|
||||
deleteVehicle _obj;
|
||||
};
|
||||
|
||||
localize "str_fireplace_removed" call dayz_rollingMessages;
|
||||
player removeAction s_player_fireout;
|
||||
s_player_fireout = -1;
|
||||
@@ -1,6 +1,5 @@
|
||||
private ["_item","_type","_hasHarvested","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_dis","_sfx","_qty","_string","_isZombie","_humanity"];
|
||||
private ["_item","_type","_hasHarvested","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_dis","_sfx","_qty","_string","_isZombie","_humanity","_finished"];
|
||||
|
||||
_isZombie = _this isKindOf "zZombie_base";
|
||||
if (dayz_actionInProgress) exitWith {
|
||||
localize "str_player_actionslimit" call dayz_rollingMessages;
|
||||
};
|
||||
@@ -8,6 +7,7 @@ dayz_actionInProgress = true;
|
||||
|
||||
_item = _this;
|
||||
_type = typeOf _item;
|
||||
_isZombie = _type isKindOf "zZombie_base";
|
||||
_hasHarvested = _item getVariable["meatHarvested",false];
|
||||
|
||||
_knifeArray = [];
|
||||
@@ -39,11 +39,13 @@ if ((count _knifeArray > 0) and !_hasHarvested) then {
|
||||
_isListed = isClass (configFile >> "CfgSurvival" >> "Meat" >> _type);
|
||||
_text = getText (configFile >> "CfgVehicles" >> _type >> "displayName");
|
||||
|
||||
player playActionNow "Medic";
|
||||
_dis=10;
|
||||
_sfx = "gut";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
@@ -64,7 +66,6 @@ if ((count _knifeArray > 0) and !_hasHarvested) then {
|
||||
|
||||
["knives",0.2] call fn_dynamicTool;
|
||||
|
||||
uiSleep 6;
|
||||
if (_isZombie) then {
|
||||
// Reduce humanity for gutting zeds
|
||||
_humanity = player getVariable ["humanity",0];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_time","_vehicle","_removed","_vehType"];
|
||||
private ["_time","_vehicle","_removed","_vehType","_finished"];
|
||||
_vehicle = _this select 3;
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "STR_EPOCH_PLAYER_32" call dayz_rollingMessages;};
|
||||
@@ -12,10 +12,13 @@ s_player_lockUnlockInside_ctrl = 1;
|
||||
_removed = ([player,"ItemHotwireKit",1] call BIS_fnc_invRemove);
|
||||
|
||||
if (_removed == 1) then {
|
||||
player playActionNow "Medic";
|
||||
[player,"repair",0,false] call dayz_zombieSpeak;
|
||||
[player,50,true,(getPosATL player)] spawn player_alertZombies;
|
||||
uiSleep 8;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {
|
||||
player addMagazine "ItemHotwireKit";
|
||||
};
|
||||
|
||||
_vehType = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
||||
if ((random 10) <= 7.5) then {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
private ["_qty","_dis","_sfx","_started","_finished","_animState","_isRefuel","_qty20","_qty5","_qty210","_magazines","_cursorTarget","_fuelAmount","_fuelNeeded"];
|
||||
private ["_qty","_dis","_sfx","_finished","_qty20","_qty5","_qty210","_magazines","_cursorTarget","_fuelAmount","_fuelNeeded"];
|
||||
|
||||
player removeAction s_player_fillfuel;
|
||||
//s_player_fillfuel = -1;
|
||||
@@ -29,70 +29,51 @@ if (_fuelAmount < _fuelNeeded) then {format[localize "str_fill_notenough",typeOf
|
||||
if (_fuelAmount < 5 or (_fuelAmount < 20 && _qty5 == 0) or (_fuelAmount < 210 && (_qty5 == 0 && _qty20 == 0))) exitWith {dayz_actionInProgress = false;};
|
||||
|
||||
if (_qty > 0) then {
|
||||
player playActionNow "Medic";
|
||||
|
||||
_dis=5;
|
||||
_sfx = "refuel";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isRefuel = ["medic",_animState] call fnc_inString;
|
||||
if (_isRefuel) then {
|
||||
_started = true;
|
||||
|
||||
for "_x" from 1 to _qty5 do {
|
||||
_fuelAmount = _cursorTarget getVariable "FuelAmount";
|
||||
|
||||
if (_fuelAmount >= 5) then {
|
||||
_fuelAmount = _fuelAmount - 5;
|
||||
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
|
||||
player removeMagazine "ItemFuelcanEmpty";
|
||||
player addMagazine "ItemFuelcan";
|
||||
} else {
|
||||
_qty = _qty - 1;
|
||||
};
|
||||
if (_started and !_isRefuel) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
|
||||
r_doLoop = false;
|
||||
|
||||
if (_finished) then {
|
||||
for "_x" from 1 to _qty5 do {
|
||||
_fuelAmount = _cursorTarget getVariable "FuelAmount";
|
||||
|
||||
if (_fuelAmount >= 5) then {
|
||||
_fuelAmount = _fuelAmount - 5;
|
||||
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
|
||||
player removeMagazine "ItemFuelcanEmpty";
|
||||
player addMagazine "ItemFuelcan";
|
||||
} else {
|
||||
_qty = _qty - 1;
|
||||
};
|
||||
for "_x" from 1 to _qty20 do {
|
||||
_fuelAmount = _cursorTarget getVariable "FuelAmount";
|
||||
|
||||
if (_fuelAmount >= 20) then {
|
||||
_fuelAmount = _fuelAmount - 20;
|
||||
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
|
||||
player removeMagazine "ItemJerrycanEmpty";
|
||||
player addMagazine "ItemJerrycan";
|
||||
} else {
|
||||
_qty = _qty - 1;
|
||||
};
|
||||
for "_x" from 1 to _qty20 do {
|
||||
_fuelAmount = _cursorTarget getVariable "FuelAmount";
|
||||
|
||||
if (_fuelAmount >= 20) then {
|
||||
_fuelAmount = _fuelAmount - 20;
|
||||
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
|
||||
player removeMagazine "ItemJerrycanEmpty";
|
||||
player addMagazine "ItemJerrycan";
|
||||
} else {
|
||||
_qty = _qty - 1;
|
||||
};
|
||||
};
|
||||
for "_x" from 1 to _qty210 do {
|
||||
_fuelAmount = _cursorTarget getVariable "FuelAmount";
|
||||
|
||||
if (_fuelAmount >= 210) then {
|
||||
_fuelAmount = _fuelAmount - 210;
|
||||
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
|
||||
player removeMagazine "ItemFuelBarrelEmpty";
|
||||
player addMagazine "ItemFuelBarrel";
|
||||
} else {
|
||||
_qty = _qty - 1;
|
||||
};
|
||||
};
|
||||
for "_x" from 1 to _qty210 do {
|
||||
_fuelAmount = _cursorTarget getVariable "FuelAmount";
|
||||
|
||||
if (_fuelAmount >= 210) then {
|
||||
_fuelAmount = _fuelAmount - 210;
|
||||
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
|
||||
player removeMagazine "ItemFuelBarrelEmpty";
|
||||
player addMagazine "ItemFuelBarrel";
|
||||
} else {
|
||||
_qty = _qty - 1;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// If an array was passed redirect to vanilla player_build (Epoch items pass a string)
|
||||
if (!isNil "_this" && {typeName _this == "ARRAY"} && {count _this > 0}) exitWith {_this spawn player_buildVanilla;};
|
||||
private ["_abort","_reason","_distance","_isNear","_lockable","_isAllowedUnderGround","_offset","_classname","_zheightdirection","_zheightchanged","_rotate","_objectHelperPos","_objectHelperDir","_objHDiff","_position","_isOk","_dir","_vector","_cancel","_location2","_buildOffset","_location","_limit","_started","_finished","_animState","_isMedic","_proceed","_counter","_dis","_sfx","_combination_1_Display","_combination_1","_combination_2","_combination_3","_combination","_combinationDisplay","_combination_4","_num_removed","_tmpbuilt","_vUp","_classnametmp","_text","_ghost","_ghost2","_VectorWorkAround","_objectHelper","_location1","_object","_object2","_helperColor","_canDo","_pos","_onLadder","_vehicle","_inVehicle","_needNear","_canBuild"];
|
||||
|
||||
private ["_abort","_reason","_distance","_isNear","_lockable","_isAllowedUnderGround","_offset","_classname","_zheightdirection","_zheightchanged","_rotate","_objectHelperPos","_objectHelperDir","_objHDiff","_position","_isOk","_dir","_vector","_cancel","_location2","_buildOffset","_location","_limit","_finished","_proceed","_counter","_dis","_sfx","_combination_1_Display","_combination_1","_combination_2","_combination_3","_combination","_combinationDisplay","_combination_4","_num_removed","_tmpbuilt","_vUp","_classnametmp","_text","_ghost","_ghost2","_VectorWorkAround","_objectHelper","_location1","_object","_object2","_helperColor","_canDo","_pos","_onLadder","_vehicle","_inVehicle","_needNear","_canBuild"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_40" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -445,37 +444,13 @@ if (_canBuild select 0) then {
|
||||
|
||||
while {_isOk} do {
|
||||
format[localize "str_epoch_player_139",_text, (_counter + 1),_limit] call dayz_rollingMessages; //report how many steps are done out of total limit
|
||||
player playActionNow "Medic";
|
||||
|
||||
_dis=20;
|
||||
_sfx = "repair";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
r_interrupt = false;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt || (player getVariable["combattimeout",0] >= diag_tickTime)) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
if (DZE_cancelBuilding) exitWith {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
|
||||
_finished = ["Medic",1,{player getVariable["combattimeout",0] >= diag_tickTime or DZE_cancelBuilding}] call fn_loopAction;
|
||||
|
||||
if(!_finished) exitWith {
|
||||
_isOk = false;
|
||||
@@ -490,7 +465,6 @@ if (_canBuild select 0) then {
|
||||
_isOk = false;
|
||||
_proceed = true;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
if (_proceed) then {
|
||||
@@ -596,15 +570,8 @@ if (_canBuild select 0) then {
|
||||
localize "str_epoch_player_46" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
} else { //if player was interrupted, cancel publish and stop build animations
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
|
||||
} else { //if player was interrupted cancel publish
|
||||
deleteVehicle _tmpbuilt;
|
||||
|
||||
localize "str_epoch_player_46" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
|
||||
@@ -105,6 +105,4 @@ if (_build) then {
|
||||
};
|
||||
} foreach _items;
|
||||
format[localize "str_build_failed_02",_text] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
@@ -13,8 +13,6 @@ if ((isNil "_cursorTarget") or {(isNull _cursorTarget)}) then {
|
||||
|
||||
if(isNull _cursorTarget) exitWith { localize "str_disassembleNoOption" call dayz_rollingMessages; };
|
||||
|
||||
if (player getVariable["alreadyBuilding",0] == 1) exitWith { localize "str_upgradeInProgress" call dayz_rollingMessages; };
|
||||
|
||||
//Normal blocked stuff
|
||||
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
|
||||
_isWater = (surfaceIsWater (getPosATL player)) or dayz_isSwimming;
|
||||
@@ -23,6 +21,9 @@ if(_isWater or _onLadder) exitWith { localize "str_water_ladder_cant_do" call da
|
||||
_alreadyRemoving = _cursorTarget getVariable["ObjectLocked",0];
|
||||
if (_alreadyRemoving == 1) exitWith { localize "str_disassembleInProgress" call dayz_rollingMessages; };
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_cursorTarget setVariable["ObjectLocked",1,true];
|
||||
_characterID = _cursorTarget getVariable ["characterID","0"];
|
||||
_objectID = _cursorTarget getVariable ["ObjectID","0"];
|
||||
@@ -39,7 +40,7 @@ _entry = configFile >> "CfgVehicles" >> _upgrade;
|
||||
r_interrupt = false;
|
||||
|
||||
_disassemblyParts = [] + (getArray (_entry >> "Disassembly" >> "removedParts"));
|
||||
_disassemblyReturnChance = [] + (getNumber (_entry >> "Disassembly" >> "removedChance"));
|
||||
_disassemblyReturnChance = getNumber (_entry >> "Disassembly" >> "removedChance");
|
||||
|
||||
for "_i" from 1 to 20 do {
|
||||
_parent = inheritsFrom _entry;
|
||||
@@ -161,4 +162,4 @@ if (!_realObjectStillThere) then {
|
||||
localize "str_disassembleDone" call dayz_rollingMessages;
|
||||
|
||||
_cursorTarget setVariable["ObjectLocked",0,true];
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
private ["_object","_proceed","_rndattemps","_limit","_dismantleToo","_ownerID","_objectID","_objectUID","_playerID","_claimedBy","_tools","_exit","_end","_onLadder","_isWater","_isOk","_counter","_text","_dis","_sfx","_animState","_started","_finished","_isMedic"];
|
||||
private ["_object","_proceed","_rndattemps","_limit","_dismantleToo","_ownerID","_objectID","_objectUID","_playerID","_claimedBy","_tools","_exit","_end","_onLadder","_isWater","_isOk","_counter","_text","_dis","_sfx","_finished"];
|
||||
|
||||
_object = _this;
|
||||
_proceed = false;
|
||||
@@ -67,43 +67,14 @@ while {_isOk} do {
|
||||
|
||||
if (_claimedBy != _playerID) exitWith { format[localize "str_player_beinglooted",_text] call dayz_rollingMessages; };
|
||||
|
||||
//Run animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
//Run SFX
|
||||
_dis=20;
|
||||
_sfx = "repair";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
// Working-Factor for chopping wood.
|
||||
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
|
||||
|
||||
//Setup Vars
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
//run animation loop
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt or (player getVariable["combattimeout",0] >= diag_tickTime)) then {
|
||||
r_doLoop = false;
|
||||
_finished = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
//Run animation loop
|
||||
_finished = ["Medic",1,{player getVariable["combattimeout",0] >= diag_tickTime}] call fn_loopAction;
|
||||
|
||||
//Interrupt and end
|
||||
if(!_finished) exitWith {
|
||||
@@ -112,7 +83,9 @@ while {_isOk} do {
|
||||
};
|
||||
|
||||
//Everything happened as it should
|
||||
if(_finished) then {
|
||||
if(_finished) then {
|
||||
// Working-Factor for chopping wood.
|
||||
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
|
||||
//Add to Counter
|
||||
_counter = _counter + 1;
|
||||
//Try to dismantle
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#define MAINTENANCE_NUTRITION_VALUES [20,40,15,0]
|
||||
|
||||
|
||||
private ["_isMedic","_cursorTarget","_item","_classname","_displayname","_requiredTools","_requiredParts","_onLadder","_isWater","_upgradeParts","_startMaintenance","_dis","_sfx","_started","_finished","_animState","_isRefuel"];
|
||||
private ["_cursorTarget","_item","_classname","_displayname","_requiredTools","_requiredParts","_onLadder","_isWater","_startMaintenance","_dis","_sfx","_finished"];
|
||||
|
||||
_cursorTarget = _this;
|
||||
|
||||
@@ -19,10 +19,6 @@ if(isNull _cursorTarget) exitWith {
|
||||
localize "str_maintenanceNoOption" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
if (player getVariable["alreadyBuilding",0] == 1) exitWith {
|
||||
localize "str_upgradeInProgress" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
//Item
|
||||
_item = typeof _cursorTarget;
|
||||
//diag_log (str(_item));
|
||||
@@ -42,13 +38,15 @@ _requiredParts = getArray (_classname >> "Maintenance" >> "requiredParts");
|
||||
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
|
||||
_isWater = (surfaceIsWater (getPosATL player)) or dayz_isSwimming;
|
||||
|
||||
_upgradeParts = [];
|
||||
_startMaintenance = true;
|
||||
|
||||
if(_isWater or _onLadder) exitWith {
|
||||
localize "str_water_ladder_cant_do" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
// lets check player has requiredTools for upgrade
|
||||
{
|
||||
if (!(_x IN items player)) exitWith {
|
||||
@@ -67,36 +65,27 @@ if(_isWater or _onLadder) exitWith {
|
||||
|
||||
|
||||
if (_startMaintenance) then {
|
||||
//play animation
|
||||
player playActionNow "Medic";
|
||||
_dis=20;
|
||||
_sfx = "tentpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
["Working",0,MAINTENANCE_NUTRITION_VALUES] call dayz_NutritionSystem; // Added Nutrition-Factor for work
|
||||
|
||||
{ player removeMagazine _x; } count _requiredParts;
|
||||
|
||||
//Animation Loop
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isRefuel = ["medic",_animState] call fnc_inString;
|
||||
if (_isRefuel) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isRefuel) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
|
||||
r_doLoop = false;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (_finished) then {
|
||||
//Double check player did not drop any items
|
||||
{
|
||||
if !(_x in magazines player) exitWith {
|
||||
format[localize "str_maintenanceMissingPart",_x,_displayname] call dayz_rollingMessages; //"Missing %1 to maintenance %2."
|
||||
_startMaintenance = false;
|
||||
};
|
||||
} count _requiredParts;
|
||||
|
||||
if (!_startMaintenance) exitWith {};
|
||||
{ player removeMagazine _x } count _requiredParts;
|
||||
|
||||
["Working",0,MAINTENANCE_NUTRITION_VALUES] call dayz_NutritionSystem; // Added Nutrition-Factor for work
|
||||
|
||||
PVDZ_veh_Save = [_cursorTarget,"maintenance"];
|
||||
if (isServer) then {
|
||||
PVDZ_veh_Save call server_updateObject;
|
||||
@@ -106,10 +95,9 @@ if (_startMaintenance) then {
|
||||
|
||||
//PVDZ_object_replace = _cursorTarget;
|
||||
//publicVariableServer "PVDZ_object_replace";
|
||||
_cursorTarget setVariable["Maintenance",false,true];
|
||||
localize "str_maintenanceDone" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
_cursorTarget setVariable["Maintenance",false,true];
|
||||
|
||||
localize "str_maintenanceDone" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -11,8 +11,8 @@
|
||||
*/
|
||||
private ["_objclass","_cursorTarget","_item","_classname","_requiredTools","_requiredParts","_upgrade","_upgradeConfig",
|
||||
"_upgradeDisplayname","_onLadder","_isWater","_upgradeParts","_startUpgrade","_missingPartsConfig","_textMissingParts","_dis",
|
||||
"_sfx","_ownerID","_objectID","_objectUID","_alreadyupgrading","_dir","_weapons","_magazines","_backpacks",
|
||||
"_object","_objWpnTypes","_objWpnQty","_countr","_itemName","_vector"];
|
||||
"_sfx","_ownerID","_objectID","_objectUID","_dir","_weapons","_magazines","_backpacks",
|
||||
"_object","_objWpnTypes","_objWpnQty","_countr","_itemName","_vector","_finished"];
|
||||
|
||||
_cursorTarget = _this select 0;
|
||||
|
||||
@@ -22,6 +22,9 @@ if ((isNil "_cursorTarget") or {(isNull _cursorTarget)}) then {
|
||||
};
|
||||
if (isNull _cursorTarget) exitWith {};
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_item = typeof _cursorTarget;
|
||||
|
||||
//remove action menu
|
||||
@@ -59,7 +62,7 @@ _isWater = (surfaceIsWater (getPosATL player)) or dayz_isSwimming;
|
||||
_upgradeParts = [];
|
||||
_startUpgrade = true;
|
||||
|
||||
if(_isWater or _onLadder) exitWith { localize "str_CannotUpgrade" call dayz_rollingMessages; };
|
||||
if(_isWater or _onLadder) exitWith { localize "str_CannotUpgrade" call dayz_rollingMessages; dayz_actionInProgress = false; };
|
||||
|
||||
// lets check player has requiredTools for upgrade
|
||||
{
|
||||
@@ -89,12 +92,14 @@ if(_isWater or _onLadder) exitWith { localize "str_CannotUpgrade" call dayz_roll
|
||||
|
||||
//Does object have a upgrade option.
|
||||
if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
//play animation
|
||||
player playActionNow "Medic";
|
||||
_dis = 20;
|
||||
_sfx = "tentpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
//Double check player did not drop required parts
|
||||
if (!_finished or (isNull _cursorTarget) or ({!(_x in magazines player)} count _upgradeParts > 0)) exitWith {};
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[100,15,5,0]] call dayz_NutritionSystem;
|
||||
@@ -104,15 +109,6 @@ if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
_objectID = _cursorTarget getVariable ["ObjectID","0"];
|
||||
_objectUID = _cursorTarget getVariable ["ObjectUID","0"];
|
||||
|
||||
//Upgrade
|
||||
_alreadyupgrading = _cursorTarget getVariable["alreadyupgrading",0];
|
||||
|
||||
if (_alreadyupgrading == 1) exitWith { localize "str_upgradeInProgress" call dayz_rollingMessages; };
|
||||
|
||||
_cursorTarget setVariable["alreadyupgrading",1];
|
||||
|
||||
uiSleep 0.03;
|
||||
|
||||
//Get location and direction of old item
|
||||
_dir = round getDir _cursorTarget;
|
||||
_vector = [vectorDir _cursorTarget,vectorUp _cursorTarget];
|
||||
@@ -126,9 +122,6 @@ if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
//get contents
|
||||
_magazines = getMagazineCargo _cursorTarget;
|
||||
|
||||
//replay animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
deleteVehicle _cursorTarget;
|
||||
|
||||
// remove parts from players inventory before creation of new tent.
|
||||
@@ -161,14 +154,10 @@ if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
_countr = _countr + 1;
|
||||
} count _objWpnTypes;
|
||||
|
||||
uiSleep 3;
|
||||
|
||||
//Light fire
|
||||
[_object,true] call dayz_inflame;
|
||||
_object spawn player_fireMonitor;
|
||||
|
||||
//publish new tent
|
||||
//[[[],[]],[[],[]],[[],[]]]
|
||||
PVDZ_obj_Publish = [dayz_characterID,_object,[_dir, _pos],[[[],[]],_magazines,[[],[]]]];
|
||||
publicVariableServer "PVDZ_obj_Publish";
|
||||
diag_log [diag_ticktime, __FILE__, "New Networked object, request to save to hive. PVDZ_obj_Publish:", PVDZ_obj_Publish];
|
||||
@@ -178,4 +167,6 @@ if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
} else {
|
||||
localize "str_upgradeNoOption" call dayz_rollingMessages;
|
||||
*/
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -11,8 +11,8 @@ dayz_actionInProgress = true;
|
||||
|
||||
private ["_cursorTarget","_item","_classname","_requiredTools","_requiredParts","_upgrade","_upgradeConfig",
|
||||
"_upgradeDisplayname","_onLadder","_isWater","_upgradeParts","_startUpgrade","_missingPartsConfig","_textMissingParts","_dis",
|
||||
"_sfx","_ownerID","_objectID","_objectUID","_alreadyupgrading","_dir","_weapons","_magazines","_backpacks","_object",
|
||||
"_objWpnTypes","_objWpnQty","_countr","_itemName","_vector","_playerNear"];
|
||||
"_sfx","_ownerID","_objectID","_objectUID","_dir","_weapons","_magazines","_backpacks","_object",
|
||||
"_objWpnTypes","_objWpnQty","_countr","_itemName","_vector","_playerNear","_finished"];
|
||||
|
||||
_cursorTarget = _this select 3;
|
||||
|
||||
@@ -98,24 +98,17 @@ if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_pickup_l
|
||||
|
||||
//Does object have a upgrade option.
|
||||
if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
//play animation
|
||||
player playActionNow "Medic";
|
||||
_dis = 20;
|
||||
_sfx = "tentpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
//Double check player did not drop required parts
|
||||
if (!_finished or (isNull _cursorTarget) or ({!(_x in magazines player)} count _upgradeParts > 0)) exitWith {};
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[100,15,5,0]] call dayz_NutritionSystem;
|
||||
|
||||
//Upgrade
|
||||
_alreadyupgrading = _cursorTarget getVariable["alreadyupgrading",0];
|
||||
|
||||
if (_alreadyupgrading == 1) exitWith { localize "str_upgradeInProgress" call dayz_rollingMessages; };
|
||||
|
||||
_cursorTarget setVariable["alreadyupgrading",1,true];
|
||||
|
||||
uiSleep 0.03;
|
||||
|
||||
//Get location and direction of old item
|
||||
_dir = round getDir _cursorTarget;
|
||||
@@ -134,9 +127,6 @@ if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
_magazines = getMagazineCargo _cursorTarget;
|
||||
_backpacks = getBackpackCargo _cursorTarget;
|
||||
|
||||
//replay animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
//remove old tent
|
||||
PVDZ_obj_Destroy = [_objectID,_objectUID,player];
|
||||
publicVariableServer "PVDZ_obj_Destroy";
|
||||
@@ -190,8 +180,6 @@ if ((_startUpgrade) AND (isClass(_upgradeConfig))) then {
|
||||
_countr = _countr + 1;
|
||||
} count _objWpnTypes;
|
||||
|
||||
uiSleep 3;
|
||||
|
||||
//publish new tent
|
||||
if (DZE_permanentPlot) then {
|
||||
_object setVariable ["ownerPUID",dayz_playerUID,true];
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
private ["_nearByChoppers","_cursorTarget","_type","_class","_requiredTools","_requiredParts","_upgradeType","_producedParts","_randomCreate",
|
||||
"_upgradeClass","_onLadder","_isWater","_ok","_missing","_upgradeParts","_dis","_characterID","_objectID","_objectUID",
|
||||
"_ownerArray","_ownerPasscode","_dir","_vector","_object","_puid","_clanArray","_wh","_variables"];
|
||||
"_ownerArray","_ownerPasscode","_dir","_vector","_object","_puid","_clanArray","_wh","_variables","_finished"];
|
||||
|
||||
_cursorTarget = _this;
|
||||
// ArmaA2 bug workaround: sometimes the object is null
|
||||
@@ -71,26 +71,25 @@ if (!_ok) exitWith {
|
||||
{ player addMagazine _x; } foreach _upgradeParts;
|
||||
format [localize "str_upgradeMissingPart", _missing] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
//Upgrade Started
|
||||
if ((player getVariable["alreadyBuilding",0]) == 1) exitWith {
|
||||
{ player addMagazine _x; } foreach _upgradeParts;
|
||||
localize "str_upgradeInProgress" call dayz_rollingMessages;
|
||||
};
|
||||
player setVariable["alreadyBuilding",1];
|
||||
|
||||
//play animation
|
||||
player playActionNow "Medic";
|
||||
if (dayz_actionInProgress) exitWith {
|
||||
{ player addMagazine _x; } forEach _upgradeParts;
|
||||
localize "str_player_actionslimit" call dayz_rollingMessages;
|
||||
};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_dis=20;
|
||||
[player,"tentpack",0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {
|
||||
{ player addMagazine _x; } forEach _upgradeParts;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[100,15,5,0]] call dayz_NutritionSystem;
|
||||
|
||||
//wait animation end
|
||||
waitUntil {getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "disableWeapons") == 1};
|
||||
waitUntil {getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "disableWeapons") == 0};
|
||||
|
||||
//get data from old building.
|
||||
_characterID = _cursorTarget getVariable ["characterID","0"];
|
||||
@@ -153,5 +152,5 @@ if (isServer) then {
|
||||
player reveal _object;
|
||||
|
||||
//Make sure its unlocked
|
||||
player setVariable["alreadyBuilding",0];
|
||||
localize "str_upgradeDone" call dayz_rollingMessages;
|
||||
localize "str_upgradeDone" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,11 +0,0 @@
|
||||
private ["_array","_object","_type"];
|
||||
|
||||
_array = _this select 3;
|
||||
_object = _array select 0;
|
||||
_type = TypeOf(_object);
|
||||
player playActionNow "Medic";
|
||||
uiSleep 8;
|
||||
player addBackpack format["%1_US_Bag_EP1",_type];
|
||||
deleteVehicle _object;
|
||||
r_action = false;
|
||||
call fnc_usec_medic_removeActions;
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_theBomb","_vehicle","_curFuel","_newFuel","_timeLeft","_hasToolbox","_hasCarBomb","_dis","_sfx","_alreadyBombed","_hasCrowbar"];
|
||||
private ["_theBomb","_vehicle","_curFuel","_newFuel","_timeLeft","_hasToolbox","_hasCarBomb","_dis","_sfx","_alreadyBombed","_hasCrowbar","_finished"];
|
||||
|
||||
_vehicle = _this select 3;
|
||||
_hasToolbox = "ItemToolbox" in items player;
|
||||
@@ -12,27 +12,32 @@ if(!_hasCarBomb) exitWith {
|
||||
localize "str_bombMissing" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
/*
|
||||
if(_vehicle getVariable["hasBomb",false]) exitWith {
|
||||
localize "str_bombAlready" call dayz_rollingMessages;
|
||||
};
|
||||
*/
|
||||
|
||||
player removeMagazine "ItemCarBomb";
|
||||
|
||||
//wait a bit
|
||||
player playActionNow "Medic";
|
||||
uiSleep 1;
|
||||
|
||||
//DO Animation
|
||||
_dis=20;
|
||||
_sfx = "tentunpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished or !("ItemCarBomb" in magazines player)) exitWith {
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
player removeMagazine "ItemCarBomb";
|
||||
|
||||
//Send the Eventhandler to Server
|
||||
if(!_alreadyBombed) then {
|
||||
PVDZ_dayzCarBomb = [_vehicle,getPlayerUID player];
|
||||
publicVariableServer "PVDZ_dayzCarBomb";
|
||||
};
|
||||
localize "str_bombAttached" call dayz_rollingMessages;
|
||||
localize "str_bombAttached" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,5 +1,5 @@
|
||||
private ["_brokein","_isOk","_hasSledgeHammer","_gps","_vars","_hasToolbox","_hasCrowbar","_limit","_proceed","_counter",
|
||||
"_dis","_sfx","_roll","_animState","_started","_finished","_isMedic","_isGate","_values"];
|
||||
"_dis","_sfx","_roll","_finished","_isGate","_values"];
|
||||
|
||||
_target = _this select 3;
|
||||
_pos = getPos _target;
|
||||
@@ -51,40 +51,14 @@ while {_isOk} do {
|
||||
uiSleep 1;
|
||||
};
|
||||
|
||||
//Run animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
//Run SFX
|
||||
_dis=20;
|
||||
_sfx = "repair";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
//Setup Vars
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
//run animation loop
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
_finished = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
//Run animation loop
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
//Interrupt and end
|
||||
if(!_finished) exitWith {
|
||||
@@ -139,12 +113,6 @@ if (isnil "_proceed") exitwith {};
|
||||
|
||||
//Interrupted for some reason
|
||||
if (!_proceed) then {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
|
||||
localize "STR_BLD_BREAKIN_CANCELLED" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ if (!isNil "_this" && {typeName _this == "ARRAY"} && {count _this > 0}) exitWith
|
||||
DayZ Base Building
|
||||
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
||||
*/
|
||||
private ["_location","_pos","_dir","_classname","_item","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_tmpbuilt","_onLadder","_require","_text","_offset","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_distance","_classnametmp","_ghost","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_needNear","_vehicle","_inVehicle","_objHDiff","_isAllowedUnderGround","_canBuild"];
|
||||
private ["_location","_pos","_dir","_classname","_item","_cancel","_reason","_finished","_dis","_sfx","_tmpbuilt","_onLadder","_require","_text","_offset","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_distance","_classnametmp","_ghost","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_needNear","_vehicle","_inVehicle","_objHDiff","_isAllowedUnderGround","_canBuild"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_40" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -324,41 +324,14 @@ if (_canBuild select 0) then {
|
||||
_counter = 0;
|
||||
|
||||
while {_isOk} do {
|
||||
|
||||
format[localize "str_epoch_player_139",_text, (_counter + 1),_limit] call dayz_rollingMessages;
|
||||
|
||||
player playActionNow "Medic";
|
||||
|
||||
_dis=20;
|
||||
_sfx = "repair";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
r_interrupt = false;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt || (player getVariable["combattimeout",0] >= diag_tickTime)) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
if (DZE_cancelBuilding) exitWith {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
_finished = ["Medic",1,{player getVariable["combattimeout",0] >= diag_tickTime or DZE_cancelBuilding}] call fn_loopAction;
|
||||
|
||||
if(!_finished) exitWith {
|
||||
_isOk = false;
|
||||
@@ -373,7 +346,6 @@ if (_canBuild select 0) then {
|
||||
_isOk = false;
|
||||
_proceed = true;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
if (_proceed) then {
|
||||
@@ -477,14 +449,7 @@ if (_canBuild select 0) then {
|
||||
localize "str_epoch_player_46" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
|
||||
deleteVehicle _tmpbuilt;
|
||||
|
||||
localize "str_epoch_player_46" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
|
||||
@@ -11,6 +11,9 @@ private ["_classType","_item","_action","_missingTools","_missingItem","_emergin
|
||||
Needs a full rewrite to keep up with the demand of everything we plan to add.
|
||||
*/
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
call gear_ui_init;
|
||||
closeDialog 1;
|
||||
|
||||
@@ -25,7 +28,6 @@ if (count _this > 2) then {
|
||||
};
|
||||
|
||||
_emergingLevel = 1.1;
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_isClass = switch (1==1) do {
|
||||
case (isClass (configFile >> "CfgMagazines" >> _item)): {"CfgMagazines"};
|
||||
@@ -52,12 +54,9 @@ _keepOnSlope = 0 == (getNumber (configFile >> "CfgVehicles" >> _classname >> "ca
|
||||
_onLadder = {getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder") == 1};
|
||||
_isWater = {(surfaceIsWater (getPosATL _object)) or dayz_isSwimming};
|
||||
|
||||
if (0 != count Dayz_constructionContext) then {
|
||||
if (0 != count Dayz_constructionContext) exitWith {
|
||||
dayz_actionInProgress = false;
|
||||
//cutText [localize "str_already_building", "PLAIN DOWN"];
|
||||
_msg = localize "str_already_building";
|
||||
_msg call dayz_rollingMessages;
|
||||
diag_log [ diag_ticktime, __FILE__, 'already building, exiting', Dayz_constructionContext, typeName Dayz_constructionContext];
|
||||
localize "str_already_building" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
// item is missin - this really is pointless but it aint broke so dont fix it
|
||||
@@ -297,7 +296,7 @@ _position = getPosATL _object;
|
||||
_actionBuildHidden = true;
|
||||
_actionCancel = player addAction [localize "str_player_build_cancel", "\z\addons\dayz_code\actions\object_build.sqf", [_object, _requiredParts, _classname, _text, false, 0, "none"], 1, true, true, "", "0 != count Dayz_constructionContext"];
|
||||
|
||||
while {dayz_actionInProgress and Dayz_constructionContext select 4} do {
|
||||
while {Dayz_constructionContext select 4} do {
|
||||
|
||||
// force the angle so that the ghost is showing always the same side
|
||||
_angleRef=Dayz_constructionContext select 1;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
DayZ Base Building Upgrades
|
||||
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
||||
*/
|
||||
private ["_location","_dir","_classname","_text","_object","_objectID","_objectUID","_newclassname","_refund","_obj","_upgrade","_objectCharacterID","_ownerID","_i","_invResult","_itemOut","_countOut","_abortInvAdd","_addedItems"];
|
||||
private ["_location","_dir","_classname","_text","_object","_objectID","_objectUID","_newclassname","_refund","_obj","_upgrade","_objectCharacterID","_ownerID","_i","_invResult","_itemOut","_countOut","_abortInvAdd","_addedItems","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_48" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -37,13 +37,15 @@ _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
|
||||
_upgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "downgradeBuilding");
|
||||
|
||||
if ((count _upgrade) > 0) then {
|
||||
|
||||
_newclassname = _upgrade select 0;
|
||||
|
||||
_refund = _upgrade select 1;
|
||||
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
|
||||
player playActionNow "Medic";
|
||||
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
|
||||
|
||||
_invResult = false;
|
||||
_abortInvAdd = false;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
DayZ Base Building Maintenance
|
||||
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
||||
*/
|
||||
private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_requirements","_obj","_upgrade","_objectCharacterID"];
|
||||
private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_requirements","_obj","_upgrade","_objectCharacterID","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_52" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -47,10 +47,13 @@ _proceed = true;
|
||||
if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
|
||||
} forEach _requirements;
|
||||
|
||||
if (_proceed) then {
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
player playActionNow "Medic";
|
||||
if (_proceed) then {
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
|
||||
_temp_removed_array = [];
|
||||
_removed_total = 0;
|
||||
@@ -89,6 +92,5 @@ if (_proceed) then {
|
||||
format[localize "STR_EPOCH_ACTIONS_6",_missingQty, _textMissing] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
s_player_maint_build = -1;
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
private ["_dis","_sfx","_breaking","_countOut","_counter","_isOk","_proceed","_animState","_started","_finished","_isMedic","_itemOut","_tree","_distance2d"];
|
||||
private ["_dis","_sfx","_breaking","_countOut","_counter","_isOk","_proceed","_finished","_itemOut","_tree","_distance2d"];
|
||||
|
||||
call gear_ui_init;
|
||||
closeDialog 1;
|
||||
@@ -26,41 +26,18 @@ if (!isNull _tree) then {
|
||||
_proceed = false;
|
||||
|
||||
while {_isOk} do {
|
||||
//play action
|
||||
player playActionNow "Medic";
|
||||
|
||||
//setup alert and speak
|
||||
_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;
|
||||
|
||||
// Working-Factor for chopping wood.
|
||||
["Working",0,[50,10,5,0]] call dayz_NutritionSystem;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
|
||||
uiSleep 0.1;
|
||||
};
|
||||
|
||||
if(!_finished) exitWith {
|
||||
_isOk = false;
|
||||
_proceed = false;
|
||||
@@ -118,13 +95,6 @@ if (!isNull _tree) then {
|
||||
};
|
||||
if !(_proceed) then {
|
||||
localize "str_player_24_Stoped" call dayz_rollingMessages;
|
||||
|
||||
r_interrupt = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
//adding melee mags back if needed
|
||||
switch (primaryWeapon player) do {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_item","_config","_pos","_onLadder","_create","_started","_finished","_animState","_isMedic","_num_removed","_text","_haskey","_hastoolweapon","_isNear","_hasTinBar"];
|
||||
private ["_item","_config","_pos","_onLadder","_create","_finished","_num_removed","_text","_haskey","_hastoolweapon","_isNear","_hasTinBar"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_56" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -25,36 +25,13 @@ call gear_ui_init;
|
||||
// require one tin bar per key
|
||||
_hasTinBar = "ItemTinBar" in magazines player;
|
||||
if (!_hasTinBar) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_59" call dayz_rollingMessages;};
|
||||
player playActionNow "Medic";
|
||||
|
||||
[player,"repair",0,false] call dayz_zombieSpeak;
|
||||
[player,50,true,_pos] spawn player_alertZombies;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if(_finished) then {
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (_finished) then {
|
||||
_num_removed = ([player,"ItemTinBar"] call BIS_fnc_invRemove);
|
||||
|
||||
if(_num_removed == 1) then {
|
||||
@@ -64,11 +41,6 @@ if(_finished) then {
|
||||
localize "str_epoch_player_61" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
localize "str_epoch_player_61" call dayz_rollingMessages;
|
||||
};
|
||||
dayz_actionInProgress = false;
|
||||
|
||||
@@ -23,7 +23,7 @@ class ItemActions
|
||||
};
|
||||
};
|
||||
*/
|
||||
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_boiled","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];
|
||||
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_boiled","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_finished","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -113,33 +113,10 @@ if (_canDo) then {
|
||||
if (_proceed) then {
|
||||
localize "str_epoch_player_62" call dayz_rollingMessages;
|
||||
|
||||
player playActionNow "Medic";
|
||||
|
||||
[player,_sfx,0,false] call dayz_zombieSpeak;
|
||||
[player,50,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (_finished) then {
|
||||
_removed_total = 0; // count total of removed items
|
||||
@@ -254,11 +231,6 @@ if (_canDo) then {
|
||||
};
|
||||
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
localize "str_epoch_player_64" call dayz_rollingMessages;
|
||||
_craft_doLoop = false;
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
failChance = 1;
|
||||
*/
|
||||
//diag_log("crafting system");
|
||||
private ["_config","_input","_output","_required","_failChance","_hasInput","_availabeSpace","_classname","_isClass","_onLadder","_hasTools","_avail","_selection","_item","_amount","_itemName","_freeSlots","_slotType","_i","_j","_dis","_sfx"];
|
||||
private ["_config","_input","_output","_required","_failChance","_hasInput","_availabeSpace","_classname","_isClass","_onLadder","_hasTools","_avail","_selection","_item","_amount","_itemName","_freeSlots","_slotType","_i","_j","_dis","_sfx","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -129,14 +129,15 @@ if(!r_drag_sqf and !r_player_unconscious and !_onLadder) then {
|
||||
//player playActionNow "PutDown";
|
||||
call gear_ui_init;
|
||||
closeDialog 1;
|
||||
player playActionNow "Medic";
|
||||
uiSleep 2;
|
||||
//setup alert and speak
|
||||
|
||||
_dis=20;
|
||||
_sfx = if (_classname == "equip_rope") then {"bandage"} else {"chopwood"};
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
{
|
||||
_item = _x select 0;
|
||||
_amount = _x select 2;
|
||||
@@ -155,7 +156,7 @@ if(!r_drag_sqf and !r_player_unconscious and !_onLadder) then {
|
||||
//uiSleep 0.1;
|
||||
};
|
||||
} forEach _input;
|
||||
uiSleep 3;
|
||||
|
||||
{
|
||||
_item = _x select 0;
|
||||
_selection = _x select 1;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_playerPos","_item","_location","_config","_text","_dir","_dis","_sfx","_consumetext","_stashname","_stashtype","_stash","_consume","_hasitemcount","_worldspace"];
|
||||
private ["_playerPos","_item","_location","_config","_text","_dir","_dis","_sfx","_consumetext","_stashname","_stashtype","_stash","_consume","_hasitemcount","_worldspace","_finished"];
|
||||
|
||||
//check if can pitch here
|
||||
call gear_ui_init;
|
||||
@@ -45,16 +45,16 @@ if ((count _worldspace) == 2) then {
|
||||
player removeMagazine _consume;
|
||||
_dir = round(direction player);
|
||||
|
||||
//wait a bit
|
||||
player playActionNow "Medic";
|
||||
uiSleep 1;
|
||||
|
||||
_dis=20;
|
||||
_sfx = "tentunpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {
|
||||
player addMagazine _consume;
|
||||
};
|
||||
|
||||
uiSleep 5;
|
||||
//place tent (local)
|
||||
_stash = createVehicle [_stashtype, _location, [], 0, "CAN_COLLIDE"];
|
||||
_stash setdir _dir;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_emptycan","_objectID","_objectUID","_obj","_fuelArray","_matchArray","_alreadyDestroying","_randomJerryCan","_fireIntensity","_dis","_sfx"];
|
||||
private ["_emptycan","_objectID","_objectUID","_obj","_fuelArray","_matchArray","_randomJerryCan","_fireIntensity","_dis","_sfx","_finished"];
|
||||
|
||||
//Tent Object
|
||||
_obj = _this select 3;
|
||||
@@ -27,19 +27,22 @@ _matchArray = [];
|
||||
if ((count _fuelArray == 0)) exitwith { systemChat (localize ("str_setFireFuel")); };
|
||||
if ((count _matchArray == 0)) exitwith { systemChat (localize ("str_setFireMatches")); };
|
||||
|
||||
//Play normal action animation
|
||||
player playActionNow "Medic";
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
//Actionmenu tools
|
||||
player removeAction s_player_destroytent;
|
||||
s_player_destroytent = -1;
|
||||
|
||||
//Make sure you can only destroy once
|
||||
_alreadyDestroying = _obj getVariable["alreadyDestroying",0];
|
||||
_dis=20;
|
||||
_sfx = "tentpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
if (_alreadyDestroying == 1) exitWith {localize "str_TentAlreadyLit" call dayz_rollingMessages;};
|
||||
|
||||
_obj setVariable["alreadyDestroying",1];
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished or (isNull _obj)) exitWith {
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
//Jerry can system ** Needs redoing
|
||||
//Select random can from array
|
||||
@@ -49,24 +52,20 @@ _name = getText (configFile >> "CfgMagazines" >> _randomJerryCan >> "displayName
|
||||
_emptycan = getText (configFile >> "CfgMagazines" >> _randomJerryCan >> "emptycan");
|
||||
_fireIntensity = getNumber (configFile >> "CfgMagazines" >> _randomJerryCan >> "fireIntensity");
|
||||
|
||||
if !(_randomJerryCan in magazines player) exitWith {
|
||||
localize "str_setFireFuel" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
player removeMagazine _randomJerryCan;
|
||||
player addMagazine _emptycan;
|
||||
|
||||
["matches",0.3] call fn_dynamicTool;
|
||||
|
||||
//Normal alerts
|
||||
_dis=20;
|
||||
_sfx = "tentpack";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
|
||||
uiSleep 3;
|
||||
|
||||
_activatingPlayer = player;
|
||||
PVDZ_obj_Destroy = [_objectID,_objectUID, _activatingPlayer];
|
||||
PVDZ_obj_Destroy = [_objectID,_objectUID,player];
|
||||
publicVariableServer "PVDZ_obj_Destroy";
|
||||
|
||||
//Send killed for object
|
||||
@@ -86,4 +85,5 @@ publicVariable "PVDZ_obj_Fire";
|
||||
_obj inflame true;
|
||||
//_obj spawn player_fireMonitor;
|
||||
|
||||
localize "str_success_tent_destroyed" call dayz_rollingMessages;
|
||||
localize "str_success_tent_destroyed" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,21 +1,30 @@
|
||||
private ["_bottle","_tape","_fixedBottle"];
|
||||
private ["_bottle","_tape","_fixedBottle","_finished"];
|
||||
|
||||
_bottle = _this;
|
||||
_tape = "equip_duct_tape";
|
||||
_fixedBottle = "ItemWaterBottleUnfilled";
|
||||
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
call gear_ui_init;
|
||||
closeDialog 0;
|
||||
|
||||
// Check if the player has the tape
|
||||
if (_tape in magazines player) then {
|
||||
//Fix the bottle
|
||||
player playActionNow "Medic";
|
||||
[player,"bandage",0,false] call dayz_zombieSpeak;
|
||||
uiSleep 6;
|
||||
player removeMagazine _bottle;
|
||||
player removeMagazine _tape;
|
||||
player addMagazine _fixedBottle;
|
||||
localize "str_fix_water_bottle" call dayz_rollingMessages;
|
||||
[player,"bandage",0,false] call dayz_zombieSpeak;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
// Check again to make sure player didn't drop item
|
||||
if (_tape in magazines player) then {
|
||||
player removeMagazine _bottle;
|
||||
player removeMagazine _tape;
|
||||
player addMagazine _fixedBottle;
|
||||
localize "str_fix_water_bottle" call dayz_rollingMessages;
|
||||
};
|
||||
} else { //If the player doesn't have the tape
|
||||
localize "str_fix_water_bottle_fail" call dayz_rollingMessages;
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,5 +1,5 @@
|
||||
//fixHatchet old file
|
||||
private ["_tool","_tape","_fixedItem","_config","_dName","_handle"];
|
||||
private ["_tool","_tape","_fixedItem","_config","_dName","_handle","_finished"];
|
||||
|
||||
_tool = _this;
|
||||
_config = configFile >> "CfgWeapons" >> _tool;
|
||||
@@ -12,21 +12,26 @@ _tape = "equip_duct_tape";
|
||||
//Handle
|
||||
_handle = "equip_lever";
|
||||
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
call gear_ui_init;
|
||||
closeDialog 0;
|
||||
|
||||
// Check if the player has the tape
|
||||
if ((_tape in magazines player) && (_handle in magazines player)) then {
|
||||
//Fix the tool
|
||||
player playActionNow "Medic";
|
||||
if ((_tape in magazines player) && (_handle in magazines player) && (_tool in items player)) then {
|
||||
[player,"bandage",0,false] call dayz_zombieSpeak;
|
||||
uiSleep 6;
|
||||
player removeWeapon _tool;
|
||||
player removeMagazine _tape;
|
||||
player removeMagazine _handle;
|
||||
player addWeapon _fixedItem;
|
||||
format[localize "str_fixToolSuccess", _dName] call dayz_rollingMessages;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
// Check again to make sure player didn't drop item
|
||||
if ((_tape in magazines player) && (_handle in magazines player) && (_tool in items player)) then {
|
||||
player removeWeapon _tool;
|
||||
player removeMagazine _tape;
|
||||
player removeMagazine _handle;
|
||||
player addWeapon _fixedItem;
|
||||
format[localize "str_fixToolSuccess", _dName] call dayz_rollingMessages;
|
||||
};
|
||||
} else { //If the player doesn't have the mats.
|
||||
if (!(_tape in magazines player)) then {
|
||||
if (!(_handle in magazines player)) then {
|
||||
@@ -37,4 +42,6 @@ if ((_tape in magazines player) && (_handle in magazines player)) then {
|
||||
} else {
|
||||
localize "str_fixtoolMissingHandle" call dayz_rollingMessages;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -3,7 +3,7 @@
|
||||
Usage: spawn player_harvestPlant;
|
||||
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
||||
*/
|
||||
private ["_isOk","_i","_objName","_started","_finished","_animState","_isMedic","_proceed","_itemOut","_countOut","_plant","_findNearestPlant","_index","_invResult","_text","_playerNear"];
|
||||
private ["_isOk","_i","_objName","_finished","_proceed","_itemOut","_countOut","_plant","_findNearestPlant","_index","_invResult","_text","_playerNear"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_72" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -31,34 +31,11 @@ if (count _findNearestPlant >= 1) then {
|
||||
_isOk = true;
|
||||
_proceed = false;
|
||||
while {_isOk} do {
|
||||
player playActionNow "Medic";
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
[player,"chopwood",0,false] call dayz_zombieSpeak;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
[player,"chopwood",0,false] call dayz_zombieSpeak;
|
||||
|
||||
uiSleep 0.1;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
};
|
||||
|
||||
if(!_finished) exitWith {
|
||||
_isOk = false;
|
||||
_proceed = false;
|
||||
@@ -103,11 +80,6 @@ if (count _findNearestPlant >= 1) then {
|
||||
format[localize "str_epoch_player_143",_i,_text] call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
localize "str_epoch_player_73" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_dir","_classname","_b0x1337","_location","_item","_config","_create_raw","_create","_qty","_type","_hasCrate","_hasTool"];
|
||||
private ["_dir","_classname","_b0x1337","_location","_item","_config","_create_raw","_create","_qty","_type","_hasCrate","_hasTool","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_75" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -27,6 +27,11 @@ if ((_location select 2) < 0) then {
|
||||
_location set [2,0];
|
||||
};
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished or !(_item in magazines player)) exitWith {
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
//remove (partially) full crate
|
||||
player removeMagazine _item;
|
||||
_dir = getDir player;
|
||||
@@ -36,9 +41,6 @@ _classname = "WeaponHolder";
|
||||
player addMagazine "bulk_empty";
|
||||
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
// Change to optional wait to complete
|
||||
player playActionNow "Medic";
|
||||
uiSleep 6;
|
||||
|
||||
_b0x1337 = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
|
||||
_b0x1337 setDir _dir;
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
private ["_item","_config","_exit","_text","_booleans","_worldspace","_dir","_location","_dis","_fire","_tool","_itemPile","_posASL","_testSea"];
|
||||
private ["_item","_config","_exit","_text","_booleans","_worldspace","_dir","_location","_fire","_tool","_itemPile","_posASL","_testSea","_finished"];
|
||||
|
||||
_tool = _this;
|
||||
call gear_ui_init;
|
||||
closeDialog 0;
|
||||
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_item = "ItemLog";
|
||||
_itemPile = "PartWoodPile";
|
||||
_config = configFile >> "CfgMagazines" >> _item;
|
||||
@@ -14,19 +17,25 @@ if (_tool == "PartWoodPile") then {
|
||||
_exit = true;
|
||||
{if (_x in DayZ_Ignitors) exitWith {_exit = false};} forEach (items player);
|
||||
};
|
||||
if (_exit) exitWith {(localize "str_fireplace_noMatches") call dayz_rollingMessages;};
|
||||
if (_exit) exitWith {
|
||||
localize "str_fireplace_noMatches" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
// item is missing or tools are missing
|
||||
if (!(_item in magazines player) && !(_itemPile in magazines player)) exitWith {
|
||||
//localize "str_player_22" call dayz_rollingMessages;
|
||||
(localize "str_player_22") call dayz_rollingMessages;
|
||||
localize "str_player_22" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
_booleans = []; //testonLadder, testSea, testPond, testBuilding, testSlope, testDistance
|
||||
_worldspace = ["Land_Fire_DZ", player, _booleans] call fn_niceSpot;
|
||||
|
||||
// player on ladder or in a vehicle
|
||||
if (_booleans select 0) exitWith { localize "str_player_21" call dayz_rollingMessages; };
|
||||
if (_booleans select 0) exitWith {
|
||||
localize "str_player_21" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
_testSea = true;
|
||||
_posASL = getPosASL player;
|
||||
@@ -37,9 +46,17 @@ if ((_booleans select 1) && _posASL select 2 > 2) then {
|
||||
};
|
||||
|
||||
// object would be in the water (pool or sea)
|
||||
if ((_booleans select 1 && _testSea) OR (_booleans select 2)) exitWith { localize "str_player_26" call dayz_rollingMessages; };
|
||||
if ((_booleans select 1 && _testSea) OR (_booleans select 2)) exitWith {
|
||||
localize "str_player_26" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
if ((count _worldspace) == 2) then {
|
||||
[player,20,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished or (!(_item in magazines player) && !(_itemPile in magazines player))) exitWith {};
|
||||
|
||||
if (_item in magazines player) then {
|
||||
player removeMagazine _item;
|
||||
} else {
|
||||
@@ -48,19 +65,12 @@ if ((count _worldspace) == 2) then {
|
||||
_dir = _worldspace select 0;
|
||||
_location = _worldspace select 1;
|
||||
|
||||
player playActionNow "Medic";
|
||||
uiSleep 1;
|
||||
// fireplace location may not be in front of player (but in 99% time it should)
|
||||
player setDir _dir;
|
||||
player setPosATL (getPosATL player);
|
||||
|
||||
_dis=20;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
|
||||
uiSleep 5;
|
||||
|
||||
_fire = createVehicle ["Land_Fire_DZ", [0,0,0], [], 0, "CAN_COLLIDE"];
|
||||
_fire setDir _dir;
|
||||
@@ -82,4 +92,6 @@ if ((count _worldspace) == 2) then {
|
||||
localize "str_fireplace_01" call dayz_rollingMessages;
|
||||
} else {
|
||||
localize "str_fireplace_02" call dayz_rollingMessages;
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,12 +1,11 @@
|
||||
private ["_item","_result","_dis","_sfx","_num","_breaking","_counter","_rocks","_findNearestRock",
|
||||
"_objName","_countOut","_isOk","_proceed","_animState","_started","_finished","_isMedic","_itemOut","_wpPos","_nearByPile"];
|
||||
private ["_item","_dis","_sfx","_breaking","_counter","_rocks","_findNearestRock","_objName","_countOut","_isOk","_proceed","_finished","_itemOut"];
|
||||
|
||||
_item = _this;
|
||||
call gear_ui_init;
|
||||
closeDialog 1;
|
||||
|
||||
if(dayz_workingInprogress) exitWith { localize "STR_MINING_IN_PROGRESS" call dayz_rollingMessages; };
|
||||
dayz_workingInprogress = true;
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
// allowed rocks list move this later
|
||||
_rocks = ["r2_boulder1.p3d","r2_boulder2.p3d","r2_rock1.p3d","r2_rock2.p3d","r2_rocktower.p3d","r2_rockwall.p3d","r2_stone.p3d"];
|
||||
@@ -22,56 +21,28 @@ _findNearestRock = objNull;
|
||||
if (!isNull _findNearestRock) then {
|
||||
_countOut = 2 + floor(random 3);
|
||||
|
||||
//Remove melee magazines (BIS_fnc_invAdd fix) (add new melee ammo to array if needed)
|
||||
{player removeMagazines _x} forEach ["Hatchet_Swing","Crowbar_Swing","Machete_Swing","Fishing_Swing","Sledge_Swing"];
|
||||
|
||||
// Start stone mining loop
|
||||
_counter = 0;
|
||||
_isOk = true;
|
||||
_proceed = false;
|
||||
|
||||
while {_isOk} do {
|
||||
//play action
|
||||
player playActionNow "Medic";
|
||||
|
||||
//setup alert and speak
|
||||
_dis=20;
|
||||
_sfx = "minestone";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
// Working-Factor for mining stone.
|
||||
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
|
||||
uiSleep 0.1;
|
||||
};
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if(!_finished) exitWith {
|
||||
_isOk = false;
|
||||
_proceed = false;
|
||||
};
|
||||
|
||||
if(_finished) then {
|
||||
if(_finished) then {
|
||||
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
|
||||
|
||||
_breaking = false;
|
||||
if (dayz_toolBreaking && {[0.09] call fn_chance}) then {
|
||||
_breaking = true;
|
||||
@@ -106,32 +77,15 @@ if (!isNull _findNearestRock) then {
|
||||
};
|
||||
_isOk = false;
|
||||
_proceed = true;
|
||||
uiSleep 1;
|
||||
};
|
||||
format[localize "str_mining_progress", _counter,(_countOut - _counter)] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
if (!_proceed) then {
|
||||
localize "str_mining_canceled" call dayz_rollingMessages;
|
||||
|
||||
r_interrupt = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
|
||||
//adding melee mags back if needed
|
||||
switch (primaryWeapon player) do {
|
||||
case "MeleeHatchet": {player addMagazine 'Hatchet_Swing';};
|
||||
case "MeleeCrowbar": {player addMagazine 'Crowbar_Swing';};
|
||||
case "MeleeMachete": {player addMagazine 'Machete_Swing';};
|
||||
case "MeleeFishingPole": {player addMagazine 'Fishing_Swing';};
|
||||
case "MeleeSledge": {player addMagazine 'Sledge_Swing';};
|
||||
};
|
||||
} else {
|
||||
localize "str_mining_no_rocks" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
dayz_workingInprogress = false;
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_skin","_rnd","_rounded","_itemtocreate","_i","_config","_result"];
|
||||
private ["_skin","_rnd","_rounded","_itemtocreate","_i","_config","_result","_finished"];
|
||||
|
||||
_skin = _this;
|
||||
_config = configFile >> "CfgMagazines" >> _skin;
|
||||
@@ -9,11 +9,20 @@ _rounded = round _rnd;
|
||||
call gear_ui_init;
|
||||
closeDialog 0;
|
||||
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
//Tear the clothes
|
||||
player playActionNow "Medic";
|
||||
[player,"bandage",0,false] call dayz_zombieSpeak;
|
||||
uiSleep 6;
|
||||
if !(_skin in magazines player) exitWith {localize "str_tear_clothes_0" call dayz_rollingMessages;};
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
if !(_skin in magazines player) exitWith {
|
||||
localize "str_tear_clothes_0" call dayz_rollingMessages;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
player removeMagazine _skin;
|
||||
|
||||
switch (_rounded) do {
|
||||
@@ -48,4 +57,6 @@ while {_i < _rounded} do {
|
||||
[_itemtocreate,1,1] call fn_dropItem;
|
||||
};
|
||||
};
|
||||
true call dz_fn_meleeMagazines;
|
||||
true call dz_fn_meleeMagazines;
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -2,7 +2,7 @@
|
||||
DayZ Base Building Upgrades
|
||||
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
||||
*/
|
||||
private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1","_combination_2","_combination_3","_combination","_objectCharacterID","_ownerID","_qtyBP","_forEachIndex","_bpMags","_countNew","_bp2Remove","_count","_friendsArr","_vector","_temp_BP_removed_array"];
|
||||
private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1","_combination_2","_combination_3","_combination","_objectCharacterID","_ownerID","_qtyBP","_forEachIndex","_bpMags","_countNew","_bp2Remove","_count","_friendsArr","_vector","_temp_BP_removed_array","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_52" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -51,9 +51,10 @@ if ((count _upgrade) > 0) then {
|
||||
} forEach _requirements;
|
||||
|
||||
if (_proceed) then {
|
||||
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
|
||||
player playActionNow "Medic";
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
|
||||
|
||||
_temp_removed_array = [];
|
||||
_temp_BP_removed_array = [];
|
||||
|
||||
@@ -4,7 +4,7 @@ dayz_actionInProgress = true;
|
||||
delete object from db with extra waiting by [VB]AWOL
|
||||
parameters: _obj
|
||||
*/
|
||||
private ["_obj","_objectID","_objectUID","_started","_finished","_animState","_isMedic","_isOk","_proceed","_counter","_limit","_objType","_sfx","_dis","_itemOut","_countOut","_selectedRemoveOutput","_nearestPole","_ownerID","_refundpart","_isWreck","_IsNearPlot","_brokenTool","_removeTool","_isDestructable","_isRemovable","_objOwnerID","_isOwnerOfObj","_preventRefund","_ipos","_item","_radius","_isWreckBuilding","_nameVehicle","_isModular","_success","_lootGroupIndex","_output"];
|
||||
private ["_obj","_objectID","_objectUID","_finished","_isOk","_proceed","_counter","_limit","_objType","_itemOut","_countOut","_selectedRemoveOutput","_nearestPole","_ownerID","_refundpart","_isWreck","_IsNearPlot","_brokenTool","_removeTool","_isDestructable","_isRemovable","_objOwnerID","_isOwnerOfObj","_preventRefund","_ipos","_item","_radius","_isWreckBuilding","_nameVehicle","_isModular","_success","_lootGroupIndex","_output"];
|
||||
|
||||
player removeAction s_player_deleteBuild;
|
||||
s_player_deleteBuild = 1;
|
||||
@@ -92,35 +92,8 @@ while {_isOk} do {
|
||||
|
||||
format[localize "str_epoch_player_163",_nameVehicle,(_counter + 1),_limit] call dayz_rollingMessages;
|
||||
|
||||
player playActionNow "Medic";
|
||||
_dis=20;
|
||||
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
_sfx = "repair";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
|
||||
uiSleep 0.1;
|
||||
|
||||
};
|
||||
[player,"repair",0,false,20] call dayz_zombieSpeak;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if(!_finished) exitWith {
|
||||
_isOk = false;
|
||||
@@ -277,13 +250,6 @@ if (_proceed && _success) then {
|
||||
} else {
|
||||
localize "str_epoch_player_91" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
dayz_actionInProgress = false;
|
||||
s_player_deleteBuild = -1;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
private ["_array","_vehicle","_part","_hitpoint","_type","_hasToolbox","_section","_nameType","_namePart","_damage","_selection","_dis","_sfx","_hitpoints","_allFixed","__FILE__"];
|
||||
private ["_array","_vehicle","_part","_hitpoint","_type","_nameType","_namePart","_damage","_selection","_dis","_sfx","_hitpoints","_allFixed","_finished"];
|
||||
|
||||
_id = _this select 2;
|
||||
_array = _this select 3;
|
||||
@@ -15,28 +15,25 @@ dayz_myCursorTarget = objNull;
|
||||
|
||||
//diag_log(format["%1 %2", __FILE__, _this]);
|
||||
|
||||
_hasToolbox = "ItemToolbox" in items player;
|
||||
_section = _part in magazines player;
|
||||
|
||||
//moving this here because we need to know which part needed if we don't have it
|
||||
_nameType = getText(configFile >> "cfgVehicles" >> _type >> "displayName");
|
||||
_namePart = getText(configFile >> "cfgMagazines" >> _part >> "displayName");
|
||||
|
||||
if (_section and _hasToolbox) then {
|
||||
player removeMagazine _part;
|
||||
player playActionNow "Medic";
|
||||
sleep 1;
|
||||
|
||||
if ("ItemToolbox" in items player && (_part in magazines player)) then {
|
||||
_dis=20;
|
||||
_sfx = "repair";
|
||||
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
|
||||
[player,_dis,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
// Check again to make sure player did not drop item
|
||||
if (!_finished or !(_part in magazines player)) exitWith {};
|
||||
player removeMagazine _part;
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
|
||||
sleep 5;
|
||||
|
||||
_damage = [_vehicle,_hitpoint] call object_getHit;
|
||||
_vehicle removeAction _id;
|
||||
//dont waste loot on undamaged parts
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
private ["_array","_vehicle","_part","_hitpoint","_type","_isOK","_brokenPart","_cancel","_started","_finished","_hasToolbox","_nameType","_namePart","_animState","_isMedic","_damage","_BreakableParts","_selection","_wpn","_classname","_ismelee"];
|
||||
private ["_array","_vehicle","_part","_hitpoint","_type","_isOK","_brokenPart","_cancel","_finished","_hasToolbox","_nameType","_namePart","_damage","_BreakableParts","_selection","_wpn","_classname","_ismelee"];
|
||||
|
||||
if (dayz_salvageInProgress) exitWith { localize "str_salvage_inprogress" call dayz_rollingMessages; };
|
||||
dayz_salvageInProgress = true;
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_array = _this select 3;
|
||||
_vehicle = _array select 0;
|
||||
@@ -10,8 +10,6 @@ _hitpoint = _array select 2;
|
||||
_type = typeOf _vehicle;
|
||||
_isOK = false;
|
||||
_brokenPart = false;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
_hasToolbox = "ItemToolbox" in items player;
|
||||
_cancel = false;
|
||||
|
||||
@@ -27,28 +25,14 @@ if (_hasToolbox) then {
|
||||
if ((_vehicle distance (_x select 0)) < (_x select 1)) exitWith {_cancel = true;};
|
||||
} count DZE_SafeZonePosArray;
|
||||
if (_cancel) exitWith { (localize "str_salvage_safezone") call dayz_rollingMessages;};
|
||||
player playActionNow "Medic";
|
||||
|
||||
[player,"repair",0,false] call dayz_zombieSpeak;
|
||||
[player,50,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
// Added Nutrition-Factor for work
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then { _started = true; };
|
||||
if (_started and !_isMedic) then { r_doLoop = false; _finished = true; };
|
||||
if (r_interrupt) then { r_doLoop = false; };
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (_finished) then {
|
||||
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
|
||||
//Remove melee magazines (BIS_fnc_invAdd fix)
|
||||
false call dz_fn_meleeMagazines;
|
||||
_damage = [_vehicle,_hitpoint] call object_getHit;
|
||||
@@ -87,11 +71,6 @@ if (_hasToolbox) then {
|
||||
};
|
||||
true call dz_fn_meleeMagazines;
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
localize "str_salvage_canceled" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
@@ -100,7 +79,7 @@ if (_hasToolbox) then {
|
||||
|
||||
dayz_myCursorTarget = objNull;
|
||||
s_player_repair_crtl = -1;
|
||||
dayz_salvageInProgress = false;
|
||||
dayz_actionInProgress = false;
|
||||
|
||||
//adding melee mags back if needed
|
||||
_wpn = primaryWeapon player;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_vehicle","_curFuel","_newFuel","_started","_finished","_animState","_isMedic","_location1","_location2","_abort",
|
||||
private ["_vehicle","_curFuel","_newFuel","_finished","_location1","_location2","_abort",
|
||||
"_canNameEmpty","_canSizeEmpty","_canTypeEmpty","_canName","_canSize","_configCanEmpty","_configVeh","_capacity","_nameText",
|
||||
"_availableCansEmpty","_hasHose","_PlayerNear"];
|
||||
|
||||
@@ -6,12 +6,12 @@ _vehicle = _this select 3;
|
||||
player removeAction s_player_siphonfuel;
|
||||
_hasHose = "equip_hose" in magazines player;
|
||||
|
||||
if (dayz_siphonFuelInProgress) exitWith { localize "str_siphon_inprogress" call dayz_rollingMessages; };
|
||||
if (!_hasHose) exitWith {localize "str_siphon_hose" call dayz_rollingMessages; };
|
||||
_PlayerNear = {isPlayer _x} count ((getPosATL _vehicle) nearEntities ["CAManBase", 10]) > 1;
|
||||
if (_PlayerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessages;};
|
||||
|
||||
dayz_siphonFuelInProgress = true;
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
_abort = false;
|
||||
|
||||
// Static vehicle fuel information
|
||||
@@ -52,39 +52,8 @@ _nameText = getText(_configVeh >> "displayName");
|
||||
// alert zombies
|
||||
[player,20,true,(getPosATL player)] call player_alertZombies;
|
||||
|
||||
if(!dayz_isSwimming) then {
|
||||
// force animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if(!_finished) then {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
if (!dayz_isSwimming) then {
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
} else {
|
||||
// Alternate method in water make sure player stays in one spot for 6 seconds
|
||||
_location1 = getPosATL player;
|
||||
@@ -151,4 +120,4 @@ _nameText = getText(_configVeh >> "displayName");
|
||||
if(_abort) exitWith {};
|
||||
} forEach magazines player;
|
||||
|
||||
dayz_siphonFuelInProgress = false;
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,6 +1,6 @@
|
||||
private ["_vehicle","_started","_finished","_animState","_isMedic","_soundObject"];
|
||||
private ["_vehicle","_finished","_soundObject"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_99" call dayz_rollingMessages;};
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
player removeAction s_player_fillgen;
|
||||
@@ -9,56 +9,24 @@ s_player_fillgen = 1;
|
||||
// Use target from addaction
|
||||
_vehicle = _this select 3;
|
||||
|
||||
player playActionNow "Medic";
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
|
||||
localize "str_epoch_player_100" call dayz_rollingMessages;
|
||||
|
||||
[player,50,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if(!_finished) then {
|
||||
r_interrupt = false;
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
if (!_finished) then {
|
||||
localize "str_epoch_player_26" call dayz_rollingMessages;
|
||||
};
|
||||
} else {
|
||||
// find sound and delete
|
||||
_soundObject = _vehicle getVariable "GeneratorSound";
|
||||
|
||||
if (_finished) then {
|
||||
deleteVehicle _soundObject;
|
||||
|
||||
// find sound && delete
|
||||
_soundObject = _vehicle getVariable "GeneratorSound";
|
||||
|
||||
deleteVehicle _soundObject;
|
||||
|
||||
// Stop generator
|
||||
_vehicle setVariable ["GeneratorRunning", false,true];
|
||||
// Stop generator
|
||||
_vehicle setVariable ["GeneratorRunning",false,true];
|
||||
|
||||
localize "str_epoch_player_101" call dayz_rollingMessages;
|
||||
|
||||
localize "str_epoch_player_101" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
private ["_item","_config","_text","_booleans","_worldspace","_dir","_location","_dis","_sfx","_tent","_classname","_object","_boundingBox","_maxPoint","_actionBuild","_actionCancel"];
|
||||
/*
|
||||
private ["_item", "_config", "_text", "_booleans", "_worldspace", "_dir", "_location", "_dis", "_sfx", "_tent"];
|
||||
|
||||
call gear_ui_init;
|
||||
|
||||
_item = _this;
|
||||
|
||||
_config = configFile >> "CfgMagazines" >> _item;
|
||||
_text = getText (_config >> "displayName");
|
||||
_classname = getText (_config >> "tentmodel");
|
||||
|
||||
//diag_log ("Classname: "+str(_classname));
|
||||
//diag_log ("Item: "+str(_item));
|
||||
|
||||
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
// item is missing or tools are missing
|
||||
if ((!(_item IN magazines player))) exitWith {
|
||||
dayz_actionInProgress = false;
|
||||
format[localize "str_player_31",_text,localize "str_player_31_pitch"] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
_booleans = []; //testonLadder, testSea, testPond, testBuilding, testSlope, testDistance
|
||||
|
||||
//remove tentbag
|
||||
player removeMagazine _item;
|
||||
//_dir = _worldspace select 0;
|
||||
//_location = _worldspace select 1;
|
||||
|
||||
//wait a bit
|
||||
//player playActionNow "Medic";
|
||||
sleep 1;
|
||||
// tent location may not be in front of player
|
||||
//player setDir _dir;
|
||||
//player setPosATL (getPosATL player);
|
||||
|
||||
_dis=20;
|
||||
_sfx = "tentunpack";
|
||||
|
||||
//sleep 5;
|
||||
|
||||
localize "str_player_build_rotate" call dayz_rollingMessages;
|
||||
_location = getMarkerpos "respawn_west";
|
||||
_object = createVehicle [_classname, _location, [], 0, "NONE"];
|
||||
|
||||
// Attach item
|
||||
_boundingBox = boundingBox _object;
|
||||
_maxPoint = ((_boundingBox select 1) select 0) max ((_boundingBox select 1) select 1);
|
||||
_object setPosATL [getPosATL _object select 0, getPosATL _object select 1, 0.01];
|
||||
_object attachTo [player, [0, _maxPoint + 1, 0.3]];
|
||||
|
||||
//Vars
|
||||
player setVariable ["constructionObject", _object];
|
||||
_object setVariable ["characterID",dayz_characterID,true];
|
||||
|
||||
//Actions
|
||||
_actionBuild = player addAction [localize "str_player_build_complete", "\z\addons\dayz_code\actions\object_build.sqf", [_object, _item, _classname, _text, true, _booleans, _dis, _sfx], 1, true];
|
||||
_actionCancel = player addAction [localize "str_player_build_cancel", "\z\addons\dayz_code\actions\object_build.sqf", [_object, _item, _classname, _text, false, _booleans, _dis, _sfx], 1, true];
|
||||
|
||||
sleep 0.01;
|
||||
|
||||
while {!isNull (player getVariable "constructionObject")} do {
|
||||
if (vehicle player != player) then {
|
||||
player action ["eject", vehicle player];
|
||||
};
|
||||
|
||||
if (speed player > 10 or speed player <= -8) then {
|
||||
localize "str_player_build_movingfast" call dayz_rollingMessages;
|
||||
player playMove "amovpercmstpssurwnondnon";
|
||||
};
|
||||
|
||||
sleep 0.2;
|
||||
|
||||
if (!alive player) then {
|
||||
[[],[],[],[_object, _item, _classname, _text, false, _booleans, _dis, _sfx]] call object_build;
|
||||
};
|
||||
};
|
||||
|
||||
player removeAction _actionBuild;
|
||||
player removeAction _actionCancel;
|
||||
*/
|
||||
/*
|
||||
sleep 5;
|
||||
|
||||
_tent = createVehicle ["TentStorage", getMarkerpos "respawn_west", [], 0, "CAN_COLLIDE"];
|
||||
_tent setDir _dir;
|
||||
_tent setPos _location; // follow terrain slope (works above sea level)
|
||||
player reveal _tent;
|
||||
_location = getPosATL _tent;
|
||||
|
||||
_tent setVariable ["characterID",dayz_characterID,true];
|
||||
PVDZ_obj_Publish = [dayz_characterID,_tent,[_dir,_location],_classname];
|
||||
publicVariableServer "PVDZ_obj_Publish";
|
||||
|
||||
localize "str_success_tent_pitch" call dayz_rollingMessages;
|
||||
sleep 1;
|
||||
} else {
|
||||
localize "str_fail_tent_pitch" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_vehicle","_started","_finished","_animState","_isMedic","_abort","_configVeh","_nameText","_findNearestVehicles","_findNearestVehicle","_IsNearVehicle","_towTruck","_towTruckSize","_allowedSize"];
|
||||
private ["_vehicle","_finished","_configVeh","_nameText","_findNearestVehicles","_findNearestVehicle","_IsNearVehicle","_towTruck","_towTruckSize","_allowedSize"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_96" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -37,45 +37,9 @@ if(_IsNearVehicle >= 1) then {
|
||||
// alert zombies
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
_finished = false;
|
||||
|
||||
// force animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if(!_finished) then {
|
||||
r_interrupt = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
_abort = true;
|
||||
};
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (_finished) then {
|
||||
|
||||
if((sizeOf typeOf _vehicle) <= _allowedSize) then {
|
||||
if([_vehicle,_towTruck] call fnc_isInsideBuilding && ((vectorUp _vehicle) select 2) > 0.5) then {
|
||||
if(typeOf _towTruck == "TOW_DZE" ) then {
|
||||
@@ -93,9 +57,6 @@ if(_IsNearVehicle >= 1) then {
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
localize "str_epoch_player_27" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
private ["_vehicle","_started","_finished","_animState","_isMedic","_configVeh","_nameText","_towTruck","_inTow"];
|
||||
private ["_vehicle","_finished","_configVeh","_nameText","_towTruck","_inTow"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_96" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -14,7 +14,7 @@ _inTow = _towTruck getVariable ["DZEinTow", false];
|
||||
|
||||
if(_inTow) then {
|
||||
|
||||
// select vehicl in tow
|
||||
// select vehicle in tow
|
||||
_vehicle = _towTruck getVariable ["DZEvehicleInTow", objNull];
|
||||
|
||||
if(!(isNull _towTruck)) then {
|
||||
@@ -26,41 +26,7 @@ if(_inTow) then {
|
||||
// alert zombies
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
|
||||
_finished = false;
|
||||
|
||||
// force animation
|
||||
player playActionNow "Medic";
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started && !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if(!_finished) then {
|
||||
r_interrupt = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (_finished) then {
|
||||
|
||||
|
||||
51
SQF/dayz_code/compile/fn_loopAction.sqf
Normal file
51
SQF/dayz_code/compile/fn_loopAction.sqf
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
Runs playActionNow the specified number of times.
|
||||
Entering a vehicle, moving or vaulting interrupts the loop.
|
||||
Must be called from a scheduled context (script executed by spawn or execVM)
|
||||
|
||||
Params:
|
||||
_this select 0: String: Action name to play
|
||||
_this select 1: Number: Number of times to play action
|
||||
_this select 2: (Optional) Code: Extra condition that interrupts action when true
|
||||
|
||||
Returns:
|
||||
Bool: True (finished), false (interrupted)
|
||||
|
||||
Usage:
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
*/
|
||||
private ["_action","_extra","_loop","_loops","_started"];
|
||||
|
||||
_action = _this select 0;
|
||||
_loops = _this select 1;
|
||||
_extra = if (count _this > 2) then {_this select 2} else {{false}};
|
||||
|
||||
r_interrupt = false;
|
||||
_started = false;
|
||||
_loop = 0;
|
||||
|
||||
while {_loop < _loops && !r_interrupt && !(call _extra) && (vehicle player == player)} do {
|
||||
if (!_started) then {
|
||||
player playActionNow _action;
|
||||
_started = true;
|
||||
};
|
||||
|
||||
if ([_action,animationState player] call fnc_inString) then {
|
||||
waitUntil {
|
||||
getNumber(configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "disableWeapons") == 0 //Finished or entered a vehicle
|
||||
or r_interrupt or (call _extra)
|
||||
};
|
||||
_loop = _loop + 1;
|
||||
_started = false;
|
||||
};
|
||||
|
||||
uiSleep 0.1;
|
||||
};
|
||||
|
||||
if (vehicle player == player && (r_interrupt or (call _extra))) then {
|
||||
[objNull, player, rSwitchMove, ""] call RE;
|
||||
player playActionNow "Stop";
|
||||
};
|
||||
|
||||
//Player did not interrupt by moving, entering a vehicle or extra condition
|
||||
(!r_interrupt && !(call _extra) && (vehicle player == player))
|
||||
@@ -378,17 +378,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
|
||||
};
|
||||
};
|
||||
|
||||
// Not needed.
|
||||
/*
|
||||
if(_cursorTarget == dayz_hasFire) then {
|
||||
if ((s_player_fireout < 0) && !(_cursorTarget call isInflamed) && (player distance _cursorTarget < 3)) then {
|
||||
s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true];
|
||||
};
|
||||
} else {
|
||||
player removeAction s_player_fireout;
|
||||
s_player_fireout = -1;
|
||||
};
|
||||
*/
|
||||
if (_isAlive) then {
|
||||
_restrict = _typeOfCursorTarget in DZE_restrictRemoval;
|
||||
|
||||
@@ -1041,8 +1030,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
|
||||
s_player_cook = -1;
|
||||
player removeAction s_player_boil;
|
||||
s_player_boil = -1;
|
||||
player removeAction s_player_fireout;
|
||||
s_player_fireout = -1;
|
||||
player removeAction s_player_packtent;
|
||||
s_player_packtent = -1;
|
||||
player removeAction s_player_packtentinfected;
|
||||
|
||||
@@ -148,9 +148,7 @@ if (isNil "keyboard_keys") then {
|
||||
};
|
||||
};
|
||||
_interrupt = {
|
||||
if (vehicle player == player) then { //allow med actions in moving vehicles
|
||||
r_interrupt = true;
|
||||
};
|
||||
r_interrupt = true;
|
||||
if (DZE_Surrender) then {call dze_surrender_off};
|
||||
if (dayz_autoRun) then {call dayz_autoRunOff;};
|
||||
};
|
||||
@@ -187,13 +185,6 @@ if (isNil "keyboard_keys") then {
|
||||
};
|
||||
_handled = true;
|
||||
};
|
||||
// tents and stash construction
|
||||
_object = player getVariable ["constructionObject", objNull];
|
||||
if (!isNull _object) then {
|
||||
_dir = getDir _object - 3;
|
||||
_object setDir _dir;
|
||||
_handled = true;
|
||||
};
|
||||
dayz_dodge = true;
|
||||
};
|
||||
_build_right = {
|
||||
@@ -210,35 +201,29 @@ if (isNil "keyboard_keys") then {
|
||||
};
|
||||
_handled = true;
|
||||
};
|
||||
// tents and stash construction
|
||||
_object = player getVariable ["constructionObject", objNull];
|
||||
if (!isNull _object) then {
|
||||
_dir = getDir _object + 3;
|
||||
_object setDir _dir;
|
||||
_handled = true;
|
||||
};
|
||||
dayz_dodge = true;
|
||||
};
|
||||
|
||||
_build_camOnOff = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_buildCamera.sqf";
|
||||
|
||||
_build_str8OnOff = {
|
||||
r_interrupt = true;
|
||||
|
||||
if (0 != count Dayz_constructionContext) then {
|
||||
Dayz_constructionContext set [ 5, !(Dayz_constructionContext select 5) ];
|
||||
_handled = true;
|
||||
r_interrupt = true;
|
||||
};
|
||||
|
||||
if (animationState player in ["bunnyhopunarmed","bunnyhoprifle"]) then {
|
||||
//Fixes invisible weapon switch glitch if double tapping vault with no weapon in hands
|
||||
_handled = true;
|
||||
};
|
||||
if (player isKindOf "PZombie_VB") then {
|
||||
if (player isKindOf "PZombie_VB") then {
|
||||
_handled = true; // do not allow player zombies to vault or jump
|
||||
} else {
|
||||
_nearbyObjects = nearestObjects[getPosATL player, dayz_disallowedVault, 8];
|
||||
_nearbyObjects = nearestObjects [getPosATL player, dayz_disallowedVault, 8];
|
||||
if (count _nearbyObjects > 0) then {
|
||||
if ((diag_tickTime - dayz_lastCheckBit > 4)) then {
|
||||
if (diag_tickTime - dayz_lastCheckBit > 4) then {
|
||||
[objNull, player, rSwitchMove,"GetOver"] call RE;
|
||||
player playActionNow "GetOver";
|
||||
dayz_lastCheckBit = diag_tickTime;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
private ["_alreadyPacking","_backpacks","_bag","_campItems","_countr","_dir","_holder","_magazines","_obj","_objWpnQty","_objWpnTypes","_objectID","_objectUID","_ownerID","_packobj","_playerNear","_pos","_weapons"];
|
||||
private ["_alreadyPacking","_backpacks","_bag","_campItems","_countr","_dir","_holder","_magazines","_obj","_objWpnQty","_objWpnTypes","_objectID","_objectUID","_ownerID","_packobj","_playerNear","_pos","_weapons","_finished"];
|
||||
|
||||
_obj = _this;
|
||||
_ownerID = _obj getVariable["CharacterID","0"];
|
||||
@@ -14,10 +14,6 @@ if (DZE_permanentPlot) then {
|
||||
_ownerID = _obj getVariable["ownerPUID","0"];
|
||||
};
|
||||
|
||||
// Make sure you are the closest player to the tent
|
||||
_playerNear = _obj call dze_isnearest_player;
|
||||
if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_16" call dayz_rollingMessages;};
|
||||
|
||||
// Make sure no other players are nearby
|
||||
_playerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities ["CAManBase",10]) > 1;
|
||||
if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_pickup_limit_5" call dayz_rollingMessages;};
|
||||
@@ -32,7 +28,6 @@ s_player_packtentinfected = -1;
|
||||
_campItems = ["IC_DomeTent","IC_Tent"];
|
||||
|
||||
if (_ownerID in [dayz_characterID,dayz_playerUID] or typeOf _obj in _campItems) then {
|
||||
player playActionNow "Medic";
|
||||
_alreadyPacking = _obj getVariable["packing",0];
|
||||
if (_alreadyPacking == 1) exitWith {localize "str_player_beingpacked" call dayz_rollingMessages;};
|
||||
|
||||
@@ -42,7 +37,10 @@ if (_ownerID in [dayz_characterID,dayz_playerUID] or typeOf _obj in _campItems)
|
||||
|
||||
[player,"tentpack",0,false,20] call dayz_zombieSpeak;
|
||||
[player,20,true,getPosATL player] call player_alertZombies;
|
||||
uiSleep 3;
|
||||
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (isNull _obj) exitWith {};
|
||||
if (!_finished) exitWith {_obj setVariable["packing",0,true];};
|
||||
|
||||
//place tent (local)
|
||||
_bag = createVehicle [_packobj, _pos, [], 0, "CAN_COLLIDE"];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
[_obj] spawn player_packVault;
|
||||
*/
|
||||
private ["_obj","_ownerID","_objectID","_objectUID","_alreadyPacking","_location1","_location2","_packedClass","_text","_playerNear"];
|
||||
private ["_obj","_ownerID","_objectID","_objectUID","_location1","_location2","_packedClass","_text","_playerNear","_finished"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_15" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -13,6 +13,7 @@ _text = getText (configFile >> "CfgVehicles" >> (typeOf _obj) >> "displayName");
|
||||
// Silently exit if object no longer exists
|
||||
if (isNull _obj || !(alive _obj)) exitWith { dayz_actionInProgress = false; };
|
||||
|
||||
// Server_handleSafeGear runs unscheduled and exits if object is null, so more secure check is not needed
|
||||
_playerNear = _obj call dze_isnearest_player;
|
||||
if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_16" call dayz_rollingMessages;};
|
||||
|
||||
@@ -29,10 +30,6 @@ if (_objectID == "0" && _objectUID == "0") exitWith {dayz_actionInProgress = fal
|
||||
|
||||
if (!_ComboMatch && (_ownerID != dayz_playerUID)) exitWith { dayz_actionInProgress = false; s_player_packvault = -1; format[localize "str_epoch_player_119",_text] call dayz_rollingMessages;};
|
||||
|
||||
_alreadyPacking = _obj getVariable["packing",0];
|
||||
if (_alreadyPacking == 1) exitWith {dayz_actionInProgress = false; s_player_packvault = -1; format[localize "str_epoch_player_120",_text] call dayz_rollingMessages;};
|
||||
_obj setVariable["packing",1];
|
||||
|
||||
format[localize "str_epoch_player_121",_text] call dayz_rollingMessages;
|
||||
uiSleep 1;
|
||||
_location1 = getPosATL player;
|
||||
@@ -41,18 +38,18 @@ _location2 = getPosATL player;
|
||||
|
||||
if(_location1 distance _location2 > 0.1) exitWith {
|
||||
format[localize "str_epoch_player_122",_text] call dayz_rollingMessages;
|
||||
_obj setVariable["packing",0];
|
||||
s_player_packvault = -1;
|
||||
dayz_actionInProgress = false;
|
||||
};
|
||||
|
||||
if (!isNull _obj && alive _obj) then {
|
||||
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
|
||||
player playActionNow "Medic";
|
||||
[player,"tentpack",0,false] call dayz_zombieSpeak;
|
||||
uiSleep 3;
|
||||
|
||||
disableUserInput true; // Make sure player can not modify gear while it is being added
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (isNull _obj or !_finished) exitWith {};
|
||||
|
||||
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
|
||||
|
||||
(findDisplay 106) closeDisplay 0; // Close gear
|
||||
dze_waiting = nil;
|
||||
|
||||
@@ -62,7 +59,6 @@ if (!isNull _obj && alive _obj) then {
|
||||
publicVariableServer "PVDZE_handleSafeGear";
|
||||
//wait for response from server to verify pack was logged and gear added before proceeding
|
||||
waitUntil {!isNil "dze_waiting"};
|
||||
disableUserInput false; // Gear is done being added now
|
||||
|
||||
format[localize "str_epoch_player_123",_text] call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
DayZ Epoch Vehicle Upgrades
|
||||
Made for DayZ Unleashed by [VB]AWOL please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
||||
*/
|
||||
private ["_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_removed","_tobe_removed_total","_textMissing","_num_removed","_removed_total","_temp_removed_array","_countr","_objectID","_objectUID","_location","_dir","_objectCharacterID","_weapons","_magazines","_backpacks","_classname","_object","_holder","_objWpnTypes","_objWpnQty","_newclassname","_requirements","_upgrade","_vehicle","_findNearestVehicles","_findNearestVehicle","_IsNearVehicle"];
|
||||
private ["_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_removed","_tobe_removed_total","_textMissing","_num_removed","_removed_total","_objectID","_objectUID","_location","_dir","_objectCharacterID","_classname","_newclassname","_upgrade","_vehicle","_findNearestVehicles","_findNearestVehicle","_IsNearVehicle","_finished","_temp_removed_array_mag","_temp_removed_array_wep"];
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "STR_EPOCH_PLAYER_52" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
@@ -32,7 +32,7 @@ if (_IsNearVehicle >= 1) then {
|
||||
|
||||
_classname = typeOf _vehicle;
|
||||
|
||||
// lookup vehicle && find if any upgrades are available
|
||||
// lookup vehicle and find if any upgrades are available
|
||||
_upgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "Upgrades" >> _upgrade);
|
||||
|
||||
if (!isNil "_upgrade" && (count _upgrade) > 0) then {
|
||||
@@ -59,9 +59,9 @@ if (_IsNearVehicle >= 1) then {
|
||||
} forEach _requirementsWeapon;
|
||||
|
||||
if (_proceed) then {
|
||||
|
||||
player playActionNow "Medic";
|
||||
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
if (!_finished) exitWith {};
|
||||
|
||||
_temp_removed_array_mag = [];
|
||||
_temp_removed_array_wep = [];
|
||||
|
||||
@@ -19,6 +19,7 @@ if (!isDedicated) then {
|
||||
fn_dropItem = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_dropItem.sqf";
|
||||
fn_dynamicTool = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_dynamicTool.sqf";
|
||||
fn_exitSwim = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_exitSwim.sqf";
|
||||
fn_loopAction = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_loopAction.sqf";
|
||||
fn_nearWaterHole = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_nearWaterHole.sqf";
|
||||
player_zombieCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieCheck.sqf"; //Run on a players computer, checks if the player is near a zombie
|
||||
player_zombieAttack = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieAttack.sqf"; //Run on a players computer, causes a nearby zombie to attack them
|
||||
|
||||
@@ -165,7 +165,6 @@ dayz_resetSelfActions = {
|
||||
s_player_fire = -1;
|
||||
s_player_cook = -1;
|
||||
s_player_boil = -1;
|
||||
s_player_fireout = -1;
|
||||
s_player_packtent = -1;
|
||||
s_player_packtentinfected = -1;
|
||||
s_player_fillfuel = -1;
|
||||
@@ -307,7 +306,6 @@ r_antiB_done = false;
|
||||
r_antiD_done = false;
|
||||
carryClick = false;
|
||||
dayz_actionInProgress = false;
|
||||
dayz_workingInprogress = false;
|
||||
gear_done = false;
|
||||
|
||||
//player warming up vars
|
||||
@@ -650,8 +648,6 @@ if (!isDedicated) then {
|
||||
dayzState = -1;
|
||||
dayz_onBack = "";
|
||||
dayz_fishingInprogress = false;
|
||||
dayz_siphonFuelInProgress = false;
|
||||
dayz_salvageInProgress = false;
|
||||
lastSpawned = diag_tickTime;
|
||||
lastSepsis = 0;
|
||||
NORRN_dropAction = -1;
|
||||
|
||||
@@ -1,47 +1,25 @@
|
||||
private ["_started","_finished","_animState","_isMedic","_id","_unit","_item"];
|
||||
private ["_finished","_id","_unit","_item"];
|
||||
|
||||
_unit = (_this select 3) select 0;
|
||||
_item = (_this select 3) select 1;
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
player removeMagazine _item;
|
||||
closedialog 0;
|
||||
|
||||
call fnc_usec_medic_removeActions;
|
||||
r_action = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
//not in a vehicle
|
||||
player playActionNow "Medic";
|
||||
};
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
[player,"bandage",0,false] call dayz_zombieSpeak;
|
||||
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
if (vehicle player != player) then {
|
||||
uiSleep 3;
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
if (vehicle player != player) then {
|
||||
uiSleep 3;
|
||||
_finished = true;
|
||||
} else {
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if (_finished) then {
|
||||
if ((_unit == player) or (vehicle player != player)) then {
|
||||
@@ -58,8 +36,7 @@ if (_finished) then {
|
||||
[20,0] call player_humanityChange;
|
||||
};
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
player addMagazine _item;
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,46 +1,24 @@
|
||||
private ["_started","_finished","_animState","_isMedic","_id","_unit","_item","_humanityGain"];
|
||||
private ["_finished","_id","_unit","_item","_humanityGain"];
|
||||
|
||||
_unit = (_this select 3) select 0;
|
||||
_item = (_this select 3) select 1;
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
player removeMagazine _item;
|
||||
|
||||
_unit setVariable ["hit_legs",0];
|
||||
_unit setVariable ["hit_hands",0];
|
||||
|
||||
if (vehicle player == player) then {
|
||||
//not in a vehicle
|
||||
player playActionNow "Medic";
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
} else {
|
||||
uiSleep 3;
|
||||
_finished = true;
|
||||
};
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
if (vehicle player != player) then {
|
||||
uiSleep 3;
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if (_finished) then {
|
||||
_unit setVariable ["hit_legs",0];
|
||||
_unit setVariable ["hit_hands",0];
|
||||
|
||||
if (_unit == player) then {
|
||||
//give to player, Ie the player fixed himself
|
||||
|
||||
@@ -65,7 +43,6 @@ if (_finished) then {
|
||||
publicVariableServer "PVDZ_send";
|
||||
} else {
|
||||
player addMagazine _item;
|
||||
r_interrupt = false;
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,17 +1,18 @@
|
||||
// bleed.sqf
|
||||
private ["_finished","_isDead","_unit"];
|
||||
|
||||
_unit = (_this select 3) select 0;
|
||||
_isDead = _unit getVariable["USEC_isDead",false];
|
||||
call fnc_usec_medic_removeActions;
|
||||
player removeMagazine "ItemEpinephrine";
|
||||
|
||||
player playActionNow "Medic";
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
uiSleep 3;
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
|
||||
if (!_isDead) then {
|
||||
if (!_isDead && _finished && ("ItemEpinephrine" in magazines player)) then {
|
||||
player removeMagazine "ItemEpinephrine";
|
||||
_unit setVariable ["NORRN_unconscious", false, true];
|
||||
_unit setVariable ["USEC_isCardiac",false,true];
|
||||
uiSleep 5;
|
||||
|
||||
//give humanity
|
||||
[25,0] call player_humanityChange;
|
||||
@@ -20,4 +21,5 @@ if (!_isDead) then {
|
||||
publicVariableServer "PVDZ_send";
|
||||
};
|
||||
|
||||
r_action = false;
|
||||
r_action = false;
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,47 +1,26 @@
|
||||
private ["_started","_finished","_animState","_isMedic","_id","_unit"];
|
||||
private ["_finished","_id","_unit"];
|
||||
_unit = (_this select 3) select 0;
|
||||
|
||||
player removeMagazine "ItemMorphine";
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
_unit setVariable ["hit_legs",0];
|
||||
_unit setVariable ["hit_hands",0];
|
||||
player removeMagazine "ItemMorphine";
|
||||
|
||||
call fnc_usec_medic_removeActions;
|
||||
r_action = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
//not in a vehicle
|
||||
player playActionNow "Medic";
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
} else {
|
||||
uiSleep 3;
|
||||
_finished = true;
|
||||
};
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
if (vehicle player != player) then {
|
||||
uiSleep 3;
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if (_finished) then {
|
||||
if ((_unit == player) or (vehicle player != player)) then {
|
||||
_unit setVariable ["hit_legs",0];
|
||||
_unit setVariable ["hit_hands",0];
|
||||
|
||||
if ((_unit == player) or (vehicle player != player)) then {
|
||||
//Self Healing
|
||||
_id = [player,player] execVM "\z\addons\dayz_code\medical\publicEH\medMorphine.sqf";
|
||||
} else {
|
||||
@@ -55,7 +34,6 @@ if ((_unit == player) or (vehicle player != player)) then {
|
||||
publicVariableServer "PVDZ_send";
|
||||
} else {
|
||||
player addMagazine "ItemMorphine";
|
||||
r_interrupt = false;
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -1,42 +1,22 @@
|
||||
private ["_started","_finished","_animState","_isMedic","_id","_unit"];
|
||||
private ["_finished","_unit"];
|
||||
_unit = (_this select 3) select 0;
|
||||
|
||||
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
|
||||
dayz_actionInProgress = true;
|
||||
|
||||
player removeMagazine "ItemAntibacterialWipe";
|
||||
|
||||
call fnc_usec_medic_removeActions;
|
||||
r_action = false;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
//not in a vehicle
|
||||
player playActionNow "Medic";
|
||||
};
|
||||
|
||||
r_interrupt = false;
|
||||
_animState = animationState player;
|
||||
r_doLoop = true;
|
||||
_started = false;
|
||||
_finished = false;
|
||||
[player,"bandage",0,false] call dayz_zombieSpeak;
|
||||
while {r_doLoop} do {
|
||||
_animState = animationState player;
|
||||
_isMedic = ["medic",_animState] call fnc_inString;
|
||||
if (_isMedic) then {
|
||||
_started = true;
|
||||
};
|
||||
if (_started and !_isMedic) then {
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
if (r_interrupt) then {
|
||||
r_doLoop = false;
|
||||
};
|
||||
if (vehicle player != player) then {
|
||||
uiSleep 3;
|
||||
r_doLoop = false;
|
||||
_finished = true;
|
||||
};
|
||||
uiSleep 0.1;
|
||||
|
||||
if (vehicle player == player) then {
|
||||
_finished = ["Medic",1] call fn_loopAction;
|
||||
} else {
|
||||
uiSleep 3;
|
||||
_finished = true;
|
||||
};
|
||||
r_doLoop = false;
|
||||
|
||||
if (_finished) then {
|
||||
//["PVCDZ_hlt_Bandage",[_unit,player]] call broadcastRpcCallAll;
|
||||
@@ -52,8 +32,7 @@ if (_finished) then {
|
||||
player setVariable ["sepsisStarted", nil];
|
||||
};
|
||||
} else {
|
||||
r_interrupt = false;
|
||||
[objNull, player, rSwitchMove,""] call RE;
|
||||
player playActionNow "stop";
|
||||
player addMagazine "ItemAntibacterialWipe";
|
||||
};
|
||||
};
|
||||
|
||||
dayz_actionInProgress = false;
|
||||
@@ -167,14 +167,6 @@
|
||||
<Czech>Upéct jídlo</Czech>
|
||||
<French>Cuire la Nourriture</French>
|
||||
</Key>
|
||||
<Key ID="str_actions_self_06">
|
||||
<English>Remove fireplace</English>
|
||||
<German>Feuerstelle zerstören</German>
|
||||
<Russian>Убрать костер</Russian>
|
||||
<Spanish>Remover Fogata</Spanish>
|
||||
<French>Retirer le Feu de camp</French>
|
||||
<Czech>Odstranit ohniště</Czech>
|
||||
</Key>
|
||||
<Key ID="str_actions_self_07">
|
||||
<English>Pack Tent</English>
|
||||
<German>Zelt abbauen</German>
|
||||
@@ -1133,15 +1125,6 @@
|
||||
<French>Création de %1 réussie</French>
|
||||
<Czech>Úspěšně jste vyrobili %1</Czech>
|
||||
</Key>
|
||||
<Key ID="str_salvage_inprogress">
|
||||
<English>Salvage already in progress.</English>
|
||||
<Spanish>La recuperación ya está en curso.</Spanish>
|
||||
<Russian>Демонтаж в процессе.</Russian>
|
||||
<Czech>Demontáž již probíhá.</Czech>
|
||||
<French>Récupération déjà en cours.</French>
|
||||
<German>Die Demontage läuft bereits.</German>
|
||||
<Dutch>Reeds bezig met bergen.</Dutch>
|
||||
</Key>
|
||||
<Key ID="str_salvage_destroyed">
|
||||
<!-- %1 part name %2 veh name -->
|
||||
<English>You have destroyed %1 while attempting to remove from %2</English>
|
||||
@@ -1271,15 +1254,6 @@
|
||||
<French>Siphonner le réservoir</French>
|
||||
<German>Treibstoff aus Tank abzapfen</German>
|
||||
</Key>
|
||||
<Key ID="str_siphon_inprogress">
|
||||
<English>Siphon already in progress.</English>
|
||||
<Russian>Сливаем топливо.</Russian>
|
||||
<Spanish>El sifón ya está en progreso.</Spanish>
|
||||
<Czech>Přečerpávání již probíhá.</Czech>
|
||||
<French>Siphonnage en cours.</French>
|
||||
<German>Der Treibstoff fließt bereits ab.</German>
|
||||
<Dutch>Reeds bezig met brandstofverplaatsing.</Dutch>
|
||||
</Key>
|
||||
<Key ID="str_siphon_preparing">
|
||||
<!-- %1 empty jerrycan name -->
|
||||
<English>Preparing to siphon, stand still to fill %1.</English>
|
||||
@@ -1438,14 +1412,6 @@
|
||||
<French>Impossible de mettre le feu, pas de carburant.</French>
|
||||
<German>Ohne Benzin kannst du das nicht anzünden.</German>
|
||||
</Key>
|
||||
<Key ID="str_TentAlreadyLit">
|
||||
<English>This tent is already being set on fire.</English>
|
||||
<Russian>Эта палатка уже горит.</Russian>
|
||||
<Spanish>Esta tienda de campaña ya está siendo incendiada.</Spanish>
|
||||
<Czech>Tento stan je již zapálen.</Czech>
|
||||
<French>Cette tente est déjà en feu.</French>
|
||||
<German>Das Zelt brennt schon.</German>
|
||||
</Key>
|
||||
<Key ID="str_endSleepStandUp">
|
||||
<English>Resting interrupted, proceeding to stand up.</English>
|
||||
<Russian>Отдых прерван, встаем...</Russian>
|
||||
@@ -1631,13 +1597,6 @@
|
||||
<Czech>Vylepšení dokončeno.</Czech>
|
||||
<German>Erweiterung durchgeführt.</German>
|
||||
</Key>
|
||||
<Key ID="str_upgradeInProgress">
|
||||
<English>Object is already upgrading</English>
|
||||
<Russian>Объект уже улучшается.</Russian>
|
||||
<French>L'amélioration est déjà en cours</French>
|
||||
<Czech>Objekt je právě vylepšován.</Czech>
|
||||
<German>Dieses Objekt wird gerade erweitert.</German>
|
||||
</Key>
|
||||
<Key ID="str_upgradeNoOption">
|
||||
<English>Object has no upgrade option.</English>
|
||||
<Russian>Объект нельзя улучшить.</Russian>
|
||||
@@ -6630,22 +6589,6 @@
|
||||
<French>Vous avez réussi à détruire une tente.</French>
|
||||
<Czech>Úspěšně jste zničili stan.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_success_tent_pitch">
|
||||
<English>You have pitched your tent</English>
|
||||
<German>Du hast das Zelt erfolgreich aufgeschlagen.</German>
|
||||
<Russian>Вы установили палатку.</Russian>
|
||||
<Spanish>Asentaste tu carpa.</Spanish>
|
||||
<French>Vous avez installé votre tente.</French>
|
||||
<Czech>Postavili jste stan.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_fail_tent_pitch">
|
||||
<English>You cannot place a Tent here. The area must be flat, and free of other objects</English>
|
||||
<German>Du kannst hier kein Zelt aufbauen, da der Untergrund nicht flach und frei von Hindernissen ist.</German>
|
||||
<Russian>Палатку нужно ставить на ровную поверхность, без объектов поблизости.</Russian>
|
||||
<Spanish>No puedes asentar tu carpa aquí. El área debe ser plana y libre de otros objetos.</Spanish>
|
||||
<French>Vous ne pouvez pas placer de tente ici. Le sol doit être plat et dégagé.</French>
|
||||
<Czech>Stan zde nelze postavit. Plocha musí být rovná a dostatečně veliká.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_success_stash_pitch">
|
||||
<English>You have created a %1.</English>
|
||||
<German>Du hast eine %1 hergestellt.</German>
|
||||
@@ -6734,14 +6677,6 @@
|
||||
<French>Vous ne pouvez pas faire de feu de camp ici. Le sol doit être plat et dégagé.</French>
|
||||
<Czech>Ohniště zde nelze postavit. Plocha musí být rovná a dostatečně veliká.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_fireplace_removed">
|
||||
<English>Fireplace has been removed</English>
|
||||
<German>Die Feuerstelle wurde abgebaut.</German>
|
||||
<Russian>Костер убран.</Russian>
|
||||
<Spanish>La fogata fue removida.</Spanish>
|
||||
<French>Le feu de camp a été retiré.</French>
|
||||
<Czech>Ohniště bylo odstraněno.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_success_gutted_animal">
|
||||
<English>%1 has been gutted, %2 meat steaks now on the carcass</English>
|
||||
<German>Du hast das Tier (%1) ausgenommen. Vom verbleibenden Fleisch kannst du %2 Stücke abschneiden.</German>
|
||||
@@ -7151,11 +7086,6 @@
|
||||
<Czech>V blízkosti nejsou žádné skály.</Czech>
|
||||
<German>Es befinden sich keine Felsen in der Nähe.</German>
|
||||
</Key>
|
||||
<Key ID="STR_MINING_IN_PROGRESS">
|
||||
<English>Mining already in progress!</English>
|
||||
<Russian>Добыча в процессе!</Russian>
|
||||
<German>Du bist bereits dabei etwas abzubauen!</German>
|
||||
</Key>
|
||||
<Key ID="str_player_toback_fail">
|
||||
<English>Cannot add %1 to back.</English>
|
||||
<Spanish>No se pudo agregar %1 a la espalda.</Spanish>
|
||||
@@ -7400,14 +7330,6 @@
|
||||
<French>Utilisez A et E pour tourner l'objet, et V pour le pencher.</French>
|
||||
<Czech>Použijte Q a E pro rotaci objektu, V pro naklopení. Poté vyberte vámi požadovanou akci.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_player_build_movingfast">
|
||||
<English>You are moving too fast!</English>
|
||||
<German>Du bewegst dich zu schnell!</German>
|
||||
<Russian>Вы слишком быстро двигаетесь!</Russian>
|
||||
<Spanish>¡Te estás moviendo muy rápido!</Spanish>
|
||||
<French>Vous vous déplacez trop vite!</French>
|
||||
<Czech>Pohybujete se příliš rychle!</Czech>
|
||||
</Key>
|
||||
<Key ID="str_player_build_complete">
|
||||
<English>Complete Build</English>
|
||||
<German>Bau fertigstellen</German>
|
||||
@@ -11891,14 +11813,6 @@
|
||||
<French>déjà en cours.</French>
|
||||
<Czech>již probíhá.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_PLAYER_99">
|
||||
<English>Stop is already in progress.</English>
|
||||
<German>Stoppen des Generators bereits im Gange.</German>
|
||||
<Russian>Уже останавливается.</Russian>
|
||||
<Dutch>Bezig met stoppen.</Dutch>
|
||||
<French>L'arrêt est déjà en cours.</French>
|
||||
<Czech>Zastavování již probíhá.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_PLAYER_100">
|
||||
<English>Preparing to stop generator, move to cancel.</English>
|
||||
<German>Generator wird abgeschaltet, bewege dich um den Vorgang abzubrechen.</German>
|
||||
@@ -12003,14 +11917,6 @@
|
||||
<French>Vous ne pouvez pas emballer %1, vous n'en connaissez pas la combinaison.</French>
|
||||
<Czech>Nemůžete sbalit %1, neznáte správnou kombinaci.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_PLAYER_120">
|
||||
<English>%1 is already being packed.</English>
|
||||
<German>Diese(r) %1 wird bereits gepackt.</German>
|
||||
<Russian>%1 уже запакован.</Russian>
|
||||
<Dutch>Deze %1 wordt al reeds ingepakt.</Dutch>
|
||||
<French>%1 est déjà en cours d'emballage.</French>
|
||||
<Czech>Balení %1 již probíhá.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_PLAYER_121">
|
||||
<English>Packing %1, move from this position to cancel within 5 seconds.</English>
|
||||
<German>%1 wird gepackt. Bewege dich in den nächsten 5 Sekunden um den Vorgang abzubrechen.</German>
|
||||
|
||||
@@ -856,7 +856,6 @@ class FSM
|
||||
"" \n
|
||||
"//player variables" \n
|
||||
"dayz_characterID = _charID;" \n
|
||||
"dayz_hasFire = objNull; //records players Fireplace object" \n
|
||||
"dayz_myCursorTarget = objNull;" \n
|
||||
"dayz_myPosition = getPosATL player; //Last recorded position" \n
|
||||
"dayz_lastMeal = (_lastAte * 60);" \n
|
||||
|
||||
Reference in New Issue
Block a user