Files
RangerMetrics/addons/capture/fnc_entity_count.sqf
2023-10-12 16:14:05 -07:00

131 lines
3.3 KiB
Plaintext

#include "script_component.hpp"
params [
["_allUserInfos", [], [[]]]
];
private _hashesOut = [];
private _allUnits = allUnits;
private _allDeadMen = allDeadMen;
private _allGroups = allGroups;
private _vehicles = vehicles;
private _allPlayers = call BIS_fnc_listPlayers;
{
private _thisSide = _x;
private _thisSideStr = _thisSide call BIS_fnc_sideNameUnlocalized;
private _tags = +GVARMAIN(standardTags);
_tags pushBack ["side", _thisSideStr];
// Number of remote units
_hashesOut pushBack ([
["bucket", "server_performance"],
["measurement", "entities_remote"],
["tags", _tags],
["fields", [
["units_alive", {
side group _x isEqualTo _thisSide &&
not (local _x)
} count _allUnits],
["units_dead", {
side group _x isEqualTo _thisSide &&
not (local _x)
} count _allDeadMen],
["groups_total", {
side _x isEqualTo _thisSide &&
not (local _x)
} count _allGroups],
["vehicles_total", {
side _x isEqualTo _thisSide &&
not (local _x) &&
!(_x isKindOf "WeaponHolderSimulated")
} count _vehicles],
["vehicles_weaponholder", {
side _x isEqualTo _thisSide &&
not (local _x) &&
(_x isKindOf "WeaponHolderSimulated")
} count _vehicles]
]]
]);
// Number of local units
_hashesOut pushBack ([
["bucket", "server_performance"],
["measurement", "entities_local"],
["tags", _tags],
["fields", [
["units_alive", {
side group _x isEqualTo _thisSide &&
local _x
} count _allUnits],
["units_dead", {
side group _x isEqualTo _thisSide &&
local _x
} count _allDeadMen],
["groups_total", {
side _x isEqualTo _thisSide &&
local _x
} count _allGroups],
["vehicles_total", {
side _x isEqualTo _thisSide &&
local _x &&
!(_x isKindOf "WeaponHolderSimulated")
} count _vehicles],
["vehicles_weaponholder", {
side _x isEqualTo _thisSide &&
local _x &&
(_x isKindOf "WeaponHolderSimulated")
} count _vehicles]
]]
]);
// Number of global units - only track on server
if (isServer) then {
_hashesOut pushBack ([
["bucket", "server_performance"],
["measurement", "entities_global"],
["tags", _tags],
["fields", [
["units_alive", {
side group _x isEqualTo _thisSide
} count _allUnits],
["units_dead", {
side group _x isEqualTo _thisSide
} count _allDeadMen],
["groups_total", {
side _x isEqualTo _thisSide
} count _allGroups],
["vehicles_total", {
side _x isEqualTo _thisSide &&
!(_x isKindOf "WeaponHolderSimulated")
} count _vehicles],
["vehicles_weaponholder", {
side _x isEqualTo _thisSide &&
(_x isKindOf "WeaponHolderSimulated")
} count _vehicles],
["players_alive", {
side group _x isEqualTo _thisSide &&
alive _x
} count _allPlayers],
["players_dead", {
side group _x isEqualTo _thisSide &&
!alive _x
} count _allPlayers]
]]
]);
};
} forEach [east, west, independent, civilian];
if (isServer) then {
_hashesOut pushBack ([
["bucket", "server_performance"],
["measurement", "player_count"],
["tags", GVARMAIN(standardTags)],
["fields", [
["players_connected", count (_allUserInfos select {_x#7 isEqualTo false})],
["headless_clients_connected", count (_allUserInfos select {_x#7 isEqualTo true})]
]]
]);
};
_hashesOut;