mirror of
https://github.com/DaKerboul/perun.git
synced 2026-08-09 19:55:40 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3be5a8765f | ||
|
|
0f01624380 |
@@ -5,20 +5,22 @@ local Perun = {}
|
|||||||
package.path = package.path..";"..lfs.currentdir().."/LuaSocket/?.lua"
|
package.path = package.path..";"..lfs.currentdir().."/LuaSocket/?.lua"
|
||||||
package.cpath = package.cpath..";"..lfs.currentdir().."/LuaSocket/?.dll"
|
package.cpath = package.cpath..";"..lfs.currentdir().."/LuaSocket/?.dll"
|
||||||
|
|
||||||
-- ########### SETTINGS ###########
|
-- ###################### SETTINGS - DO NOT MODIFY OUTSIDE THIS SECTION #############################
|
||||||
|
|
||||||
Perun.RefreshStatus = 15 -- base refresh rate in seconds to send status update (values lower than 60 may affect performance!)
|
Perun.RefreshStatus = 15 -- (int) base refresh rate in seconds to send status update (values lower than 60 may affect performance!)
|
||||||
Perun.RefreshMission = 60 -- refresh rate in seconds to send mission information (values lower than 60 may affect performance!)
|
Perun.RefreshMission = 60 -- (int) refresh rate in seconds to send mission information (values lower than 60 may affect performance!)
|
||||||
Perun.JsonStatusLocation = "Scripts\\Json\\" -- folder relative do user's SaveGames DCS folder -> status file updated each RefreshMission
|
Perun.UDPTargetPort = 48620 -- (int) UDP port to send data to
|
||||||
Perun.UDPTargetPort = 48620 -- UDP port to send data to
|
Perun.UDPSourcePort = 48621 -- (int) UDP port to send data from
|
||||||
Perun.MOTD_L1 = "Witamy na serwerze Gildia.org !" -- Message send to players connecting the server - Line 1
|
Perun.Instance = 1 -- (int) Id number of instance (if multiple DCS instances are to run at the same PC)
|
||||||
Perun.MOTD_L2 = "Wymagamy obecnosci na 255Mhz (DCS SRS)" -- Message send to players connecting the server - Line 2
|
Perun.JsonStatusLocation = "Scripts\\Json\\" -- (string) folder relative do user's SaveGames DCS folder -> status file updated each RefreshMission
|
||||||
|
Perun.MOTD_L1 = "Witamy na serwerze Gildia.org !" -- (string) Message send to players connecting the server - Line 1
|
||||||
|
Perun.MOTD_L2 = "Wymagamy obecnosci na 255Mhz (DCS SRS)" -- (string) Message send to players connecting the server - Line 2
|
||||||
|
|
||||||
-- ########### END OF SETTINGS ###########
|
-- ###################### END OF SETTINGS - DO NOT MODIFY OUTSIDE THIS SECTION ######################
|
||||||
|
|
||||||
|
|
||||||
-- Variable init
|
-- Variable init
|
||||||
Perun.Version = "v0.4.0"
|
Perun.Version = "v0.4.1"
|
||||||
Perun.StatusData = {}
|
Perun.StatusData = {}
|
||||||
Perun.SlotsData = {}
|
Perun.SlotsData = {}
|
||||||
Perun.MissionData = {}
|
Perun.MissionData = {}
|
||||||
@@ -28,11 +30,8 @@ Perun.lastSentStatus =0
|
|||||||
Perun.lastSentMission =0
|
Perun.lastSentMission =0
|
||||||
Perun.JsonStatusLocation = lfs.writedir() .. Perun.JsonStatusLocation
|
Perun.JsonStatusLocation = lfs.writedir() .. Perun.JsonStatusLocation
|
||||||
Perun.socket = require("socket")
|
Perun.socket = require("socket")
|
||||||
|
Perun.IsServer = true --DCS.isServer( ) -- TBD looks like DCS API error, always returning True
|
||||||
Perun.UDP = assert(Perun.socket.udp())
|
Perun.UDPSourcePort = Perun.UDPSourcePort + Perun.Instance - 1
|
||||||
Perun.UDP:settimeout(0)
|
|
||||||
Perun.UDP:setsockname("*", 48621)
|
|
||||||
Perun.UDP:setpeername("127.0.0.1",Perun.UDPTargetPort)
|
|
||||||
|
|
||||||
-- ########### Helper function definitions ###########
|
-- ########### Helper function definitions ###########
|
||||||
function stripChars(str)
|
function stripChars(str)
|
||||||
@@ -179,6 +178,7 @@ Perun.Send = function(data_id, data_package)
|
|||||||
TempData["type"]=data_id
|
TempData["type"]=data_id
|
||||||
TempData["payload"]=data_package
|
TempData["payload"]=data_package
|
||||||
TempData["timestamp"]=os.date('%Y-%m-%d %H:%M:%S')
|
TempData["timestamp"]=os.date('%Y-%m-%d %H:%M:%S')
|
||||||
|
TempData["instance"]=Perun.Instance
|
||||||
|
|
||||||
temp=net.lua2json(TempData)
|
temp=net.lua2json(TempData)
|
||||||
temp=stripChars(temp)
|
temp=stripChars(temp)
|
||||||
@@ -313,7 +313,7 @@ end
|
|||||||
--- ########### Event callbacks ###########
|
--- ########### Event callbacks ###########
|
||||||
|
|
||||||
Perun.onSimulationStart = function()
|
Perun.onSimulationStart = function()
|
||||||
Perun.MissionHash=DCS.getMissionName( ).."@"..os.date('%Y%m%d_%H%M%S');
|
Perun.MissionHash=DCS.getMissionName( ).."@".. Perun.Instance .. "@"..os.date('%Y%m%d_%H%M%S');
|
||||||
Perun.LogEvent("SimStart","Mission " .. Perun.MissionHash .. " started");
|
Perun.LogEvent("SimStart","Mission " .. Perun.MissionHash .. " started");
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -370,6 +370,11 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
|
|
||||||
if eventName == "friendly_fire" then
|
if eventName == "friendly_fire" then
|
||||||
--"friendly_fire", playerID, weaponName, victimPlayerID
|
--"friendly_fire", playerID, weaponName, victimPlayerID
|
||||||
|
|
||||||
|
if arg2 == nil then
|
||||||
|
arg2 = Gun
|
||||||
|
end
|
||||||
|
|
||||||
Perun.LogEvent(eventName,Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player " .. net.get_player_info(arg1, "name").." killed friendy " .. net.get_player_info(arg3, "name") .. " using " .. arg2);
|
Perun.LogEvent(eventName,Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player " .. net.get_player_info(arg1, "name").." killed friendy " .. net.get_player_info(arg3, "name") .. " using " .. arg2);
|
||||||
Perun.LogStats(arg1);
|
Perun.LogStats(arg1);
|
||||||
|
|
||||||
@@ -393,6 +398,10 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
_temp2 = " AI ";
|
_temp2 = " AI ";
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if arg7 == nil then
|
||||||
|
arg7 = Gun
|
||||||
|
end
|
||||||
|
|
||||||
Perun.LogEvent(eventName,Perun.SideID2Name(arg3) .. _temp2 .. " in " .. arg2 .. " killed " .. Perun.SideID2Name(arg6) .. _temp .. " in " .. arg5 .. " using " .. arg7 .. " [".. Perun.GetCategory(arg5).."]");
|
Perun.LogEvent(eventName,Perun.SideID2Name(arg3) .. _temp2 .. " in " .. arg2 .. " killed " .. Perun.SideID2Name(arg6) .. _temp .. " in " .. arg5 .. " using " .. arg7 .. " [".. Perun.GetCategory(arg5).."]");
|
||||||
|
|
||||||
|
|
||||||
@@ -465,5 +474,12 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- ########### Finalize and set callbacks ###########
|
-- ########### Finalize and set callbacks ###########
|
||||||
DCS.setUserCallbacks(Perun)
|
if Perun.IsServer then
|
||||||
net.log("Loaded - Perun - VladMordock - " .. Perun.Version )
|
Perun.UDP = assert(Perun.socket.udp())
|
||||||
|
Perun.UDP:settimeout(0)
|
||||||
|
Perun.UDP:setsockname("*", Perun.UDPSourcePort)
|
||||||
|
Perun.UDP:setpeername("127.0.0.1",Perun.UDPTargetPort)
|
||||||
|
|
||||||
|
DCS.setUserCallbacks(Perun)
|
||||||
|
net.log("Loaded - Perun - VladMordock - " .. Perun.Version )
|
||||||
|
end
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ internal class DatabaseController
|
|||||||
dynamic strUDPFrame = JsonConvert.DeserializeObject(strRawUDPFrame); // Deserialize raw data
|
dynamic strUDPFrame = JsonConvert.DeserializeObject(strRawUDPFrame); // Deserialize raw data
|
||||||
string strUDPFrameType = strUDPFrame.type;
|
string strUDPFrameType = strUDPFrame.type;
|
||||||
string strUDPFrameTimestamp = strUDPFrame.timestamp;
|
string strUDPFrameTimestamp = strUDPFrame.timestamp;
|
||||||
|
string strUDPFrameInstance = strUDPFrame.instance;
|
||||||
string strUDPFramePayload = "";
|
string strUDPFramePayload = "";
|
||||||
string strSQLQueryTxt = "";
|
string strSQLQueryTxt = "";
|
||||||
|
|
||||||
@@ -39,15 +40,15 @@ internal class DatabaseController
|
|||||||
// Add entry to chat log
|
// Add entry to chat log
|
||||||
strSQLQueryTxt = "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) SELECT '" + strUDPFrame.payload.ucid + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataPlayers` where `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.ucid + "' );";
|
strSQLQueryTxt = "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) SELECT '" + strUDPFrame.payload.ucid + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataPlayers` where `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.ucid + "' );";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataPlayers` SET `pe_DataPlayers_updated` = " + strUDPFrameTimestamp + ",`pe_DataPlayers_lastname`='" + strUDPFrame.payload.player + "' WHERE `pe_DataPlayers_ucid`='" + strUDPFrame.payload.ucid + "' ;";
|
strSQLQueryTxt += "UPDATE `pe_DataPlayers` SET `pe_DataPlayers_updated` = " + strUDPFrameTimestamp + ",`pe_DataPlayers_lastname`='" + strUDPFrame.payload.player + "' WHERE `pe_DataPlayers_ucid`='" + strUDPFrame.payload.ucid + "' ;";
|
||||||
strSQLQueryTxt += "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`) SELECT '" + strUDPFrame.payload.missionhash + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataMissionHashes` where `pe_DataMissionHashes_hash` ='" + strUDPFrame.payload.missionhash + "' );";
|
strSQLQueryTxt += "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`,`pe_DataMissionHashes_instance`) SELECT '" + strUDPFrame.payload.missionhash + "','" + strUDPFrameInstance + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataMissionHashes` where `pe_DataMissionHashes_hash` ='" + strUDPFrame.payload.missionhash + "' AND `pe_DataMissionHashes_instance`="+ strUDPFrameInstance + ");";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataMissionHashes` SET `pe_DataMissionHashes_datetime` = " + strUDPFrameTimestamp + " WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.missionhash + "';";
|
strSQLQueryTxt += "UPDATE `pe_DataMissionHashes` SET `pe_DataMissionHashes_datetime` = " + strUDPFrameTimestamp + " WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.missionhash + "' AND `pe_DataMissionHashes_instance`=" + strUDPFrameInstance + " ;";
|
||||||
strSQLQueryTxt += "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,'" + strUDPFrame.payload.datetime + "', (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.ucid + "'), '" + strUDPFrame.payload.msg + "', '" + strUDPFrame.payload.all + "',(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.missionhash + "'));";
|
strSQLQueryTxt += "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,'" + strUDPFrame.payload.datetime + "', (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.ucid + "'), '" + strUDPFrame.payload.msg + "', '" + strUDPFrame.payload.all + "',(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.missionhash + "'));";
|
||||||
}
|
}
|
||||||
else if (strUDPFrameType == "51")
|
else if (strUDPFrameType == "51")
|
||||||
{
|
{
|
||||||
// Add entry to event log
|
// Add entry to event log
|
||||||
strSQLQueryTxt = "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`) SELECT '" + strUDPFrame.payload.log_missionhash + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataMissionHashes` where `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.log_missionhash + "');";
|
strSQLQueryTxt = "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`,`pe_DataMissionHashes_instance`) SELECT '" + strUDPFrame.payload.log_missionhash + "','" + strUDPFrameInstance + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataMissionHashes` where `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.log_missionhash + "' AND `pe_DataMissionHashes_instance`=" + strUDPFrameInstance + ");";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataMissionHashes` SET `pe_DataMissionHashes_datetime` = " + strUDPFrameTimestamp + " WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.log_missionhash + "';";
|
strSQLQueryTxt += "UPDATE `pe_DataMissionHashes` SET `pe_DataMissionHashes_datetime` = " + strUDPFrameTimestamp + " WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.log_missionhash + "' AND `pe_DataMissionHashes_instance`=" + strUDPFrameInstance + ";";
|
||||||
strSQLQueryTxt += "INSERT INTO `pe_LogEvent` (`pe_LogEvent_id`, `pe_LogEvent_datetime`, `pe_LogEvent_type`, `pe_LogEvent_content`,`pe_LogEvent_missionhash_id`) VALUES ( NULL, '" + strUDPFrame.payload.log_datetime + "', '" + strUDPFrame.payload.log_type + "', '" + strUDPFrame.payload.log_content + "', (SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.log_missionhash + "'));";
|
strSQLQueryTxt += "INSERT INTO `pe_LogEvent` (`pe_LogEvent_id`, `pe_LogEvent_datetime`, `pe_LogEvent_type`, `pe_LogEvent_content`,`pe_LogEvent_missionhash_id`) VALUES ( NULL, '" + strUDPFrame.payload.log_datetime + "', '" + strUDPFrame.payload.log_type + "', '" + strUDPFrame.payload.log_content + "', (SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.log_missionhash + "'));";
|
||||||
}
|
}
|
||||||
else if (strUDPFrameType == "52")
|
else if (strUDPFrameType == "52")
|
||||||
@@ -55,8 +56,8 @@ internal class DatabaseController
|
|||||||
// Update user stats
|
// Update user stats
|
||||||
strUDPFramePayload = JsonConvert.SerializeObject(strUDPFrame.payload.stat_data); // Deserialize payload
|
strUDPFramePayload = JsonConvert.SerializeObject(strUDPFrame.payload.stat_data); // Deserialize payload
|
||||||
|
|
||||||
strSQLQueryTxt = "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`) SELECT '" + strUDPFrame.payload.stat_missionhash + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataMissionHashes` where `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "');";
|
strSQLQueryTxt = "INSERT INTO `pe_DataMissionHashes` (`pe_DataMissionHashes_hash`,`pe_DataMissionHashes_instance`) SELECT '" + strUDPFrame.payload.stat_missionhash + "','" + strUDPFrameInstance + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataMissionHashes` where `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "' AND `pe_DataMissionHashes_instance`=" + strUDPFrameInstance + ");";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataMissionHashes` SET `pe_DataMissionHashes_datetime` = " + strUDPFrameTimestamp + " WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "';";
|
strSQLQueryTxt += "UPDATE `pe_DataMissionHashes` SET `pe_DataMissionHashes_datetime` = " + strUDPFrameTimestamp + " WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "' AND `pe_DataMissionHashes_instance`=" + strUDPFrameInstance + " ;";
|
||||||
strSQLQueryTxt += "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) SELECT '" + strUDPFrame.payload.stat_ucid + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataPlayers` where `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.stat_ucid + "');";
|
strSQLQueryTxt += "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) SELECT '" + strUDPFrame.payload.stat_ucid + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataPlayers` where `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.stat_ucid + "');";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataPlayers` SET `pe_DataPlayers_updated`=" + strUDPFrameTimestamp + " WHERE `pe_DataPlayers_ucid`='" + strUDPFrame.payload.stat_ucid + "';";
|
strSQLQueryTxt += "UPDATE `pe_DataPlayers` SET `pe_DataPlayers_updated`=" + strUDPFrameTimestamp + " WHERE `pe_DataPlayers_ucid`='" + strUDPFrame.payload.stat_ucid + "';";
|
||||||
strSQLQueryTxt += "INSERT INTO `pe_LogStats` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`) SELECT (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.stat_ucid + "'), (SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "') FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_LogStats` WHERE `pe_LogStats_missionhash_id`=(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "') AND `pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.stat_ucid + "') );";
|
strSQLQueryTxt += "INSERT INTO `pe_LogStats` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`) SELECT (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.stat_ucid + "'), (SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "') FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_LogStats` WHERE `pe_LogStats_missionhash_id`=(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + strUDPFrame.payload.stat_missionhash + "') AND `pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + strUDPFrame.payload.stat_ucid + "') );";
|
||||||
@@ -68,15 +69,15 @@ internal class DatabaseController
|
|||||||
|
|
||||||
strSQLQueryTxt = "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) SELECT '" + strUDPFrame.payload.login_ucid + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataPlayers` where pe_DataPlayers_ucid='" + strUDPFrame.payload.login_ucid + "');";
|
strSQLQueryTxt = "INSERT INTO `pe_DataPlayers` (`pe_DataPlayers_ucid`) SELECT '" + strUDPFrame.payload.login_ucid + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataPlayers` where pe_DataPlayers_ucid='" + strUDPFrame.payload.login_ucid + "');";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataPlayers` SET pe_DataPlayers_lastip='" + strUDPFrame.payload.login_ipaddr + "', pe_DataPlayers_lastname='" + strUDPFrame.payload.login_name + "',pe_DataPlayers_updated='" + strUDPFrame.payload.login_datetime + "' WHERE `pe_DataPlayers_ucid`= '" + strUDPFrame.payload.login_ucid + "';";
|
strSQLQueryTxt += "UPDATE `pe_DataPlayers` SET pe_DataPlayers_lastip='" + strUDPFrame.payload.login_ipaddr + "', pe_DataPlayers_lastname='" + strUDPFrame.payload.login_name + "',pe_DataPlayers_updated='" + strUDPFrame.payload.login_datetime + "' WHERE `pe_DataPlayers_ucid`= '" + strUDPFrame.payload.login_ucid + "';";
|
||||||
strSQLQueryTxt += "INSERT INTO `pe_LogLogins` (`pe_LogLogins_datetime`, `pe_LogLogins_playerid`, `pe_LogLogins_name`, `pe_LogLogins_ip`) VALUES ('" + strUDPFrame.payload.login_datetime + "', (SELECT pe_DataPlayers_id from pe_DataPlayers WHERE pe_DataPlayers_ucid = '" + strUDPFrame.payload.login_ucid + "'), '" + strUDPFrame.payload.login_name + "', '" + strUDPFrame.payload.login_ipaddr + "');";
|
strSQLQueryTxt += "INSERT INTO `pe_LogLogins` (`pe_LogLogins_datetime`, `pe_LogLogins_playerid`, `pe_LogLogins_name`, `pe_LogLogins_ip`,`pe_LogLogins_instance`) VALUES ('" + strUDPFrame.payload.login_datetime + "', (SELECT pe_DataPlayers_id from pe_DataPlayers WHERE pe_DataPlayers_ucid = '" + strUDPFrame.payload.login_ucid + "'), '" + strUDPFrame.payload.login_name + "', '" + strUDPFrame.payload.login_ipaddr + "','"+ strUDPFrameInstance + "');";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// General definition used for 1-10 type packets
|
// General definition used for 1-10 type packets
|
||||||
strUDPFramePayload = JsonConvert.SerializeObject(strUDPFrame.payload); // Deserialize payload
|
strUDPFramePayload = JsonConvert.SerializeObject(strUDPFrame.payload); // Deserialize payload
|
||||||
|
|
||||||
strSQLQueryTxt = "INSERT INTO `pe_DataRaw` (`pe_dataraw_type`) SELECT '" + strUDPFrameType + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataRaw` WHERE pe_dataraw_type = '" + strUDPFrameType + "' );";
|
strSQLQueryTxt = "INSERT INTO `pe_DataRaw` (`pe_dataraw_type`,`pe_dataraw_instance`) SELECT '" + strUDPFrameType + "','"+ strUDPFrameInstance + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataRaw` WHERE `pe_dataraw_type` = '" + strUDPFrameType + "' AND `pe_dataraw_instance` = " + strUDPFrameInstance + ");";
|
||||||
strSQLQueryTxt += "UPDATE `pe_DataRaw` SET `pe_dataraw_payload` = JSON_QUOTE('" + strUDPFramePayload + "'), `pe_dataraw_updated`=" + strUDPFrameTimestamp + " WHERE `pe_dataraw_type`=" + strUDPFrameType + ";";
|
strSQLQueryTxt += "UPDATE `pe_DataRaw` SET `pe_dataraw_payload` = JSON_QUOTE('" + strUDPFramePayload + "'), `pe_dataraw_updated`=" + strUDPFrameTimestamp + " WHERE `pe_dataraw_type`=" + strUDPFrameType + " AND `pe_dataraw_instance` = "+ strUDPFrameInstance + ";";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect to mysql and execute sql
|
// Connect to mysql and execute sql
|
||||||
|
|||||||
@@ -323,11 +323,11 @@ namespace Perun_v1
|
|||||||
if (raw_lotatc.Count > 0)
|
if (raw_lotatc.Count > 0)
|
||||||
{
|
{
|
||||||
strSRSJson = JsonConvert.SerializeObject(raw_lotatc);
|
strSRSJson = JsonConvert.SerializeObject(raw_lotatc);
|
||||||
strSRSJson = "{'type':'100','payload':'" + strSRSJson + "'}";
|
strSRSJson = "{'type':'100','instance':'1','payload':'" + strSRSJson + "'}";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strSRSJson = "{'type':'100','payload':{'ignore':'false'}}"; // No SRS clients connected
|
strSRSJson = "{'type':'100','instance':'1','payload':{'ignore':'false'}}"; // No SRS clients connected
|
||||||
}
|
}
|
||||||
boolSRSdefault = false;
|
boolSRSdefault = false;
|
||||||
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "SRS data loaded");
|
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "SRS data loaded");
|
||||||
@@ -342,7 +342,7 @@ namespace Perun_v1
|
|||||||
}
|
}
|
||||||
if (boolSRSdefault)
|
if (boolSRSdefault)
|
||||||
{
|
{
|
||||||
strSRSJson = "{'type':'100','payload':{'ignore':'true'}}";
|
strSRSJson = "{'type':'100','instance':'1','payload':{'ignore':'true'}}";
|
||||||
}
|
}
|
||||||
DatabaseController.SendToMySql(strSRSJson);
|
DatabaseController.SendToMySql(strSRSJson);
|
||||||
|
|
||||||
@@ -354,7 +354,7 @@ namespace Perun_v1
|
|||||||
strLotATCJson = System.IO.File.ReadAllText(con_txt_3rd_lotatc.Text);
|
strLotATCJson = System.IO.File.ReadAllText(con_txt_3rd_lotatc.Text);
|
||||||
dynamic raw_srs = JsonConvert.DeserializeObject(strLotATCJson);
|
dynamic raw_srs = JsonConvert.DeserializeObject(strLotATCJson);
|
||||||
|
|
||||||
strLotATCJson = "{'type':'101','payload':'" + strLotATCJson + "'}";
|
strLotATCJson = "{'type':'101','instance':'1','payload':'" + strLotATCJson + "'}";
|
||||||
boolLotATCdefault = false;
|
boolLotATCdefault = false;
|
||||||
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "LotATC data loaded");
|
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "LotATC data loaded");
|
||||||
}
|
}
|
||||||
@@ -368,7 +368,7 @@ namespace Perun_v1
|
|||||||
|
|
||||||
if (boolLotATCdefault)
|
if (boolLotATCdefault)
|
||||||
{
|
{
|
||||||
strLotATCJson = "{'type':'101','payload':{'ignore':'true'}}"; // No LotATC controller connected
|
strLotATCJson = "{'type':'101','instance':'1','payload':{'ignore':'true'}}"; // No LotATC controller connected
|
||||||
}
|
}
|
||||||
DatabaseController.SendToMySql(strLotATCJson);
|
DatabaseController.SendToMySql(strLotATCJson);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
<SuiteName>Perun</SuiteName>
|
<SuiteName>Perun</SuiteName>
|
||||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||||
<WebPage>Perun.htm</WebPage>
|
<WebPage>Perun.htm</WebPage>
|
||||||
<ApplicationRevision>2</ApplicationRevision>
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
<ApplicationVersion>0.4.0.%2a</ApplicationVersion>
|
<ApplicationVersion>0.4.1.%2a</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ USE `m1081_perun`;
|
|||||||
DROP TABLE IF EXISTS `pe_DataMissionHashes`;
|
DROP TABLE IF EXISTS `pe_DataMissionHashes`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_DataMissionHashes` (
|
CREATE TABLE IF NOT EXISTS `pe_DataMissionHashes` (
|
||||||
`pe_DataMissionHashes_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
`pe_DataMissionHashes_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`pe_DataMissionHashes_instance` smallint(5) UNSIGNED NOT NULL,
|
||||||
`pe_DataMissionHashes_hash` varchar(150) NOT NULL,
|
`pe_DataMissionHashes_hash` varchar(150) NOT NULL,
|
||||||
`pe_DataMissionHashes_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`pe_DataMissionHashes_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`pe_DataMissionHashes_id`),
|
PRIMARY KEY (`pe_DataMissionHashes_id`),
|
||||||
@@ -57,9 +58,10 @@ CREATE TABLE IF NOT EXISTS `pe_DataPlayers` (
|
|||||||
DROP TABLE IF EXISTS `pe_DataRaw`;
|
DROP TABLE IF EXISTS `pe_DataRaw`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_DataRaw` (
|
CREATE TABLE IF NOT EXISTS `pe_DataRaw` (
|
||||||
`pe_dataraw_type` tinyint(4) NOT NULL,
|
`pe_dataraw_type` tinyint(4) NOT NULL,
|
||||||
|
`pe_dataraw_instance` smallint(5) UNSIGNED NOT NULL,
|
||||||
`pe_dataraw_payload` text NOT NULL,
|
`pe_dataraw_payload` text NOT NULL,
|
||||||
`pe_dataraw_updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`pe_dataraw_updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`pe_dataraw_type`)
|
PRIMARY KEY (`pe_dataraw_type`,`pe_dataraw_instance`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
@@ -105,6 +107,7 @@ DROP TABLE IF EXISTS `pe_LogLogins`;
|
|||||||
CREATE TABLE IF NOT EXISTS `pe_LogLogins` (
|
CREATE TABLE IF NOT EXISTS `pe_LogLogins` (
|
||||||
`pe_LogLogins_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
`pe_LogLogins_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
`pe_LogLogins_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`pe_LogLogins_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`pe_LogLogins_instance` smallint(5) UNSIGNED NOT NULL,
|
||||||
`pe_LogLogins_playerid` bigint(20) DEFAULT NULL,
|
`pe_LogLogins_playerid` bigint(20) DEFAULT NULL,
|
||||||
`pe_LogLogins_name` varchar(150) NOT NULL,
|
`pe_LogLogins_name` varchar(150) NOT NULL,
|
||||||
`pe_LogLogins_ip` varchar(100) NOT NULL,
|
`pe_LogLogins_ip` varchar(100) NOT NULL,
|
||||||
|
|||||||
25
README.md
25
README.md
@@ -1,3 +1,8 @@
|
|||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
# Perun for DCS World
|
# Perun for DCS World
|
||||||
|
|
||||||
This toolset extracts data from DCS World server and sends information to the local Json file and UDP port for further processing.
|
This toolset extracts data from DCS World server and sends information to the local Json file and UDP port for further processing.
|
||||||
@@ -38,20 +43,20 @@ Core:
|
|||||||
* Data shall be filling your MySQL database
|
* Data shall be filling your MySQL database
|
||||||
|
|
||||||
## Data packets
|
## Data packets
|
||||||
* ID: 1, contains version/diagnostic information
|
* ```ID: 1```, contains version/diagnostic information
|
||||||
* ID: 2, contains status data in the following sections
|
* ```ID: 2```, contains status data in the following sections
|
||||||
* mission - minimal information about mission
|
* mission - minimal information about mission
|
||||||
* players - connected players
|
* players - connected players
|
||||||
* ID: 3, available slots list and coalitions
|
* ```ID: 3```, available slots list and coalitions
|
||||||
* coalitions - available coalitions
|
* coalitions - available coalitions
|
||||||
* slots - available slots
|
* slots - available slots
|
||||||
* ID: 4, stores mission data **WIP: not yet implemented**
|
* ```ID: 4```, stores mission data **WIP: not yet implemented**
|
||||||
* ID: 50, chat event
|
* ```ID: 50```, chat event
|
||||||
* ID: 51, game event
|
* ```ID: 51```, game event
|
||||||
* ID: 52, player stats **WIP: not yet implemented**
|
* ```ID: 52```, player stats **WIP: not yet implemented**
|
||||||
* ID: 53, player login to DCS server
|
* ```ID: 53```, player login to DCS server
|
||||||
* ID: 100, DCS SRS's client-list.json
|
* ```ID: 100```, DCS SRS's client-list.json
|
||||||
* ID: 101, LotATC's stats.json
|
* ```ID: 101```, LotATC's stats.json
|
||||||
|
|
||||||
## Built With
|
## Built With
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user