diff --git a/DCS-SimpleRadio.sln b/DCS-SimpleRadio.sln index 4071aa7..774255f 100644 --- a/DCS-SimpleRadio.sln +++ b/DCS-SimpleRadio.sln @@ -40,11 +40,13 @@ Global {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Debug|x64.Build.0 = Debug|x64 {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Debug|x86.ActiveCfg = Debug|Win32 {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Debug|x86.Build.0 = Debug|Win32 - {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|Any CPU.ActiveCfg = Release|Win32 + {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|Any CPU.ActiveCfg = Release|x64 + {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|Any CPU.Build.0 = Release|x64 {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|x64.ActiveCfg = Release|x64 {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|x64.Build.0 = Release|x64 {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|x86.ActiveCfg = Release|Win32 {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|x86.Build.0 = Release|Win32 + {A48593C7-7CC3-4C46-9705-9BD264A8E95A}.Release|x86.Deploy.0 = Release|Win32 {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Debug|Any CPU.Build.0 = Debug|Any CPU {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -56,7 +58,6 @@ Global {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Release|x64.ActiveCfg = Release|Any CPU {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Release|x64.Build.0 = Release|Any CPU {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Release|x86.ActiveCfg = Release|Any CPU - {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Release|x86.Build.0 = Release|Any CPU {3FA37CBC-5BE2-4945-802D-9CDD464AC476}.Release|x86.Deploy.0 = Release|Any CPU {570F5657-1E40-4B2A-A8F6-54453C99C6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {570F5657-1E40-4B2A-A8F6-54453C99C6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU @@ -69,7 +70,6 @@ Global {570F5657-1E40-4B2A-A8F6-54453C99C6F3}.Release|x64.ActiveCfg = Release|Any CPU {570F5657-1E40-4B2A-A8F6-54453C99C6F3}.Release|x64.Build.0 = Release|Any CPU {570F5657-1E40-4B2A-A8F6-54453C99C6F3}.Release|x86.ActiveCfg = Release|Any CPU - {570F5657-1E40-4B2A-A8F6-54453C99C6F3}.Release|x86.Build.0 = Release|Any CPU {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Debug|Any CPU.Build.0 = Debug|Any CPU {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -81,7 +81,7 @@ Global {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Release|x64.ActiveCfg = Release|Any CPU {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Release|x64.Build.0 = Release|Any CPU {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Release|x86.ActiveCfg = Release|Any CPU - {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Release|x86.Build.0 = Release|Any CPU + {57B6F9D9-C410-4EB7-8003-60F894F358A4}.Release|x86.Deploy.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Installer/Installer.csproj b/Installer/Installer.csproj index 6a0bcb0..c39bc96 100644 --- a/Installer/Installer.csproj +++ b/Installer/Installer.csproj @@ -52,8 +52,19 @@ Installer.App + + + bin\Full Release\ + TRACE;/MANIFESTUAC:level=requireAdministrator + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + - true + app.manifest @@ -124,6 +135,7 @@ ResXFileCodeGenerator Resources.Designer.cs + SettingsSingleFileGenerator diff --git a/Installer/app.manifest b/Installer/app.manifest new file mode 100644 index 0000000..94b0b89 --- /dev/null +++ b/Installer/app.manifest @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugin/Plugin.vcxproj b/Plugin/Plugin.vcxproj index 4635726..b524400 100644 --- a/Plugin/Plugin.vcxproj +++ b/Plugin/Plugin.vcxproj @@ -9,6 +9,14 @@ Debug x64 + + Full Release + Win32 + + + Full Release + x64 + Release Win32 @@ -65,6 +73,13 @@ true Unicode + + DynamicLibrary + false + v140 + true + Unicode + DynamicLibrary false @@ -72,6 +87,13 @@ true Unicode + + DynamicLibrary + false + v140 + true + Unicode + @@ -90,9 +112,15 @@ + + + + + + true @@ -127,11 +155,23 @@ $(SolutionDir)$(Configuration)\ $(Configuration)\ + + false + DCS-SimpleRadio-$(Platform) + C:\Users\Ola\AppData\Local\TeamSpeak 3 Client 3.0.15\pluginsdk\include;$(IncludePath) + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false DCS-SimpleRadio-$(PlatformShortName) C:\Users\Ola\AppData\Local\TeamSpeak 3 Client 3.0.15\pluginsdk\include;$(IncludePath) + + false + DCS-SimpleRadio-$(PlatformShortName) + C:\Users\Ola\AppData\Local\TeamSpeak 3 Client 3.0.15\pluginsdk\include;$(IncludePath) + @@ -220,6 +260,30 @@ + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_EXPORTS;%(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + MultiThreaded + + + Windows + true + true + true + $(SolutionDir)bin\;%(AdditionalLibraryDirectories) + + + + + + Level3 @@ -244,6 +308,30 @@ + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_EXPORTS;%(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + MultiThreaded + + + Windows + true + true + true + $(SolutionDir)bin\;%(AdditionalLibraryDirectories) + + + + + + diff --git a/RadioGui/RadioGui.csproj b/RadioGui/RadioGui.csproj index cac4cd3..a6ae4fb 100644 --- a/RadioGui/RadioGui.csproj +++ b/RadioGui/RadioGui.csproj @@ -74,6 +74,16 @@ true + + bin\Full Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + ..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll diff --git a/RadioTester/RadioTester.csproj b/RadioTester/RadioTester.csproj index 03c0940..d21a06d 100644 --- a/RadioTester/RadioTester.csproj +++ b/RadioTester/RadioTester.csproj @@ -34,6 +34,16 @@ prompt 4 + + bin\Full Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + ..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll diff --git a/Scripts/Export.lua b/Scripts/Export.lua index 6a1860f..3a8a49b 100644 --- a/Scripts/Export.lua +++ b/Scripts/Export.lua @@ -1,1079 +1,2 @@ ---- DO NOT EDIT. ---- This file is for reference purposes only ---- All user modifications should go to $HOME\Saved Games\DCS\Scripts\Export.lua - --- Data export script for DCS, version 1.2. --- Copyright (C) 2006-2014, Eagle Dynamics. --- See http://www.lua.org for Lua script system info --- We recommend to use the LuaSocket addon (http://www.tecgraf.puc-rio.br/luasocket) --- to use standard network protocols in Lua scripts. --- LuaSocket 2.0 files (*.dll and *.lua) are supplied in the Scripts/LuaSocket folder --- and in the installation folder of the DCS. - --- Expand the functionality of following functions for your external application needs. --- Look into Saved Games\DCS\Logs\dcs.log for this script errors, please. - ---[[ --- Uncomment if using Vector class from the Scripts\Vector.lua file -local lfs = require('lfs') -LUA_PATH = "?;?.lua;"..lfs.currentdir().."/Scripts/?.lua" -require 'Vector' --- See the Scripts\Vector.lua file for Vector class details, please. ---]] - -local default_output_file = nil - -function LuaExportStart() --- Works once just before mission start. --- Make initializations of your files or connections here. --- For example: --- 1) File - default_output_file = io.open(lfs.writedir().."/Logs/Export.log", "w") --- 2) Socket --- package.path = package.path..";"..lfs.currentdir().."/LuaSocket/?.lua" --- package.cpath = package.cpath..";"..lfs.currentdir().."/LuaSocket/?.dll" --- socket = require("socket") --- host = host or "localhost" --- port = port or 8080 --- c = socket.try(socket.connect(host, port)) -- connect to the listener socket --- c:setoption("tcp-nodelay",true) -- set immediate transmission mode --- --- local version = LoGetVersionInfo() --request current version info (as it showed by Windows Explorer fo DCS.exe properties) --- if version and default_output_file then --- --- default_output_file:write("ProductName: "..version.ProductName..'\n') --- default_output_file:write(string.format("FileVersion: %d.%d.%d.%d\n", --- version.FileVersion[1], --- version.FileVersion[2], --- version.FileVersion[3], --- version.FileVersion[4])) --- default_output_file:write(string.format("ProductVersion: %d.%d.%d.%d\n", --- version.ProductVersion[1], --- version.ProductVersion[2], --- version.ProductVersion[3], -- head revision (Continuously growth) --- version.ProductVersion[4])) -- build number (Continuously growth) --- end - -end - -function LuaExportBeforeNextFrame() --- Works just before every simulation frame. - --- Call Lo*() functions to set data to Lock On here --- For example: --- LoSetCommand(3, 0.25) -- rudder 0.25 right --- LoSetCommand(64) -- increase thrust - -end - -function LuaExportAfterNextFrame() --- Works just after every simulation frame. - - - -- build number (Continuously growth) --- Call Lo*() functions to get data from Lock On here. --- For example: --- local t = LoGetModelTime() --- local name = LoGetPilotName() --- local altBar = LoGetAltitudeAboveSeaLevel() --- local altRad = LoGetAltitudeAboveGroundLevel() --- local pitch, bank, yaw = LoGetADIPitchBankYaw() --- local engine = LoGetEngineInfo() --- local HSI = LoGetControlPanel_HSI() --- Then send data to your file or to your receiving program: --- 1) File --- if default_output_file then --- default_output_file:write(string.format("t = %.2f, name = %s, altBar = %.2f, altRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f\n", t, name, altBar, altRad, 57.3*pitch, 57.3*bank, 57.3*yaw)) --- default_output_file:write(string.format("t = %.2f ,RPM left = %f fuel_internal = %f \n",t,engine.RPM.left,engine.fuel_internal)) --- default_output_file:write(string.format("ADF = %f RMI = %f\n ",57.3*HSI.ADF,57.3*HSI.RMI)) --- end --- 2) Socket --- socket.try(c:send(string.format("t = %.2f, name = %s, altBar = %.2f, alrRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f\n", t, name, altRad, altBar, pitch, bank, yaw))) - -end - -function LuaExportStop() --- Works once just after mission stop. --- Close files and/or connections here. --- 1) File - if default_output_file then - default_output_file:close() - default_output_file = nil - end --- 2) Socket --- socket.try(c:send("quit")) -- to close the listener socket --- c:close() -end - -function LuaExportActivityNextEvent(t) - local tNext = t - - --tNext = tNext+1.0 - ---local _myAircraft = LoGetSelfData() - --- if (_myAircraft ~= nil) then - --- if _myAircraft.Name then --- default_output_file:write(_myAircraft.Name) --- end --- --- local _mainPanel = GetDevice(0) --- --- if _mainPanel then --- --- default_output_file:write(string.format("%.0f%.0f%.0f.%.0f%.0f", 2+GetDevice(0):get_argument_value(10), GetDevice(0):get_argument_value(11)*10, GetDevice(0):get_argument_value(12)*10, GetDevice(0):get_argument_value(13)*10, a(14)*10) .. "." .. string.format("%.0f", GetDevice(0):get_argument_value(12)*10)) --- end - - --- Put your event code here and increase tNext for the next event --- so this function will be called automatically at your custom --- model times. --- If tNext == t then the activity will be terminated. - --- For example: --- 1) File --- if default_output_file then - -- local o = LoGetWorldObjects() - -- for k,v in pairs(o) do - -- default_output_file:write(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.Lat, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading)) - -- end - -- local trg = LoGetLockedTargetInformation() - -- default_output_file:write(string.format("locked targets ,time = %.2f\n",t)) - -- for i,cur in pairs(trg) do - -- default_output_file:write(string.format("ID = %d, position = (%f,%f,%f) , V = (%f,%f,%f),flags = 0x%x\n",cur.ID,cur.position.p.x,cur.position.p.y,cur.position.p.z,cur.velocity.x,cur.velocity.y,cur.velocity.z,cur.flags)) - -- end - -- local route = LoGetRoute() - -- default_output_file:write(string.format("t = %f\n",t)) - -- if route then - -- default_output_file:write(string.format("Goto_point :\n point_num = %d ,wpt_pos = (%f, %f ,%f) ,next %d\n",route.goto_point.this_point_num,route.goto_point.world_point.x,route.goto_point.world_point.y,route.goto_point.world_point.z,route.goto_point.next_point_num)) - -- default_output_file:write(string.format("Route points:\n")) - -- for num,wpt in pairs(route.route) do - -- default_output_file:write(string.format("point_num = %d ,wpt_pos = (%f, %f ,%f) ,next %d\n",wpt.this_point_num,wpt.world_point.x,wpt.world_point.y,wpt.world_point.z,wpt.next_point_num)) - -- end - -- end - - -- local stations = LoGetPayloadInfo() - -- if stations then - -- default_output_file:write(string.format("Current = %d \n",stations.CurrentStation)) - - -- for i_st,st in pairs (stations.Stations) do - -- local name = LoGetNameByType(st.weapon.level1,st.weapon.level2,st.weapon.level3,st.weapon.level4); - -- if name then - -- default_output_file:write(string.format("weapon = %s ,count = %d \n",name,st.count)) - -- else - -- default_output_file:write(string.format("weapon = {%d,%d,%d,%d} ,count = %d \n", st.weapon.level1,st.weapon.level2,st.weapon.level3,st.weapon.level4,st.count)) - -- end - -- end - -- end - - -- local Nav = LoGetNavigationInfo() - -- if Nav then - -- default_output_file:write(string.format("%s ,%s ,ACS: %s\n",Nav.SystemMode.master,Nav.SystemMode.submode,Nav.ACS.mode)) - -- default_output_file:write(string.format("Requirements :\n\t roll %d\n\t pitch %d\n\t speed %d\n",Nav.Requirements.roll,Nav.Requirements.pitch,Nav.Requirements.speed)) - -- end --- end - - - --- tNext = tNext + 1.0 --- 2) Socket --- local o = LoGetWorldObjects() --- for k,v in pairs(o) do --- socket.try(c:send(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.x, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading))) --- end --- tNext = tNext + 1.0 - - return tNext -end - ---[[ - --- Lock On supports Lua coroutines using internal LoCreateCoroutineActivity() and --- external CoroutineResume() functions. Here is an example of using scripted coroutine. - -Coroutines = {} -- global coroutines table -CoroutineIndex = 0 -- global last created coroutine index - --- This function will be called by Lock On model timer for every coroutine to resume it -function CoroutineResume(index, tCurrent) - -- Resume coroutine and give it current model time value - coroutine.resume(Coroutines[index], tCurrent) - return coroutine.status(Coroutines[index]) ~= "dead" - -- If status == "dead" then Lock On activity for this coroutine dies too -end - --- Coroutine function example using coroutine.yield() to suspend -function f(t) - local tNext = t - local file = io.open("./Temp/Coroutine.log", "w") - file:write(string.format("t = %f, started\n", tNext)) - tNext = coroutine.yield() - for i = 1,10 do - file:write(string.format("t = %f, continued\n", tNext)) - tNext = coroutine.yield() - end - file:write(string.format("t = %f, finished\n", tNext)) - file:close() -end - --- Create your coroutines and save them in Coriutines table, e.g.: -CoroutineIndex = CoroutineIndex + 1 -Coroutines[CoroutineIndex] = coroutine.create(f) - --- Use LoCreateCoroutineActivity(index, tStart, tPeriod) to plan your coroutines --- activity at model times, e.g.: -LoCreateCoroutineActivity(CoroutineIndex, 1.0, 3.0) -- to start at 1.0 second with 3.0 seconds period --- Coroutine output in the Coroutine.log file: --- t = 1.000000, started --- t = 4.000000, continued --- t = 7.000000, continued --- t = 10.000000, continued --- t = 13.000000, continued --- t = 16.000000, continued --- t = 19.000000, continued --- t = 22.000000, continued --- t = 25.000000, continued --- t = 28.000000, continued --- t = 31.000000, continued --- t = 34.000000, finished ---]] - ---[[ You can use registered Lock On internal data exporting functions in this script -and in your scripts called from this script. - -Note: following functions are implemented for exporting technology experiments only, -so they may be changed or removed in the future by developers. - -All returned values are Lua numbers if not pointed other type. - -Output: -LoGetModelTime() -- returns current model time (args - 0, results - 1 (sec)) -LoGetMissionStartTime() -- returns mission start time (args - 0, results - 1 (sec)) -LoGetPilotName() -- (args - 0, results - 1 (text string)) -LoGetPlayerPlaneId() -- (args - 0, results - 1 (number)) -LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (m/s)) -LoGetTrueAirSpeed() -- (args - 0, results - 1 (m/s)) -LoGetAltitudeAboveSeaLevel() -- (args - 0, results - 1 (meters)) -LoGetAltitudeAboveGroundLevel() -- (args - 0, results - 1 (meterst)) -LoGetAngleOfAttack() -- (args - 0, results - 1 (rad)) -LoGetAccelerationUnits() -- (args - 0, results - table {x = Nx,y = NY,z = NZ} 1 (G)) -LoGetVerticalVelocity() -- (args - 0, results - 1(m/s)) -LoGetMachNumber() -- (args - 0, results - 1) -LoGetADIPitchBankYaw() -- (args - 0, results - 3 (rad)) -LoGetMagneticYaw() -- (args - 0, results - 1 (rad) -LoGetGlideDeviation() -- (args - 0,results - 1)( -1 < result < 1) -LoGetSideDeviation() -- (args - 0,results - 1)( -1 < result < 1) -LoGetSlipBallPosition() -- (args - 0,results - 1)( -1 < result < 1) -LoGetBasicAtmospherePressure() -- (args - 0,results - 1) (mm hg) -LoGetControlPanel_HSI() -- (args - 0,results - table) -result = -{ - ADF_raw, (rad) - RMI_raw, (rad) - Heading_raw, (rad) - HeadingPointer, (rad) - Course, (rad) - BearingPointer, (rad) - CourseDeviation, (rad) -} -LoGetEngineInfo() -- (args - 0 ,results = table) -engineinfo = -{ - RPM = {left, right},(%) - Temperature = { left, right}, (Celcium degrees) - HydraulicPressure = {left ,right},kg per square centimeter - FuelConsumption = {left ,right},kg per sec - fuel_internal -- fuel quantity internal tanks kg - fuel_external -- fuel quantity external tanks kg - -} - -LoGetRoute() -- (args - 0,results = table) -get_route_result = -{ - goto_point, -- next waypoint - route -- all waypoints of route (or approach route if arrival or landing) -} -waypoint_table = -{ - this_point_num, -- number of point ( >= 0) - world_point = {x,y,z}, -- world position in meters - speed_req, -- speed at point m/s - estimated_time, -- sec - next_point_num, -- if -1 that's the end of route - point_action -- name of action "ATTACKPOINT","TURNPOINT","LANDING","TAKEOFF" -} -LoGetNavigationInfo() (args - 0,results - 1( table )) -- information about ACS -get_navigation_info_result = -{ - SystemMode = {master,submode}, -- (string,string) current mode and submode ---[=[ - master values (depend of plane type) - "NAV" -- navigation - "BVR" -- beyond visual range AA mode - "CAC" -- close air combat - "LNG" -- longitudinal mode - "A2G" -- air to ground - "OFF" -- mode is absent - submode values (depend of plane type and master mode) - "NAV" submodes - { - "ROUTE" - "ARRIVAL" - "LANDING" - "OFF" - } - "BVR" submodes - { - "GUN" -- Gunmode - "RWS" -- RangeWhileSearch - "TWS" -- TrackWhileSearch - "STT" -- SingleTrackTarget (Attack submode) - "OFF" - } - "CAC" submodes - { - "GUN" - "VERTICAL_SCAN" - "BORE" - "HELMET" - "STT" - "OFF" - } - "LNG" submodes - { - "GUN" - "OFF" - "FLOOD" -- F-15 only - } - "A2G" submodes - { - "GUN" - "ETS" -- Emitter Targeting System On - "PINPOINT" - "UNGUIDED" -- unguided weapon (free fall bombs, dispensers , rockets) - "OFF" - } ---]=] - Requirements = -- required parameters of flight - { - roll, -- required roll,pitch.. , etc. - pitch, - speed, - vertical_speed, - altitude, - } - ACS = -- current state of the Automatic Control System - { - mode = string , - --[=[ - mode values are : - "FOLLOW_ROUTE", - "BARO_HOLD", - "RADIO_HOLD", - "BARO_ROLL_HOLD", - "HORIZON_HOLD", - "PITCH_BANK_HOLD", - "OFF" - --]=] - autothrust , -- 1(true) if autothrust mode is on or 0(false) when not; - } -} -LoGetMCPState() -- (args - 0, results - 1 (table of key(string).value(boolean)) - returned table keys for LoGetMCPState(): - "LeftEngineFailure" - "RightEngineFailure" - "HydraulicsFailure" - "ACSFailure" - "AutopilotFailure" - "AutopilotOn" - "MasterWarning" - "LeftTailPlaneFailure" - "RightTailPlaneFailure" - "LeftAileronFailure" - "RightAileronFailure" - "CanopyOpen" - "CannonFailure" - "StallSignalization" - "LeftMainPumpFailure" - "RightMainPumpFailure" - "LeftWingPumpFailure" - "RightWingPumpFailure" - "RadarFailure" - "EOSFailure" - "MLWSFailure" - "RWSFailure" - "ECMFailure" - "GearFailure" - "MFDFailure" - "HUDFailure" - "HelmetFailure" - "FuelTankDamage" -LoGetObjectById() -- (args - 1 (number), results - 1 (table)) - Returned object table structure: - { - Name = - Type = {level1,level2,level3,level4}, ( see Scripts/database/wsTypes.lua) Subtype is absent now - Country = number ( see Scripts/database/db_countries.lua - Coalition = - CoalitionID = number ( 1 or 2 ) - LatLongAlt = { Lat = , Long = , Alt = } - Heading = radians - Pitch = radians - Bank = radians - Position = {x,y,z} -- in internal DCS coordinate system ( see convertion routnes below) - -- only for units ( Planes,Hellicopters,Tanks etc) - UnitName = unit name from mission (UTF8) - GroupName = unit name from mission (UTF8) - } - - -LoGetWorldObjects() -- (args - 0- 1, results - 1 (table of object tables)) arg can be "units" (default) or "ballistic" , ballistic - for different type of unguided munition ()bombs,shells,rockets) - Returned table index = object identificator - Returned object table structure (see LoGetObjectById()) - -LoGetSelfData return the same result as LoGetObjectById but only for your aircraft and not depended on anti-cheat setting in Export/Config.lua - -LoGetAltitude(x, z) -- (args - 2 : meters, results - 1 : altitude above terrain surface, meters) - -LoGetCameraPosition() -- (args - 0, results - 1 : view camera current position table: - { - x = {x = ..., y = ..., z = ...}, -- orientation x-vector - y = (x = ..., y = ..., z = ...}, -- orientation y-vector - z = {x = ..., y = ..., z = ...}, -- orientation z-vector - p = {x = ..., y = ..., z = ...} -- point vector - } - all coordinates are in meters. You can use Vector class for position vectors. - --- Weapon Control System -LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string - -LoGetTargetInformation() -- (args - 0, results - 1 (table of current targets tables)) -LoGetLockedTargetInformation() -- (args - 0, results - 1 (table of current locked targets tables)) - this functions return the table of the next target data - target = - { - ID , -- world ID (may be 0 ,when ground point track) - type = {level1,level2,level3,level4}, -- world database classification - country = , -- object country - position = {x = {x,y,z}, -- orientation X ort - y = {x,y,z}, -- orientation Y ort - z = {x,y,z}, -- orientation Z ort - p = {x,y,z}} -- position of the center - velocity = {x,y,z}, -- world velocity vector m/s - distance = , -- distance in meters - convergence_velocity = , -- closing speed in m/s - mach = , -- M number - delta_psi = , -- aspect angle rad - fim = , -- viewing angle horizontal (in your body axis) rad - fin = , -- viewing angle vertical (in your body axis) rad - flags = , -- field with constants detemining method of the tracking - -- whTargetRadarView = 0x0002; -- Radar review (BVR) - -- whTargetEOSView = 0x0004; -- EOS review (BVR) - -- whTargetRadarLock = 0x0008; -- Radar lock (STT) == whStaticObjectLock (pinpoint) (static objects,buildings lock) - -- whTargetEOSLock = 0x0010; -- EOS lock (STT) == whWorldObjectLock (pinpoint) (ground units lock) - -- whTargetRadarTrack = 0x0020; -- Radar lock (TWS) - -- whTargetEOSTrack = 0x0040; -- Radar lock (TWS) == whImpactPointTrack (pinpoint) (ground point track) - -- whTargetNetHumanPlane = 0x0200; -- net HumanPlane - -- whTargetAutoLockOn = 0x0400; -- EasyRadar autolockon - -- whTargetLockOnJammer = 0x0800; -- HOJ mode - - reflection = , -- target cross section square meters - course = , -- target course rad - isjamming = , -- target ECM on or not - start_of_lock = , -- time of the beginning of lock - forces = { x,y,z}, -- vector of the acceleration units - updates_number = , -- number of the radar updates - - jammer_burned = true/false -- indicates that jammer are burned - } -LoGetSightingSystemInfo() -- sight system info -{ - Manufacturer = "RUS"/"USA" - LaunchAuthorized = true/false - ScanZone = - { - position - { - azimuth - elevation - if Manufacturer == "RUS" then - distance_manual - exceeding_manual - end - } - coverage_H - { - min - max - } - size - { - azimuth - elevation - } - } - scale - { - distance - azimuth - } - TDC - { - x - y - } - - radar_on = true/false - optical_system_on= true/false - ECM_on= true/false - laser_on= true/false - - PRF = - { - current , -- current PRF value ( changed in ILV mode ) , values are "MED" or "HI" - selection , -- selection value can be "MED" "HI" or "ILV" - } - -} -LoGetTWSInfo() -- return Threat Warning System status (result the table ) -result_of_LoGetTWSInfo = -{ - Mode = , -- current mode (0 - all ,1 - lock only,2 - launch only - Emitters = {table of emitters} -} -emitter_table = -{ - ID =, -- world ID - Type = {level1,level2,level3,level4}, -- world database classification of emitter - Power =, -- power of signal - Azimuth =, - Priority =,-- priority of emitter (int) - SignalType =, -- string with vlues: "scan" ,"lock", "missile_radio_guided","track_while_scan"; -} -LoGetPayloadInfo() -- return weapon stations -result_of_LoGetPayloadInfo -{ - CurrentStation = , -- number of current station (0 if no station selected) - Stations = {},-- table of stations - Cannon = - { - shells -- current shells count - } -} -station -{ - container = true/false , -- is station container - weapon = {level1,level2,level3,level4} , -- world database classification of weapon - count = , -} -LoGetMechInfo() -- mechanization info -result_is = -{ - gear = {status,value,main = {left = {rod},right = {rod},nose = {rod}}} - flaps = {status,value} - speedbrakes = {status,value} - refuelingboom = {status,value} - airintake = {status,value} - noseflap = {status,value} - parachute = {status,value} - wheelbrakes = {status,value} - hook = {status,value} - wing = {status,value} - canopy = {status,value} - controlsurfaces = {elevator = {left,right},eleron = {left,right},rudder = {left,right}} -- relative vlues (-1,1) (min /max) (sorry:( -} - -LoGetRadioBeaconsStatus() -- beacons lock -{ - airfield_near , - airfield_far, - course_deviation_beacon_lock , - glideslope_deviation_beacon_lock -} - -LoGetWingInfo() -- your wingmens info result is vector of wingmens with value: -wingmen_is = -{ - wingmen_id -- world id of wingmen - wingmen_position -- world position {x = {x,y,z}, -- orientation X ort - y = {x,y,z}, -- orientation Y ort - z = {x,y,z}, -- orientation Z ort - p = {x,y,z}} -- position of the center - current_target -- world id of target - ordered_target -- world id of target - current_task -- name of task - ordered_task -- name of task - --[=[ - name can be : - "NOTHING" - "ROUTE" - "DEPARTURE" - "ARRIVAL" - "REFUELING" - "SOS" -- Save Soul of your Wingmen :) - "ROUTE" - "INTERCEPT" - "PATROL" - "AIR_ATTACK" - "REFUELING" - "AWACS" - "RECON" - "ESCORT" - "PINPOINT" - "CAS" - "MISSILE_EVASION" - "ENEMY_EVASION" - "SEAD" - "ANTISHIP" - "RUNWAY_ATTACK" - "TRANSPORT" - "LANDING" - "TAKEOFF" - "TAXIING" - --]=] - -} - -Coordinates convertion : -{x,y,z} = LoGeoCoordinatesToLoCoordinates(longitude_degrees,latitude_degrees) -{latitude,longitude} = LoLoCoordinatesToGeoCoordinates(x,z); - -LoGetVectorVelocity = {x,y,z} -- vector of self velocity (world axis) -LoGetAngularVelocity = {x,y,z} -- angular velocity euler angles , rad per sec -LoGetVectorWindVelocity = {x,y,z} -- vector of wind velocity (world axis) -LoGetWingTargets = table of {x,y,z} -LoGetSnares = {chaff,flare} -Input: -LoSetCameraPosition(pos) -- (args - 1: view camera current position table, results - 0) - pos table structure: - { - x = {x = ..., y = ..., z = ...}, -- orientation x-vector - y = (x = ..., y = ..., z = ...}, -- orientation y-vector - z = {x = ..., y = ..., z = ...}, -- orientation z-vector - p = {x = ..., y = ..., z = ...} -- point vector - } - all coordinates are in meters. You can use Vector class for position vectors. - -LoSetCommand(command, value) -- (args - 2, results - 0) --1.0 <= value <= 1.0 - -Some analogous joystick/mouse input commands: -command = 2001 - joystick pitch -command = 2002 - joystick roll -command = 2003 - joystick rudder --- Thrust values are inverted for some internal reasons, sorry. -command = 2004 - joystick thrust (both engines) -command = 2005 - joystick left engine thrust -command = 2006 - joystick right engine thrust -command = 2007 - mouse camera rotate left/right -command = 2008 - mouse camera rotate up/down -command = 2009 - mouse camera zoom -command = 2010 - joystick camera rotate left/right -command = 2011 - joystick camera rotate up/down -command = 2012 - joystick camera zoom -command = 2013 - mouse pitch -command = 2014 - mouse roll -command = 2015 - mouse rudder --- Thrust values are inverted for some internal reasons, sorry. -command = 2016 - mouse thrust (both engines) -command = 2017 - mouse left engine thrust -command = 2018 - mouse right engine thrust -command = 2019 - mouse trim pitch -command = 2020 - mouse trim roll -command = 2021 - mouse trim rudder -command = 2022 - joystick trim pitch -command = 2023 - joystick trim roll -command = 2024 - trim rudder -command = 2025 - mouse rotate radar antenna left/right -command = 2026 - mouse rotate radar antenna up/down -command = 2027 - joystick rotate radar antenna left/right -command = 2028 - joystick rotate radar antenna up/down -command = 2029 - mouse MFD zoom -command = 2030 - joystick MFD zoom -command = 2031 - mouse move selecter left/right -command = 2032 - mouse move selecter up/down -command = 2033 - joystick move selecter left/right -command = 2034 - joystick move selecter up/down - -Some discrete keyboard input commands (value is absent): -command = 7 -- Cockpit view -command = 8 -- External view -command = 9 -- Fly-by view -command = 10 -- Ground units view -command = 11 -- Civilian transport view -command = 12 -- Chase view -command = 13 -- Navy view -command = 14 -- Close air combat view -command = 15 -- Theater view -command = 16 -- Airfield (free camera) view -command = 17 -- Instruments panel view on -command = 18 -- Instruments panel view off -command = 19 -- Padlock toggle -command = 20 -- Stop padlock (in cockpit only) -command = 21 -- External view for my plane -command = 22 -- Automatic chase mode for launched weapon -command = 23 -- View allies only filter -command = 24 -- View enemies only filter -command = 26 -- View allies & enemies filter -command = 28 -- Rotate the camera left fast -command = 29 -- Rotate the camera right fast -command = 30 -- Rotate the camera up fast -command = 31 -- Rotate the camera down fast -command = 32 -- Rotate the camera left slow -command = 33 -- Rotate the camera right slow -command = 34 -- Rotate the camera up slow -command = 35 -- Rotate the camera down slow -command = 36 -- Return the camera to default position -command = 37 -- View zoom in fast -command = 38 -- View zoom out fast -command = 39 -- View zoom in slow -command = 40 -- View zoom out slow -command = 41 -- Pan the camera left -command = 42 -- Pan the camera right -command = 43 -- Pan the camera up -command = 44 -- Pan the camera down -command = 45 -- Pan the camera left slow -command = 46 -- Pan the camera right slow -command = 47 -- Pan the camera up slow -command = 48 -- Pan the camera down slow -command = 49 -- Disable panning the camera -command = 50 -- Allies chat -command = 51 -- Mission quit -command = 52 -- Suspend/resume model time -command = 53 -- Accelerate model time -command = 54 -- Step by step simulation when model time is suspended -command = 55 -- Take control in the track -command = 57 -- Common chat -command = 59 -- Altitude stabilization -command = 62 -- Autopilot -command = 63 -- Auto-thrust -command = 64 -- Power up -command = 65 -- Power down -command = 68 -- Gear -command = 69 -- Hook -command = 70 -- Pack wings -command = 71 -- Canopy -command = 72 -- Flaps -command = 73 -- Air brake -command = 74 -- Wheel brakes on -command = 75 -- Wheel brakes off -command = 76 -- Release drogue chute -command = 77 -- Drop snar -command = 78 -- Wingtip smoke -command = 79 -- Refuel on -command = 80 -- Refuel off -command = 81 -- Salvo -command = 82 -- Jettison weapons -command = 83 -- Eject -command = 84 -- Fire on -command = 85 -- Fire off -command = 86 -- Radar -command = 87 -- EOS -command = 88 -- Rotate the radar antenna left -command = 89 -- Rotate the radar antenna right -command = 90 -- Rotate the radar antenna up -command = 91 -- Rotate the radar antenna down -command = 92 -- Center the radar antenna -command = 93 -- Trim left -command = 94 -- Trim right -command = 95 -- Trim up -command = 96 -- Trim down -command = 97 -- Cancel trimming -command = 98 -- Trim the rudder left -command = 99 -- Trim the rudder right -command = 100 -- Lock the target -command = 101 -- Change weapon -command = 102 -- Change target -command = 103 -- MFD zoom in -command = 104 -- MFD zoom out -command = 105 -- Navigation mode (value 1, 2, 3, 4 for navmode_none, navmode_route, navmode_arrival ,navmode_landing ) -command = 106 -- BVR mode -command = 107 -- VS mode -command = 108 -- Bore mode -command = 109 -- Helmet mode -command = 110 -- FI0 mode -command = 111 -- A2G mode -command = 112 -- Grid mode -command = 113 -- Cannon -command = 114 -- Dispatch wingman - complete mission and RTB -command = 115 -- Dispatch wingman - complete mission and rejoin -command = 116 -- Dispatch wingman - toggle formation -command = 117 -- Dispatch wingman - join up formation -command = 118 -- Dispatch wingman - attack my target -command = 119 -- Dispatch wingman - cover my six -command = 120 -- Take off from ship -command = 121 -- Cobra -command = 122 -- Sound on/off -command = 123 -- Sound recording on -command = 124 -- Sound recording off -command = 125 -- View right mirror on -command = 126 -- View right mirror off -command = 127 -- View left mirror on -command = 128 -- View left mirror off -command = 129 -- Natural head movement view -command = 131 -- LSO view -command = 135 -- Weapon to target view -command = 136 -- Active jamming -command = 137 -- Increase details level -command = 138 -- Decrease details level -command = 139 -- Scan zone left -command = 140 -- Scan zone right -command = 141 -- Scan zone up -command = 142 -- Scan zone down -command = 143 -- Unlock target -command = 144 -- Reset master warning -command = 145 -- Flaps on -command = 146 -- Flaps off -command = 147 -- Air brake on -command = 148 -- Air brake off -command = 149 -- Weapons view -command = 150 -- Static objects view -command = 151 -- Mission targets view -command = 152 -- Info bar details -command = 155 -- Refueling boom -command = 156 -- HUD color selection -command = 158 -- Jump to terrain view -command = 159 -- Starts moving F11 camera forward -command = 160 -- Starts moving F11 camera backward -command = 161 -- Power up left engine -command = 162 -- Power down left engine -command = 163 -- Power up right engine -command = 164 -- Power down right engine -command = 169 -- Immortal mode -command = 175 -- On-board lights -command = 176 -- Drop snar once -command = 177 -- Default cockpit angle of view -command = 178 -- Jettison fuel tanks -command = 179 -- Wingmen commands panel -command = 180 -- Reverse objects switching in views -command = 181 -- Forward objects switching in views -command = 182 -- Ignore current object in views -command = 183 -- View all ignored objects in views again -command = 184 -- Padlock terrain point -command = 185 -- Reverse the camera -command = 186 -- Plane up -command = 187 -- Plane down -command = 188 -- Bank left -command = 189 -- Bank right -command = 190 -- Local camera rotation mode -command = 191 -- Decelerate model time -command = 192 -- Jump into the other plane -command = 193 -- Nose down -command = 194 -- Nose down end -command = 195 -- Nose up -command = 196 -- Nose up end -command = 197 -- Bank left -command = 198 -- Bank left end -command = 199 -- Bank right -command = 200 -- Bank right end -command = 201 -- Rudder left -command = 202 -- Rudder left end -command = 203 -- Rudder right -command = 204 -- Rudder right end -command = 205 -- View up right -command = 206 -- View down right -command = 207 -- View down left -command = 208 -- View up left -command = 209 -- View stop -command = 210 -- View up right slow -command = 211 -- View down right slow -command = 212 -- View down left slow -command = 213 -- View up left slow -command = 214 -- View stop slow -command = 215 -- Stop trimming -command = 226 -- Scan zone up right -command = 227 -- Scan zone down right -command = 228 -- Scan zone down left -command = 229 -- Scan zone up left -command = 230 -- Scan zone stop -command = 231 -- Radar antenna up right -command = 232 -- Radar antenna down right -command = 233 -- Radar antenna down left -command = 234 -- Radar antenna up left -command = 235 -- Radar antenna stop -command = 236 -- Save snap view angles -command = 237 -- Cockpit panel view toggle -command = 245 -- Coordinates units toggle -command = 246 -- Disable model time acceleration -command = 252 -- Automatic spin recovery -command = 253 -- Speed retention -command = 254 -- Easy landing -command = 258 -- Threat missile padlock -command = 259 -- All missiles padlock -command = 261 -- Marker state -command = 262 -- Decrease radar scan area -command = 263 -- Increase radar scan area -command = 264 -- Marker state plane -command = 265 -- Marker state rocket -command = 266 -- Marker state plane ship -command = 267 -- Ask AWACS home airbase -command = 268 -- Ask AWACS available tanker -command = 269 -- Ask AWACS nearest target -command = 270 -- Ask AWACS declare target -command = 271 -- Easy radar -command = 272 -- Auto lock on nearest aircraft -command = 273 -- Auto lock on center aircraft -command = 274 -- Auto lock on next aircraft -command = 275 -- Auto lock on previous aircraft -command = 276 -- Auto lock on nearest surface target -command = 277 -- Auto lock on center surface target -command = 278 -- Auto lock on next surface target -command = 279 -- Auto lock on previous surface target -command = 280 -- Change cannon rate of fire -command = 281 -- Change ripple quantity -command = 282 -- Change ripple interval -command = 283 -- Switch master arm -command = 284 -- Change release mode -command = 285 -- Change radar mode RWS/TWS -command = 286 -- Change RWR/SPO mode -command = 288 -- Flight clock reset -command = 289 -- Zoom in slow stop -command = 290 -- Zoom out slow stop -command = 291 -- Zoom in stop -command = 292 -- Zoom out stop -command = 295 -- View horizontal stop -command = 296 -- View vertical stop -command = 298 -- Jump to fly-by view -command = 299 -- Camera jiggle -command = 300 -- Cockpit illumination -command = 308 -- Change ripple interval down -command = 309 -- Engines start -command = 310 -- Engines stop -command = 311 -- Left engine start -command = 312 -- Right engine start -command = 313 -- Left engine stop -command = 314 -- Right engine stop -command = 315 -- Power on/off -command = 316 -- Altimeter pressure increase -command = 317 -- Altimeter pressure decrease -command = 318 -- Altimeter pressure stop -command = 321 -- Fast mouse in views -command = 322 -- Slow mouse in views -command = 323 -- Normal mouse in views -command = 326 -- HUD only view -command = 327 -- Recover my plane -command = 328 -- Toggle gear light Near/Far/Off -command = 331 -- Fast keyboard in views -command = 332 -- Slow keyboard in views -command = 333 -- Normal keyboard in views -command = 334 -- Zoom in for external views -command = 335 -- Stop zoom in for external views -command = 336 -- Zoom out for external views -command = 337 -- Stop zoom out for external views -command = 338 -- Default zoom in external views -command = 341 -- A2G combat view -command = 342 -- Camera view up-left -command = 343 -- Camera view up-right -command = 344 -- Camera view down-left -command = 345 -- Camera view down right -command = 346 -- Camera pan mode toggle -command = 347 -- Return the camera -command = 348 -- Trains/cars toggle -command = 349 -- Launch permission override -command = 350 -- Release weapon -command = 351 -- Stop release weapon -command = 352 -- Return camera base -command = 353 -- Camera view up-left slow -command = 354 -- Camera view up-right slow -command = 355 -- Camera view down-left slow -command = 356 -- Camera view down-right slow -command = 357 -- Drop flare once -command = 358 -- Drop chaff once -command = 359 -- Rear view -command = 360 -- Scores window -command = 386 -- PlaneStabPitchBank -command = 387 -- PlaneStabHbarBank -command = 388 -- PlaneStabHorizont -command = 389 -- PlaneStabHbar -command = 390 -- PlaneStabHrad -command = 391 -- Active IR jamming on/off -command = 392 -- Laser range-finder on/off -command = 393 -- Night TV on/off(IR or LLTV) -command = 394 -- Change radar PRF -command = 395 -- Keep F11 camera altitude over terrain -command = 396 -- SnapView0 -command = 397 -- SnapView1 -command = 398 -- SnapView2 -command = 399 -- SnapView3 -command = 400 -- SnapView4 -command = 401 -- SnapView5 -command = 402 -- SnapView6 -command = 403 -- SnapView7 -command = 404 -- SnapView8 -command = 405 -- SnapView9 -command = 406 -- SnapViewStop -command = 407 -- F11 view binocular mode -command = 408 -- PlaneStabCancel -command = 409 -- ThreatWarnSoundVolumeDown -command = 410 -- ThreatWarnSoundVolumeUp -command = 411 -- F11 binocular view laser range-finder on/off -command = 412 -- PlaneIncreaseBase_Distance -command = 413 -- PlaneDecreaseBase_Distance -command = 414 -- PlaneStopBase_Distance -command = 425 -- F11 binocular view IR mode on/off -command = 426 -- F8 view player targets / all targets -command = 427 -- Plane autopilot override on -command = 428 -- Plane autopilot override off -command = 429 -- Plane route autopilot on/off -command = 430 -- Gear up -command = 431 -- Gear down - -To be continued... ---]] - --- LoEnableExternalFlightModel() call one time in start --- LoUpdateExternalFlightModel(binary_data) update function - - ---LoGetHelicopterFMData() --- return table with fm data ---{ ---G_factor = {x,y,z } in cockpit ---speed = {x,y,z} center of mass ,body axis ---acceleration= {x,y,z} center of mass ,body axis ---angular_speed= {x,y,z} rad/s ---angular_acceleration= {x,y,z} rad/s^2 ---yaw radians ---pitch radians ---roll radians ---} - ---#ifndef _EXTERNAL_FM_DATA_H ---#define _EXTERNAL_FM_DATA_H - ---struct external_FM_data ---{ --- double orientation_X[3]; --- double orientation_Y[3]; --- double orientation_Z[3]; --- double pos[3]; - --- // - --- double velocity[3]; --- double acceleration[3]; --- double omega[3]; ---}; --- #endif _EXTERNAL_FM_DATA_H - - --- you can export render targets via shared memory interface --- using next functions --- LoSetSharedTexture(name) -- register texture with name "name" to export --- LoRemoveSharedTexture(name) -- copy texture with name "name" to named shared memory area "name" --- LoUpdateSharedTexture(name) -- unregister texture --- texture exported like Windows BMP file --- -------------------------------- --- |BITMAPFILEHEADER | --- |BITMAPINFOHEADER | --- |bits | --- -------------------------------- --- sample textures : "mfd0" - full SHKVAL screen --- "mfd1" - ABRIS map screen --- "mfd2" - not used --- "mfd3" - not used --- "mirrors" - mirrors dofile(lfs.writedir()..[[Scripts\DCS-SimpleRadio\SimpleRadioInit.lua]])