diff --git a/framework/reinsert/client/fn_addAceSelfActions.sqf b/framework/reinsert/client/fn_addAceSelfActions.sqf index a6f66de..5d19ba5 100644 --- a/framework/reinsert/client/fn_addAceSelfActions.sqf +++ b/framework/reinsert/client/fn_addAceSelfActions.sqf @@ -1,69 +1,65 @@ #include "..\script_component.hpp" -params ["_type"]; // string of the object's classname -if (!(_type isKindOf "CAManBase")) exitWith {}; +params [ + ["_types", [], [[]]], // classnames to assign these action to + ["_useInheritance", false, [false]] +]; -if ( - (localNamespace getVariable [QGVAR(fileForReinsertClassesAdded), []]) - find _type != -1 -) exitWith {}; +{ // forEach _types + private _classToAddActionsTo = _x; -private _fileForReinsertAction = [ - QGVAR(fileReinsertRequestAction), - "File Re-insert Request", - "\A3\ui_f\data\igui\cfg\simpleTasks\types\takeoff_ca.paa", - { // statement - params ["_target", "_player", "_params"]; - // find nearest base or location - private _base = [_player] call EFUNC(common,getNearestBase); - private _baseName = [_base] call EFUNC(common,getNameOfBase); - // send event to server - [QGVAR(fileReinsertRequest), [_player, _base]] call CBA_fnc_serverEvent; - // notify player their request was filed - [["Re-insert Request Filed"], [format["Location: %1", _baseName]]] call CBA_fnc_notify; - }, - { // condition - params ["_target", "_player", "_params"]; - // find nearest base or location - private _base = [_player] call EFUNC(common,getNearestBase); - private _baseDistance = _player distance _base; + private _fileForReinsertAction = [ + QGVAR(fileReinsertRequestAction), + "File Re-insert Request", + "\A3\ui_f\data\igui\cfg\simpleTasks\types\takeoff_ca.paa", + { // statement + params ["_target", "_player", "_params"]; + // find nearest base or location + private _base = [_player] call EFUNC(common,getNearestBase); + private _baseName = [_base] call EFUNC(common,getNameOfBase); + // send event to server + [QGVAR(fileReinsertRequest), [_player, _base]] call CBA_fnc_serverEvent; + // notify player their request was filed + [["Re-insert Request Filed"], [format["Location: %1", _baseName]]] call CBA_fnc_notify; + }, + { // condition + params ["_target", "_player", "_params"]; + // find nearest base or location + private _base = [_player] call EFUNC(common,getNearestBase); + private _baseDistance = _player distance _base; - private _maxRangeToReady = missionNamespace getVariable [QGVAR(setting_maxRangeToReady), 400]; - private _existingQueue = missionNamespace getVariable [QGVAR(reinsertionQueue), []]; + private _maxRangeToReady = [QGVAR(setting_maxRangeToReady)] call CBA_settings_fnc_get; + private _existingQueue = missionNamespace getVariable [QGVAR(reinsertionQueue), []]; - // check if module is enabled, player is near a base, and player is not already in the queue - // (serverTime - GVAR(missionStartServerTime)) > 60*5 && // only allow after 15 minutes - missionNamespace getVariable ["milsim_reinsert_setting_reinsertion_enabled", true] && - (_baseDistance < _maxRangeToReady) && - not (_player in (_existingQueue apply {_x#0})) - } -] call ace_interact_menu_fnc_createAction; -[_type, 1, ["ACE_SelfActions"], _fileForReinsertAction, true] call ace_interact_menu_fnc_addActionToClass; + // check if module is enabled, player is near a base, and player is not already in the queue + // (serverTime - GVAR(missionStartServerTime)) > 60*5 && // only allow after 15 minutes + [QGVAR(setting_enabled)] call CBA_settings_fnc_get && + (_baseDistance < _maxRangeToReady) && + not (_player in (_existingQueue apply {_x#0})) + } + ] call ace_interact_menu_fnc_createAction; + [_classToAddActionsTo, 1, ["ACE_SelfActions"], _fileForReinsertAction, _useInheritance] call ace_interact_menu_fnc_addActionToClass; -private _removeFileForReinsertAction = [ - QGVAR(removeReinsertRequestAction), - "Remove Re-insert Request", - "\A3\ui_f\data\igui\cfg\simpleTasks\types\land_ca.paa", - { // statement - params ["_target", "_player", "_params"]; - // send event to server - [QGVAR(removeReinsertRequest), [_player]] call CBA_fnc_serverEvent; - // notify player their request was rescinded - "Re-insert Request Rescinded" call CBA_fnc_notify; - }, - { // condition - params ["_target", "_player", "_params"]; - private _existingQueue = missionNamespace getVariable [QGVAR(reinsertionQueue), []]; - - // check if module is enabled, player is in the queue - // (serverTime - GVAR(missionStartServerTime)) > 60*5 && // only allow after 15 minutes - missionNamespace getVariable ["milsim_reinsert_setting_reinsertion_enabled", true] && - (_player in (_existingQueue apply {_x#0})) - } -] call ace_interact_menu_fnc_createAction; -[_type, 1, ["ACE_SelfActions"], _removeFileForReinsertAction, true] call ace_interact_menu_fnc_addActionToClass; - -private _classesActionsAddedTo = (localNamespace getVariable [QGVAR(fileForReinsertClassesAdded), []]); -_classesActionsAddedTo pushBackUnique _type; -localNamespace setVariable [QGVAR(fileForReinsertClassesAdded), _classesActionsAddedTo]; + private _removeFileForReinsertAction = [ + QGVAR(removeReinsertRequestAction), + "Remove Re-insert Request", + "\A3\ui_f\data\igui\cfg\simpleTasks\types\land_ca.paa", + { // statement + params ["_target", "_player", "_params"]; + // send event to server + [QGVAR(removeReinsertRequest), [_player]] call CBA_fnc_serverEvent; + // notify player their request was rescinded + "Re-insert Request Rescinded" call CBA_fnc_notify; + }, + { // condition + params ["_target", "_player", "_params"]; + private _existingQueue = missionNamespace getVariable [QGVAR(reinsertionQueue), []]; + // check if module is enabled, player is in the queue + // (serverTime - GVAR(missionStartServerTime)) > 60*5 && // only allow after 15 minutes + [QGVAR(setting_enabled)] call CBA_settings_fnc_get && + (_player in (_existingQueue apply {_x#0})) + } + ] call ace_interact_menu_fnc_createAction; + [_classToAddActionsTo, 1, ["ACE_SelfActions"], _removeFileForReinsertAction, _useInheritance] call ace_interact_menu_fnc_addActionToClass; +} forEach _types; \ No newline at end of file diff --git a/framework/reinsert/client/fn_addCheckQueueSelfAction.sqf b/framework/reinsert/client/fn_addCheckQueueSelfAction.sqf index 341e09f..819a01a 100644 --- a/framework/reinsert/client/fn_addCheckQueueSelfAction.sqf +++ b/framework/reinsert/client/fn_addCheckQueueSelfAction.sqf @@ -1,30 +1,28 @@ #include "..\script_component.hpp" -params ["_type"]; // string of the object's classname -if (!(_type isKindOf "CAManBase")) exitWith {}; +params [ + ["_types", [], [[]]], // classnames to assign these action to + ["_useInheritance", false, [false]] +]; -if ( - (localNamespace getVariable [QGVAR(checkReinsertQueueClassesAdded), []]) - find _type != -1 -) exitWith {}; +{ // forEach _types + private _classToAddActionsTo = _x; -private _checkReinsertQueueAction = [ - QGVAR(checkReinsertQueue), - "[PILOT] Check Re-insert Queue", - "\A3\ui_f\data\igui\cfg\simpleTasks\types\land_ca.paa", - { - params ["_target", "_player", "_params"]; - // request notification from the server - call FUNC(requestShowQueue); - // reset last check time - localNamespace setVariable [QGVAR(lastReinsertQueueCheck), diag_tickTime]; - }, - { - missionNamespace getVariable [QGVAR(setting_enabled), true] - } // always allow -] call ace_interact_menu_fnc_createAction; -[_type, 1, ["ACE_SelfActions"], _checkReinsertQueueAction, true] call ace_interact_menu_fnc_addActionToClass; + private _checkReinsertQueueAction = [ + QGVAR(checkReinsertQueue), + "[PILOT] Check Re-insert Queue", + "\A3\ui_f\data\igui\cfg\simpleTasks\types\land_ca.paa", + { + params ["_target", "_player", "_params"]; + // request notification from the server + call FUNC(requestShowQueue); + // reset last check time + localNamespace setVariable [QGVAR(lastReinsertQueueCheck), diag_tickTime]; + }, + { + GVAR(setting_enabled); + } // condition + ] call ace_interact_menu_fnc_createAction; + [_classToAddActionsTo, 1, ["ACE_SelfActions"], _checkReinsertQueueAction, _useInheritance] call ace_interact_menu_fnc_addActionToClass; -private _classesActionsAddedTo = (localNamespace getVariable [QGVAR(checkReinsertQueueClassesAdded), []]); -_classesActionsAddedTo pushBackUnique _type; -localNamespace setVariable [QGVAR(checkReinsertQueueClassesAdded), _classesActionsAddedTo]; \ No newline at end of file +} forEach _types; \ No newline at end of file diff --git a/framework/reinsert/client/fn_initClient.sqf b/framework/reinsert/client/fn_initClient.sqf index f262ffe..df78cd0 100644 --- a/framework/reinsert/client/fn_initClient.sqf +++ b/framework/reinsert/client/fn_initClient.sqf @@ -5,26 +5,16 @@ if (!hasInterface) exitWith {}; // ACE SELF-INTERACTIONS FOR FILING AND RESCINDING REINSERT REQUESTS NEAR BASE - ALL PLAYERS localNamespace setVariable [QGVAR(fileForReinsertClassesAdded), []]; // add actions to current class -[typeOf player] call FUNC(addAceSelfActions); -// add actions to future classes -["ace_interact_menu_newControllableObject", { - _this call FUNC(addAceSelfActions); -}] call CBA_fnc_addEventHandler; +[["CAManBase"], true] call FUNC(addAceSelfActions); ///////////////////////////////////////////////////// // PILOTS ONLY // ACE SELF-INTERACTIONS FOR CHECKING REINSERT QUEUE - ONLY FOR PILOTS -if ((typeOf player) in ["B_Helipilot_F", "B_helicrew_F"]) then { - localNamespace setVariable [QGVAR(checkReinsertQueueClassesAdded), []]; - localNamespace setVariable [QGVAR(lastReinsertQueueCheck), diag_tickTime]; +localNamespace setVariable [QGVAR(checkReinsertQueueClassesAdded), []]; +localNamespace setVariable [QGVAR(lastReinsertQueueCheck), diag_tickTime]; - // add actions to current class - [typeOf player] call FUNC(addCheckQueueSelfAction); - // add actions to future classes - ["ace_interact_menu_newControllableObject", { - _this call FUNC(addCheckQueueSelfAction); - }] call CBA_fnc_addEventHandler; -}; +// add actions to pilot classes, and don't apply to child classes +[["B_Helipilot_F", "B_helicrew_F"], false] call FUNC(addCheckQueueSelfAction); ///////////////////////////////////////////////////// @@ -33,13 +23,13 @@ if ((typeOf player) in ["B_Helipilot_F", "B_helicrew_F"]) then { [{ // if module not enabled and pilot forced check not enabled, exit if (not ( - missionNamespace getVariable [QGVAR(setting_enabled), true] && - missionNamespace getVariable [QGVAR(setting_pilotForcedCheckEnabled), true] + [QGVAR(setting_enabled)] call CBA_settings_fnc_get and + [QGVAR(setting_pilotForcedCheckEnabled)] call CBA_settings_fnc_get )) exitWith {}; // if last check was less than X minutes ago, skip private _lastCheck = localNamespace getVariable [QGVAR(lastReinsertQueueCheck), diag_tickTime]; - private _requiredCheckInterval = missionNamespace getVariable [QGVAR(setting_pilotForcedCheckInterval), 60*20]; + private _requiredCheckInterval = [QGVAR(setting_pilotForcedCheckInterval)] call CBA_settings_fnc_get; if ( diag_tickTime - _lastCheck < _requiredCheckInterval diff --git a/framework/resupply/functions/fn_addArsenalObjectSpawnBoxActions.sqf b/framework/resupply/functions/fn_addArsenalObjectSpawnBoxActions.sqf index 74977f9..247377c 100644 --- a/framework/resupply/functions/fn_addArsenalObjectSpawnBoxActions.sqf +++ b/framework/resupply/functions/fn_addArsenalObjectSpawnBoxActions.sqf @@ -35,9 +35,7 @@ private _supplyCrateTypesCfgs = _supplyCratesCfg call BIS_fnc_returnChildren; private _cfg = _x; private _supplyCrateDisplayName = (_cfg >> "displayName") call BIS_fnc_getCfgData; - - - + // add action to spawn supply crate private _actionID = _arsenalBox addAction [format ["Spawn %1", _supplyCrateDisplayName], { params ["_target", "_caller", "_actionId", "_arguments"]; _arguments params ["_supplyCrateCfg"];