diff --git a/01_DCS/Hooks/Perun.lua b/01_DCS/Hooks/Perun.lua index 67b1ac4..447f7a4 100644 --- a/01_DCS/Hooks/Perun.lua +++ b/01_DCS/Hooks/Perun.lua @@ -17,7 +17,7 @@ -- ########### END OF SETTINGS ########### -- Variable init - Perun.Version = "v0.3.5" + Perun.Version = "v0.3.6" Perun.StatusData = {} Perun.SlotsData = {} Perun.MissionData = {} @@ -164,8 +164,9 @@ data['player']= net.get_player_info(playerID, "name") data['msg']=msg data['all']=all + data['ucid']=net.get_player_info(playerID, 'ucid') data['datetime']=os.date('%Y-%m-%d %H:%M:%S') - data['log_missionhash']=Perun.MissionHash + data['missionhash']=Perun.MissionHash Perun.Send(50,data) end @@ -222,11 +223,11 @@ Perun.onSimulationStart = function() Perun.MissionHash=DCS.getMissionName( ).."@"..os.date('%Y%m%d_%H%M%S'); - Perun.LogEvent("SimStart",Perun.MissionHash); + Perun.LogEvent("SimStart","Mission" .. Perun.MissionHash .. " started"); end Perun.onSimulationStop = function() - Perun.LogEvent("SimStop",Perun.MissionHash); + Perun.LogEvent("SimStop","Mission" .. Perun.MissionHash .. " finished"); end Perun.onPlayerDisconnect= function(id, err_code) diff --git a/02_Windows_App/Perun_v1/Perun_v1.csproj b/02_Windows_App/Perun_v1/Perun_v1.csproj index 7a0edd7..c4214b3 100644 --- a/02_Windows_App/Perun_v1/Perun_v1.csproj +++ b/02_Windows_App/Perun_v1/Perun_v1.csproj @@ -33,7 +33,7 @@ true Perun.htm 0 - 0.3.5.%2a + 0.3.6.%2a false true true diff --git a/02_Windows_App/Perun_v1/Properties/AssemblyInfo.cs b/02_Windows_App/Perun_v1/Properties/AssemblyInfo.cs index f9a1ff2..7e02bcb 100644 --- a/02_Windows_App/Perun_v1/Properties/AssemblyInfo.cs +++ b/02_Windows_App/Perun_v1/Properties/AssemblyInfo.cs @@ -33,7 +33,7 @@ using System.Runtime.InteropServices; // Możesz określić wszystkie wartości lub użyć domyślnych numerów kompilacji i poprawki // przy użyciu symbolu „*”, tak jak pokazano poniżej: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.3.5.0")] -[assembly: AssemblyFileVersion("0.3.5.0")] +[assembly: AssemblyVersion("0.3.6.0")] +[assembly: AssemblyFileVersion("0.3.6.0")] [assembly: NeutralResourcesLanguage("en")] diff --git a/02_Windows_App/Perun_v1/form_Main.cs b/02_Windows_App/Perun_v1/form_Main.cs index 71cd22d..ca38bd3 100644 --- a/02_Windows_App/Perun_v1/form_Main.cs +++ b/02_Windows_App/Perun_v1/form_Main.cs @@ -54,26 +54,32 @@ namespace Perun_v1 // Specific SQL if (type == "50") { - // Add entry to event log - sql = "INSERT INTO `pe_LogChat` (`pe_LogChat_id`,`pe_LogChat_datetime`, `pe_LogChat_playerid`, `pe_LogChat_msg`, `pe_LogChat_all`) VALUES (NULL,'" + udp_frame.payload.datetime + "', '" + udp_frame.payload.player + "', '" + udp_frame.payload.msg + "', '" + udp_frame.payload.all + "');"; + // Add entry to chat log + sql = "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) VALUES ('" + udp_frame.payload.ucid + "') ON DUPLICATE KEY UPDATE pe_DataPlayers_updated=CURRENT_TIMESTAMP(),pe_DataPlayers_lastname='"+ udp_frame.payload.player + "';"; + sql = sql + "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`) VALUES ('" + udp_frame.payload.missionhash + "') ON DUPLICATE KEY UPDATE pe_DataMissionHashes_datetime=CURRENT_TIMESTAMP();"; + sql = sql+ "INSERT INTO `pe_LogChat` (`pe_LogChat_id`,`pe_LogChat_datetime`, `pe_LogChat_playerid`, `pe_LogChat_msg`, `pe_LogChat_all`,`pe_LogChat_missionhash_id`) VALUES (NULL,'" + udp_frame.payload.datetime + "', (SELECT pe_DataPlayers_id from pe_DataPlayers WHERE pe_DataPlayers_ucid = '"+ udp_frame.payload.ucid + "'), '" + udp_frame.payload.msg + "', '" + udp_frame.payload.all + "',(SELECT pe_DataMissionHashes_id FROM pe_DataMissionHashes WHERE pe_DataMissionHashes_hash = '" + udp_frame.payload.missionhash + "'));"; } else if (type == "51") { // Add entry to event log - sql = "INSERT INTO `pe_LogEvent` (`pe_LogEvent_id`, `pe_LogEvent_datetime`, `pe_LogEvent_type`, `pe_LogEvent_content`,`pe_LogEvent_missionhash`) VALUES ( NULL, '" + udp_frame.payload.log_datetime + "', '" + udp_frame.payload.log_type + "', '" + udp_frame.payload.log_content + "', '" + udp_frame.payload.log_missionhash + "');"; + sql = "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`) VALUES ('" + udp_frame.payload.log_missionhash + "') ON DUPLICATE KEY UPDATE pe_DataMissionHashes_datetime=CURRENT_TIMESTAMP();"; + sql = sql + "INSERT INTO `pe_LogEvent` (`pe_LogEvent_id`, `pe_LogEvent_datetime`, `pe_LogEvent_type`, `pe_LogEvent_content`,`pe_LogEvent_missionhash_id`) VALUES ( NULL, '" + udp_frame.payload.log_datetime + "', '" + udp_frame.payload.log_type + "', '" + udp_frame.payload.log_content + "', (SELECT pe_DataMissionHashes_id FROM pe_DataMissionHashes WHERE pe_DataMissionHashes_hash = '" + udp_frame.payload.log_missionhash + "'));"; } else if (type == "52") { // Update user stats payload = JsonConvert.SerializeObject(udp_frame.payload.stat_data); - sql = "INSERT INTO `pe_LogStats` (`pe_LogStats_datetime`, `pe_LogStats_ucid`, `pe_LogStats_debug`,`pe_LogStats_missionhash`) VALUES ('" + udp_frame.payload.stat_datetime + "', '" + udp_frame.payload.stat_ucid + "', JSON_QUOTE('" + payload + "'), '" + udp_frame.payload.stat_missionhash + "') ON DUPLICATE KEY UPDATE pe_LogStats_datetime='" + udp_frame.payload.stat_datetime + "',pe_LogStats_ucid = '" + udp_frame.payload.stat_ucid + "', pe_LogStats_debug=JSON_QUOTE('" + payload + "'), pe_LogStats_missionhash='" + udp_frame.payload.stat_missionhash + "'"; + sql = "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`) VALUES ('" + udp_frame.payload.stat_missionhash + "') ON DUPLICATE KEY UPDATE pe_DataMissionHashes_datetime=CURRENT_TIMESTAMP();"; + sql = sql + "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) VALUES ('" + udp_frame.payload.stat_ucid + "') ON DUPLICATE KEY UPDATE pe_DataPlayers_updated=CURRENT_TIMESTAMP();"; + sql = sql+ "INSERT INTO `pe_LogStats` (`pe_LogStats_datetime`, `pe_LogStats_playerid`, `pe_LogStats_debug`,`pe_LogStats_missionhash_id`) VALUES ('" + udp_frame.payload.stat_datetime + "', (SELECT pe_DataPlayers_id from pe_DataPlayers WHERE pe_DataPlayers_ucid = '" + udp_frame.payload.stat_ucid + "'), JSON_QUOTE('" + payload + "'), (SELECT pe_DataMissionHashes_id FROM pe_DataMissionHashes WHERE pe_DataMissionHashes_hash = '" + udp_frame.payload.stat_missionhash + "')) ON DUPLICATE KEY UPDATE pe_LogStats_datetime='" + udp_frame.payload.stat_datetime + "',pe_LogStats_playerid = (SELECT pe_DataPlayers_id from pe_DataPlayers WHERE pe_DataPlayers_ucid = '" + udp_frame.payload.stat_ucid + "'), pe_LogStats_debug=JSON_QUOTE('" + payload + "'), pe_LogStats_missionhash_id=(SELECT pe_DataMissionHashes_id FROM pe_DataMissionHashes WHERE pe_DataMissionHashes_hash = '" + udp_frame.payload.stat_missionhash + "')"; } else if (type == "53") { // User logged in to DCS server payload = JsonConvert.SerializeObject(udp_frame.payload.stat_data); - sql = "INSERT INTO `pe_LogLogins` (`pe_LogLogins_datetime`, `pe_LogLogins_ucid`, `pe_LogLogins_name`, `pe_LogLogins_ip`) VALUES ('" + udp_frame.payload.login_datetime + "', '" + udp_frame.payload.login_ucid + "', '" + udp_frame.payload.login_name + "', '" + udp_frame.payload.login_ipaddr + "');"; - sql = sql + "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_id`, `pe_DataPlayers_ucid`, `pe_DataPlayers_lastip`, `pe_DataPlayers_lastname`, `pe_DataPlayers_updated`) VALUES (NULL, '" + udp_frame.payload.login_ucid + "', '" + udp_frame.payload.login_ipaddr + "', '" + udp_frame.payload.login_name + "', '" + udp_frame.payload.login_datetime + "') ON DUPLICATE KEY UPDATE pe_DataPlayers_lastip='" + udp_frame.payload.login_ipaddr + "',pe_DataPlayers_lastname='" + udp_frame.payload.login_name + "',pe_DataPlayers_updated='" + udp_frame.payload.login_datetime + "'"; + + sql = "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_id`, `pe_DataPlayers_ucid`, `pe_DataPlayers_lastip`, `pe_DataPlayers_lastname`, `pe_DataPlayers_updated`) VALUES (NULL, '" + udp_frame.payload.login_ucid + "', '" + udp_frame.payload.login_ipaddr + "', '" + udp_frame.payload.login_name + "', '" + udp_frame.payload.login_datetime + "') ON DUPLICATE KEY UPDATE pe_DataPlayers_lastip='" + udp_frame.payload.login_ipaddr + "',pe_DataPlayers_lastname='" + udp_frame.payload.login_name + "',pe_DataPlayers_updated='" + udp_frame.payload.login_datetime + "';"; + sql = sql + "INSERT INTO `pe_LogLogins` (`pe_LogLogins_datetime`, `pe_LogLogins_playerid`, `pe_LogLogins_name`, `pe_LogLogins_ip`) VALUES ('" + udp_frame.payload.login_datetime + "', (SELECT pe_DataPlayers_id from pe_DataPlayers WHERE pe_DataPlayers_ucid = '" + udp_frame.payload.login_ucid + "'), '" + udp_frame.payload.login_name + "', '" + udp_frame.payload.login_ipaddr + "');"; } else { @@ -102,7 +108,7 @@ namespace Perun_v1 catch (Exception ex) { Console.WriteLine(ex.ToString()); - LogHistoryAdd(ref LogHistory, "ERROR: MySQL"); + LogHistoryAdd(ref LogHistory, "ERROR MySQL: type " + type); } conn.Close(); diff --git a/03_MySQL/m1081_perun.sql b/03_MySQL/m1081_perun.sql index 436eee7..e46825f 100644 --- a/03_MySQL/m1081_perun.sql +++ b/03_MySQL/m1081_perun.sql @@ -1,4 +1,5 @@ + SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; @@ -18,6 +19,21 @@ USE `m1081_perun`; -- -------------------------------------------------------- +-- +-- Struktura tabeli dla tabeli `pe_DataMissionHashes` +-- + +DROP TABLE IF EXISTS `pe_DataMissionHashes`; +CREATE TABLE IF NOT EXISTS `pe_DataMissionHashes` ( + `pe_DataMissionHashes_id` bigint(20) NOT NULL AUTO_INCREMENT, + `pe_DataMissionHashes_hash` varchar(150) NOT NULL, + `pe_DataMissionHashes_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`pe_DataMissionHashes_id`), + UNIQUE KEY `UNIQUE_hash` (`pe_DataMissionHashes_hash`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + -- -- Struktura tabeli dla tabeli `pe_DataPlayers` -- @@ -57,6 +73,7 @@ DROP TABLE IF EXISTS `pe_LogChat`; CREATE TABLE IF NOT EXISTS `pe_LogChat` ( `pe_LogChat_id` bigint(20) NOT NULL AUTO_INCREMENT, `pe_LogChat_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `pe_LogChat_missionhash_id` bigint(20) DEFAULT NULL, `pe_LogChat_playerid` varchar(100) NOT NULL, `pe_LogChat_msg` text NOT NULL, `pe_LogChat_all` varchar(10) NOT NULL, @@ -72,7 +89,7 @@ CREATE TABLE IF NOT EXISTS `pe_LogChat` ( DROP TABLE IF EXISTS `pe_LogEvent`; CREATE TABLE IF NOT EXISTS `pe_LogEvent` ( `pe_LogEvent_id` bigint(20) NOT NULL AUTO_INCREMENT, - `pe_LogEvent_missionhash` varchar(150) DEFAULT NULL, + `pe_LogEvent_missionhash_id` bigint(20) DEFAULT NULL, `pe_LogEvent_datetime` datetime DEFAULT CURRENT_TIMESTAMP, `pe_LogEvent_type` varchar(100) NOT NULL, `pe_LogEvent_content` text NOT NULL, @@ -87,10 +104,12 @@ CREATE TABLE IF NOT EXISTS `pe_LogEvent` ( DROP TABLE IF EXISTS `pe_LogLogins`; CREATE TABLE IF NOT EXISTS `pe_LogLogins` ( + `pe_LogLogins_id` bigint(20) NOT NULL AUTO_INCREMENT, `pe_LogLogins_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `pe_LogLogins_ucid` varchar(150) NOT NULL, + `pe_LogLogins_playerid` bigint(20) DEFAULT NULL, `pe_LogLogins_name` varchar(150) NOT NULL, - `pe_LogLogins_ip` varchar(100) NOT NULL + `pe_LogLogins_ip` varchar(100) NOT NULL, + PRIMARY KEY (`pe_LogLogins_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -102,12 +121,12 @@ CREATE TABLE IF NOT EXISTS `pe_LogLogins` ( DROP TABLE IF EXISTS `pe_LogStats`; CREATE TABLE IF NOT EXISTS `pe_LogStats` ( `pe_LogStats_id` bigint(20) NOT NULL AUTO_INCREMENT, - `pe_LogStats_missionhash` varchar(150) DEFAULT NULL, + `pe_LogStats_missionhash_id` bigint(20) DEFAULT NULL, `pe_LogStats_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `pe_LogStats_ucid` varchar(200) NOT NULL, + `pe_LogStats_playerid` bigint(20) DEFAULT NULL, `pe_LogStats_debug` text, PRIMARY KEY (`pe_LogStats_id`), - UNIQUE KEY `UNIQUE_STATS_PER_MISSION_AND_UCID` (`pe_LogStats_ucid`,`pe_LogStats_missionhash`) + UNIQUE KEY `UNIQUE_STATS_PER_MISSION_AND_UCID` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; COMMIT;