- add measurements table in Readme
- ENTITY COUNTS
- re add side tags
- use `side group _x` for units and players
- fix players_connected and add headless_clients
- get `_allUserInfos = allUsers apply {getUserInfo _x} select {count _x > 0};` from main loop and use in entity counts and player performance
129 lines
3.3 KiB
Plaintext
129 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; |