diff --git a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_buyItems.sqf b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_buyItems.sqf index ac7e23de4..3d6e23e06 100644 --- a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_buyItems.sqf +++ b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_buyItems.sqf @@ -1,6 +1,7 @@ private ["_weaponsToBuy","_backpacksToBuy","_toolsToBuy","_sidearmToBuy","_primaryToBuy","_priceToBuy" ,"_enoughMoney","_myMoney","_canBuy","_moneyInfo","_count","_success","_toolClasses","_itemsToLog" -,"_tCost","_bTotal","_backpack","_pistolMagsToBuy","_regularMagsToBuy","_hasPrimary","_p","_toolAmounts"]; +,"_tCost","_bTotal","_backpack","_pistolMagsToBuy","_regularMagsToBuy","_hasPrimary","_p","_toolAmounts" +,"_near"]; if (count Z_BuyingArray < 1) exitWith { systemChat localize "STR_EPOCH_TRADE_BUY_NO_ITEMS"; }; @@ -148,6 +149,8 @@ if (_enoughMoney) then { _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; if (_buyingType in ["trade_any_vehicle_free", "trade_any_bicycle", "trade_any_bicycle_old"]) then { PVDZE_veh_Publish2 = [[_dir,_location],_part_out,true,"0",_activatingPlayer]; @@ -155,7 +158,6 @@ if (_enoughMoney) then { PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_keySelected,_activatingPlayer]; }; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; _keySelected; }; //systemChat localize "STR_EPOCH_PLAYER_105"; // "Stand still to complete trade". Medic animation loop no longer used. diff --git a/SQF/dayz_code/actions/trade_any_bicycle.sqf b/SQF/dayz_code/actions/trade_any_bicycle.sqf index 7f43d9738..295f43f28 100644 --- a/SQF/dayz_code/actions/trade_any_bicycle.sqf +++ b/SQF/dayz_code/actions/trade_any_bicycle.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_isOk","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_keyColor","_keyNumber","_keySelected","_isKeyOK","_config","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done"]; +private ["_sign","_location","_isOk","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_keyColor","_keyNumber","_keySelected","_isKeyOK","_config","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -129,10 +129,11 @@ if (_finished) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,true,dayz_characterID,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; format[localize "STR_EPOCH_PLAYER_180",_qty_in,_textPartIn,_textPartOut] call dayz_rollingMessages; }; diff --git a/SQF/dayz_code/actions/trade_any_bicycle_old.sqf b/SQF/dayz_code/actions/trade_any_bicycle_old.sqf index f083b1b32..64e1633fc 100644 --- a/SQF/dayz_code/actions/trade_any_bicycle_old.sqf +++ b/SQF/dayz_code/actions/trade_any_bicycle_old.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_removed","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_playerNear"]; +private ["_sign","_location","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_removed","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_playerNear","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -106,10 +106,11 @@ if (_qty >= _qty_in) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,true,dayz_characterID,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; format[localize "str_epoch_player_180",_qty_in,_textPartIn,_textPartOut] call dayz_rollingMessages; }; diff --git a/SQF/dayz_code/actions/trade_any_boat.sqf b/SQF/dayz_code/actions/trade_any_boat.sqf index 9f476e92e..d70dadc43 100644 --- a/SQF/dayz_code/actions/trade_any_boat.sqf +++ b/SQF/dayz_code/actions/trade_any_boat.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done"]; +private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -134,10 +134,11 @@ if (_finished) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_result select 1,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; format[localize "STR_EPOCH_ACTIONS_11",_qty_in,_textPartIn,_textPartOut] call dayz_rollingMessages; }; diff --git a/SQF/dayz_code/actions/trade_any_boat_old.sqf b/SQF/dayz_code/actions/trade_any_boat_old.sqf index 06a6cb56c..fe3348ebb 100644 --- a/SQF/dayz_code/actions/trade_any_boat_old.sqf +++ b/SQF/dayz_code/actions/trade_any_boat_old.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_removed","_okToSell","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_playerNear"]; +private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_removed","_okToSell","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_playerNear","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -112,10 +112,11 @@ if (_qty >= _qty_in) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_result select 1,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; format["Bought %3 for %1 %2, key added to toolbelt.",_qty_in,_textPartIn,_textPartOut] call dayz_rollingMessages; } else { diff --git a/SQF/dayz_code/actions/trade_any_vehicle.sqf b/SQF/dayz_code/actions/trade_any_vehicle.sqf index f0189ed2c..95ab4b01f 100644 --- a/SQF/dayz_code/actions/trade_any_vehicle.sqf +++ b/SQF/dayz_code/actions/trade_any_vehicle.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_keyColor","_damage","_tireDmg","_tires","_okToSell","_temp_keys","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done"]; +private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_keyColor","_damage","_tireDmg","_tires","_okToSell","_temp_keys","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -133,10 +133,11 @@ if (_finished) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_result select 1,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; format[localize "STR_EPOCH_ACTIONS_11",_qty_in,_textPartIn,_textPartOut] call dayz_rollingMessages; }; diff --git a/SQF/dayz_code/actions/trade_any_vehicle_free.sqf b/SQF/dayz_code/actions/trade_any_vehicle_free.sqf index b47ff0d6f..238a7b04f 100644 --- a/SQF/dayz_code/actions/trade_any_vehicle_free.sqf +++ b/SQF/dayz_code/actions/trade_any_vehicle_free.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done"]; +private ["_sign","_location","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_canAfford","_trade_total","_total_currency","_return_change","_done","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -132,10 +132,11 @@ if (_finished) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,true,0,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; }; } else { diff --git a/SQF/dayz_code/actions/trade_any_vehicle_old.sqf b/SQF/dayz_code/actions/trade_any_vehicle_old.sqf index 971559602..bab44bc1f 100644 --- a/SQF/dayz_code/actions/trade_any_vehicle_old.sqf +++ b/SQF/dayz_code/actions/trade_any_vehicle_old.sqf @@ -1,4 +1,4 @@ -private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_removed","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_playerNear"]; +private ["_sign","_location","_result","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID","_bos","_started","_finished","_animState","_isMedic","_dir","_helipad","_removed","_damage","_tireDmg","_tires","_okToSell","_hitpoints","_needed","_activatingPlayer","_textPartIn","_textPartOut","_traderID","_playerNear","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_103" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -119,10 +119,11 @@ if (_qty >= _qty_in) then { //place vehicle spawn marker (local) _sign = "Sign_arrow_down_large_EP1" createVehicleLocal _location; _location = [_sign] call FNC_GetPos; + _near = nearestObjects [player,[_part_out],50]; + [_part_out,_sign,_near] spawn fn_waitForObject; PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_result select 1,_activatingPlayer]; publicVariableServer "PVDZE_veh_Publish2"; - [_part_out,_sign] spawn fn_waitForObject; format["Bought %3 for %1 %2, key added to toolbelt.",_qty_in,_textPartIn,_textPartOut] call dayz_rollingMessages; } else { diff --git a/SQF/dayz_code/compile/fn_waitForObject.sqf b/SQF/dayz_code/compile/fn_waitForObject.sqf index 9668e729d..ff5ebf259 100644 --- a/SQF/dayz_code/compile/fn_waitForObject.sqf +++ b/SQF/dayz_code/compile/fn_waitForObject.sqf @@ -5,22 +5,24 @@ Parameters: _this select 0: string - object class name to reveal _this select 1: object - sign object or ObjNull if none + _this select 2: array - result of (nearestObjects [player,[_class],50]) before call to spawn object - ["objectClassName", objNull] spawn fn_waitForObject; + ["objectClassName", objNull, []] spawn fn_waitForObject; */ -private ["_object","_sign"]; +private ["_class","_sign","_near"]; -_object = _this select 0; +_class = _this select 0; _sign = _this select 1; +_near = _this select 2; waitUntil { uiSleep 1; - !isNull (nearestObject [player,_object]) + (count (nearestObjects [player,[_class],50]) != count _near) }; if (!isNull _sign) then { deleteVehicle _sign; }; -player reveal (nearestObject [player,_object]); \ No newline at end of file +{player reveal _x;} count (nearestObjects [player,[_class],50]); \ No newline at end of file diff --git a/SQF/dayz_code/compile/player_lockVault.sqf b/SQF/dayz_code/compile/player_lockVault.sqf index 99f5a7b99..cf3cc4eb1 100644 --- a/SQF/dayz_code/compile/player_lockVault.sqf +++ b/SQF/dayz_code/compile/player_lockVault.sqf @@ -3,7 +3,7 @@ Usage: [_obj] spawn player_unlockVault; Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. */ -private ["_obj","_ownerID","_alreadyPacking","_text","_playerNear","_ComboMatch","_objType"]; +private ["_obj","_ownerID","_alreadyPacking","_text","_playerNear","_ComboMatch","_objType","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_10" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -41,14 +41,16 @@ if (!isNull _obj) then { disableUserInput true; // Make sure player can not modify gear while it is being saved (findDisplay 106) closeDisplay 0; // Close gear dze_waiting = nil; + + _near = nearestObjects [player,[_lockedClass],50]; + [_lockedClass,objNull,_near] spawn fn_waitForObject; + PVDZE_handleSafeGear = [player,_obj,1]; publicVariableServer "PVDZE_handleSafeGear"; //wait for response from server to verify safe was logged and saved before proceeding waitUntil {!isNil "dze_waiting"}; disableUserInput false; // Safe is done saving now - [_lockedClass,objNull] spawn fn_waitForObject; - format[localize "str_epoch_player_117",_text] call dayz_rollingMessages; }; s_player_lockvault = -1; diff --git a/SQF/dayz_code/compile/player_packVault.sqf b/SQF/dayz_code/compile/player_packVault.sqf index f38f56ced..d02285e35 100644 --- a/SQF/dayz_code/compile/player_packVault.sqf +++ b/SQF/dayz_code/compile/player_packVault.sqf @@ -1,7 +1,7 @@ /* [_obj] spawn player_packVault; */ -private ["_obj","_ownerID","_objectID","_objectUID","_alreadyPacking","_location1","_location2","_packedClass","_text","_playerNear"]; +private ["_obj","_ownerID","_objectID","_objectUID","_alreadyPacking","_location1","_location2","_packedClass","_text","_playerNear","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_15" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -55,13 +55,15 @@ if (!isNull _obj && alive _obj) then { disableUserInput true; // Make sure player can not modify gear while it is being added (findDisplay 106) closeDisplay 0; // Close gear dze_waiting = nil; + + _near = nearestObjects [player,[_packedClass],50]; + [_packedClass,objNull,_near] spawn fn_waitForObject; + PVDZE_handleSafeGear = [player,_obj,2]; 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 - - [_packedClass,objNull] spawn fn_waitForObject; format[localize "str_epoch_player_123",_text] call dayz_rollingMessages; }; diff --git a/SQF/dayz_code/compile/player_unlockVault.sqf b/SQF/dayz_code/compile/player_unlockVault.sqf index 6cb3d2612..d1c99826b 100644 --- a/SQF/dayz_code/compile/player_unlockVault.sqf +++ b/SQF/dayz_code/compile/player_unlockVault.sqf @@ -3,7 +3,7 @@ Usage: [_obj] spawn player_unlockVault; Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. */ -private ["_obj","_ownerID","_alreadyPacking","_playerNear","_playerID","_claimedBy","_text","_objType","_ComboMatch"]; +private ["_obj","_ownerID","_alreadyPacking","_playerNear","_playerID","_claimedBy","_text","_objType","_ComboMatch","_near"]; if (DZE_ActionInProgress) exitWith {localize "str_epoch_player_21" call dayz_rollingMessages;}; DZE_ActionInProgress = true; @@ -58,12 +58,15 @@ if (_ComboMatch || (_ownerID == dayz_playerUID)) then { disableUserInput true; // Make sure player can not modify gear while it is filling (findDisplay 106) closeDisplay 0; // Close gear dze_waiting = nil; + + _near = nearestObjects [player,[_unlockedClass],50]; + [_unlockedClass,objNull,_near] spawn fn_waitForObject; + PVDZE_handleSafeGear = [player,_obj,0]; publicVariableServer "PVDZE_handleSafeGear"; //wait for response from server to verify safe was logged before proceeding waitUntil {!isNil "dze_waiting"}; disableUserInput false; // Safe is done filling now - [_unlockedClass,objNull] spawn fn_waitForObject; player playActionNow "Medic"; uiSleep 1;