Optimize: nearestObjects use object instead of pos

This commit is contained in:
vbawol 2017-09-02 17:06:27 -05:00
parent 8c28ebc1a9
commit 52e02b954c
10 changed files with 56 additions and 56 deletions

View File

@ -13,10 +13,10 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_SpawnTraderMiltia.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_SpawnTraderMiltia.sqf
*/ */
//[[[cog import generate_private_arrays ]]] //[[[cog import generate_private_arrays ]]]
private ["_allpositions","_grp","_nrBuilds","_rndHouse","_startPos","_trgt","_unit"]; private ["_allpositions","_grp","_nrBuilds","_rndHouse","_startPos","_unit"];
//[[[end]]] //[[[end]]]
_trgt = player;
_nrBuilds = nearestObjects [getPosATL _trgt,["house"],50]; _nrBuilds = nearestObjects [player,["house"],50];
_grp = createGroup [RESISTANCE, true]; _grp = createGroup [RESISTANCE, true];
for "_i" from 1 to 3 step 1 do for "_i" from 1 to 3 step 1 do

View File

@ -35,7 +35,7 @@ for "_i" from 1 to _count do
} else { } else {
_wH = objNull; _wH = objNull;
if (isNil "_nearByHolder") then { if (isNil "_nearByHolder") then {
_nearByHolder = nearestObjects [position player,["groundWeaponHolder"],3]; _nearByHolder = nearestObjects [player,["groundWeaponHolder"],3];
}; };
if (_nearByHolder isEqualTo []) then { if (_nearByHolder isEqualTo []) then {
_wHPos = player modelToWorld [0,1,0]; _wHPos = player modelToWorld [0,1,0];

View File

@ -6,23 +6,23 @@
Description: Equips or un-equips item (if equipped) instantly. Item has to exist in the inventory. Description: Equips or un-equips item (if equipped) instantly. Item has to exist in the inventory.
to switch weapons slowly use below in your code: to switch weapons slowly use below in your code:
player playAction "reloadMagazine"; player playAction "reloadMagazine";
_item - className _item - className
_drop - drop on ground if inventory full, weapons will be stripped off attachments _drop - drop on ground if inventory full, weapons will be stripped off attachments
weapons stripped because attachments can only be added while weapon is equipped. weapons stripped because attachments can only be added while weapon is equipped.
_forceEquip - disables un-equip and forces new item to be equipped at all times _forceEquip - disables un-equip and forces new item to be equipped at all times
Licence: Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github: Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/inventory/EPOCH_equip.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/inventory/EPOCH_equip.sqf
Usage: Usage:
[_item, false] call epoch_equip; //don't drop item if inventory full. Does not equip requested item if another item already equipped, instead un-equips existing one. [_item, false] call epoch_equip; //don't drop item if inventory full. Does not equip requested item if another item already equipped, instead un-equips existing one.
[_item, true,true] call epoch_equip; //drops item if not enough space. Removes existing weapon and equips new one. [_item, true,true] call epoch_equip; //drops item if not enough space. Removes existing weapon and equips new one.
RETURNS: RETURNS:
0 - fail, item not provided 0 - fail, item not provided
1 - success 1 - success
2 - success, but item dropped on ground. 2 - success, but item dropped on ground.
@ -55,7 +55,7 @@ _fnc_dropItem = {
{ {
_wH = objNull; _wH = objNull;
if (isNil "_nearByHolder") then { if (isNil "_nearByHolder") then {
_nearByHolder = nearestObjects [position player,["groundWeaponHolder"],3]; _nearByHolder = nearestObjects [player,["groundWeaponHolder"],3];
}; };
if (_nearByHolder isEqualTo []) then { if (_nearByHolder isEqualTo []) then {
_wHPos = player modelToWorld [0,1,0]; _wHPos = player modelToWorld [0,1,0];
@ -75,7 +75,7 @@ _fnc_dropItem = {
_fnc_findItemInContainers = { _fnc_findItemInContainers = {
private ["_item","_container","_index","_found","_currItem"]; private ["_item","_container","_index","_found","_currItem"];
params ["_item"]; params ["_item"];
_container = 0; _container = 0;
_index = 0; _index = 0;
_found = false; _found = false;
@ -95,15 +95,15 @@ _fnc_findItemInContainers = {
}; };
if _found exitWith {}; if _found exitWith {};
} forEach [_uniformItems,_vestItems,_bPackItems]; } forEach [_uniformItems,_vestItems,_bPackItems];
[_container,_index,_found] [_container,_index,_found]
}; };
_fnc_moveWeaponFromContainer = { _fnc_moveWeaponFromContainer = {
private ["_idx","_container","_sIdx","_dIdx"]; //_dIdx can only be 0, 1 and 2 private ["_idx","_container","_sIdx","_dIdx"]; //_dIdx can only be 0, 1 and 2
params ["_idx","_dIdx"]; params ["_idx","_dIdx"];
_idx params ["_container","_sIdx"]; _idx params ["_container","_sIdx"];
//copy old entry //copy old entry
_temp = ((_loadout select (_container + 3)) select 1) select _sIdx select 0; _temp = ((_loadout select (_container + 3)) select 1) select _sIdx select 0;
//delete old entry //delete old entry
@ -116,14 +116,14 @@ _fnc_moveWeaponFromContainer = {
_fnc_MoveWeaponToContainer = { _fnc_MoveWeaponToContainer = {
private ["_container","_sIdx"]; //_sIdx can only be 0, 1 and 2 private ["_container","_sIdx"]; //_sIdx can only be 0, 1 and 2
params ["_container","_sIdx"]; params ["_container","_sIdx"];
/* /*
//Delete this block if no issues. //Delete this block if no issues.
//Commented out because increasing index alone is not enough due to unique attachement placements or ammo size //Commented out because increasing index alone is not enough due to unique attachement placements or ammo size
_exists = _item call _fnc_findItemInContainers; _exists = _item call _fnc_findItemInContainers;
_exists params ["_container","_idx","_found"]; _exists params ["_container","_idx","_found"];
if _found then { if _found then {
_cnt = ((_loadout select (_container + 3)) select 1) select _idx select 1; _cnt = ((_loadout select (_container + 3)) select 1) select _idx select 1;
((_loadout select (_container + 3)) select 1) select _idx set [1,_cnt + 1]; ((_loadout select (_container + 3)) select 1) select _idx set [1,_cnt + 1];
@ -134,7 +134,7 @@ _fnc_MoveWeaponToContainer = {
((_loadout select (_container + 3)) select 1) append [[_loadout select _sIdx,1]]; //cut out from above comment, looks like appending alone works great ((_loadout select (_container + 3)) select 1) append [[_loadout select _sIdx,1]]; //cut out from above comment, looks like appending alone works great
_loadout set [_sIdx,[]]; _loadout set [_sIdx,[]];
player setUnitLoadout _loadout; player setUnitLoadout _loadout;
}; };
@ -150,13 +150,13 @@ _fnc_canMoveToContainer = {
_fnc_dropEquipWeapon = { _fnc_dropEquipWeapon = {
private ["_equipped","_slot"]; private ["_equipped","_slot"];
params ["_equipped","_slot"]; params ["_equipped","_slot"];
if (!_itemInInventory && (_item != _equipped)) exitWith {_return = 3}; //Item not found if (!_itemInInventory && (_item != _equipped)) exitWith {_return = 3}; //Item not found
if (_equipped != "") then { //something equipped already if (_equipped != "") then { //something equipped already
if (player canAdd _equipped) then { //can we move it? if (player canAdd _equipped) then { //can we move it?
_container = _equipped call _fnc_canMoveToContainer; _container = _equipped call _fnc_canMoveToContainer;
if (_container != 4) then { if (_container != 4) then {
[_container,_slot] call _fnc_MoveWeaponToContainer; [_container,_slot] call _fnc_MoveWeaponToContainer;
_return = 1; _return = 1;
@ -193,13 +193,13 @@ _fnc_dropEquipWeapon = {
_fnc_dropAssign= { _fnc_dropAssign= {
private ["_equipped"]; private ["_equipped"];
params ["_equipped"]; params ["_equipped"];
if (!_itemInInventory && (_item != _equipped)) exitWith {_return = 3}; if (!_itemInInventory && (_item != _equipped)) exitWith {_return = 3};
if (_equipped != "") then { if (_equipped != "") then {
if (player canAdd _equipped) then { if (player canAdd _equipped) then {
_container = _equipped call _fnc_canMoveToContainer; _container = _equipped call _fnc_canMoveToContainer;
if (_container != 4) then { if (_container != 4) then {
player unassignItem _equipped; player unassignItem _equipped;
_return = 1; _return = 1;
@ -222,8 +222,8 @@ _fnc_dropAssign= {
}; };
_fnc_MoveShellToContainer = { _fnc_MoveShellToContainer = {
private ["_container"]; private ["_container"];
params ["_container"]; params ["_container"];
_temp = _loadout select 0 select 5; _temp = _loadout select 0 select 5;
_temp2 = [(_temp select 0), 1, (_temp select 1)]; _temp2 = [(_temp select 0), 1, (_temp select 1)];
if ((_temp select 1) > 0) then { //only move if ammo not empty, delete otherwise if ((_temp select 1) > 0) then { //only move if ammo not empty, delete otherwise
@ -235,12 +235,12 @@ _fnc_MoveShellToContainer = {
_fnc_moveShellFromContainer = { _fnc_moveShellFromContainer = {
private ["_idx","_container","_sIdx"]; //_dIdx can only be 0, 1 and 2 private ["_idx","_container","_sIdx"]; //_dIdx can only be 0, 1 and 2
params ["_idx"]; params ["_idx"];
_idx params ["_container","_sIdx","_found"]; _idx params ["_container","_sIdx","_found"];
if (_found) then { if (_found) then {
_temp = ((_loadout select (_container + 3)) select 1) select _sIdx; _temp = ((_loadout select (_container + 3)) select 1) select _sIdx;
if ((_temp select 1) > 1) then { if ((_temp select 1) > 1) then {
_cnt = (((_loadout select (_container + 3)) select 1) select _sIdx) select 1; _cnt = (((_loadout select (_container + 3)) select 1) select _sIdx) select 1;
(((_loadout select (_container + 3)) select 1) select _sIdx) set [1,_cnt - 1]; (((_loadout select (_container + 3)) select 1) select _sIdx) set [1,_cnt - 1];
@ -255,13 +255,13 @@ _fnc_moveShellFromContainer = {
_fnc_dropEquipShells = { _fnc_dropEquipShells = {
private ["_equipped"]; private ["_equipped"];
params ["_equipped"]; params ["_equipped"];
if (!_itemInInventory && (_item != _equipped)) exitWith {_return = 3}; if (!_itemInInventory && (_item != _equipped)) exitWith {_return = 3};
if (_equipped != "") then { if (_equipped != "") then {
if (player canAdd _equipped) then { if (player canAdd _equipped) then {
_container = _equipped call _fnc_canMoveToContainer; _container = _equipped call _fnc_canMoveToContainer;
if (_container != 4) then { if (_container != 4) then {
[_container] call _fnc_MoveShellToContainer; [_container] call _fnc_MoveShellToContainer;
_return = 1; _return = 1;
@ -287,11 +287,11 @@ _fnc_dropEquipShells = {
_return = 1; _return = 1;
}; };
_muzzle = (getArray (configFile >> "CfgWeapons" >> (primaryWeapon player) >> "muzzles")); _muzzle = (getArray (configFile >> "CfgWeapons" >> (primaryWeapon player) >> "muzzles"));
player selectWeapon (_muzzle select 1); player selectWeapon (_muzzle select 1);
}; };
_fnc_findAccessorySlot = { _fnc_findAccessorySlot = {
_item = toLower _item; _item = toLower _item;
private ["_found","_slot","_accessory","_compatibleMuzzles","_compatibleCows","_compatiblePointers","_compatibleBipods"]; private ["_found","_slot","_accessory","_compatibleMuzzles","_compatibleCows","_compatiblePointers","_compatibleBipods"];
_slot = 0; _slot = 0;
_accessory = 0; _accessory = 0;
@ -315,23 +315,23 @@ _fnc_findAccessorySlot = {
for "_i" from 0 to (count _compatibleBipods) do { for "_i" from 0 to (count _compatibleBipods) do {
_compatibleBipods set [_i,toLower (_compatibleBipods select _i)]; _compatibleBipods set [_i,toLower (_compatibleBipods select _i)];
}; };
if (_item in _compatibleMuzzles) exitWith {_found = true; _accessory = 1}; if (_item in _compatibleMuzzles) exitWith {_found = true; _accessory = 1};
if (_item in _compatibleCows) exitWith {_found = true; _accessory = 3}; if (_item in _compatibleCows) exitWith {_found = true; _accessory = 3};
if (_item in _compatiblePointers) exitWith {_found = true; _accessory = 2}; if (_item in _compatiblePointers) exitWith {_found = true; _accessory = 2};
if (_item in _compatibleBipods) exitWith {_found = true; _accessory = 6}; if (_item in _compatibleBipods) exitWith {_found = true; _accessory = 6};
} forEach [(primaryWeapon player),(secondaryWeapon player),(handgunWeapon player)]; } forEach [(primaryWeapon player),(secondaryWeapon player),(handgunWeapon player)];
[_found,_slot,_accessory] [_found,_slot,_accessory]
}; };
_fnc_dropEquipAccessories = { _fnc_dropEquipAccessories = {
_properties = call _fnc_findAccessorySlot; _properties = call _fnc_findAccessorySlot;
_properties params ["_found","_slot","_accessory"]; _properties params ["_found","_slot","_accessory"];
if !_found exitWith {_return = 5}; if !_found exitWith {_return = 5};
_itemsPlayer = (primaryWeaponItems player + secondaryWeaponItems player + handgunItems player); _itemsPlayer = (primaryWeaponItems player + secondaryWeaponItems player + handgunItems player);
for "_i" from 0 to (count _itemsPlayer) do { for "_i" from 0 to (count _itemsPlayer) do {
_itemsPlayer set [_i,toLower (_itemsPlayer select _i)]; _itemsPlayer set [_i,toLower (_itemsPlayer select _i)];
@ -410,7 +410,7 @@ switch _slot do {
"Use [Right Ctrl] + M to toggle GPS" call epoch_message; "Use [Right Ctrl] + M to toggle GPS" call epoch_message;
}; };
case "ItemMap": case "ItemMap":
{ {
openMap true; openMap true;
}; };
case "ItemCompass": case "ItemCompass":
@ -455,7 +455,7 @@ switch _slot do {
private ["_allMuzzles","_muzzle","_found","_mags"]; private ["_allMuzzles","_muzzle","_found","_mags"];
if (_itemInInventory) then { if (_itemInInventory) then {
_allMuzzles = getArray (configFile >> "CfgWeapons" >> "Put" >> "Muzzles"); _allMuzzles = getArray (configFile >> "CfgWeapons" >> "Put" >> "Muzzles");
_muzzle = ""; _muzzle = "";
_found = false; _found = false;
{ {
@ -466,7 +466,7 @@ switch _slot do {
} forEach _mags; } forEach _mags;
if (_found) exitWith {}; if (_found) exitWith {};
} forEach _allMuzzles; } forEach _allMuzzles;
player playActionNow "PutDown"; player playActionNow "PutDown";
player selectWeapon _muzzle; player selectWeapon _muzzle;
player fire [_muzzle, _muzzle, _item]; player fire [_muzzle, _muzzle, _item];
@ -474,7 +474,7 @@ switch _slot do {
}; };
}; };
case 16: //Grenade launcher shells. case 16: //Grenade launcher shells.
{ {
_equipped = (primaryWeaponMagazine player) param [1,""]; _equipped = (primaryWeaponMagazine player) param [1,""];
_equipped call _fnc_dropEquipShells; _equipped call _fnc_dropEquipShells;
}; };

View File

@ -18,7 +18,7 @@ if (!isNull cursorTarget) then {
}; };
}; };
if (isNull _target) then { if (isNull _target) then {
_targets = nearestObjects [getPosATL player, ["WeaponHolder", "WeaponHolderSimulated"], 3]; _targets = nearestObjects [player, ["WeaponHolder", "WeaponHolderSimulated"], 3];
if !(_targets isEqualTo []) then { if !(_targets isEqualTo []) then {
_target = _targets select 0; _target = _targets select 0;
_forceGear = true; _forceGear = true;

View File

@ -17,7 +17,7 @@ private ["_cN","_cP","_near","_nearObjects","_out","_player","_recipe"];
//[[[end]]] //[[[end]]]
params ["_recipes"]; params ["_recipes"];
_nearObjects = nearestObjects [position player,["WeaponHolder","LandVehicle","Air"],10]; _nearObjects = nearestObjects [player,["WeaponHolder","LandVehicle","Air"],10];
_near = []; _out = []; _near = []; _out = [];
{ {

View File

@ -69,7 +69,7 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
}; };
} forEach _itemRecipeItems; } forEach _itemRecipeItems;
_nearByBench = nearestObjects [position player,["WorkBench_EPOCH"],3]; _nearByBench = nearestObjects [player,["WorkBench_EPOCH"],3];
if (!(_nearByBench isEqualTo []) && (_needBench > 0)) then { //adds item on top of bench if bench was required if (!(_nearByBench isEqualTo []) && (_needBench > 0)) then { //adds item on top of bench if bench was required
(_nearByBench select 0) addItemCargoGlobal [_item,1]; (_nearByBench select 0) addItemCargoGlobal [_item,1];

View File

@ -20,7 +20,7 @@ params ["_item","_player",["_token","",[""]] ];
if !([_player,_token] call EPOCH_server_getPToken) exitWith {}; if !([_player,_token] call EPOCH_server_getPToken) exitWith {};
if (_item isKindOf "Bag_Base") then { if (_item isKindOf "Bag_Base") then {
_wH = objNull; _wH = objNull;
_nearByHolder = nearestObjects [position _player,["groundWeaponHolder"],3]; _nearByHolder = nearestObjects [_player,["groundWeaponHolder"],3];
if (_nearByHolder isEqualTo []) then { if (_nearByHolder isEqualTo []) then {
_wHPos = _player modelToWorld [0,1,0]; _wHPos = _player modelToWorld [0,1,0];
if (surfaceIsWater _wHPos) then { if (surfaceIsWater _wHPos) then {

View File

@ -172,9 +172,9 @@ if (_slot != -1) then {
if !(EPOCH_VehicleSlots isEqualTo[]) then { if !(EPOCH_VehicleSlots isEqualTo[]) then {
_position = getPosATL _player; _position = getPosATL _player;
_helipad = nearestObjects[_position, ["Land_HelipadEmpty_F", "Land_HelipadCircle_F"], 100]; _helipad = nearestObjects[_player, ["Land_HelipadEmpty_F", "Land_HelipadCircle_F"], 100];
_helipads = []; _helipads = [];
_smoke = nearestObject[_position, "SmokeShell"]; _smoke = nearestObject[_player, "SmokeShell"];
if (!isNull _smoke) then { if (!isNull _smoke) then {
_helipad pushBack _smoke; _helipad pushBack _smoke;
}; };
@ -276,7 +276,7 @@ if (_slot != -1) then {
if (_item isKindOf "Bag_Base") then { if (_item isKindOf "Bag_Base") then {
_wH = objNull; _wH = objNull;
_nearByHolder = nearestObjects [position _player,["groundWeaponHolder"],3]; _nearByHolder = nearestObjects [_player,["groundWeaponHolder"],3];
if (_nearByHolder isEqualTo []) then { if (_nearByHolder isEqualTo []) then {
_wHPos = _player modelToWorld [0,1,0]; _wHPos = _player modelToWorld [0,1,0];
if (surfaceIsWater _wHPos) then { if (surfaceIsWater _wHPos) then {

View File

@ -38,9 +38,9 @@ for "_i" from 1 to _maxStorageLimit do {
// legacy change class // legacy change class
_class = switch (_class_raw) do { _class = switch (_class_raw) do {
case "LockBoxProxy_EPOCH": { "LockBox_EPOCH" }; case "LockBoxProxy_EPOCH": { "LockBox_EPOCH" };
case "SafeProxy_EPOCH": { "Safe_EPOCH" }; case "SafeProxy_EPOCH": { "Safe_EPOCH" };
default { _class_raw }; default { _class_raw };
}; };
if !(_inventory isEqualType []) then { _inventory = []; }; if !(_inventory isEqualType []) then { _inventory = []; };

View File

@ -391,7 +391,7 @@ for "_i" from 1 to 3 do {
}; };
if ("MAP-LOOT" in _case) then { if ("MAP-LOOT" in _case) then {
_temp = _temp + " _temp = _temp + "
,[' Loot Marker', [], {"+_skn_tg_map_loot+" = !"+_skn_tg_map_loot+"; if ("+_skn_tg_map_loot+") then {waitUntil {"+_skn_mapLootArray+" = nearestObjects[getPos player, ['WH_Loot', 'Animated_Loot'], 10000];uiSleep 10;!"+_skn_tg_map_loot+"};"+_skn_mapLootArray+" = []};['Loot MARKER',if ("+_skn_tg_map_loot+") then [{2},{1}]] call "+_skn_adminLog_PVC+"}, '2', []] ,[' Loot Marker', [], {"+_skn_tg_map_loot+" = !"+_skn_tg_map_loot+"; if ("+_skn_tg_map_loot+") then {waitUntil {"+_skn_mapLootArray+" = nearestObjects[player, ['WH_Loot', 'Animated_Loot'], 10000];uiSleep 10;!"+_skn_tg_map_loot+"};"+_skn_mapLootArray+" = []};['Loot MARKER',if ("+_skn_tg_map_loot+") then [{2},{1}]] call "+_skn_adminLog_PVC+"}, '2', []]
"; ";
}; };
if ("MAP-VEHICLE" in _case) then { if ("MAP-VEHICLE" in _case) then {