arma2-epoch-server/@DayZ_Epoch_Server/addons/dayz_server/AdminTools/init.sqf
2023-10-01 20:58:19 +03:00

215 lines
7.9 KiB
Plaintext
Executable File

// Add UIDs and names of Admins and Mods Here. If an admin or mod wants to play with no admin tools, change name in profile.
#define SUPER_ADMIN_LIST ["76561198180152023","76500000000000000","76500000000000000"]
#define SUPER_ADMIN_NAMES ["stuzer05","SuperAdminName","SuperAdminName"]
#define ADMIN_LIST ["76500000000000000","76500000000000000","76500000000000000"]
#define ADMIN_NAMES ["AdminName","AdminName","AdminName"]
#define MOD_LIST ["76500000000000000","76500000000000000","76500000000000000"]
#define MOD_NAMES ["ModeratorName","ModeratorName","ModeratorName"]
// These variables are used in the AI spawner. You can adjust them.
EAT_HumanityGainLoss = 25;
EAT_aiDeleteTimer = 600;
// DO NOT EDIT BELOW THIS LINE
"EAT_clientToServer" addPublicVariableEventHandler {
private ["_array","_type","_activatingPlayer","_playerUID"];
_array = _this select 1;
_type = _array select 0;
_activatingPlayer = _array select 1;
_playerUID = getPlayerUID _activatingPlayer;
if ((count _array == 2) && (_type == "login")) then {
{
if (_playerUID == getPlayerUID _x) exitWith {
call
{
if ((getPlayerUID _x) in SUPER_ADMIN_LIST && (name _x) in SUPER_ADMIN_NAMES) exitWith {
EAT_login = {
#include "\z\addons\dayz_server\AdminTools\SuperAdmin\activate.sqf"
};
(owner _x) publicVariableClient "EAT_login";
};
if ((getPlayerUID _x) in ADMIN_LIST && (name _x) in ADMIN_NAMES) exitWith {
EAT_login = {
#include "\z\addons\dayz_server\AdminTools\Admin\activate.sqf"
};
(owner _x) publicVariableClient "EAT_login";
};
if ((getPlayerUID _x) in MOD_LIST && (name _x) in MOD_NAMES) exitWith {
EAT_login = {
#include "\z\addons\dayz_server\AdminTools\Mod\activate.sqf"
};
(owner _x) publicVariableClient "EAT_login";
};
EAT_login = {
#include "\z\addons\dayz_server\adminTools\AntiCheat\antiCheat.sqf"
};
(owner _x) publicVariableClient "EAT_login";
};
};
} count playableUnits;
};
if (count _array > 2) then {
_params = _array select 2;
_clientKey = _array select 3;
// First line of defense
if (!((_playerUID) in SUPER_ADMIN_LIST) && !((_playerUID) in ADMIN_LIST) && !((_playerUID) in MOD_LIST)) exitWith {diag_log format["ADMIN TOOLS: unauthorized use by %1, %2",_playerUID, (name _activatingPlayer)];};
if (_type == "tempVeh") exitWith {
#include "\z\addons\dayz_server\adminTools\ServerFunctions\vehSpawn.sqf"
};
if (_type == "addAI") exitWith {
#include "\z\addons\dayz_server\adminTools\ServerFunctions\aiSpawn.sqf"
};
if (_type == "crate") exitWith {
#include "\z\addons\dayz_server\adminTools\ServerFunctions\crateSpawn.sqf"
};
if (_type == "invisibility") exitWith {
private ["_hide","_position","_isActive"];
_isActive = _params select 0;
_position = _params select 1;
_exitReason = [_this,"EAT_invisibility",_position,_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
if (_exitReason != "") exitWith {diag_log _exitReason};
_activatingPlayer setVehicleInit format["this hideObject %1;",_isActive];
processInitCommands;
clearVehicleInit _activatingPlayer;
};
// Have the server spawn the transparent red globes to avoid BattlEye kicks
if (_type == "Base Manager") exitWith {
local _radius = _params select 0;
local _center = _params select 1;
local _pos = _params select 2;
_exitReason = [_this,"Base Manager",_pos,_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
if (_exitReason != "") exitWith {diag_log _exitReason};
[_radius,_center, _pos] spawn {
private ["_obj","_center","_a","_b","_radius","_angle","_count","_objects","_isWater"];
_radius = _this select 0;
_center = _this select 1;
_angle = 0;
_count = round((2 * pi * _radius) / 2);
_objects = [];
_isWater = surfaceIsWater (_this select 2);
for "_x" from 0 to _count do
{
_a = (_center select 0) + (sin(_angle)*_radius);
_b = (_center select 1) + (cos(_angle)*_radius);
_obj = "Sign_sphere100cm_EP1" createVehicle [0,0,0];
if (_isWater) then {
_obj setPosASL [_a, _b, _center select 2];
} else {
_obj setPosATL [_a, _b, _center select 2];
};
//_obj setPosASL [_a, _b, _center select 2];
_objects set [count _objects, _obj];
_angle = _angle + (360/_count);
};
for "_x" from 0 to _count do
{
_a = (_center select 0) + (sin(_angle)*_radius);
_b = (_center select 2) + (cos(_angle)*_radius);
_obj = "Sign_sphere100cm_EP1" createVehicle [0,0,0];
//_obj setPosASL [_a, _center select 1, _b];
if (_isWater) then {
_obj setPosASL [_a, _center select 1, _b];
} else {
_obj setPosATL [_a, _center select 1, _b];
};
_objects set [count _objects, _obj];
_angle = _angle + (360/_count);
};
for "_x" from 0 to _count do
{
_a = (_center select 1) + (sin(_angle)*_radius);
_b = (_center select 2) + (cos(_angle)*_radius);
_obj = "Sign_sphere100cm_EP1" createVehicle [0,0,0];
//_obj setPosASL [_center select 0, _a, _b];
if (_isWater) then {
_obj setPosASL [_center select 0, _a, _b];
} else {
_obj setPosATL [_center select 0, _a, _b];
};
_objects set [count _objects, _obj];
_angle = _angle + (360/_count);
};
uiSleep 30;
{deleteVehicle _x; true } count _objects;
};
};
if (_type == "ServerMessage") exitWith {
private ["_message","_args"];
_message = _params select 0;
_message = format["ADMIN:%1",_message];
_exitReason = [_this,"ServerMessage",getPos _activatingPlayer,_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
if (_exitReason != "") exitWith {diag_log _exitReason};
_args = ["0.40","#FFFFFF","0.70","#990000",0,-.3,10,0.5];
RemoteMessage = ["dynamic_text",["",_message],_args];
publicVariable "RemoteMessage";
};
if (_type == "Date") exitWith {
private ["_moon","_time"];
_moon = _params select 0;
_time = _params select 1;
_exitReason = [_this,"SetDate",getPos _activatingPlayer,_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
if (_exitReason != "") exitWith {diag_log _exitReason};
dayzSetDate = [2012,6,_moon,_time,1];
publicVariable "dayzSetDate";
setDate dayzSetDate;
};
if (_type == "Fog") exitWith {
private ["_value","_time"];
_value = _params select 0;
_time = _params select 1;
_exitReason = [_this,"SetFog",getPos _activatingPlayer,_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
if (_exitReason != "") exitWith {diag_log _exitReason};
drn_DynamicWeatherEventArgs = [overcast,fog,rain,"FOG",_value,_time,-1,-1];
publicVariable "drn_DynamicWeatherEventArgs";
drn_DynamicWeatherEventArgs call drn_fnc_DynamicWeather_SetWeatherLocal;
};
//[current overcast, current fog, current rain, current weather change ("OVERCAST", "FOG" or ""), target weather value, time until weather completion (in seconds), current wind x, current wind z]
if (_type == "Cloud") exitWith {
private ["_value","_time"];
_value = _params select 0;
_time = _params select 1;
_exitReason = [_this,"SetWeather",getPos _activatingPlayer,_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
if (_exitReason != "") exitWith {diag_log _exitReason};
drn_DynamicWeatherEventArgs = [overcast,fog,rain,"OVERCAST",_value,_time,-1,-1];
publicVariable "drn_DynamicWeatherEventArgs";
drn_DynamicWeatherEventArgs call drn_fnc_DynamicWeather_SetWeatherLocal;
};
};
};
// This variable is used for crate spawning. DO NOT CHANGE IT.
EAT_isOverPoch = isClass (configFile >> "CfgWeapons" >> "USSR_cheytacM200");
// Log tool usage to .txt file
"EAT_PVEH_usageLogger" addPublicVariableEventHandler {
"EATadminLogger" callExtension (_this select 1);
};
// Export base to .sqf
"EAT_PVEH_baseExporter" addPublicVariableEventHandler {
"EATbaseExporter" callExtension (_this select 1);
};