Fix fn_waitForObject handling multiple of same object type

Forgot to handle case where there is already one or more of that object
type in the area (safes, cars, etc.).
This commit is contained in:
ebaydayz
2016-08-22 20:13:39 -04:00
parent a70501cf59
commit 38b2a551bd
12 changed files with 47 additions and 29 deletions

View File

@@ -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.

View File

@@ -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;
};

View File

@@ -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;
};

View File

@@ -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;
};

View File

@@ -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 {

View File

@@ -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;
};

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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]);
{player reveal _x;} count (nearestObjects [player,[_class],50]);

View File

@@ -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;

View File

@@ -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;
};

View File

@@ -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;