Compare commits
9 Commits
0.0.2
...
fbf6ce98b2
| Author | SHA1 | Date | |
|---|---|---|---|
|
fbf6ce98b2
|
|||
|
1c2b658d7c
|
|||
|
f2e48e9d04
|
|||
|
dc0ba38567
|
|||
|
8a9b650ce9
|
|||
|
3f899e33e6
|
|||
|
f4cdfe593d
|
|||
|
67310804dc
|
|||
|
4ca0e6fe00
|
@@ -18,8 +18,8 @@ class CfgFunctions {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
class RangerMetrics_event {
|
class RangerMetrics_event {
|
||||||
class functions {
|
class server {
|
||||||
file = "\RangerMetrics\functions\capture\EHOnly";
|
file = "\RangerMetrics\functions\capture\serverEH";
|
||||||
class ace_unconscious {};
|
class ace_unconscious {};
|
||||||
class EntityKilled {};
|
class EntityKilled {};
|
||||||
class Explosion {};
|
class Explosion {};
|
||||||
@@ -30,13 +30,16 @@ class CfgFunctions {
|
|||||||
class MarkerUpdated {};
|
class MarkerUpdated {};
|
||||||
class milsim_serverEfficiency {};
|
class milsim_serverEfficiency {};
|
||||||
};
|
};
|
||||||
|
class client {
|
||||||
|
file = "\RangerMetrics\functions\capture\clientEH";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class RangerMetrics_cDefinitions {
|
class RangerMetrics_cDefinitions {
|
||||||
class functions {
|
class functions {
|
||||||
file = "\RangerMetrics\functions\captureDefinitions";
|
file = "\RangerMetrics\functions\captureDefinitions";
|
||||||
class server_poll {};
|
class server_poll {};
|
||||||
class server_missionEH {};
|
class server_missionEH {};
|
||||||
class client_poll {};
|
class client_EH {postInit = 1;};
|
||||||
// class clientEvent {};
|
// class clientEvent {};
|
||||||
class server_CBA {};
|
class server_CBA {};
|
||||||
class unit_handlers {};
|
class unit_handlers {};
|
||||||
|
|||||||
@@ -76,8 +76,20 @@ switch (_function) do {
|
|||||||
} forEach RangerMetrics_allServerPoll;
|
} forEach RangerMetrics_allServerPoll;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!isNil "RangerMetrics_sendHandler") then {
|
||||||
|
[RangerMetrics_sendHandler] call CBA_fnc_removePerFrameHandler;
|
||||||
|
missionNamespace setVariable ["RangerMetrics_sendHandler", nil];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (
|
||||||
|
missionNamespace getVariable [
|
||||||
|
"RangerMetrics_run",
|
||||||
|
false
|
||||||
|
]
|
||||||
|
) then {
|
||||||
call RangerMetrics_fnc_initCapture;
|
call RangerMetrics_fnc_initCapture;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
default {
|
default {
|
||||||
_response call RangerMetrics_fnc_log;
|
_response call RangerMetrics_fnc_log;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -113,3 +113,21 @@ private _allPlayers = call BIS_fnc_listPlayers;
|
|||||||
};
|
};
|
||||||
|
|
||||||
} forEach [east, west, independent, civilian];
|
} forEach [east, west, independent, civilian];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (isServer) then {
|
||||||
|
[
|
||||||
|
_settings get "bucket",
|
||||||
|
"player_count",
|
||||||
|
nil,
|
||||||
|
[
|
||||||
|
["int", "players_connected", {
|
||||||
|
private _info = getUserInfo (getPlayerId _x);
|
||||||
|
if (!isNil "_info" && {count _info >= 6}) then {
|
||||||
|
_info select 7
|
||||||
|
} else {false}
|
||||||
|
} count _allPlayers]
|
||||||
|
]
|
||||||
|
] call RangerMetrics_fnc_queue;
|
||||||
|
};
|
||||||
@@ -16,7 +16,13 @@ private _settings = RangerMetrics_recordingSettings get "runningMission";
|
|||||||
getMissionConfigValue ["onLoadName", ""]
|
getMissionConfigValue ["onLoadName", ""]
|
||||||
],
|
],
|
||||||
["string","author", getMissionConfigValue ["author", ""]],
|
["string","author", getMissionConfigValue ["author", ""]],
|
||||||
["string","server_name",serverName]
|
["string","server_name",serverName],
|
||||||
|
["int", "playable_slots_west", playableSlotsNumber west],
|
||||||
|
["int", "playable_slots_east", playableSlotsNumber east],
|
||||||
|
["int", "playable_slots_guer", playableSlotsNumber independent],
|
||||||
|
["int", "playable_slots_civ", playableSlotsNumber civilian],
|
||||||
|
["int", "playable_slots_logic", playableSlotsNumber sideLogic]
|
||||||
|
|
||||||
],
|
],
|
||||||
["profile", "server", "world"] // context
|
["profile", "server", "world"] // context
|
||||||
] call RangerMetrics_fnc_queue;
|
] call RangerMetrics_fnc_queue;
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
if (!isServer) exitWith {};
|
||||||
|
|
||||||
|
|
||||||
|
// remoteExec to all machines with JIP -- will trigger when local
|
||||||
|
{
|
||||||
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
RangerMetrics_event_fnc_broadcastAceDamageSource = {
|
||||||
|
params ["_unit"];
|
||||||
|
private _aceLastDamage = _unit getVariable "ace_medical_lastDamageSource";
|
||||||
|
if (!isNil "_aceLastDamage") then {
|
||||||
|
_unit setVariable ["ace_medical_lastDamageSource", _aceLastDamage, 2];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
player addEventHandler ["Killed", {
|
||||||
|
params ["_unit", "_killer", "_instigator", "_useEffects"];
|
||||||
|
[_unit] call RangerMetrics_event_fnc_broadcastAceDamageSource;
|
||||||
|
}];
|
||||||
|
|
||||||
|
player addEventHandler ["Respawn", {
|
||||||
|
params ["_unit", "_corpse"];
|
||||||
|
_unit addEventHandler ["Killed", {
|
||||||
|
params ["_unit", "_killer", "_instigator", "_useEffects"];
|
||||||
|
[_unit] call RangerMetrics_event_fnc_broadcastAceDamageSource;
|
||||||
|
}];
|
||||||
|
}];
|
||||||
|
|
||||||
|
addMissionEventHandler ["HandleChatMessage", {
|
||||||
|
params ["_channel", "_owner", "_from", "_text", "_person", "_name", "_strID", "_forcedDisplay", "_isPlayerMessage", "_sentenceType", "_chatMessageType"];
|
||||||
|
if !(missionNamespace getVariable ["RangerMetrics_run", false]) exitWith {};
|
||||||
|
if (_owner == clientOwner && parseNumber _strID > 1) then {
|
||||||
|
_this remoteExecCall ["RangerMetrics_event_fnc_HandleChatMessage", 2];
|
||||||
|
};
|
||||||
|
false;
|
||||||
|
}];
|
||||||
|
} remoteExec ["call", 0, true];
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
[
|
|
||||||
// [
|
|
||||||
// 5, // Poll interval in seconds
|
|
||||||
// [ // Array of things to poll on clients
|
|
||||||
// [
|
|
||||||
// "RangerMetrics_poll_loadout", // Name of localNamespace variable to save the handler as on clients
|
|
||||||
// RangerMetrics_capture_fnc_player_loadout // Function to call
|
|
||||||
// ]
|
|
||||||
// ]
|
|
||||||
// ]
|
|
||||||
]
|
|
||||||
@@ -2,11 +2,14 @@
|
|||||||
["OnUserConnected", {
|
["OnUserConnected", {
|
||||||
params ["_networkId", "_clientStateNumber", "_clientState"];
|
params ["_networkId", "_clientStateNumber", "_clientState"];
|
||||||
private _userInfo = (getUserInfo _networkId);
|
private _userInfo = (getUserInfo _networkId);
|
||||||
|
private _tags = [];
|
||||||
|
if (!isNil "_userInfo") then {
|
||||||
|
_tags pushBack ["string", "playerUID", _userInfo#2];
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_status;
|
_userInfo call RangerMetrics_capture_fnc_player_status;
|
||||||
["server_events", "OnUserConnected", [
|
};
|
||||||
["string", "playerUID", _userInfo#2]
|
["server_events", "OnUserConnected",
|
||||||
], [
|
_tags, [
|
||||||
["string", "networkId", _networkId],
|
["string", "networkId", _networkId],
|
||||||
["int", "clientStateNumber", _clientStateNumber],
|
["int", "clientStateNumber", _clientStateNumber],
|
||||||
["string", "clientState", _clientState]
|
["string", "clientState", _clientState]
|
||||||
@@ -16,11 +19,14 @@
|
|||||||
["OnUserDisconnected", {
|
["OnUserDisconnected", {
|
||||||
params ["_networkId", "_clientStateNumber", "_clientState"];
|
params ["_networkId", "_clientStateNumber", "_clientState"];
|
||||||
private _userInfo = (getUserInfo _networkId);
|
private _userInfo = (getUserInfo _networkId);
|
||||||
|
private _tags = [];
|
||||||
|
if (!isNil "_userInfo") then {
|
||||||
|
_tags pushBack ["string", "playerUID", _userInfo#2];
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_status;
|
_userInfo call RangerMetrics_capture_fnc_player_status;
|
||||||
["server_events", "OnUserDisconnected", [
|
};
|
||||||
["string", "playerUID", _userInfo#2]
|
["server_events", "OnUserDisconnected",
|
||||||
], [
|
_tags, [
|
||||||
["string", "networkId", _networkId],
|
["string", "networkId", _networkId],
|
||||||
["int", "clientStateNumber", _clientStateNumber],
|
["int", "clientStateNumber", _clientStateNumber],
|
||||||
["string", "clientState", _clientState]
|
["string", "clientState", _clientState]
|
||||||
@@ -45,22 +51,22 @@
|
|||||||
]] call RangerMetrics_fnc_queue;
|
]] call RangerMetrics_fnc_queue;
|
||||||
[format ["(EventHandler) PlayerConnected fired: %1", _this], "DEBUG"] call RangerMetrics_fnc_log;
|
[format ["(EventHandler) PlayerConnected fired: %1", _this], "DEBUG"] call RangerMetrics_fnc_log;
|
||||||
}],
|
}],
|
||||||
["PlayerDisconnected", {
|
["HandleDisconnect", {
|
||||||
params ["_id", "_uid", "_name", "_jip", "_owner", "_idstr"];
|
params ["_unit", "_id", "_uid", "_name"];
|
||||||
private _userInfo = (getUserInfo _idstr);
|
private _userInfo = (getUserInfo (_id toFixed 0));
|
||||||
|
if (!isNil "_userInfo") then {
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_status;
|
_userInfo call RangerMetrics_capture_fnc_player_status;
|
||||||
["server_events", "PlayerDisconnected", [
|
};
|
||||||
|
["server_events", "HandleDisconnect", [
|
||||||
["string", "playerUID", _uid]
|
["string", "playerUID", _uid]
|
||||||
], [
|
], [
|
||||||
["string", "id", _id toFixed 0],
|
["string", "id", _id toFixed 0],
|
||||||
["string", "uid", _uid],
|
["string", "uid", _uid],
|
||||||
["string", "name", _name],
|
["string", "name", _name]
|
||||||
["bool", "jip", _jip],
|
|
||||||
["int", "owner", _owner],
|
|
||||||
["string", "idstr", _idstr]
|
|
||||||
]] call RangerMetrics_fnc_queue;
|
]] call RangerMetrics_fnc_queue;
|
||||||
[format ["(EventHandler) PlayerDisconnected fired: %1", _this], "DEBUG"] call RangerMetrics_fnc_log;
|
[format ["(EventHandler) HandleDisconnect fired: %1", _this], "DEBUG"] call RangerMetrics_fnc_log;
|
||||||
|
false;
|
||||||
}],
|
}],
|
||||||
["OnUserClientStateChanged", {
|
["OnUserClientStateChanged", {
|
||||||
params ["_networkId", "_clientStateNumber", "_clientState"];
|
params ["_networkId", "_clientStateNumber", "_clientState"];
|
||||||
@@ -78,6 +84,7 @@
|
|||||||
["OnUserAdminStateChanged", {
|
["OnUserAdminStateChanged", {
|
||||||
params ["_networkId", "_loggedIn", "_votedIn"];
|
params ["_networkId", "_loggedIn", "_votedIn"];
|
||||||
private _userInfo = (getUserInfo _networkId);
|
private _userInfo = (getUserInfo _networkId);
|
||||||
|
if (isNil "_userInfo") exitWith {};
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_status;
|
_userInfo call RangerMetrics_capture_fnc_player_status;
|
||||||
["server_events", "OnUserAdminStateChanged", [
|
["server_events", "OnUserAdminStateChanged", [
|
||||||
["string", "playerUID", _userInfo#2]
|
["string", "playerUID", _userInfo#2]
|
||||||
@@ -91,6 +98,7 @@
|
|||||||
["OnUserKicked", {
|
["OnUserKicked", {
|
||||||
params ["_networkId", "_kickTypeNumber", "_kickType", "_kickReason", "_kickMessageIncReason"];
|
params ["_networkId", "_kickTypeNumber", "_kickType", "_kickReason", "_kickMessageIncReason"];
|
||||||
private _userInfo = (getUserInfo _networkId);
|
private _userInfo = (getUserInfo _networkId);
|
||||||
|
if (isNil "_userInfo") exitWith {};
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
_userInfo call RangerMetrics_capture_fnc_player_identity;
|
||||||
_userInfo call RangerMetrics_capture_fnc_player_status;
|
_userInfo call RangerMetrics_capture_fnc_player_status;
|
||||||
["server_events", "OnUserKicked", [
|
["server_events", "OnUserKicked", [
|
||||||
|
|||||||
@@ -79,8 +79,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RangerMetrics_allMEH = allVariables missionNamespace select {
|
RangerMetrics_allMEH = allVariables missionNamespace select {
|
||||||
_x find (toLower "RangerMetrics_MEH_") == 0
|
_x find (toLower "RangerMetrics_MEH_") == 0
|
||||||
};
|
};
|
||||||
@@ -102,8 +100,14 @@ missionNamespace setVariable ["RangerMetrics_run", true, true];
|
|||||||
|
|
||||||
|
|
||||||
// start sending
|
// start sending
|
||||||
[{
|
RangerMetrics_sendHandler = [{
|
||||||
params ["_args", "_idPFH"];
|
params ["_args", "_idPFH"];
|
||||||
|
if !(
|
||||||
|
missionNamespace getVariable [
|
||||||
|
"RangerMetrics_run",
|
||||||
|
false
|
||||||
|
]
|
||||||
|
) exitWith {};
|
||||||
if (scriptDone RangerMetrics_sendBatchHandle) then {
|
if (scriptDone RangerMetrics_sendBatchHandle) then {
|
||||||
RangerMetrics_sendBatchHandle = [] spawn RangerMetrics_fnc_send;
|
RangerMetrics_sendBatchHandle = [] spawn RangerMetrics_fnc_send;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ if (!isServer && hasInterface) exitWith {};
|
|||||||
RangerMetrics_cbaPresent = isClass(configFile >> "CfgPatches" >> "cba_main");
|
RangerMetrics_cbaPresent = isClass(configFile >> "CfgPatches" >> "cba_main");
|
||||||
RangerMetrics_aceMedicalPresent = isClass(configFile >> "CfgPatches" >> "ace_medical_status");
|
RangerMetrics_aceMedicalPresent = isClass(configFile >> "CfgPatches" >> "ace_medical_status");
|
||||||
RangerMetrics_logPrefix = "RangerMetrics";
|
RangerMetrics_logPrefix = "RangerMetrics";
|
||||||
RangerMetrics_debug = true;
|
RangerMetrics_debug = false;
|
||||||
RangerMetrics_initialized = false;
|
RangerMetrics_initialized = false;
|
||||||
RangerMetrics_run = false;
|
RangerMetrics_run = true;
|
||||||
RangerMetrics_nextID = 0;
|
RangerMetrics_nextID = 0;
|
||||||
RangerMetrics_messageQueue = createHashMap;
|
RangerMetrics_messageQueue = createHashMap;
|
||||||
// for debug, view messages in queue
|
// for debug, view messages in queue
|
||||||
|
|||||||
@@ -16,8 +16,7 @@
|
|||||||
"debug": false
|
"debug": false
|
||||||
},
|
},
|
||||||
"recordingSettings": {
|
"recordingSettings": {
|
||||||
"serverPolls": [
|
"serverPerformance": {
|
||||||
{
|
|
||||||
"name": "serverPerformance",
|
"name": "serverPerformance",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": false,
|
"serverOnly": false,
|
||||||
@@ -26,7 +25,7 @@
|
|||||||
"measurement": "fps",
|
"measurement": "fps",
|
||||||
"description": "SERVER/HC POLL. Tracks average and minimum FPS. Polled on server (and HC) at specified interval."
|
"description": "SERVER/HC POLL. Tracks average and minimum FPS. Polled on server (and HC) at specified interval."
|
||||||
},
|
},
|
||||||
{
|
"runningScripts": {
|
||||||
"name": "runningScripts",
|
"name": "runningScripts",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": false,
|
"serverOnly": false,
|
||||||
@@ -35,25 +34,25 @@
|
|||||||
"measurement": "running_scripts",
|
"measurement": "running_scripts",
|
||||||
"description": "SERVER/HC POLL. Tracks the number of scripts running on the server (and HC). Polled on specified interval."
|
"description": "SERVER/HC POLL. Tracks the number of scripts running on the server (and HC). Polled on specified interval."
|
||||||
},
|
},
|
||||||
{
|
"entityCount": {
|
||||||
"name": "entityCount",
|
"name": "entityCount",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": false,
|
"serverOnly": false,
|
||||||
"intervalMs": 20000,
|
"intervalMs": 8000,
|
||||||
"bucket": "server_performance",
|
"bucket": "server_performance",
|
||||||
"measurement": "n/a",
|
"measurement": "n/a",
|
||||||
"description": "SERVER/HC POLL. Tracks the number of entities on the server. Polled on server (and HC) at specified interval as well as on EntityCreated/EntityRespawned/EntityKilled events. Measurement is static, [entities_local, entities_remote, entities_global]."
|
"description": "SERVER/HC POLL. Tracks the number of entities on the server. Polled on server (and HC) at specified interval as well as on EntityCreated/EntityRespawned/EntityKilled events. Measurement is static, [entities_local, entities_remote, entities_global]."
|
||||||
},
|
},
|
||||||
{
|
"playerPerformance": {
|
||||||
"name": "playerPerformance",
|
"name": "playerPerformance",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": true,
|
"serverOnly": true,
|
||||||
"intervalMs": 1000,
|
"intervalMs": 3000,
|
||||||
"bucket": "player_performance",
|
"bucket": "player_performance",
|
||||||
"measurement": "network",
|
"measurement": "network",
|
||||||
"description": "SERVER POLL. User network performance. Tracks average ping, average bandwidth, and desync. Polled by the server at specified interval. Not tracked from headless client."
|
"description": "SERVER POLL. User network performance. Tracks average ping, average bandwidth, and desync. Polled by the server at specified interval. Not tracked from headless client."
|
||||||
},
|
},
|
||||||
{
|
"serverTime": {
|
||||||
"name": "serverTime",
|
"name": "serverTime",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": true,
|
"serverOnly": true,
|
||||||
@@ -62,25 +61,25 @@
|
|||||||
"measurement": "server_time",
|
"measurement": "server_time",
|
||||||
"description": "SERVER POLL. Tracks the server time. Always server-only. Runs at specified interval."
|
"description": "SERVER POLL. Tracks the server time. Always server-only. Runs at specified interval."
|
||||||
},
|
},
|
||||||
{
|
"weather": {
|
||||||
"name": "weather",
|
"name": "weather",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": true,
|
"serverOnly": true,
|
||||||
"intervalMs": 120000,
|
"intervalMs": 300000,
|
||||||
"bucket": "mission_data",
|
"bucket": "mission_data",
|
||||||
"measurement": "weather",
|
"measurement": "weather",
|
||||||
"description": "SERVER POLL. Tracks the weather on the server. Always server-only. Runs at specified interval."
|
"description": "SERVER POLL. Tracks the weather on the server. Always server-only. Runs at specified interval."
|
||||||
},
|
},
|
||||||
{
|
"viewDistance": {
|
||||||
"name": "viewDistance",
|
"name": "viewDistance",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": true,
|
"serverOnly": true,
|
||||||
"intervalMs": 120000,
|
"intervalMs": 300000,
|
||||||
"bucket": "mission_data",
|
"bucket": "mission_data",
|
||||||
"measurement": "view_distance",
|
"measurement": "view_distance",
|
||||||
"description": "SERVER POSTINIT, MPEnded. Tracks the view distance on the server. Always server-only. Runs at specified interval."
|
"description": "SERVER POSTINIT, MPEnded. Tracks the view distance on the server. Always server-only. Runs at specified interval."
|
||||||
},
|
},
|
||||||
{
|
"runningMission": {
|
||||||
"name": "runningMission",
|
"name": "runningMission",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"serverOnly": true,
|
"serverOnly": true,
|
||||||
@@ -88,14 +87,34 @@
|
|||||||
"bucket": "mission_data",
|
"bucket": "mission_data",
|
||||||
"measurement": "running_mission",
|
"measurement": "running_mission",
|
||||||
"description": "SERVER POSTINIT, MPEnded. Tracks the name of the mission running on the server. Always server-only. Runs at the start (and tries at end) of the mission."
|
"description": "SERVER POSTINIT, MPEnded. Tracks the name of the mission running on the server. Always server-only. Runs at the start (and tries at end) of the mission."
|
||||||
}
|
},
|
||||||
],
|
"playerStatus": {
|
||||||
"CBAEventHandlers": [
|
"name": "playerStatus",
|
||||||
{
|
"enabled": true,
|
||||||
|
"serverOnly": true,
|
||||||
|
"intervalMs": 0,
|
||||||
|
"bucket": "player_data",
|
||||||
|
"measurement": "client_state",
|
||||||
|
"description": "EH. Tracks players' clientstateNumber, adminState, and profileName on connect/disconnect to server and to mission, as well as when these values change."
|
||||||
|
},
|
||||||
|
"playerIdentity": {
|
||||||
|
"name": "playerIdentity",
|
||||||
|
"enabled": true,
|
||||||
|
"serverOnly": true,
|
||||||
|
"intervalMs": 0,
|
||||||
|
"bucket": "player_data",
|
||||||
|
"measurement": "player_identity",
|
||||||
|
"description": "EH. Tracks players' identity on connect/disconnect to server and to mission, as well as when these values change."
|
||||||
|
},
|
||||||
|
"CBAEventHandlers": {
|
||||||
|
"milsimServerEfficiency": {
|
||||||
"name": "milsimServerEfficiency",
|
"name": "milsimServerEfficiency",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
|
"serverOnly": true,
|
||||||
|
"bucket": "server_performance",
|
||||||
|
"measurement": "milsim_server_efficiency",
|
||||||
"description": "EVENTHANDLER. Tracks the efficiency of the server."
|
"description": "EVENTHANDLER. Tracks the efficiency of the server."
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user