mirror of
https://github.com/DaKerboul/perun.git
synced 2026-08-09 18:05:40 +02:00
@@ -9,9 +9,9 @@ package.cpath = package.cpath..";"..lfs.currentdir().."/LuaSocket/?.dll"
|
|||||||
|
|
||||||
Perun.RefreshStatus = 15 -- (int) [default: 60] Base refresh rate in seconds to send status update
|
Perun.RefreshStatus = 15 -- (int) [default: 60] Base refresh rate in seconds to send status update
|
||||||
Perun.RefreshMission = 60 -- (int) [default: 120] Refresh rate in seconds to send mission information
|
Perun.RefreshMission = 60 -- (int) [default: 120] Refresh rate in seconds to send mission information
|
||||||
Perun.TCPTargetPort = 48622 -- (int) [default: 48621] TCP port to send data to
|
Perun.TCPTargetPort = 48620 -- (int) [default: 48621] TCP port to send data to
|
||||||
Perun.TCPPerunHost = "localhost" -- (string) [default: "localhost"] IP adress of the Perun instance or "localhost"
|
Perun.TCPPerunHost = "localhost" -- (string) [default: "localhost"] IP adress of the Perun instance or "localhost"
|
||||||
Perun.Instance = 2 -- (int) [default: 1] Id number of instance (if multiple DCS instances are to run at the same PC)
|
Perun.Instance = 1 -- (int) [default: 1] Id number of instance (if multiple DCS instances are to run at the same PC)
|
||||||
Perun.JsonStatusLocation = "Scripts\\Json\\" -- (string) [default: "Scripts\\Json\\"] Folder relative do user's SaveGames DCS folder -> status file updated each RefreshMission
|
Perun.JsonStatusLocation = "Scripts\\Json\\" -- (string) [default: "Scripts\\Json\\"] Folder relative do user's SaveGames DCS folder -> status file updated each RefreshMission
|
||||||
Perun.MissionStartNoDeathWindow = 300 -- (int) [default: 300] Number of secounds after mission start when death of the pilot will not go to statistics, shall avoid death penalty during spawning DCS bugs
|
Perun.MissionStartNoDeathWindow = 300 -- (int) [default: 300] Number of secounds after mission start when death of the pilot will not go to statistics, shall avoid death penalty during spawning DCS bugs
|
||||||
Perun.DebugMode = 2 -- (int) [0 (default),1,2] Value greater than 0 will display Perun information in DCS log file, values: 1 - minimal verbose, 2 - all log information will be logged
|
Perun.DebugMode = 2 -- (int) [0 (default),1,2] Value greater than 0 will display Perun information in DCS log file, values: 1 - minimal verbose, 2 - all log information will be logged
|
||||||
@@ -22,24 +22,27 @@ Perun.MOTD_L2 = "Wymagamy obecnosci DCS SRS oraz TeamSpeak - szczegoly na forum"
|
|||||||
-- ###################### END OF SETTINGS - DO NOT MODIFY OUTSIDE THIS SECTION ######################
|
-- ###################### END OF SETTINGS - DO NOT MODIFY OUTSIDE THIS SECTION ######################
|
||||||
|
|
||||||
-- Variable init
|
-- Variable init
|
||||||
Perun.Version = "v0.9.1"
|
Perun.Version = "v0.9.2"
|
||||||
Perun.StatusData = {}
|
Perun.StatusData = {}
|
||||||
Perun.SlotsData = {}
|
Perun.SlotsData = {}
|
||||||
Perun.MissionData = {}
|
Perun.MissionData = {}
|
||||||
Perun.ServerData = {}
|
Perun.ServerData = {}
|
||||||
Perun.StatData = {}
|
Perun.StatData = {}
|
||||||
Perun.StatDataLastType = {}
|
Perun.StatDataLastType = {}
|
||||||
|
Perun.PlayersTableCache = {}
|
||||||
Perun.MissionHash=""
|
Perun.MissionHash=""
|
||||||
|
Perun.ReconnectTimeout = 30
|
||||||
Perun.lastSentStatus = 0
|
Perun.lastSentStatus = 0
|
||||||
Perun.lastSentMission = 0
|
Perun.lastSentMission = 0
|
||||||
Perun.lastSentKeepAlive = 0
|
Perun.lastSentKeepAlive = 0
|
||||||
Perun.lastConnectionError = 0
|
Perun.lastConnectionError = 0
|
||||||
Perun.lastReconnect = 0
|
Perun.lastTimer = 0
|
||||||
Perun.SendRetries = 3
|
Perun.lastReconnect = (-1) * Perun.ReconnectTimeout
|
||||||
|
Perun.SendRetries = 2
|
||||||
Perun.RefreshKeepAlive = 3
|
Perun.RefreshKeepAlive = 3
|
||||||
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.IsServer = DCS.isServer( )
|
||||||
Perun.ConnectionError = "[Perun] ERROR: Connection broken - contact server admin!"
|
Perun.ConnectionError = "[Perun] ERROR: Connection broken - contact server admin!"
|
||||||
|
|
||||||
-- ################################ Helper function definitions ################################
|
-- ################################ Helper function definitions ################################
|
||||||
@@ -134,7 +137,7 @@ function stripChars(str)
|
|||||||
end
|
end
|
||||||
|
|
||||||
Perun.GetCategory = function(id)
|
Perun.GetCategory = function(id)
|
||||||
-- Helper function returns object category basing on I via https://pastebin.com/GUAXrd2U TBD: rewrite
|
-- Helper function returns object category basing on https://pastebin.com/GUAXrd2U
|
||||||
local _killed_target_category = DCS.getUnitTypeAttribute(id, "category")
|
local _killed_target_category = DCS.getUnitTypeAttribute(id, "category")
|
||||||
|
|
||||||
-- Below, simple hack to get the propper category when DCS API is not returning correct value
|
-- Below, simple hack to get the propper category when DCS API is not returning correct value
|
||||||
@@ -179,11 +182,15 @@ end
|
|||||||
Perun.GetMulticrewAllParameters = function (PlayerId)
|
Perun.GetMulticrewAllParameters = function (PlayerId)
|
||||||
-- Gets all multicrew parameters
|
-- Gets all multicrew parameters
|
||||||
local _result = ""
|
local _result = ""
|
||||||
local _player_slot=net.get_player_info(PlayerId, 'slot')
|
|
||||||
local _master_type= "?"
|
local _master_type= "?"
|
||||||
local _master_slot = nil
|
local _master_slot = nil
|
||||||
local _sub_slot = nil
|
local _sub_slot = nil
|
||||||
|
|
||||||
|
local _player_slot = net.get_player_info(PlayerId, 'slot')
|
||||||
|
if not _player_slot then
|
||||||
|
_player_slot=Perun.PlayersTableCache["p"..PlayerId].slot
|
||||||
|
end
|
||||||
|
|
||||||
if _player_slot and _player_slot ~= '' and not (string.find(_player_slot, 'red') or string.find(_player_slot, 'blue')) then
|
if _player_slot and _player_slot ~= '' and not (string.find(_player_slot, 'red') or string.find(_player_slot, 'blue')) then
|
||||||
-- Player took model
|
-- Player took model
|
||||||
_master_slot = _player_slot
|
_master_slot = _player_slot
|
||||||
@@ -214,6 +221,9 @@ Perun.GetMulticrewAllParameters = function (PlayerId)
|
|||||||
end
|
end
|
||||||
_master_slot = -1
|
_master_slot = -1
|
||||||
_sub_slot = 0
|
_sub_slot = 0
|
||||||
|
else
|
||||||
|
_master_slot = -1
|
||||||
|
_sub_slot = -1
|
||||||
end
|
end
|
||||||
return _master_type,_master_slot,_sub_slot
|
return _master_type,_master_slot,_sub_slot
|
||||||
end
|
end
|
||||||
@@ -278,6 +288,29 @@ Perun.GetMulticrewCrewNames = function (owner_playerID)
|
|||||||
return _result_text
|
return _result_text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Perun.GetTakeOffLandingEvent = function (takeoff,location)
|
||||||
|
-- Get correct event type for statistics basing on objecy which served as runway/farp
|
||||||
|
local _operation = ""
|
||||||
|
if takeoff == true then
|
||||||
|
_operation="tookoff_"
|
||||||
|
else
|
||||||
|
_operation="landing_"
|
||||||
|
end
|
||||||
|
|
||||||
|
local _temp_type = ""
|
||||||
|
if string.find(location, "FARP",1,true) then
|
||||||
|
_temp_type = "FARP"
|
||||||
|
elseif string.find(location, "CVN-74 John C. Stennis",1,true) or string.find(location, "LHA-1 Tarawa",1,true) or string.find(location, "SHIP",1,true) then
|
||||||
|
_temp_type = "SHIP"
|
||||||
|
elseif location ~= "" then
|
||||||
|
_temp_type = "AIRFIELD"
|
||||||
|
else
|
||||||
|
_temp_type = "OTHER"
|
||||||
|
end
|
||||||
|
|
||||||
|
return _operation .. _temp_type
|
||||||
|
end
|
||||||
|
|
||||||
-- ################################ TCP Connection ################################
|
-- ################################ TCP Connection ################################
|
||||||
|
|
||||||
Perun.ConnectToPerun = function ()
|
Perun.ConnectToPerun = function ()
|
||||||
@@ -293,8 +326,9 @@ Perun.ConnectToPerun = function ()
|
|||||||
else
|
else
|
||||||
-- Connected
|
-- Connected
|
||||||
Perun.AddLog("Success - connected to TCP server",2)
|
Perun.AddLog("Success - connected to TCP server",2)
|
||||||
Perun.lastReconnect = _now
|
|
||||||
end
|
end
|
||||||
|
local _now = DCS.getRealTime()
|
||||||
|
Perun.lastReconnect = _now
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.SendToPerun = function(data_id, data_package)
|
Perun.SendToPerun = function(data_id, data_package)
|
||||||
@@ -315,12 +349,15 @@ Perun.SendToPerun = function(data_id, data_package)
|
|||||||
local _dropped = true
|
local _dropped = true
|
||||||
|
|
||||||
-- Try to send a few times (defind in settings section)
|
-- Try to send a few times (defind in settings section)
|
||||||
|
local _now = DCS.getRealTime()
|
||||||
while _intStatus == nil and _intTries < Perun.SendRetries do
|
while _intStatus == nil and _intTries < Perun.SendRetries do
|
||||||
_intStatus, _err = Perun.TCP:send(_TCPFrame)
|
_intStatus, _err = Perun.TCP:send(_TCPFrame)
|
||||||
if _err then
|
if _err then
|
||||||
-- Failure, packet was not send
|
-- Failure, packet was not send
|
||||||
Perun.AddLog("Packed not send : " .. data_id .. " , error: " .. _err .. ", tries: " .. _intTries,2)
|
Perun.AddLog("Packed not send : " .. data_id .. " , error: " .. _err .. ", tries: " .. _intTries,2)
|
||||||
|
if _now > Perun.lastReconnect + Perun.ReconnectTimeout then
|
||||||
Perun.ConnectToPerun()
|
Perun.ConnectToPerun()
|
||||||
|
end
|
||||||
else
|
else
|
||||||
-- Succes, packet was send
|
-- Succes, packet was send
|
||||||
Perun.AddLog("Packet send : " .. data_id .. " , tries:" .. _intTries,2)
|
Perun.AddLog("Packet send : " .. data_id .. " , tries:" .. _intTries,2)
|
||||||
@@ -332,8 +369,7 @@ Perun.SendToPerun = function(data_id, data_package)
|
|||||||
if _dropped == true then
|
if _dropped == true then
|
||||||
-- Add information to log file and send chat message to all that Perun connection is broken
|
-- Add information to log file and send chat message to all that Perun connection is broken
|
||||||
Perun.AddLog("ERROR - packed dropped : " .. data_id,1)
|
Perun.AddLog("ERROR - packed dropped : " .. data_id,1)
|
||||||
local _now = DCS.getRealTime()
|
if _now > Perun.lastConnectionError + Perun.ReconnectTimeout then
|
||||||
if _now > Perun.lastConnectionError + 60 then
|
|
||||||
-- Informs all players that there is Peron error; below hack for DCS net.send_chat not working
|
-- Informs all players that there is Peron error; below hack for DCS net.send_chat not working
|
||||||
local _all_players = net.get_player_list()
|
local _all_players = net.get_player_list()
|
||||||
for PlayerIDIndex, _playerID in ipairs(_all_players) do
|
for PlayerIDIndex, _playerID in ipairs(_all_players) do
|
||||||
@@ -390,8 +426,8 @@ Perun.LogStats = function(playerID)
|
|||||||
_TempData['stat_data_type']= _PlayerStatsTable['ps_type'];
|
_TempData['stat_data_type']= _PlayerStatsTable['ps_type'];
|
||||||
_TempData['stat_data_masterslot'] = _PlayerStatsTable['ps_masterslot'];
|
_TempData['stat_data_masterslot'] = _PlayerStatsTable['ps_masterslot'];
|
||||||
_TempData['stat_data_subslot'] = _PlayerStatsTable['ps_subslot'];
|
_TempData['stat_data_subslot'] = _PlayerStatsTable['ps_subslot'];
|
||||||
_TempData['stat_ucid']=net.get_player_info(playerID, 'ucid')
|
_TempData['stat_ucid']=_PlayerStatsTable['ps_ucid'];
|
||||||
_TempData['stat_name']=net.get_player_info(playerID, 'name')
|
_TempData['stat_name']=_PlayerStatsTable['ps_name'];
|
||||||
_TempData['stat_datetime']=os.date('%Y-%m-%d %H:%M:%S')
|
_TempData['stat_datetime']=os.date('%Y-%m-%d %H:%M:%S')
|
||||||
_TempData['stat_missionhash']=Perun.MissionHash
|
_TempData['stat_missionhash']=Perun.MissionHash
|
||||||
|
|
||||||
@@ -399,6 +435,16 @@ Perun.LogStats = function(playerID)
|
|||||||
Perun.SendToPerun(52,_TempData)
|
Perun.SendToPerun(52,_TempData)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Perun.LogAllStats = function()
|
||||||
|
-- Log all players data
|
||||||
|
local _all_players = net.get_player_list()
|
||||||
|
for PlayerIDIndex, _playerID in ipairs(_all_players) do
|
||||||
|
if _playerID ~= 1 then
|
||||||
|
Perun.LogStats(_playerID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
Perun.LogLogin = function(playerID)
|
Perun.LogLogin = function(playerID)
|
||||||
-- Player logged in
|
-- Player logged in
|
||||||
local _TempData={}
|
local _TempData={}
|
||||||
@@ -413,13 +459,18 @@ end
|
|||||||
|
|
||||||
--- ################################ Calculate stats ################################
|
--- ################################ Calculate stats ################################
|
||||||
|
|
||||||
Perun.LogStatsCount = function(argPlayerID,argAction)
|
Perun.LogStatsCount = function(argPlayerID,argAction,argTimer)
|
||||||
-- Creates or updates Perun statistics array
|
-- Creates or updates Perun statistics array
|
||||||
local _player_hash=net.get_player_info(argPlayerID, 'ucid')..Perun.GetMulticrewParameter(argPlayerID,"subtype")
|
local _player_hash=net.get_player_info(argPlayerID, 'ucid')..Perun.GetMulticrewParameter(argPlayerID,"subtype")
|
||||||
|
|
||||||
|
-- By default we will be sending stats
|
||||||
|
argTimer = argTimer or false
|
||||||
|
|
||||||
if Perun.StatData[_player_hash] == nil then
|
if Perun.StatData[_player_hash] == nil then
|
||||||
-- Create empty element
|
-- Create empty element
|
||||||
local _TempData={}
|
local _TempData={}
|
||||||
|
_TempData['ps_ucid'] = net.get_player_info(argPlayerID, 'ucid')
|
||||||
|
_TempData['ps_name'] = net.get_player_info(argPlayerID, 'name')
|
||||||
_TempData['ps_type'] = Perun.GetMulticrewParameter(argPlayerID,"subtype")
|
_TempData['ps_type'] = Perun.GetMulticrewParameter(argPlayerID,"subtype")
|
||||||
_TempData['ps_masterslot'] = Perun.GetMulticrewParameter(argPlayerID,"masterslot")
|
_TempData['ps_masterslot'] = Perun.GetMulticrewParameter(argPlayerID,"masterslot")
|
||||||
_TempData['ps_subslot'] = Perun.GetMulticrewParameter(argPlayerID,"subslot")
|
_TempData['ps_subslot'] = Perun.GetMulticrewParameter(argPlayerID,"subslot")
|
||||||
@@ -428,6 +479,7 @@ Perun.LogStatsCount = function(argPlayerID,argAction)
|
|||||||
_TempData['ps_ejections'] = 0
|
_TempData['ps_ejections'] = 0
|
||||||
_TempData['ps_crashes'] = 0
|
_TempData['ps_crashes'] = 0
|
||||||
_TempData['ps_teamkills'] = 0
|
_TempData['ps_teamkills'] = 0
|
||||||
|
_TempData['ps_time'] = 0
|
||||||
_TempData['ps_kills_planes'] = 0
|
_TempData['ps_kills_planes'] = 0
|
||||||
_TempData['ps_kills_helicopters'] = 0
|
_TempData['ps_kills_helicopters'] = 0
|
||||||
_TempData['ps_kills_air_defense'] = 0
|
_TempData['ps_kills_air_defense'] = 0
|
||||||
@@ -449,14 +501,11 @@ Perun.LogStatsCount = function(argPlayerID,argAction)
|
|||||||
Perun.StatData[_player_hash]=_TempData
|
Perun.StatData[_player_hash]=_TempData
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TBD BELLOW SEEMS TO BE OBSOLETE, CHECK AND DELETE
|
if Perun.GetMulticrewParameter(argPlayerID,"subtype") ~= nil then
|
||||||
if argType ~= nil then
|
|
||||||
Perun.StatData[_player_hash]['ps_type']=Perun.GetMulticrewParameter(argPlayerID,"subtype");
|
|
||||||
Perun.StatDataLastType[net.get_player_info(argPlayerID, 'ucid')]=_player_hash
|
Perun.StatDataLastType[net.get_player_info(argPlayerID, 'ucid')]=_player_hash
|
||||||
else
|
else
|
||||||
-- Do nothing
|
-- Do nothing
|
||||||
end
|
end
|
||||||
-- TBD ABOVE SEEMS TO BE OBSOLETE, CHECK AND DELETE
|
|
||||||
|
|
||||||
if argAction == "eject" then
|
if argAction == "eject" then
|
||||||
Perun.StatData[_player_hash]['ps_ejections']=Perun.StatData[_player_hash]['ps_ejections']+1
|
Perun.StatData[_player_hash]['ps_ejections']=Perun.StatData[_player_hash]['ps_ejections']+1
|
||||||
@@ -505,6 +554,8 @@ Perun.LogStatsCount = function(argPlayerID,argAction)
|
|||||||
Perun.StatData[_player_hash]['ps_other_landings']=Perun.StatData[_player_hash]['ps_other_landings']+1
|
Perun.StatData[_player_hash]['ps_other_landings']=Perun.StatData[_player_hash]['ps_other_landings']+1
|
||||||
elseif argAction == "tookoff_OTHER" then
|
elseif argAction == "tookoff_OTHER" then
|
||||||
Perun.StatData[_player_hash]['ps_other_takeoffs']=Perun.StatData[_player_hash]['ps_other_takeoffs']+1
|
Perun.StatData[_player_hash]['ps_other_takeoffs']=Perun.StatData[_player_hash]['ps_other_takeoffs']+1
|
||||||
|
elseif argAction == "timer" then
|
||||||
|
Perun.StatData[_player_hash]['ps_time']=Perun.StatData[_player_hash]['ps_time']+1
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Always update slots
|
-- Always update slots
|
||||||
@@ -512,7 +563,11 @@ Perun.LogStatsCount = function(argPlayerID,argAction)
|
|||||||
Perun.StatData[_player_hash]['ps_subslot'] = Perun.GetMulticrewParameter(argPlayerID,"subslot")
|
Perun.StatData[_player_hash]['ps_subslot'] = Perun.GetMulticrewParameter(argPlayerID,"subslot")
|
||||||
|
|
||||||
Perun.AddLog("Stats data prepared",2)
|
Perun.AddLog("Stats data prepared",2)
|
||||||
|
|
||||||
|
-- If this is timer request do not send data to database
|
||||||
|
if argTimer ~= true then
|
||||||
Perun.LogStats(argPlayerID);
|
Perun.LogStats(argPlayerID);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.LogStatsCountCrew = function (MasterPilotID,ActionType)
|
Perun.LogStatsCountCrew = function (MasterPilotID,ActionType)
|
||||||
@@ -525,22 +580,27 @@ end
|
|||||||
-- ################################ Data preparation ################################
|
-- ################################ Data preparation ################################
|
||||||
|
|
||||||
Perun.LogStatsGet = function(playerID)
|
Perun.LogStatsGet = function(playerID)
|
||||||
-- Gets Perun statistics array per player TBD rewrite
|
-- Gets Perun statistics array per player
|
||||||
local next = next -- Make next function local - this improves performance TBD
|
local next = next -- Make next function local - this improves performance
|
||||||
local _player_hash = nil
|
local _player_hash = nil
|
||||||
|
|
||||||
|
local _ucid = net.get_player_info(playerID, 'ucid')
|
||||||
|
if not _ucid then
|
||||||
|
_ucid=Perun.PlayersTableCache["p"..playerID].ucid
|
||||||
|
end
|
||||||
|
|
||||||
if next(Perun.StatDataLastType) == nil then
|
if next(Perun.StatDataLastType) == nil then
|
||||||
-- Array is empty
|
-- Array is empty
|
||||||
_player_hash=net.get_player_info(playerID, 'ucid')..Perun.GetMulticrewParameter(playerID,"subtype")
|
_player_hash=_ucid..Perun.GetMulticrewParameter(playerID,"subtype")
|
||||||
elseif Perun.StatDataLastType[net.get_player_info(playerID, 'ucid')]== nil then
|
elseif Perun.StatDataLastType[net.get_player_info(playerID, 'ucid')]== nil then
|
||||||
-- Last type entry is empty
|
-- Last type entry is empty
|
||||||
_player_hash=net.get_player_info(playerID, 'ucid')..Perun.GetMulticrewParameter(playerID,"subtype")
|
_player_hash=_ucid..Perun.GetMulticrewParameter(playerID,"subtype")
|
||||||
else
|
else
|
||||||
-- Return last type entry
|
-- Return last type entry
|
||||||
_player_hash=Perun.StatDataLastType[net.get_player_info(playerID, 'ucid')]
|
_player_hash=Perun.StatDataLastType[_ucid]
|
||||||
end
|
end
|
||||||
|
|
||||||
local next = next -- Make next function local - this improves performance TBD
|
local next = next -- Make next function local - this improves performance
|
||||||
if next(Perun.StatData) == nil then
|
if next(Perun.StatData) == nil then
|
||||||
-- Array is empty
|
-- Array is empty
|
||||||
Perun.LogStatsCount(playerID,'init') -- Init statistics
|
Perun.LogStatsCount(playerID,'init') -- Init statistics
|
||||||
@@ -554,21 +614,6 @@ Perun.LogStatsGet = function(playerID)
|
|||||||
return Perun.StatData[_player_hash];
|
return Perun.StatData[_player_hash];
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.UpdateJsonStatus = function()
|
|
||||||
-- Updates status json file
|
|
||||||
local _TempData={}
|
|
||||||
_TempData["1"]=Perun.ServerData
|
|
||||||
_TempData["2"]=Perun.StatusData
|
|
||||||
_TempData["3"]=Perun.SlotsData
|
|
||||||
-- _TempData["4"]=Perun.MissionData -- TBD: hangs for some large missions
|
|
||||||
|
|
||||||
-- Export data to JSON file
|
|
||||||
local _perun_export = io.open(Perun.JsonStatusLocation .. "perun_status_data.json", "w")
|
|
||||||
_perun_export:write(net.lua2json(_TempData) .. "\n")
|
|
||||||
_perun_export:close()
|
|
||||||
Perun.AddLog("Updated JSON",2)
|
|
||||||
end
|
|
||||||
|
|
||||||
Perun.UpdateStatus = function()
|
Perun.UpdateStatus = function()
|
||||||
-- Main function for status updates
|
-- Main function for status updates
|
||||||
|
|
||||||
@@ -650,6 +695,7 @@ Perun.onSimulationStart = function()
|
|||||||
Perun.LogEvent("SimStart","Mission " .. Perun.MissionHash .. " started",nil,nil);
|
Perun.LogEvent("SimStart","Mission " .. Perun.MissionHash .. " started",nil,nil);
|
||||||
Perun.StatData = {}
|
Perun.StatData = {}
|
||||||
Perun.StatDataLastType = {}
|
Perun.StatDataLastType = {}
|
||||||
|
Perun.PlayersTableCache = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.onSimulationStop = function()
|
Perun.onSimulationStop = function()
|
||||||
@@ -658,14 +704,21 @@ Perun.onSimulationStop = function()
|
|||||||
Perun.MissionHash=Perun.GenerateMissionHash();
|
Perun.MissionHash=Perun.GenerateMissionHash();
|
||||||
Perun.StatData = {}
|
Perun.StatData = {}
|
||||||
Perun.StatDataLastType = {}
|
Perun.StatDataLastType = {}
|
||||||
|
Perun.LogAllStats()
|
||||||
|
Perun.PlayersTableCache = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.onPlayerDisconnect = function(id, err_code)
|
Perun.onPlayerDisconnect = function(id, err_code)
|
||||||
-- Player disconnected - TBD DCS Bug, this is not triggered at this point of time
|
-- Player disconnected
|
||||||
if err_code == nil then
|
Perun.LogEvent("disconnect", "Player " .. id .. " disconnected.(?)",nil,nil);
|
||||||
err_code = "-1"
|
|
||||||
end
|
return
|
||||||
Perun.LogEvent("disconnect", "Player " .. net.get_player_info(id, "name") .. " disconnected; " .. err_code,net.get_player_info(id, "name"),err_code);
|
end
|
||||||
|
|
||||||
|
Perun.onPlayerStop = function (id)
|
||||||
|
-- Player left the simulation (happens right before a disconnect, if player exited by desire)
|
||||||
|
Perun.LogEvent("quit", "Player " .. id .. " quit the server.",nil,nil);
|
||||||
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.onSimulationFrame = function()
|
Perun.onSimulationFrame = function()
|
||||||
@@ -682,7 +735,6 @@ Perun.onSimulationFrame = function()
|
|||||||
Perun.lastSentMission = _now
|
Perun.lastSentMission = _now
|
||||||
|
|
||||||
Perun.UpdateMission()
|
Perun.UpdateMission()
|
||||||
Perun.UpdateJsonStatus()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Send status update
|
-- Send status update
|
||||||
@@ -697,6 +749,19 @@ Perun.onSimulationFrame = function()
|
|||||||
Perun.lastSentKeepAlive = _now
|
Perun.lastSentKeepAlive = _now
|
||||||
Perun.SendToPerun(0,nil)
|
Perun.SendToPerun(0,nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Calucalate time on slot per each of players
|
||||||
|
if _now > Perun.lastTimer + 60 then
|
||||||
|
Perun.lastTimer = _now;
|
||||||
|
local _all_players = net.get_player_list()
|
||||||
|
for PlayerIDIndex, _playerID in ipairs(_all_players) do
|
||||||
|
if _playerID ~= 1 then
|
||||||
|
Perun.LogStatsCount(_playerID,"timer",true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
Perun.onPlayerStart = function (id)
|
Perun.onPlayerStart = function (id)
|
||||||
@@ -793,7 +858,6 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
elseif eventName == "change_slot" then
|
elseif eventName == "change_slot" then
|
||||||
--"change_slot", playerID, slotID, prevSide
|
--"change_slot", playerID, slotID, prevSide
|
||||||
|
|
||||||
Perun.LogStatsCount(arg1,"init")
|
|
||||||
_master_type,_master_slot,_sub_slot = Perun.GetMulticrewAllParameters(arg1)
|
_master_type,_master_slot,_sub_slot = Perun.GetMulticrewAllParameters(arg1)
|
||||||
if _sub_slot == nil then
|
if _sub_slot == nil then
|
||||||
_sub_slot =""
|
_sub_slot =""
|
||||||
@@ -802,16 +866,20 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
end
|
end
|
||||||
Perun.LogEvent(eventName,Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player " .. net.get_player_info(arg1, "name") .. " changed slot to " .. _master_type .. " " .. _sub_slot,nil,nil);
|
Perun.LogEvent(eventName,Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player " .. net.get_player_info(arg1, "name") .. " changed slot to " .. _master_type .. " " .. _sub_slot,nil,nil);
|
||||||
|
|
||||||
|
Perun.LogStats(arg1);
|
||||||
|
Perun.LogStatsCount(arg1,"init")
|
||||||
|
Perun.PlayersTableCache["p"..arg1]=net.get_player_info(arg1);
|
||||||
|
|
||||||
elseif eventName == "connect" then
|
elseif eventName == "connect" then
|
||||||
--"connect", playerID, name
|
--"connect", playerID, name
|
||||||
Perun.LogLogin(arg1);
|
Perun.LogLogin(arg1);
|
||||||
Perun.LogEvent(eventName,"Player "..net.get_player_info(arg1, "name") .. " connected",nil,nil);
|
Perun.LogEvent(eventName,"Player "..net.get_player_info(arg1, "name") .. " connected",nil,nil);
|
||||||
|
Perun.PlayersTableCache["p"..arg1]=net.get_player_info(arg1);
|
||||||
|
|
||||||
elseif eventName == "disconnect" then
|
elseif eventName == "disconnect" then
|
||||||
--"disconnect", playerID, name, playerSide, reason_code
|
--"disconnect", playerID, name, playerSide, reason_code
|
||||||
|
Perun.LogEvent(eventName,"Player " .. arg2 .. " disconnected (".. arg4 .. ")." ,arg4,nil);
|
||||||
Perun.LogStats(arg1);
|
Perun.LogStats(arg1);
|
||||||
Perun.LogEvent(eventName, Perun.SideID2Name(arg3) .. " player " ..net.get_player_info(arg1, "name") .. " disconnected",nil,nil);
|
|
||||||
|
|
||||||
elseif eventName == "crash" then
|
elseif eventName == "crash" then
|
||||||
--"crash", playerID, unit_missionID
|
--"crash", playerID, unit_missionID
|
||||||
@@ -831,19 +899,7 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
_temp_airfield = "";
|
_temp_airfield = "";
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TBD below shall be moved to function and arrays of strings - see landings
|
Perun.LogStatsCountCrew (arg1,Perun.GetTakeOffLandingEvent(true,arg3))
|
||||||
_temp_type = ""
|
|
||||||
if string.find(arg3, "FARP",1,true) then
|
|
||||||
_temp_type="tookoff_FARP"
|
|
||||||
elseif string.find(arg3, "CVN-74 John C. Stennis",1,true) or string.find(arg3, "LHA-1 Tarawa",1,true) or string.find(arg3, "SHIP",1,true) then
|
|
||||||
_temp_type="tookoff_SHIP"
|
|
||||||
elseif arg3 ~= "" then
|
|
||||||
_temp_type="tookoff_AIRFIELD"
|
|
||||||
else
|
|
||||||
_temp_type="tookoff_OTHER"
|
|
||||||
end
|
|
||||||
|
|
||||||
Perun.LogStatsCountCrew (arg1,_temp_type)
|
|
||||||
Perun.LogEvent(eventName, Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player(s) " .. Perun.GetMulticrewCrewNames(arg1) .. " took off in ".. DCS.getUnitType(arg2) .. _temp_airfield,arg3,nil);
|
Perun.LogEvent(eventName, Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player(s) " .. Perun.GetMulticrewCrewNames(arg1) .. " took off in ".. DCS.getUnitType(arg2) .. _temp_airfield,arg3,nil);
|
||||||
|
|
||||||
elseif eventName == "landing" then
|
elseif eventName == "landing" then
|
||||||
@@ -854,19 +910,7 @@ Perun.onGameEvent = function (eventName,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
|||||||
_temp_airfield ="";
|
_temp_airfield ="";
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TBD below shall be moved to function and arrays of strings - see takeoffs
|
Perun.LogStatsCountCrew (arg1,Perun.GetTakeOffLandingEvent(false,arg3))
|
||||||
_temp_type = ""
|
|
||||||
if string.find(arg3, "FARP",1,true) then
|
|
||||||
_temp_type = "landing_FARP"
|
|
||||||
elseif string.find(arg3, "CVN-74 John C. Stennis",1,true) or string.find(arg3, "LHA-1 Tarawa",1,true) or string.find(arg3, "SHIP",1,true) then
|
|
||||||
_temp_type = "landing_SHIP"
|
|
||||||
elseif arg3 ~= "" then
|
|
||||||
_temp_type = "landing_AIRFIELD"
|
|
||||||
else
|
|
||||||
_temp_type = "landing_OTHER"
|
|
||||||
end
|
|
||||||
|
|
||||||
Perun.LogStatsCountCrew (arg1,_temp_type)
|
|
||||||
Perun.LogEvent(eventName, Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player(s) " .. Perun.GetMulticrewCrewNames(arg1) .. " landed in " .. DCS.getUnitType(arg2).. _temp_airfield,arg3,nil);
|
Perun.LogEvent(eventName, Perun.SideID2Name( net.get_player_info(arg1, "side")) .. " player(s) " .. Perun.GetMulticrewCrewNames(arg1) .. " landed in " .. DCS.getUnitType(arg2).. _temp_airfield,arg3,nil);
|
||||||
|
|
||||||
elseif eventName == "pilot_death" then
|
elseif eventName == "pilot_death" then
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
[]
|
|
||||||
@@ -69,7 +69,7 @@ public class DatabaseController
|
|||||||
SQLQueryTxt += "UPDATE `pe_DataPlayers` SET `pe_DataPlayers_updated`=" + TCPFrameTimestamp + " WHERE `pe_DataPlayers_ucid`='" + TCPFrame.payload.stat_ucid + "';";
|
SQLQueryTxt += "UPDATE `pe_DataPlayers` SET `pe_DataPlayers_updated`=" + TCPFrameTimestamp + " WHERE `pe_DataPlayers_ucid`='" + TCPFrame.payload.stat_ucid + "';";
|
||||||
SQLQueryTxt += "INSERT INTO `pe_DataTypes` (`pe_DataTypes_name`) SELECT '" + TCPFrame.payload.stat_data_type + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "');";
|
SQLQueryTxt += "INSERT INTO `pe_DataTypes` (`pe_DataTypes_name`) SELECT '" + TCPFrame.payload.stat_data_type + "' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "');";
|
||||||
SQLQueryTxt += "INSERT INTO `pe_LogStats` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`,`pe_LogStats_typeid`) SELECT (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "'), (SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + TCPFrame.payload.stat_missionhash + "'), (SELECT pe_DataTypes_id FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "') 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` = '" + TCPFrame.payload.stat_missionhash + "') AND `pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "') AND `pe_LogStats_typeid`= (SELECT pe_DataTypes_id FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "'));";
|
SQLQueryTxt += "INSERT INTO `pe_LogStats` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`,`pe_LogStats_typeid`) SELECT (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "'), (SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + TCPFrame.payload.stat_missionhash + "'), (SELECT pe_DataTypes_id FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "') 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` = '" + TCPFrame.payload.stat_missionhash + "') AND `pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "') AND `pe_LogStats_typeid`= (SELECT pe_DataTypes_id FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "'));";
|
||||||
SQLQueryTxt += "UPDATE `pe_LogStats` SET `pe_LogStats_seat`=" + TCPFrame.payload.stat_data_subslot + ",`pe_LogStats_masterslot`=" + TCPFrame.payload.stat_data_masterslot + ",`ps_kills_fortification`=" + TCPFrame.payload.stat_data_perun.ps_kills_fortification + ",`ps_other_landings`=" + TCPFrame.payload.stat_data_perun.ps_other_landings + ",`ps_other_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_other_takeoffs + ",`ps_pvp`=" + TCPFrame.payload.stat_data_perun.ps_pvp + ",`ps_deaths`=" + TCPFrame.payload.stat_data_perun.ps_deaths + ",`ps_ejections`=" + TCPFrame.payload.stat_data_perun.ps_ejections + ",`ps_crashes`=" + TCPFrame.payload.stat_data_perun.ps_crashes + ",`ps_teamkills`=" + TCPFrame.payload.stat_data_perun.ps_teamkills + ",`ps_kills_planes`=" + TCPFrame.payload.stat_data_perun.ps_kills_planes + ",`ps_kills_helicopters`=" + TCPFrame.payload.stat_data_perun.ps_kills_helicopters + ",`ps_kills_air_defense`=" + TCPFrame.payload.stat_data_perun.ps_kills_air_defense + ",`ps_kills_armor`=" + TCPFrame.payload.stat_data_perun.ps_kills_armor + ",`ps_kills_unarmed`=" + TCPFrame.payload.stat_data_perun.ps_kills_unarmed + ",`ps_kills_infantry`=" + TCPFrame.payload.stat_data_perun.ps_kills_infantry + ",`ps_kills_ships`=" + TCPFrame.payload.stat_data_perun.ps_kills_ships + ",`ps_kills_other`=" + TCPFrame.payload.stat_data_perun.ps_kills_other + ",`ps_airfield_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_airfield_takeoffs + ",`ps_airfield_landings`=" + TCPFrame.payload.stat_data_perun.ps_airfield_landings + ",`ps_ship_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_ship_takeoffs + ",`ps_ship_landings`=" + TCPFrame.payload.stat_data_perun.ps_ship_landings + ",`ps_farp_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_farp_takeoffs + ",`ps_farp_landings`=" + TCPFrame.payload.stat_data_perun.ps_farp_landings + ", `pe_LogStats_datetime`='" + TCPFrame.payload.stat_datetime + "',`pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "'),`pe_LogStats_missionhash_id`=(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + TCPFrame.payload.stat_missionhash + "') WHERE `pe_LogStats_missionhash_id`=(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + TCPFrame.payload.stat_missionhash + "') AND `pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "') AND `pe_LogStats_typeid`=(SELECT pe_DataTypes_id FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "');";
|
SQLQueryTxt += "UPDATE `pe_LogStats` SET `ps_time`=" + TCPFrame.payload.stat_data_perun.ps_time + ",`pe_LogStats_seat`=" + TCPFrame.payload.stat_data_subslot + ",`pe_LogStats_masterslot`=" + TCPFrame.payload.stat_data_masterslot + ",`ps_kills_fortification`=" + TCPFrame.payload.stat_data_perun.ps_kills_fortification + ",`ps_other_landings`=" + TCPFrame.payload.stat_data_perun.ps_other_landings + ",`ps_other_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_other_takeoffs + ",`ps_pvp`=" + TCPFrame.payload.stat_data_perun.ps_pvp + ",`ps_deaths`=" + TCPFrame.payload.stat_data_perun.ps_deaths + ",`ps_ejections`=" + TCPFrame.payload.stat_data_perun.ps_ejections + ",`ps_crashes`=" + TCPFrame.payload.stat_data_perun.ps_crashes + ",`ps_teamkills`=" + TCPFrame.payload.stat_data_perun.ps_teamkills + ",`ps_kills_planes`=" + TCPFrame.payload.stat_data_perun.ps_kills_planes + ",`ps_kills_helicopters`=" + TCPFrame.payload.stat_data_perun.ps_kills_helicopters + ",`ps_kills_air_defense`=" + TCPFrame.payload.stat_data_perun.ps_kills_air_defense + ",`ps_kills_armor`=" + TCPFrame.payload.stat_data_perun.ps_kills_armor + ",`ps_kills_unarmed`=" + TCPFrame.payload.stat_data_perun.ps_kills_unarmed + ",`ps_kills_infantry`=" + TCPFrame.payload.stat_data_perun.ps_kills_infantry + ",`ps_kills_ships`=" + TCPFrame.payload.stat_data_perun.ps_kills_ships + ",`ps_kills_other`=" + TCPFrame.payload.stat_data_perun.ps_kills_other + ",`ps_airfield_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_airfield_takeoffs + ",`ps_airfield_landings`=" + TCPFrame.payload.stat_data_perun.ps_airfield_landings + ",`ps_ship_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_ship_takeoffs + ",`ps_ship_landings`=" + TCPFrame.payload.stat_data_perun.ps_ship_landings + ",`ps_farp_takeoffs`=" + TCPFrame.payload.stat_data_perun.ps_farp_takeoffs + ",`ps_farp_landings`=" + TCPFrame.payload.stat_data_perun.ps_farp_landings + ", `pe_LogStats_datetime`='" + TCPFrame.payload.stat_datetime + "',`pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "'),`pe_LogStats_missionhash_id`=(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + TCPFrame.payload.stat_missionhash + "') WHERE `pe_LogStats_missionhash_id`=(SELECT `pe_DataMissionHashes_id` FROM `pe_DataMissionHashes` WHERE `pe_DataMissionHashes_hash` = '" + TCPFrame.payload.stat_missionhash + "') AND `pe_LogStats_playerid` = (SELECT `pe_DataPlayers_id` from `pe_DataPlayers` WHERE `pe_DataPlayers_ucid` = '" + TCPFrame.payload.stat_ucid + "') AND `pe_LogStats_typeid`=(SELECT pe_DataTypes_id FROM `pe_DataTypes` where `pe_DataTypes_name` = '" + TCPFrame.payload.stat_data_type + "');";
|
||||||
}
|
}
|
||||||
else if (TCPFrameType == "53")
|
else if (TCPFrameType == "53")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ internal class PerunHelper
|
|||||||
Globals.AppUpdateGUI = true;
|
Globals.AppUpdateGUI = true;
|
||||||
}
|
}
|
||||||
// Add the entry to log file
|
// Add the entry to log file
|
||||||
LogController.WriteLog(DateTime.Now.ToString("yyyy-dd-MM ") + " " + DateTime.Now.ToString("HH:mm:ss") + " | Instance: "+ Globals.AppInstanceID + " | " + LogMarker + " | "+ LogDirection + " | "+ strType + " | " + strEntryToAdd);
|
LogController.WriteLog(DateTime.Now.ToString("yyyy-MM-dd ") + " " + DateTime.Now.ToString("HH:mm:ss") + " | Instance: "+ Globals.AppInstanceID + " | " + LogMarker + " | "+ LogDirection + " | "+ strType + " | " + strEntryToAdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetAppVersion(string strBeginning)
|
public static string GetAppVersion(string strBeginning)
|
||||||
|
|||||||
@@ -157,11 +157,11 @@
|
|||||||
// label6
|
// label6
|
||||||
//
|
//
|
||||||
this.label6.AutoSize = true;
|
this.label6.AutoSize = true;
|
||||||
this.label6.Location = new System.Drawing.Point(41, 48);
|
this.label6.Location = new System.Drawing.Point(19, 48);
|
||||||
this.label6.Name = "label6";
|
this.label6.Name = "label6";
|
||||||
this.label6.Size = new System.Drawing.Size(59, 13);
|
this.label6.Size = new System.Drawing.Size(81, 13);
|
||||||
this.label6.TabIndex = 9;
|
this.label6.TabIndex = 9;
|
||||||
this.label6.Text = "Server port";
|
this.label6.Text = "MySQL DB port";
|
||||||
//
|
//
|
||||||
// con_txt_mysql_port
|
// con_txt_mysql_port
|
||||||
//
|
//
|
||||||
@@ -198,20 +198,20 @@
|
|||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Location = new System.Drawing.Point(47, 74);
|
this.label2.Location = new System.Drawing.Point(18, 74);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(53, 13);
|
this.label2.Size = new System.Drawing.Size(82, 13);
|
||||||
this.label2.TabIndex = 4;
|
this.label2.TabIndex = 4;
|
||||||
this.label2.Text = "Database";
|
this.label2.Text = "Database name";
|
||||||
//
|
//
|
||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Location = new System.Drawing.Point(22, 22);
|
this.label1.Location = new System.Drawing.Point(3, 22);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(78, 13);
|
this.label1.Size = new System.Drawing.Size(100, 13);
|
||||||
this.label1.TabIndex = 3;
|
this.label1.TabIndex = 3;
|
||||||
this.label1.Text = "Server address";
|
this.label1.Text = "MySQL DB address";
|
||||||
//
|
//
|
||||||
// con_txt_mysql_database
|
// con_txt_mysql_database
|
||||||
//
|
//
|
||||||
@@ -359,11 +359,11 @@
|
|||||||
// label8
|
// label8
|
||||||
//
|
//
|
||||||
this.label8.AutoSize = true;
|
this.label8.AutoSize = true;
|
||||||
this.label8.Location = new System.Drawing.Point(41, 45);
|
this.label8.Location = new System.Drawing.Point(7, 45);
|
||||||
this.label8.Name = "label8";
|
this.label8.Name = "label8";
|
||||||
this.label8.Size = new System.Drawing.Size(62, 13);
|
this.label8.Size = new System.Drawing.Size(93, 13);
|
||||||
this.label8.TabIndex = 12;
|
this.label8.TabIndex = 12;
|
||||||
this.label8.Text = "Instance ID";
|
this.label8.Text = "Perun Instance ID";
|
||||||
//
|
//
|
||||||
// con_txt_dcs_instance
|
// con_txt_dcs_instance
|
||||||
//
|
//
|
||||||
@@ -375,11 +375,11 @@
|
|||||||
// label7
|
// label7
|
||||||
//
|
//
|
||||||
this.label7.AutoSize = true;
|
this.label7.AutoSize = true;
|
||||||
this.label7.Location = new System.Drawing.Point(41, 19);
|
this.label7.Location = new System.Drawing.Point(44, 19);
|
||||||
this.label7.Name = "label7";
|
this.label7.Name = "label7";
|
||||||
this.label7.Size = new System.Drawing.Size(59, 13);
|
this.label7.Size = new System.Drawing.Size(56, 13);
|
||||||
this.label7.TabIndex = 10;
|
this.label7.TabIndex = 10;
|
||||||
this.label7.Text = "Server port";
|
this.label7.Text = "Perun port";
|
||||||
//
|
//
|
||||||
// con_txt_dcs_server_port
|
// con_txt_dcs_server_port
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -557,8 +557,11 @@ namespace Perun_v1
|
|||||||
{
|
{
|
||||||
ExtSRSJson = "{'type':'100','instance':'" + Int32.Parse(con_txt_dcs_instance.Text) + "','payload':{'ignore':'true'}}";
|
ExtSRSJson = "{'type':'100','instance':'" + Int32.Parse(con_txt_dcs_instance.Text) + "','payload':{'ignore':'true'}}";
|
||||||
}
|
}
|
||||||
|
if (ExtSRSStatus)
|
||||||
|
{
|
||||||
DatabaseConnection.SendToMySql(ExtSRSJson);
|
DatabaseConnection.SendToMySql(ExtSRSJson);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Handle LotATC
|
// Handle LotATC
|
||||||
if (Globals.StatusConnection)
|
if (Globals.StatusConnection)
|
||||||
@@ -588,8 +591,11 @@ namespace Perun_v1
|
|||||||
{
|
{
|
||||||
ExtLotATCJson = "{'type':'101','instance':'" + Int32.Parse(con_txt_dcs_instance.Text) + "','payload':{'ignore':'true'}}"; // No LotATC controller connected
|
ExtLotATCJson = "{'type':'101','instance':'" + Int32.Parse(con_txt_dcs_instance.Text) + "','payload':{'ignore':'true'}}"; // No LotATC controller connected
|
||||||
}
|
}
|
||||||
|
if (ExtLotATCStatus)
|
||||||
|
{
|
||||||
DatabaseConnection.SendToMySql(ExtLotATCJson);
|
DatabaseConnection.SendToMySql(ExtLotATCJson);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Let's do not risk int overload
|
// Let's do not risk int overload
|
||||||
Globals.ErrorsDatabase = (Globals.ErrorsDatabase > 999) ? 999 : Globals.ErrorsDatabase;
|
Globals.ErrorsDatabase = (Globals.ErrorsDatabase > 999) ? 999 : Globals.ErrorsDatabase;
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
<PublisherName>szporwolik</PublisherName>
|
<PublisherName>szporwolik</PublisherName>
|
||||||
<SuiteName>Perun</SuiteName>
|
<SuiteName>Perun</SuiteName>
|
||||||
<WebPage>Perun.htm</WebPage>
|
<WebPage>Perun.htm</WebPage>
|
||||||
<ApplicationRevision>1</ApplicationRevision>
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
<ApplicationVersion>0.9.1.%2a</ApplicationVersion>
|
<ApplicationVersion>0.9.2.%2a</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||||
|
|||||||
@@ -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
|
// 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:
|
// przy użyciu symbolu „*”, tak jak pokazano poniżej:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.9.1.0")]
|
[assembly: AssemblyVersion("0.9.2.0")]
|
||||||
[assembly: AssemblyFileVersion("0.9.1.0")]
|
[assembly: AssemblyFileVersion("0.9.2.0")]
|
||||||
[assembly: NeutralResourcesLanguage("en")]
|
[assembly: NeutralResourcesLanguage("en")]
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ CREATE TABLE IF NOT EXISTS `pe_Config` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
INSERT INTO `pe_Config` (`pe_Config_id`, `pe_Config_payload`) VALUES
|
INSERT INTO `pe_Config` (`pe_Config_id`, `pe_Config_payload`) VALUES
|
||||||
(1, 'v0.9.1');
|
(1, 'v0.9.2');
|
||||||
|
|
||||||
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` (
|
||||||
@@ -28,7 +28,7 @@ CREATE TABLE IF NOT EXISTS `pe_DataMissionHashes` (
|
|||||||
PRIMARY KEY (`pe_DataMissionHashes_id`),
|
PRIMARY KEY (`pe_DataMissionHashes_id`),
|
||||||
UNIQUE KEY `UNIQUE_hash` (`pe_DataMissionHashes_hash`),
|
UNIQUE KEY `UNIQUE_hash` (`pe_DataMissionHashes_hash`),
|
||||||
KEY `pe_DataMissionHashes_instance` (`pe_DataMissionHashes_instance`)
|
KEY `pe_DataMissionHashes_instance` (`pe_DataMissionHashes_instance`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=7276 DEFAULT CHARSET=utf8;
|
ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `pe_DataPlayers`;
|
DROP TABLE IF EXISTS `pe_DataPlayers`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_DataPlayers` (
|
CREATE TABLE IF NOT EXISTS `pe_DataPlayers` (
|
||||||
@@ -39,7 +39,8 @@ CREATE TABLE IF NOT EXISTS `pe_DataPlayers` (
|
|||||||
`pe_DataPlayers_updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`pe_DataPlayers_updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`pe_DataPlayers_id`),
|
PRIMARY KEY (`pe_DataPlayers_id`),
|
||||||
UNIQUE KEY `UNIQUE_UCID` (`pe_DataPlayers_ucid`)
|
UNIQUE KEY `UNIQUE_UCID` (`pe_DataPlayers_ucid`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=228 DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
|
||||||
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` (
|
||||||
@@ -59,7 +60,7 @@ CREATE TABLE IF NOT EXISTS `pe_DataTypes` (
|
|||||||
`pe_DataTypes_update` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`pe_DataTypes_update` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`pe_DataTypes_id`),
|
PRIMARY KEY (`pe_DataTypes_id`),
|
||||||
UNIQUE KEY `UNIQUE_TYPE_NAME` (`pe_DataTypes_name`)
|
UNIQUE KEY `UNIQUE_TYPE_NAME` (`pe_DataTypes_name`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `pe_LogChat`;
|
DROP TABLE IF EXISTS `pe_LogChat`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_LogChat` (
|
CREATE TABLE IF NOT EXISTS `pe_LogChat` (
|
||||||
@@ -74,7 +75,7 @@ CREATE TABLE IF NOT EXISTS `pe_LogChat` (
|
|||||||
KEY `pe_LogChat_playerid` (`pe_LogChat_playerid`),
|
KEY `pe_LogChat_playerid` (`pe_LogChat_playerid`),
|
||||||
KEY `pe_LogChat_datetime` (`pe_LogChat_datetime`),
|
KEY `pe_LogChat_datetime` (`pe_LogChat_datetime`),
|
||||||
KEY `pe_LogChat_all` (`pe_LogChat_all`)
|
KEY `pe_LogChat_all` (`pe_LogChat_all`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=24169 DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `pe_LogEvent`;
|
DROP TABLE IF EXISTS `pe_LogEvent`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_LogEvent` (
|
CREATE TABLE IF NOT EXISTS `pe_LogEvent` (
|
||||||
@@ -90,7 +91,7 @@ CREATE TABLE IF NOT EXISTS `pe_LogEvent` (
|
|||||||
KEY `pe_LogEvent_missionhash_id` (`pe_LogEvent_missionhash_id`),
|
KEY `pe_LogEvent_missionhash_id` (`pe_LogEvent_missionhash_id`),
|
||||||
KEY `pe_LogEvent_datetime` (`pe_LogEvent_datetime`),
|
KEY `pe_LogEvent_datetime` (`pe_LogEvent_datetime`),
|
||||||
KEY `pe_LogEvent_type_2` (`pe_LogEvent_type`)
|
KEY `pe_LogEvent_type_2` (`pe_LogEvent_type`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=102357 DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `pe_LogLogins`;
|
DROP TABLE IF EXISTS `pe_LogLogins`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_LogLogins` (
|
CREATE TABLE IF NOT EXISTS `pe_LogLogins` (
|
||||||
@@ -104,7 +105,7 @@ CREATE TABLE IF NOT EXISTS `pe_LogLogins` (
|
|||||||
KEY `pe_LogLogins_playerid` (`pe_LogLogins_playerid`),
|
KEY `pe_LogLogins_playerid` (`pe_LogLogins_playerid`),
|
||||||
KEY `pe_LogLogins_datetime` (`pe_LogLogins_datetime`),
|
KEY `pe_LogLogins_datetime` (`pe_LogLogins_datetime`),
|
||||||
KEY `pe_LogLogins_instance` (`pe_LogLogins_instance`)
|
KEY `pe_LogLogins_instance` (`pe_LogLogins_instance`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=11705 DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `pe_LogStats`;
|
DROP TABLE IF EXISTS `pe_LogStats`;
|
||||||
CREATE TABLE IF NOT EXISTS `pe_LogStats` (
|
CREATE TABLE IF NOT EXISTS `pe_LogStats` (
|
||||||
@@ -115,7 +116,7 @@ CREATE TABLE IF NOT EXISTS `pe_LogStats` (
|
|||||||
`pe_LogStats_typeid` int(11) DEFAULT NULL,
|
`pe_LogStats_typeid` int(11) DEFAULT NULL,
|
||||||
`pe_LogStats_masterslot` int(11) DEFAULT NULL,
|
`pe_LogStats_masterslot` int(11) DEFAULT NULL,
|
||||||
`pe_LogStats_seat` int(10) UNSIGNED DEFAULT NULL,
|
`pe_LogStats_seat` int(10) UNSIGNED DEFAULT NULL,
|
||||||
`ps_kills` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_kills_X` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`ps_pvp` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_pvp` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`ps_deaths` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_deaths` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`ps_ejections` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_ejections` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
@@ -138,6 +139,7 @@ CREATE TABLE IF NOT EXISTS `pe_LogStats` (
|
|||||||
`ps_farp_landings` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_farp_landings` int(11) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`ps_other_landings` int(10) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_other_landings` int(10) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`ps_other_takeoffs` int(10) UNSIGNED NOT NULL DEFAULT '0',
|
`ps_other_takeoffs` int(10) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
|
`ps_time` int(10) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`pe_LogStats_mstatus` enum('?','RTB','MIA','KIA') DEFAULT NULL,
|
`pe_LogStats_mstatus` enum('?','RTB','MIA','KIA') DEFAULT NULL,
|
||||||
PRIMARY KEY (`pe_LogStats_id`),
|
PRIMARY KEY (`pe_LogStats_id`),
|
||||||
UNIQUE KEY `UNIQUE_STATS_PER_MISSION_AND_UCID_AND_TYPE` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`,`pe_LogStats_typeid`) USING BTREE,
|
UNIQUE KEY `UNIQUE_STATS_PER_MISSION_AND_UCID_AND_TYPE` (`pe_LogStats_playerid`,`pe_LogStats_missionhash_id`,`pe_LogStats_typeid`) USING BTREE,
|
||||||
@@ -147,7 +149,8 @@ CREATE TABLE IF NOT EXISTS `pe_LogStats` (
|
|||||||
KEY `pe_LogStats_masterslot` (`pe_LogStats_masterslot`),
|
KEY `pe_LogStats_masterslot` (`pe_LogStats_masterslot`),
|
||||||
KEY `pe_LogStats_mstatus` (`pe_LogStats_mstatus`),
|
KEY `pe_LogStats_mstatus` (`pe_LogStats_mstatus`),
|
||||||
KEY `pe_LogStats_seat` (`pe_LogStats_seat`)
|
KEY `pe_LogStats_seat` (`pe_LogStats_seat`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=10507 DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `pe_LogStats_UPDATE`;
|
DROP TRIGGER IF EXISTS `pe_LogStats_UPDATE`;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE TRIGGER `pe_LogStats_UPDATE` BEFORE UPDATE ON `pe_LogStats` FOR EACH ROW BEGIN
|
CREATE TRIGGER `pe_LogStats_UPDATE` BEFORE UPDATE ON `pe_LogStats` FOR EACH ROW BEGIN
|
||||||
|
|||||||
Reference in New Issue
Block a user