From 3f899e33e60401d7a6a6fc8f96fc8b31bd410dc1 Mon Sep 17 00:00:00 2001 From: IndigoFox Date: Wed, 26 Apr 2023 09:14:23 -0700 Subject: [PATCH] add global player count, mission slots count, update handleChatMessage --- .../addons/RangerMetrics/config.cpp | 9 ++++- .../functions/capture/fn_entity_count.sqf | 20 +++++++++- .../functions/capture/fn_running_mission.sqf | 8 +++- .../{EHOnly => serverEH}/fn_EntityKilled.sqf | 0 .../{EHOnly => serverEH}/fn_Explosion.sqf | 0 .../{EHOnly => serverEH}/fn_FiredMan.sqf | 0 .../fn_HandleChatMessage.sqf | 0 .../{EHOnly => serverEH}/fn_MarkerCreated.sqf | 0 .../{EHOnly => serverEH}/fn_MarkerDeleted.sqf | 0 .../{EHOnly => serverEH}/fn_MarkerUpdated.sqf | 0 .../fn_ace_unconscious.sqf | 0 .../fn_milsim_serverEfficiency.sqf | 0 .../captureDefinitions/fn_client_EH.sqf | 37 +++++++++++++++++++ .../captureDefinitions/fn_client_poll.sqf | 11 ------ .../fn_server_missionEH.sqf | 30 ++++++++------- .../functions/core/fn_initCapture.sqf | 2 - 16 files changed, 87 insertions(+), 30 deletions(-) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_EntityKilled.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_Explosion.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_FiredMan.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_HandleChatMessage.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_MarkerCreated.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_MarkerDeleted.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_MarkerUpdated.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_ace_unconscious.sqf (100%) rename @RangerMetrics/addons/RangerMetrics/functions/capture/{EHOnly => serverEH}/fn_milsim_serverEfficiency.sqf (100%) create mode 100644 @RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_EH.sqf delete mode 100644 @RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_poll.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/config.cpp b/@RangerMetrics/addons/RangerMetrics/config.cpp index 0ad76c8..d7a4d21 100644 --- a/@RangerMetrics/addons/RangerMetrics/config.cpp +++ b/@RangerMetrics/addons/RangerMetrics/config.cpp @@ -19,7 +19,7 @@ class CfgFunctions { }; class RangerMetrics_event { class functions { - file = "\RangerMetrics\functions\capture\EHOnly"; + file = "\RangerMetrics\functions\capture\serverEH"; class ace_unconscious {}; class EntityKilled {}; class Explosion {}; @@ -31,12 +31,17 @@ class CfgFunctions { class milsim_serverEfficiency {}; }; }; + class RangerMetrics_event { + class functions { + file = "\RangerMetrics\functions\capture\clientEH"; + }; + }; class RangerMetrics_cDefinitions { class functions { file = "\RangerMetrics\functions\captureDefinitions"; class server_poll {}; class server_missionEH {}; - class client_poll {}; + class client_EH {postInit = 1;}; // class clientEvent {}; class server_CBA {}; class unit_handlers {}; diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_entity_count.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_entity_count.sqf index 3293e82..781a828 100644 --- a/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_entity_count.sqf +++ b/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_entity_count.sqf @@ -112,4 +112,22 @@ private _allPlayers = call BIS_fnc_listPlayers; ] call RangerMetrics_fnc_queue; }; -} forEach [east, west, independent, civilian]; \ No newline at end of file +} forEach [east, west, independent, civilian]; + + + +if (isServer) then { + [ + _settings get "bucket", + "player_count", + nil, + [ + ["int", "players_connected", { + private _info = getUserInfo _x; + if (!isNil "_info") then { + _info select 7 + } else {false} + } count _allPlayers] + ] + ] call RangerMetrics_fnc_queue; +}; \ No newline at end of file diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_running_mission.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_running_mission.sqf index e3cab4c..170b8a1 100644 --- a/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_running_mission.sqf +++ b/@RangerMetrics/addons/RangerMetrics/functions/capture/fn_running_mission.sqf @@ -16,7 +16,13 @@ private _settings = RangerMetrics_recordingSettings get "runningMission"; getMissionConfigValue ["onLoadName", ""] ], ["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 ] call RangerMetrics_fnc_queue; diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_EntityKilled.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_EntityKilled.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_EntityKilled.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_EntityKilled.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_Explosion.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_Explosion.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_Explosion.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_Explosion.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_FiredMan.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_FiredMan.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_FiredMan.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_FiredMan.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_HandleChatMessage.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_HandleChatMessage.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_HandleChatMessage.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_HandleChatMessage.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_MarkerCreated.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_MarkerCreated.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_MarkerCreated.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_MarkerCreated.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_MarkerDeleted.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_MarkerDeleted.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_MarkerDeleted.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_MarkerDeleted.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_MarkerUpdated.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_MarkerUpdated.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_MarkerUpdated.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_MarkerUpdated.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_ace_unconscious.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_ace_unconscious.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_ace_unconscious.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_ace_unconscious.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_milsim_serverEfficiency.sqf b/@RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_milsim_serverEfficiency.sqf similarity index 100% rename from @RangerMetrics/addons/RangerMetrics/functions/capture/EHOnly/fn_milsim_serverEfficiency.sqf rename to @RangerMetrics/addons/RangerMetrics/functions/capture/serverEH/fn_milsim_serverEfficiency.sqf diff --git a/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_EH.sqf b/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_EH.sqf new file mode 100644 index 0000000..cad1261 --- /dev/null +++ b/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_EH.sqf @@ -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]; \ No newline at end of file diff --git a/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_poll.sqf b/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_poll.sqf deleted file mode 100644 index 42e418c..0000000 --- a/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_client_poll.sqf +++ /dev/null @@ -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 - // ] - // ] - // ] -] \ No newline at end of file diff --git a/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_server_missionEH.sqf b/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_server_missionEH.sqf index 442b48e..00f08ff 100644 --- a/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_server_missionEH.sqf +++ b/@RangerMetrics/addons/RangerMetrics/functions/captureDefinitions/fn_server_missionEH.sqf @@ -16,8 +16,10 @@ ["OnUserDisconnected", { params ["_networkId", "_clientStateNumber", "_clientState"]; private _userInfo = (getUserInfo _networkId); - _userInfo call RangerMetrics_capture_fnc_player_identity; - _userInfo call RangerMetrics_capture_fnc_player_status; + if (!isNil "_userInfo") then { + _userInfo call RangerMetrics_capture_fnc_player_identity; + _userInfo call RangerMetrics_capture_fnc_player_status; + }; ["server_events", "OnUserDisconnected", [ ["string", "playerUID", _userInfo#2] ], [ @@ -45,22 +47,22 @@ ]] call RangerMetrics_fnc_queue; [format ["(EventHandler) PlayerConnected fired: %1", _this], "DEBUG"] call RangerMetrics_fnc_log; }], - ["PlayerDisconnected", { - params ["_id", "_uid", "_name", "_jip", "_owner", "_idstr"]; - private _userInfo = (getUserInfo _idstr); - _userInfo call RangerMetrics_capture_fnc_player_identity; - _userInfo call RangerMetrics_capture_fnc_player_status; - ["server_events", "PlayerDisconnected", [ + ["HandleDisconnect", { + params ["_unit", "_id", "_uid", "_name"]; + private _userInfo = (getUserInfo (_id toFixed 0)); + if (!isNil "_userInfo") then { + _userInfo call RangerMetrics_capture_fnc_player_identity; + _userInfo call RangerMetrics_capture_fnc_player_status; + }; + ["server_events", "HandleDisconnect", [ ["string", "playerUID", _uid] ], [ ["string", "id", _id toFixed 0], ["string", "uid", _uid], - ["string", "name", _name], - ["bool", "jip", _jip], - ["int", "owner", _owner], - ["string", "idstr", _idstr] + ["string", "name", _name] ]] 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", { params ["_networkId", "_clientStateNumber", "_clientState"]; @@ -78,6 +80,7 @@ ["OnUserAdminStateChanged", { params ["_networkId", "_loggedIn", "_votedIn"]; private _userInfo = (getUserInfo _networkId); + if (isNil "_userInfo") exitWith {}; _userInfo call RangerMetrics_capture_fnc_player_status; ["server_events", "OnUserAdminStateChanged", [ ["string", "playerUID", _userInfo#2] @@ -91,6 +94,7 @@ ["OnUserKicked", { params ["_networkId", "_kickTypeNumber", "_kickType", "_kickReason", "_kickMessageIncReason"]; private _userInfo = (getUserInfo _networkId); + if (isNil "_userInfo") exitWith {}; _userInfo call RangerMetrics_capture_fnc_player_identity; _userInfo call RangerMetrics_capture_fnc_player_status; ["server_events", "OnUserKicked", [ diff --git a/@RangerMetrics/addons/RangerMetrics/functions/core/fn_initCapture.sqf b/@RangerMetrics/addons/RangerMetrics/functions/core/fn_initCapture.sqf index 7ec9461..c001c9f 100644 --- a/@RangerMetrics/addons/RangerMetrics/functions/core/fn_initCapture.sqf +++ b/@RangerMetrics/addons/RangerMetrics/functions/core/fn_initCapture.sqf @@ -79,8 +79,6 @@ - - RangerMetrics_allMEH = allVariables missionNamespace select { _x find (toLower "RangerMetrics_MEH_") == 0 };