small reorg, some improvements, readme updates

- fix hemtt config to copy example
- 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
This commit is contained in:
2023-10-10 18:07:25 -07:00
parent 9ccb6fd3cd
commit 40b5a3d26f
11 changed files with 83 additions and 26 deletions

View File

@@ -1,5 +1,7 @@
#include "script_component.hpp"
params ["_allUserInfos", [], [[]]];
private _hashesOut = [];
private _allUnits = allUnits;
@@ -10,18 +12,20 @@ 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", GVARMAIN(standardTags)],
["tags", _tags],
["fields", [
["units_alive", {
side _x isEqualTo _thisSide &&
side group _x isEqualTo _thisSide &&
not (local _x)
} count _allUnits],
["units_dead", {
side _x isEqualTo _thisSide &&
side group _x isEqualTo _thisSide &&
not (local _x)
} count _allDeadMen],
["groups_total", {
@@ -45,14 +49,14 @@ private _allPlayers = call BIS_fnc_listPlayers;
_hashesOut pushBack ([
["bucket", "server_performance"],
["measurement", "entities_local"],
["tags", GVARMAIN(standardTags)],
["tags", _tags],
["fields", [
["units_alive", {
side _x isEqualTo _thisSide &&
side group _x isEqualTo _thisSide &&
local _x
} count _allUnits],
["units_dead", {
side _x isEqualTo _thisSide &&
side group _x isEqualTo _thisSide &&
local _x
} count _allDeadMen],
["groups_total", {
@@ -78,13 +82,13 @@ private _allPlayers = call BIS_fnc_listPlayers;
_hashesOut pushBack ([
["bucket", "server_performance"],
["measurement", "entities_global"],
["tags", GVARMAIN(standardTags)],
["tags", _tags],
["fields", [
["units_alive", {
side _x isEqualTo _thisSide
side group _x isEqualTo _thisSide
} count _allUnits],
["units_dead", {
side _x isEqualTo _thisSide
side group _x isEqualTo _thisSide
} count _allDeadMen],
["groups_total", {
side _x isEqualTo _thisSide
@@ -98,11 +102,11 @@ private _allPlayers = call BIS_fnc_listPlayers;
(_x isKindOf "WeaponHolderSimulated")
} count _vehicles],
["players_alive", {
side _x isEqualTo _thisSide &&
side group _x isEqualTo _thisSide &&
alive _x
} count _allPlayers],
["players_dead", {
side _x isEqualTo _thisSide &&
side group _x isEqualTo _thisSide &&
!alive _x
} count _allPlayers]
]]
@@ -116,12 +120,8 @@ if (isServer) then {
["measurement", "player_count"],
["tags", GVARMAIN(standardTags)],
["fields", [
["players_connected", {
private _info = getUserInfo (getPlayerId _x);
if (!isNil "_info" && {count _info >= 6}) then {
_info select 7
} else {false}
} count _allPlayers]
["players_connected", count (_allUserInfos select {_x#7 isEqualTo false})],
["headless_clients_connected", count (_allUserInfos select {_x#7 isEqualTo true})]
]]
]);
};

View File

@@ -1,5 +1,7 @@
#include "script_component.hpp"
params ["_allUserInfos", [], [[]]];
private _hashesOut = [];
{
_x params ["_playerID", "_ownerId", "_playerUID", "_profileName", "_displayName", "_steamName", "_clientState", "_isHC", "_adminState", "_networkInfo", "_unit"];
@@ -23,6 +25,6 @@ private _hashesOut = [];
["desync", _desync]
]]
]);
} forEach (allUsers apply {getUserInfo _x});
} forEach _allUserInfos;
_hashesOut;

View File

@@ -24,19 +24,22 @@ GVARMAIN(captureLoop) = [
]
];
// getUserInfo for all users
private _allUserInfos = allUsers apply {getUserInfo _x} select {count _x > 0};
// entity_count returns an array of hashMap
{
GVARMAIN(extensionName) callExtension [
":INFLUX:WRITE:",
[_x]
];
} forEach (call EFUNC(capture,entity_count));
} forEach ([_allUserInfos] call EFUNC(capture,entity_count));
{
GVARMAIN(extensionName) callExtension [
":INFLUX:WRITE:",
[_x]
];
} forEach (call EFUNC(capture,player_performance));
} forEach ([_allUserInfos] call EFUNC(capture,player_performance));
["DEBUG", format[
"Processed primary data loop in %1 ms",