diff --git a/@17thAttendanceTracker/addons/AttendanceTracker.pbo b/@17thAttendanceTracker/addons/AttendanceTracker.pbo index c4c7b8f..f4781c4 100644 Binary files a/@17thAttendanceTracker/addons/AttendanceTracker.pbo and b/@17thAttendanceTracker/addons/AttendanceTracker.pbo differ diff --git a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_eventHandlers.sqf b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_eventHandlers.sqf index 7ac520e..bebbc87 100644 --- a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_eventHandlers.sqf +++ b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_eventHandlers.sqf @@ -1,24 +1,29 @@ [ ["OnUserConnected", { params ["_networkId", "_clientStateNumber", "_clientState"]; + + [format ["(EventHandler) OnUserConnected fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; + private _userInfo = (getUserInfo _networkId); _userInfo params ["_playerID", "_ownerId", "_playerUID", "_profileName", "_displayName", "_steamName", "_clientState", "_isHC", "_adminState", "_networkInfo", "_unit"]; if (_isHC) exitWith {}; [ "ConnectedServer", + _playerID, _playerUID, _profileName, _steamName ] call attendanceTracker_fnc_logServerEvent; (AttendanceTracker getVariable ["allUsers", createHashMap]) set [_networkId, _userInfo]; - - [format ["(EventHandler) OnUserConnected fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; }], ["OnUserDisconnected", { params ["_networkId", "_clientStateNumber", "_clientState"]; - private _userInfo = (AttendanceTracker getVariable ["allUsers", createHashMap]) get [_networkId, nil]; + + [format ["(EventHandler) OnUserDisconnected fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; + + private _userInfo = (AttendanceTracker getVariable ["allUsers", createHashMap]) get _networkId; if (isNil "_userInfo") exitWith {}; _userInfo params ["_playerID", "_ownerId", "_playerUID", "_profileName", "_displayName", "_steamName", "_clientState", "_isHC", "_adminState", "_networkInfo", "_unit"]; @@ -26,15 +31,17 @@ [ "DisconnectedServer", + _playerID, _playerUID, _profileName, _steamName ] call attendanceTracker_fnc_logServerEvent; - - [format ["(EventHandler) OnUserDisconnected fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; }], ["PlayerConnected", { params ["_id", "_uid", "_name", "_jip", "_owner", "_idstr"]; + + [format ["(EventHandler) PlayerConnected fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; + private _userInfo = (getUserInfo _idstr); if (isNil "_userInfo") exitWith {}; @@ -46,19 +53,23 @@ [ "ConnectedMission", + _playerID, _playerUID, _profileName, _steamName, _jip, roleDescription _unit ] call attendanceTracker_fnc_logMissionEvent; - - [format ["(EventHandler) PlayerConnected fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; }], - ["HandleDisconnect", { - params ["_unit", "_id", "_uid", "_name"]; - private _userInfo = (AttendanceTracker getVariable ["allUsers", createHashMap]) get [_id toFixed 0, nil]; - if (isNil "_userInfo") exitWith {}; + ["PlayerDisconnected", { + params ["_id", "_uid", "_name", "_jip", "_owner", "_idstr"]; + + [format ["(EventHandler) HandleDisconnect fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; + + private _userInfo = (AttendanceTracker getVariable ["allUsers", createHashMap]) get _idstr; + if (isNil "_userInfo") exitWith { + [format ["(EventHandler) HandleDisconnect: No user info found for %1", _idstr], "DEBUG"] call attendanceTracker_fnc_log; + }; _userInfo params ["_playerID", "_ownerId", "_playerUID", "_profileName", "_displayName", "_steamName", "_clientState", "_isHC", "_adminState", "_networkInfo", "_unit"]; @@ -66,13 +77,14 @@ [ "DisconnectedMission", + _playerID, _playerUID, _profileName, _steamName, _jip ] call attendanceTracker_fnc_logMissionEvent; - [format ["(EventHandler) HandleDisconnect fired: %1", _this], "DEBUG"] call attendanceTracker_fnc_log; + false; }] ]; \ No newline at end of file diff --git a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_log.sqf b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_log.sqf index 307b019..d5dd90b 100644 --- a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_log.sqf +++ b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_log.sqf @@ -5,6 +5,10 @@ params [ ]; if (isNil "_message") exitWith {false}; +if ( + missionNamespace getVariable ["AttendanceTracker_debug", false] && + _level == "DEBUG" +) exitWith {}; "AttendanceTracker" callExtension ["log", [_level, _message]]; diff --git a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logMissionEvent.sqf b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logMissionEvent.sqf index 4967873..7507387 100644 --- a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logMissionEvent.sqf +++ b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logMissionEvent.sqf @@ -1,5 +1,6 @@ params [ ["_eventType", ""], + ["_playerId", ""], ["_playerUID", ""], ["_profileName", ""], ["_steamName", ""], @@ -9,6 +10,7 @@ params [ private _hash = + (AttendanceTracker getVariable ["missionContext", createHashMap]); _hash set ["eventType", _eventType]; +_hash set ["playerId", _playerId]; _hash set ["playerUID", _playerUID]; _hash set ["profileName", _profileName]; _hash set ["steamName", _steamName]; diff --git a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logServerEvent.sqf b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logServerEvent.sqf index 7f3066e..b51679e 100644 --- a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logServerEvent.sqf +++ b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_logServerEvent.sqf @@ -1,5 +1,6 @@ params [ ["_eventType", ""], + ["_playerId", ""], ["_playerUID", ""], ["_profileName", ""], ["_steamName", ""] @@ -8,6 +9,7 @@ params [ private _hash = + (AttendanceTracker getVariable ["missionContext", createHashMap]); _hash set ["eventType", _eventType]; +_hash set ["playerId", _playerId]; _hash set ["playerUID", _playerUID]; _hash set ["profileName", _profileName]; _hash set ["steamName", _steamName]; diff --git a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_postInit.sqf b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_postInit.sqf index baca6da..e088e9e 100644 --- a/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_postInit.sqf +++ b/@17thAttendanceTracker/addons/AttendanceTracker/functions/fn_postInit.sqf @@ -14,9 +14,10 @@ AttendanceTracker setVariable ["missionContext", createHashMapFromArray [ // store all user details in a hash when they connect so we can reference it in disconnect events AttendanceTracker setVariable ["allUsers", createHashMap]; +missionNamespace getVariable ["AttendanceTracker_debug", false]; private _database = "AttendanceTracker" callExtension "connectDB"; -systemChat "AttendanceTracker: Connecting to database..."; +// systemChat "AttendanceTracker: Connecting to database..."; ["Connecting to database...", "INFO"] call attendanceTracker_fnc_log; { diff --git a/extension/AttendanceTracker_x64.dll b/extension/AttendanceTracker_x64.dll index 25d4a0a..a566d8d 100644 Binary files a/extension/AttendanceTracker_x64.dll and b/extension/AttendanceTracker_x64.dll differ diff --git a/extension/main.go b/extension/main.go index c5b3da6..e308ad7 100644 --- a/extension/main.go +++ b/extension/main.go @@ -143,6 +143,7 @@ type AttendanceLogItem struct { MissionStart string `json:"missionStart"` // situational EventType string `json:"eventType"` + PlayerId string `json:"playerId"` PlayerUID string `json:"playerUID"` ProfileName string `json:"profileName"` SteamName string `json:"steamName"` @@ -180,7 +181,7 @@ func writeAttendance(data string) { // send to DB - result, err := db.ExecContext(context.Background(), `INSERT INTO AttendanceLog (timestamp, mission_name, briefing_name, mission_name_source, on_load_name, author, server_name, server_profile, mission_start, event_type, player_uid, profile_name, steam_name, is_jip, role_description) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`, + result, err := db.ExecContext(context.Background(), `INSERT INTO AttendanceLog (timestamp, mission_name, briefing_name, mission_name_source, on_load_name, author, server_name, server_profile, mission_start, event_type, player_id, player_uid, profile_name, steam_name, is_jip, role_description) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`, now, event.MissionName, event.BriefingName, @@ -191,6 +192,7 @@ func writeAttendance(data string) { event.ServerProfile, t, event.EventType, + event.PlayerId, event.PlayerUID, event.ProfileName, event.SteamName,