mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
117 lines
4.9 KiB
Plaintext
117 lines
4.9 KiB
Plaintext
#include "script_component.hpp"
|
|
|
|
#define IDD_DISPLAY3DEN 313
|
|
|
|
["ace_settingsInitialized",{
|
|
// Only add an InitPost EH if setting is enabled (and apply retroactively)
|
|
if (isServer && {GVAR(autoAddObjects)}) then {
|
|
["AllVehicles", "InitPost", FUNC(addObjectToCurator), true, [], true] call CBA_fnc_addClassEventHandler;
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
// Global skill module PVs values for persistence, just listen for the PV
|
|
QGVAR(GlobalSkillAI) addPublicVariableEventHandler FUNC(moduleGlobalSetSkill);
|
|
|
|
[QGVAR(moveToRespawnPosition), BIS_fnc_moveToRespawnPosition] call CBA_fnc_addEventHandler;
|
|
[QGVAR(moduleDefendArea), CBA_fnc_taskDefend] call CBA_fnc_addEventHandler;
|
|
[QGVAR(modulePatrolArea), CBA_fnc_taskPatrol] call CBA_fnc_addEventHandler;
|
|
[QGVAR(moduleSearchNearby), CBA_fnc_searchNearby] call CBA_fnc_addEventHandler;
|
|
[QGVAR(moduleSearchArea), CBA_fnc_taskSearchArea] call CBA_fnc_addEventHandler;
|
|
[QGVAR(suppressiveFire), LINKFUNC(moduleSuppressiveFireLocal)] call CBA_fnc_addEventHandler;
|
|
|
|
// Editable object commands must be ran on server, this events are used in the respective module
|
|
if (isServer) then {
|
|
[QGVAR(equipFries), EFUNC(fastroping,equipFRIES)] call CBA_fnc_addEventHandler;
|
|
|
|
[QGVAR(addObjects), {
|
|
params ["_objects", ["_curator", objNull]];
|
|
|
|
if (!isNull _curator) exitWith {_curator addCuratorEditableObjects [_objects, true]};
|
|
|
|
{
|
|
_x addCuratorEditableObjects [_objects, true];
|
|
} forEach allCurators;
|
|
}] call CBA_fnc_addEventHandler;
|
|
[QGVAR(removeObjects), {
|
|
params ["_objects", ["_curator", objNull]];
|
|
|
|
if (!isNull _curator) exitWith {_curator removeCuratorEditableObjects [_objects, true]};
|
|
|
|
{
|
|
_x removeCuratorEditableObjects [_objects, true];
|
|
} forEach allCurators;
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
[QGVAR(createZeus), {
|
|
params ["_ownerPlayer"];
|
|
private _owner = ["#adminLogged", getPlayerUID _ownerPlayer] select isMultiplayer;
|
|
private _group = createGroup sideLogic;
|
|
private _zeus = _group createUnit ["ModuleCurator_F", [0,0,0], [], 0, "NONE"];
|
|
missionNamespace setVariable [format [QGVAR(zeus_%1), _owner], _zeus];
|
|
_zeus setVariable ["owner", _owner, true];
|
|
_zeus setVariable ["Addons", 3, true];
|
|
_zeus setVariable ["BIS_fnc_initModules_disableAutoActivation", false];
|
|
_zeus setCuratorCoef ["Place", 0];
|
|
_zeus setCuratorCoef ["Delete", 0];
|
|
_group deleteGroupWhenEmpty true;
|
|
if (!isMultiplayer && {!isNull findDisplay IDD_DISPLAY3DEN}) then {
|
|
// if loaded from editor (but not after restart), addons are not activated so we do it manually
|
|
private _addons = ('true' configClasses (configFile >> "CfgPatches")) apply {configName _x};
|
|
activateAddons _addons;
|
|
removeAllCuratorAddons _zeus;
|
|
_zeus addCuratorAddons _addons;
|
|
};
|
|
[QGVAR(zeusCreated), _zeus, _ownerPlayer] call CBA_fnc_targetEvent;
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
addMissionEventHandler ["HandleDisconnect", {
|
|
private _owner = _this select 2;
|
|
private _zeusVarName = format [QGVAR(zeus_%1), _owner];
|
|
private _zeus = missionNamespace getVariable _zeusVarName;
|
|
if (!isNil "_zeus") then {
|
|
if (!isNull _zeus) then {deleteVehicle _zeus};
|
|
missionNamespace setVariable [_zeusVarName, nil];
|
|
};
|
|
}];
|
|
};
|
|
|
|
if (hasInterface) then {
|
|
[QGVAR(zeusCreated), {
|
|
params ["_zeus"];
|
|
GVAR(zeus) = _zeus;
|
|
[localize "str_a3_cfgvehicles_moduletasksetstate_f_arguments_state_values_created_0"] call EFUNC(common,displayTextStructured);
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
private _action = [
|
|
QGVAR(create),
|
|
LLSTRING(CreateZeus),
|
|
"\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa",
|
|
{
|
|
GVAR(zeus) = objNull; // to disable menu while zeus is being created
|
|
[QGVAR(createZeus), ACE_player] call CBA_fnc_serverEvent;
|
|
},
|
|
{
|
|
switch (GVAR(canCreateZeus)) do {
|
|
case CAN_CREATE_ADMIN: {isServer || {IS_ADMIN_LOGGED}};
|
|
case CAN_CREATE_CONSOLE: {call BIS_fnc_isDebugConsoleAllowed};
|
|
case CAN_CREATE_ALL: {true};
|
|
default {false};
|
|
}
|
|
&& {isNil QGVAR(zeus)}
|
|
}
|
|
] call EFUNC(interact_menu,createAction);
|
|
["CAManBase", 1, ["ACE_SelfActions"], _action, true] call EFUNC(interact_menu,addActionToClass);
|
|
|
|
_action = [
|
|
QGVAR(delete),
|
|
LLSTRING(DeleteZeus),
|
|
"\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa",
|
|
{
|
|
deleteVehicle GVAR(zeus);
|
|
GVAR(zeus) = nil;
|
|
},
|
|
{!(isNil QGVAR(zeus) || {isNull GVAR(zeus)})}
|
|
] call EFUNC(interact_menu,createAction);
|
|
["CAManBase", 1, ["ACE_SelfActions"], _action, true] call EFUNC(interact_menu,addActionToClass);
|
|
};
|