-
-
Save veteran29/cdff6bc1d43378eff0b96bd332ca4324 to your computer and use it in GitHub Desktop.
Code examples on how to customize S.O.G. Prairie Fire Tracker area module behaviour
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
This script shows example usage of vet_fnc_onTrackerSpawn to customize the loadouts of spawned groups. | |
vet_trackerLoadoutsHash - hash map of tracker type and parameters for setUnitLoadout | |
vet_fnc_customizeTrackerLoadout - function that randomly assigns loadouts to the group units depending on type of the tracker group | |
*/ | |
vet_trackerLoadoutsHash = createHashMapFromArray [ | |
["sentry", ["vn_o_men_vc_local_01", "vn_o_men_vc_local_02"]], | |
["stalker", ["vn_o_men_vc_local_01", "vn_o_men_vc_local_02"]], | |
["patrol", ["vn_o_men_vc_regional_01", "vn_o_men_vc_regional_02"]], | |
["avalanche", ["vn_o_men_vc_08", "vn_o_men_vc_09"]] | |
]; | |
vet_fnc_customizeTrackerLoadout = { | |
params [["_group", grpNull, [grpNull]]]; | |
systemChat str ["Changing loadout of", _group]; | |
private _groupType = _group getVariable ["vn_type", ""]; | |
private _loadouts = vet_trackerLoadoutsHash getOrDefault [_groupType, []]; | |
if (_loadouts isEqualTo []) exitWith { | |
diag_log text format ["Could not get loadouts for group %1 of type %2", _group, _groupType]; | |
}; | |
{ | |
_x setUnitLoadout selectRandom _loadouts; | |
} forEach units _group; | |
}; | |
[my_trackerModule1, vet_fnc_customizeTrackerLoadout] spawn vet_fnc_onTrackerSpawn; | |
[my_trackerModule2, vet_fnc_customizeTrackerLoadout] spawn vet_fnc_onTrackerSpawn; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Author: veteran29 | |
Description: | |
Execute custom callback on groups spawned by the Tracker Area module. | |
Parameter(s): | |
_module - Tracker Area module [OBJECT] | |
_fnc_callback - Function to execute on newly created groups, arguments passed to the callback are: [_group, _module] [CODE] | |
_interval - How often to check for new groups [NUMBER, defaults to 3] | |
*/ | |
vet_fnc_onTrackerSpawn = { | |
if (!canSuspend) exitWith {_this spawn vet_fnc_onTrackerSpawn}; | |
waitUntil {missionNamespace getVariable ["BIS_fnc_init", false]}; | |
params [ | |
["_module", objNull, [objNull]], | |
["_fnc_callback", {}, [{}]], | |
["_interval", 3, [0]] | |
]; | |
private _fsmId = _module getVariable ["vn_fsm", -1]; | |
if (_fsmId == -1) exitWith { | |
diag_log text format ["Could not get Tracker FSM from module: %1", _module]; | |
}; | |
private _handledGroups = []; | |
private _fsmGroups = []; | |
while {true} do { | |
waitUntil { | |
sleep _interval; | |
// last element always contains all Overlord managed groups | |
_fsmGroups = _fsmId call vn_ms_fnc_tracker_overlord_getGroups; | |
reverse _fsmGroups; | |
_fsmGroups = _fsmGroups select 0; | |
_handledGroups isNotEqualTo _fsmGroups | |
}; | |
private _newGroups = _fsmGroups - _handledGroups; | |
_handledGroups = _fsmGroups; | |
{[_x, _module] call _fnc_callback} foreach _newGroups; | |
}; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment