116 lines
3.8 KiB
Plaintext
116 lines
3.8 KiB
Plaintext
/*
|
|
File: fn_initCuratorHandlers.sqf
|
|
Author: KP Liberation Dev Team - https://github.com/KillahPotatoes
|
|
Date: 2020-08-07
|
|
Last Update: 2020-08-30
|
|
License: MIT License - http://www.opensource.org/licenses/MIT
|
|
|
|
Description:
|
|
Initialize curator handlers.
|
|
|
|
Parameter(s):
|
|
NONE
|
|
|
|
Returns:
|
|
Function reached the end [BOOL]
|
|
*/
|
|
|
|
#define ZEUSVAR(var) (format ["KPLIB_zeus_%1", var])
|
|
|
|
if (isServer) then {
|
|
|
|
// delete old Liberation mission placed Zeus module
|
|
deleteVehicle zm1;
|
|
|
|
// add curator assign EventHandler
|
|
[true, "KPLIB_createZeus", {
|
|
params [
|
|
["_player", objNull, [objNull]],
|
|
["_limited", false, [true]]
|
|
];
|
|
|
|
if (isNull _player) exitWith {};
|
|
private _uid = getPlayerUID _player;
|
|
|
|
// check if there's already a managed zeus module for this player, if so we can just reassign
|
|
private _oldManagedZeus = missionNamespace getVariable [ZEUSVAR(_uid), objNull];
|
|
if (!isNull _oldManagedZeus && {_limited isEqualTo (_oldManagedZeus getVariable ["KPLIB_limited", -1])}) exitWith {
|
|
_player assignCurator _oldManagedZeus;
|
|
[true, "KPLIB_zeusAssigned", [_oldManagedZeus]] remoteExecCall ["BIS_fnc_callScriptedEventHandler", _player];
|
|
};
|
|
|
|
// remove currently assigned curator
|
|
private _oldZeus = getAssignedCuratorLogic _player;
|
|
unassignCurator _oldZeus;
|
|
deleteVehicle _oldZeus;
|
|
|
|
private _group = createGroup [sideLogic, true];
|
|
private _zeus = _group createUnit ["ModuleCurator_F", [-7580, -7580, 0], [], 0, "NONE"];
|
|
missionNamespace setVariable [ZEUSVAR(_uid), _zeus];
|
|
|
|
if (_limited) then {
|
|
_zeus setVariable ["Addons", 0, true];
|
|
_zeus setVariable ["BIS_fnc_initModules_disableAutoActivation", false];
|
|
|
|
_zeus setCuratorCoef ["Place", -1e8];
|
|
_zeus setCuratorCoef ["Edit", -1e8];
|
|
_zeus setCuratorCoef ["Destroy", -1e8];
|
|
_zeus setCuratorCoef ["Delete", 0];
|
|
} else {
|
|
_zeus setVariable ["Addons", 3, true];
|
|
_zeus setVariable ["BIS_fnc_initModules_disableAutoActivation", false];
|
|
|
|
_zeus setCuratorCoef ["Place", 0];
|
|
_zeus setCuratorCoef ["Delete", 0];
|
|
|
|
removeAllCuratorAddons _zeus;
|
|
};
|
|
|
|
_zeus setVariable ["KPLIB_limited", _limited];
|
|
|
|
_player assignCurator _zeus;
|
|
|
|
[true, "KPLIB_zeusAssigned", [_zeus, _limited]] remoteExecCall ["BIS_fnc_callScriptedEventHandler", _player];
|
|
}] call BIS_fnc_addScriptedEventHandler;
|
|
|
|
[true, "KPLIB_activateZeusAddons", {
|
|
params [
|
|
["_zeus", objNull, [objNull]],
|
|
["_addons", [], [[]]]
|
|
];
|
|
|
|
_zeus addCuratorAddons _addons;
|
|
}] call BIS_fnc_addScriptedEventHandler;
|
|
|
|
// remove the assigned curator on player disconnect
|
|
addMissionEventHandler ["HandleDisconnect", {
|
|
params ["", "", "_uid"];
|
|
private _zeus = missionNamespace getVariable ZEUSVAR(_uid);
|
|
if (!isNil "_zeus") then {
|
|
deleteVehicle _zeus;
|
|
missionNamespace setVariable [ZEUSVAR(_uid), nil];
|
|
};
|
|
}];
|
|
};
|
|
|
|
if (hasInterface) then {
|
|
[true, "KPLIB_zeusAssigned", {
|
|
params [
|
|
["_zeus", objNull, [objNull]],
|
|
["_limited", false, [true]]
|
|
];
|
|
|
|
if !(_zeus getVariable ["KPLIB_drawCuratorLocations", false]) then {
|
|
_zeus setVariable ["KPLIB_drawCuratorLocations", true];
|
|
[_zeus] call BIS_fnc_drawCuratorLocations;
|
|
};
|
|
|
|
if (!_limited) then {
|
|
private _allAddons = ("true" configClasses (configFile >> "CfgPatches")) apply {configName _x};
|
|
[true, "KPLIB_activateZeusAddons", [_zeus, _allAddons]] remoteExecCall ["BIS_fnc_callScriptedEventHandler", 2];
|
|
};
|
|
}] call BIS_fnc_addScriptedEventHandler;
|
|
};
|
|
|
|
true
|