Code performance improvements

This commit is contained in:
IT07 2016-07-06 22:54:02 +02:00
parent 780b25d7e5
commit c307d40f8d
8 changed files with 96 additions and 135 deletions

View File

@ -9,12 +9,9 @@
Returns: SIDE - unit's side Returns: SIDE - unit's side
*/ */
private ["_r"]; private ["_r","_f"];
if (_this isEqualType "") then _f = getText (configFile >> "CfgVehicles" >> _this >> "faction");
{ if not(_f isEqualTo "") then
private ["_f"];
_f = getText (configFile >> "CfgVehicles" >> _this >> "faction");
if not(_f isEqualTo "") then
{ {
scopeName "isNull"; scopeName "isNull";
if (_f isEqualTo "BLU_G_F") then if (_f isEqualTo "BLU_G_F") then
@ -45,8 +42,8 @@ if (_this isEqualType "") then
{ {
["fn_checkSide", 0, format["Failed to find faction of %1", _this]] ExecVM "exile_vemf_reloaded\sqf\log.sqf"; ["fn_checkSide", 0, format["Failed to find faction of %1", _this]] ExecVM "exile_vemf_reloaded\sqf\log.sqf";
}; };
if not(isNil "_r") then
if not(isNil "_r") then
{ {
_r _r
}; };
};

View File

@ -8,7 +8,7 @@
_this select 0: STRING - Mode to use. Options: "loc" or "pos" _this select 0: STRING - Mode to use. Options: "loc" or "pos"
_this select 1: BOOLEAN - True if _pos needs to be a road _this select 1: BOOLEAN - True if _pos needs to be a road
_this select 2: POSITION - Center for nearestLocations check _this select 2: POSITION - Center for nearestLocations check
_this select 3: SCALAR - Distance in meters. Locations closer than that will be excluded _this select 3: SCALAR - Distance in meters. Locations closer than given position will be excluded/included
_this select 4: SCALAR - Max prefered distance in meters from center. If not achievable, further dest will be selected _this select 4: SCALAR - Max prefered distance in meters from center. If not achievable, further dest will be selected
_this select 5: SCALAR - Distance in meters to check from _this2 for players _this select 5: SCALAR - Distance in meters to check from _this2 for players
_this select 6: STRING (optional) - Exact config name of mission override settings to load _this select 6: STRING (optional) - Exact config name of mission override settings to load
@ -21,8 +21,9 @@
private [ private [
"_r","_this0","_this1","_this2","_this3","_this4","_this5","_this6", "_r","_this0","_this1","_this2","_this3","_this4","_this5","_this6",
"_s0","_s1","_s2","_s3", "_s0","_s1","_s2","_s3",
"_rad","_arr","_bin","_used","_badNames","_maps","_bad", "_ms0",
"_locPos","_xx","_pos","_hi","_low","_dist","_loc" "_rad","_arr","_bin","_used","_fltr","_badNames","_maps","_bad",
"_pos","_xx","_pos","_hi","_low","_dist","_loc"
]; ];
params [ params [
@ -36,6 +37,7 @@ params [
]; ];
([["nonPopulated","noMissionPos","missionDistance","missionList"]] call VEMFr_fnc_config) params ["_s0","_s1","_s2","_s3"]; ([["nonPopulated","noMissionPos","missionDistance","missionList"]] call VEMFr_fnc_config) params ["_s0","_s1","_s2","_s3"];
([[_this6],["skipDistanceReversed"]] call VEMFr_fnc_config) params ["_ms0"];
if (_this6 in _s3) then if (_this6 in _s3) then
{ {
@ -46,7 +48,7 @@ _rad = 5000;
if (_this0 isEqualTo "loc") then if (_this0 isEqualTo "loc") then
{ {
// Get a list of locations close to _this2 (position of player) // Get a list of locations close to _this2 (position of player)
_arr = nearestLocations [_this2, ["CityCenter","Strategic","StrongpointArea","NameVillage","NameCity","NameCityCapital",if (_s0 isEqualTo 1) then {"nameLocal","Area","BorderCrossing","Hill","fakeTown","Name","RockArea","ViewPoint"}], worldSize]; _arr = nearestLocations [_this2, ["CityCenter","Strategic","StrongpointArea","NameVillage","NameCity","NameCityCapital",if (_s0 isEqualTo 1) then {"nameLocal","Area","BorderCrossing","Hill","fakeTown","Name","RockArea","ViewPoint"}], if (_ms0 > 0) then {_ms0*2} else {worldSize}];
if ((count _arr) > 0) then if ((count _arr) > 0) then
{ {
_maps = "isClass _x" configClasses (configFile >> "CfgVemfReloaded" >> "locationBlackLists"); _maps = "isClass _x" configClasses (configFile >> "CfgVemfReloaded" >> "locationBlackLists");
@ -64,57 +66,35 @@ if (_this0 isEqualTo "loc") then
_bin = []; _bin = [];
_used = uiNamespace getVariable ["VEMFrUsedLocs",[]]; _used = uiNamespace getVariable ["VEMFrUsedLocs",[]];
{ // Check _arr for invalid locations (too close, hasPlayers or inBlacklist)
if ([locationPosition _x, _this5] call VEMFr_fnc_playerNear) then _fltr =
{ {
_bin pushBack _x; scopeName "filter";
} else
{
if ((count _s1) > 0) then
{
_locPos = locationPosition _x;
_xx = _x; _xx = _x;
{ {
if ((count _x) isEqualTo 2) then if (((_x select 0) distance (locationPosition _xx)) <= (_x select 1)) then { _bin pushBack _xx; breakOut "filter" };
{
if (((_x select 0) distance _locPos) <= (_x select 1)) then
{
_bin pushBack _xx;
};
} else
{
["fn_findPos", 0, format["found invalid entry in mission blacklist: %1", _x]] ExecVM "exile_vemf_reloaded\sqf\log.sqf";
};
} forEach _s1; } forEach _s1;
};
if ((text _x) in _bad) then if (_x in _used) then { _bin pushBack _x }
else
{ {
_bin pushBack _x;
} else
{ {
if (_this2 distance (locationPosition _x) < _this3) then if (((locationPosition _xx) distance (locationPosition _x)) < _s2) then { _bin pushBack _xx; breakOut "filter" };
{
_bin pushBack _x;
} else
{
if (_x in _used) then
{
_bin pushBack _x;
};
};
};
if ((count _used) > 0) then
{
_xx = _x;
{
if (((locationPosition _xx) distance (locationPosition _x)) < _s2) then
{
_bin pushBack _xx;
};
} forEach _used; } forEach _used;
}; };
if ((text _x) in _bad) then { _bin pushBack _x };
};
{
_dist = _this2 distance (locationPosition _x);
if (_ms0 > 0) then
{
if ((_dist <= (_ms0*2)) AND (_dist > _ms0)) then { call _fltr }
else { _bin pushBack _x };
} else
{
if (_dist > _this3) then { call _fltr }
else { _bin pushBack _x };
}; };
} forEach _arr; } forEach _arr;
@ -162,4 +142,4 @@ if (_this0 isEqualTo "pos") then
}; };
}; };
_r if not(isNil "_r") then { _r };

View File

@ -15,7 +15,7 @@
BOOLEAN - true if successful BOOLEAN - true if successful
*/ */
private ["_r","_this0"]; private ["_r","_this0","_m"];
params [ params [
["_this0", objNull, [objNull]], ["_this0", objNull, [objNull]],
["_this1", "", [""]], ["_this1", "", [""]],
@ -26,7 +26,6 @@ params [
_r = []; _r = [];
if not(_this1 isEqualTo "") then if not(_this1 isEqualTo "") then
{ {
private ["_m"];
_m = selectRandom (getArray (configFile >> "CfgWeapons" >> _this1 >> "magazines")); _m = selectRandom (getArray (configFile >> "CfgWeapons" >> _this1 >> "magazines"));
for "_l" from 1 to 5 do for "_l" from 1 to 5 do
{ {
@ -40,7 +39,6 @@ if not(_this2 isEqualTo "") then
{ {
if not((backPack _this0) isEqualTo "") then if not((backPack _this0) isEqualTo "") then
{ {
private ["_m"];
_m = selectRandom (getArray (configFile >> "CfgWeapons" >> _this2 >> "magazines")); _m = selectRandom (getArray (configFile >> "CfgWeapons" >> _this2 >> "magazines"));
for "_l" from 1 to 3 do for "_l" from 1 to 3 do
{ {
@ -53,7 +51,6 @@ if not(_this2 isEqualTo "") then
if not(_this3 isEqualTo "") then if not(_this3 isEqualTo "") then
{ {
private ["_m"];
_m = selectRandom (getArray (configFile >> "CfgWeapons" >> _this3 >> "magazines")); _m = selectRandom (getArray (configFile >> "CfgWeapons" >> _this3 >> "magazines"));
for "_l" from 1 to 4 do for "_l" from 1 to 4 do
{ {

View File

@ -26,7 +26,7 @@ if ((_this1 in ("missionList" call VEMFr_fnc_config)) OR (_this1 isEqualTo "Stat
scopeName "this"; scopeName "this";
if (_this2 isEqualTo 0) then // "Militia" if (_this2 isEqualTo 0) then // "Militia"
{ {
private ["_s","_unifs","_headG","_vests","_packs","_lnchers","_rfles","_pstls","_ls"]; private ["_s","_unifs","_headG","_vests","_packs","_lnchers","_rfles","_pstls","_ls","_lc","_a"];
// Define settings // Define settings
_s = [["aiGear"],["aiUniforms","aiHeadGear","aiVests","aiBackpacks","aiLaunchers","aiRifles","aiPistols"]] call VEMFr_fnc_config; _s = [["aiGear"],["aiUniforms","aiHeadGear","aiVests","aiBackpacks","aiLaunchers","aiRifles","aiPistols"]] call VEMFr_fnc_config;
_s params ["_unifs","_headG","_vests","_packs","_lnchers","_rfles","_pstls"]; _s params ["_unifs","_headG","_vests","_packs","_lnchers","_rfles","_pstls"];
@ -61,7 +61,6 @@ if ((_this1 in ("missionList" call VEMFr_fnc_config)) OR (_this1 isEqualTo "Stat
_ls = [[_this1],["allowLaunchers","hasLauncherChance"]] call VEMFr_fnc_config; _ls = [[_this1],["allowLaunchers","hasLauncherChance"]] call VEMFr_fnc_config;
if ((_ls select 0) isEqualTo 1) then if ((_ls select 0) isEqualTo 1) then
{ {
private ["_lc"];
_lc = _ls select 1; _lc = _ls select 1;
if ((_lc isEqualTo 100) OR ((ceil random (100 / _lc) isEqualTo (ceil random (100 / _lc))))) then if ((_lc isEqualTo 100) OR ((ceil random (100 / _lc) isEqualTo (ceil random (100 / _lc))))) then
{ {
@ -71,7 +70,6 @@ if ((_this1 in ("missionList" call VEMFr_fnc_config)) OR (_this1 isEqualTo "Stat
_xx addBackpack _g; _xx addBackpack _g;
}; };
_g = selectRandom _lnchers; _g = selectRandom _lnchers;
private ["_a"];
_a = getArray (configFile >> "cfgWeapons" >> _g >> "magazines"); _a = getArray (configFile >> "cfgWeapons" >> _g >> "magazines");
if (count _a > 2) then if (count _a > 2) then
{ {

View File

@ -15,7 +15,7 @@
*/ */
scopeName "mines"; scopeName "mines";
private ["_r","_this0","_this1","_this2","_this3","_s","_ms","_a"]; private ["_r","_this0","_this1","_this2","_this3","_s","_ms","_a","_mt"];
params [ params [
["_this0",[],[[]]], ["_this0",[],[[]]],
["_this1",-1,[0]], ["_this1",-1,[0]],
@ -27,7 +27,6 @@ _s = [[_this3],["mines","minesAmount"]] call VEMFr_fnc_config;
_s params ["_ms","_a"]; _s params ["_ms","_a"];
if ((_this3 in ("missionList" call VEMFr_fnc_config)) AND (_ms > 0) AND ((count _this0) isEqualTo 3) AND (_this1 > -1) AND (_this2 > _this1) AND (_a > -1)) then if ((_this3 in ("missionList" call VEMFr_fnc_config)) AND (_ms > 0) AND ((count _this0) isEqualTo 3) AND (_this1 > -1) AND (_this2 > _this1) AND (_a > -1)) then
{ {
private ["_mt"];
if (_ms isEqualTo 1) then { _mt = ["ATMine"] }; if (_ms isEqualTo 1) then { _mt = ["ATMine"] };
if (_ms isEqualTo 2) then { _mt = ["APERSMine"] }; if (_ms isEqualTo 2) then { _mt = ["APERSMine"] };
if (_ms isEqualTo 3) then { _mt = ["ATMine","APERSMine"] }; if (_ms isEqualTo 3) then { _mt = ["ATMine","APERSMine"] };

View File

@ -34,18 +34,16 @@ if ((_this4 in ("missionList" call VEMFr_fnc_config)) OR (_this4 isEqualTo "Stat
scopeName "outer"; scopeName "outer";
_r = []; _r = [];
_this0 = [_this0 select 0, _this0 select 1, _this5]; _this0 = [_this0 select 0, _this0 select 1, _this5];
private ["_s","_ccrcy","_mshk","_mspd","_stmn","_sptDst","_sptTm","_crg","_rldSpd","_cmmndng","_gnrl","_i"]; private ["_s","_ccrcy","_mshk","_mspd","_stmn","_sptDst","_sptTm","_crg","_rldSpd","_cmmndng","_gnrl","_i","_grp","_unit"];
_s = [["aiSkill", ([["aiSkill"],["difficulty"]] call VEMFr_fnc_config) select 0],["accuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding","general"]] call VEMFr_fnc_config; _s = [["aiSkill", ([["aiSkill"],["difficulty"]] call VEMFr_fnc_config) select 0],["accuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding","general"]] call VEMFr_fnc_config;
_s params ["_ccrcy","_mshk","_mspd","_stmn","_sptDst","_sptTm","_crg","_rldSpd","_cmmndng","_gnrl"]; _s params ["_ccrcy","_mshk","_mspd","_stmn","_sptDst","_sptTm","_crg","_rldSpd","_cmmndng","_gnrl"];
for "_g" from 1 to _this1 do for "_g" from 1 to _this1 do
{ {
private["_grp"];
_grp = createGroup (("unitClass" call VEMFr_fnc_config) call VEMFr_fnc_checkSide); _grp = createGroup (("unitClass" call VEMFr_fnc_config) call VEMFr_fnc_checkSide);
_grp allowFleeing 0; _grp allowFleeing 0;
for "_u" from 1 to _this2 do for "_u" from 1 to _this2 do
{ {
private ["_unit"];
_unit = _grp createUnit [("unitClass" call VEMFr_fnc_config), _this0, [], _this6, "FORM"]; // Create Unit There _unit = _grp createUnit [("unitClass" call VEMFr_fnc_config), _this0, [], _this6, "FORM"]; // Create Unit There
_allUnits pushBack _unit; _allUnits pushBack _unit;
_unit addMPEventHandler ["mpkilled","if (isDedicated) then { [[(_this select 0),(name(_this select 0))],[(_this select 1),(name(_this select 1))]] ExecVM 'exile_vemf_reloaded\sqf\aiKilled.sqf' }"]; _unit addMPEventHandler ["mpkilled","if (isDedicated) then { [[(_this select 0),(name(_this select 0))],[(_this select 1),(name(_this select 1))]] ExecVM 'exile_vemf_reloaded\sqf\aiKilled.sqf' }"];

View File

@ -24,7 +24,7 @@
_send = _send =
{ {
private ["_arr"]; private "_arr";
if (count _this isEqualTo 0) then if (count _this isEqualTo 0) then
{ {
_arr = allPlayers; _arr = allPlayers;

View File

@ -42,88 +42,80 @@ _ms params [
// Add primary weapons // Add primary weapons
for "_j" from 0 to (_maxPrim - _minPrim + floor random _minPrim) do for "_j" from 0 to (_maxPrim - _minPrim + floor random _minPrim) do
{ {
private ["_prim"]; _g = _primaries call BIS_fnc_selectRandom;
_prim = _primaries call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_prim select 0) in _blackList) then
{ {
_crate addWeaponCargoGlobal [_prim select 0, _prim select 1]; _crate addWeaponCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Secondary weapons // Secondary weapons
for "_j" from 0 to (_maxSec - _minSec + floor random _minSec) do for "_j" from 0 to (_maxSec - _minSec + floor random _minSec) do
{ {
private ["_sec"]; _g = _secondaries call BIS_fnc_selectRandom;
_sec = _secondaries call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_sec select 0) in _blackList) then
{ {
_crate addWeaponCargoGlobal [_sec select 0, _sec select 1]; _crate addWeaponCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Magazines // Magazines
for "_j" from 0 to (_maxMagSlots - _minMagSlots + floor random _minMagSlots) do for "_j" from 0 to (_maxMagSlots - _minMagSlots + floor random _minMagSlots) do
{ {
private ["_mag"]; _g = _magazines call BIS_fnc_selectRandom;
_mag = _magazines call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_mag select 0) in _blackList) then
{ {
_crate addMagazineCargoGlobal [_mag select 0, _mag select 1]; _crate addMagazineCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Weapon attachments // Weapon attachments
for "_j" from 0 to (_maxAttSlots - _minAttSlots + floor random _minAttSlots) do for "_j" from 0 to (_maxAttSlots - _minAttSlots + floor random _minAttSlots) do
{ {
private ["_att"]; _g = _attachments call BIS_fnc_selectRandom;
_att = _attachments call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_att select 0) in _blackList) then
{ {
_crate addItemCargoGlobal [_att select 0, _att select 1]; _crate addItemCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Items // Items
for "_j" from 0 to (_maxItemSlots - _minItemSlots + floor random _minItemSlots) do for "_j" from 0 to (_maxItemSlots - _minItemSlots + floor random _minItemSlots) do
{ {
private ["_item"]; _g = _items call BIS_fnc_selectRandom;
_item = _items call BIS_fnc_selectRandom; if not((_g select 0) in _blacklist) then
if not((_item select 0) in _blacklist) then
{ {
_crate addItemCargoGlobal [_item select 0, _item select 1]; _crate addItemCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Vests // Vests
for "_j" from 0 to (_maxVestSlots - _minVestSlots + floor random _minVestSlots) do for "_j" from 0 to (_maxVestSlots - _minVestSlots + floor random _minVestSlots) do
{ {
private ["_vest"]; _g = _vests call BIS_fnc_selectRandom;
_vest = _vests call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_vest select 0) in _blackList) then
{ {
_crate addItemCargoGlobal [_vest select 0, _vest select 1]; _crate addItemCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Helmets / caps / berets / bandanas // Helmets / caps / berets / bandanas
for "_j" from 0 to (_maxHeadGearSlots - _minHeadGearSlots + floor random _minHeadGearSlots) do for "_j" from 0 to (_maxHeadGearSlots - _minHeadGearSlots + floor random _minHeadGearSlots) do
{ {
private ["_headGearItem"]; _g = _headGear call BIS_fnc_selectRandom;
_headGearItem = _headGear call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_headGearItem select 0) in _blackList) then
{ {
_crate addItemCargoGlobal [_headGearItem select 0, _headGearItem select 1]; _crate addItemCargoGlobal [_g select 0, _g select 1];
}; };
}; };
// Backpacks // Backpacks
for "_j" from 0 to (_maxBagSlots - _minBagSlots + floor random _minBagSlots) do for "_j" from 0 to (_maxBagSlots - _minBagSlots + floor random _minBagSlots) do
{ {
private ["_pack"]; _g = _backpacks call BIS_fnc_selectRandom;
_pack = _backpacks call BIS_fnc_selectRandom; if not((_g select 0) in _blackList) then
if not((_pack select 0) in _blackList) then
{ {
_crate addBackpackCargoGlobal [_pack select 0, _pack select 1]; _crate addBackpackCargoGlobal [_g select 0, _g select 1];
}; };
}; };