mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge pull request #896 from FlightControl-Master/FF/Develop
New classes.
This commit is contained in:
@@ -682,15 +682,15 @@ do -- FSM
|
|||||||
end
|
end
|
||||||
|
|
||||||
if execute then
|
if execute then
|
||||||
|
self:_call_handler("onafter", EventName, Params, EventName )
|
||||||
|
self:_call_handler("OnAfter", EventName, Params, EventName )
|
||||||
|
|
||||||
-- only execute the call if the From state is not equal to the To state! Otherwise this function should never execute!
|
-- only execute the call if the From state is not equal to the To state! Otherwise this function should never execute!
|
||||||
--if from ~= to then
|
--if from ~= to then
|
||||||
self:_call_handler("onenter", To, Params, EventName )
|
self:_call_handler("onenter", To, Params, EventName )
|
||||||
self:_call_handler("OnEnter", To, Params, EventName )
|
self:_call_handler("OnEnter", To, Params, EventName )
|
||||||
--end
|
--end
|
||||||
|
|
||||||
self:_call_handler("onafter", EventName, Params, EventName )
|
|
||||||
self:_call_handler("OnAfter", EventName, Params, EventName )
|
|
||||||
|
|
||||||
self:_call_handler("onstate", "change", Params, EventName )
|
self:_call_handler("onstate", "change", Params, EventName )
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -469,8 +469,8 @@ do -- COORDINATE
|
|||||||
-- @param height (Optional) parameter specifying the height ASL.
|
-- @param height (Optional) parameter specifying the height ASL.
|
||||||
-- @return Temperature in Degrees Celsius.
|
-- @return Temperature in Degrees Celsius.
|
||||||
function COORDINATE:GetTemperature(height)
|
function COORDINATE:GetTemperature(height)
|
||||||
|
self:F2(height)
|
||||||
local y=height or self.y
|
local y=height or self.y
|
||||||
env.info("FF height = "..y)
|
|
||||||
local point={x=self.x, y=height or self.y, z=self.z}
|
local point={x=self.x, y=height or self.y, z=self.z}
|
||||||
-- get temperature [K] and pressure [Pa] at point
|
-- get temperature [K] and pressure [Pa] at point
|
||||||
local T,P=atmosphere.getTemperatureAndPressure(point)
|
local T,P=atmosphere.getTemperatureAndPressure(point)
|
||||||
|
|||||||
2428
Moose Development/Moose/Functional/Artillery.lua
Normal file
2428
Moose Development/Moose/Functional/Artillery.lua
Normal file
File diff suppressed because it is too large
Load Diff
1001
Moose Development/Moose/Functional/PseudoATC.lua
Normal file
1001
Moose Development/Moose/Functional/PseudoATC.lua
Normal file
File diff suppressed because it is too large
Load Diff
@@ -42,20 +42,21 @@
|
|||||||
--
|
--
|
||||||
-- # Demo Missions
|
-- # Demo Missions
|
||||||
--
|
--
|
||||||
-- ### [RAT Demo Missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/Release/RAT%20-%20Random%20Air%20Traffic)
|
-- ### [MOOSE - ALL Demo Missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS)
|
||||||
-- ### [ALL Demo Missions pack of the last release](https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases)
|
-- ### [MOOSE - RAT Demo Missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/master/RAT%20-%20Random%20Air%20Traffic)
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
--
|
--
|
||||||
-- # YouTube Channel
|
-- # YouTube Channel
|
||||||
--
|
--
|
||||||
-- ### [DCS WORLD - MOOSE - RAT - Random Air Traffic](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl0u4Zxywtg-mx_ov4vi68CO)
|
-- ### [MOOSE YouTube Channel](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg)
|
||||||
|
-- ### [MOOSE - RAT - Random Air Traffic](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl0u4Zxywtg-mx_ov4vi68CO)
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
--
|
--
|
||||||
-- ### Author: **[funkyfranky](https://forums.eagle.ru/member.php?u=115026)**
|
-- ### Author: **[funkyfranky](https://forums.eagle.ru/member.php?u=115026)**
|
||||||
--
|
--
|
||||||
-- ### Contributions: **Sven van de Velde ([FlightControl](https://forums.eagle.ru/member.php?u=89536))**
|
-- ### Contributions: [FlightControl](https://forums.eagle.ru/member.php?u=89536)
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
-- @module Rat
|
-- @module Rat
|
||||||
@@ -116,7 +117,7 @@
|
|||||||
-- @field #boolean continuejourney Aircraft will continue their journey, i.e. get respawned at their destination with a new random destination.
|
-- @field #boolean continuejourney Aircraft will continue their journey, i.e. get respawned at their destination with a new random destination.
|
||||||
-- @field #number ngroups Number of groups to be spawned in total.
|
-- @field #number ngroups Number of groups to be spawned in total.
|
||||||
-- @field #number alive Number of groups which are alive.
|
-- @field #number alive Number of groups which are alive.
|
||||||
-- @field #boolean f10menu Add an F10 menu for RAT.
|
-- @field #boolean f10menu If true, add an F10 radiomenu for RAT. Default is false.
|
||||||
-- @field #table Menu F10 menu items for this RAT object.
|
-- @field #table Menu F10 menu items for this RAT object.
|
||||||
-- @field #string SubMenuName Submenu name for RAT object.
|
-- @field #string SubMenuName Submenu name for RAT object.
|
||||||
-- @field #boolean respawn_at_landing Respawn aircraft the moment they land rather than at engine shutdown.
|
-- @field #boolean respawn_at_landing Respawn aircraft the moment they land rather than at engine shutdown.
|
||||||
@@ -350,7 +351,7 @@ RAT={
|
|||||||
continuejourney=false, -- Aircraft will continue their journey, i.e. get respawned at their destination with a new random destination.
|
continuejourney=false, -- Aircraft will continue their journey, i.e. get respawned at their destination with a new random destination.
|
||||||
alive=0, -- Number of groups which are alive.
|
alive=0, -- Number of groups which are alive.
|
||||||
ngroups=nil, -- Number of groups to be spawned in total.
|
ngroups=nil, -- Number of groups to be spawned in total.
|
||||||
f10menu=true, -- Add an F10 menu for RAT.
|
f10menu=false, -- Add an F10 menu for RAT.
|
||||||
Menu={}, -- F10 menu items for this RAT object.
|
Menu={}, -- F10 menu items for this RAT object.
|
||||||
SubMenuName=nil, -- Submenu name for RAT object.
|
SubMenuName=nil, -- Submenu name for RAT object.
|
||||||
respawn_at_landing=false, -- Respawn aircraft the moment they land rather than at engine shutdown.
|
respawn_at_landing=false, -- Respawn aircraft the moment they land rather than at engine shutdown.
|
||||||
@@ -506,7 +507,7 @@ RAT.id="RAT | "
|
|||||||
--- RAT version.
|
--- RAT version.
|
||||||
-- @list version
|
-- @list version
|
||||||
RAT.version={
|
RAT.version={
|
||||||
version = "2.2.1",
|
version = "2.2.2",
|
||||||
print = true,
|
print = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1280,7 +1281,7 @@ end
|
|||||||
|
|
||||||
--- Check if aircraft have accidentally been spawned on the runway. If so they will be removed immediatly.
|
--- Check if aircraft have accidentally been spawned on the runway. If so they will be removed immediatly.
|
||||||
-- @param #RAT self
|
-- @param #RAT self
|
||||||
-- @param #booblen switch If true, check is performed. If false, this check is omitted.
|
-- @param #boolean switch If true, check is performed. If false, this check is omitted.
|
||||||
function RAT:CheckOnRunway(switch)
|
function RAT:CheckOnRunway(switch)
|
||||||
self:F2(switch)
|
self:F2(switch)
|
||||||
if switch==nil then
|
if switch==nil then
|
||||||
@@ -1291,7 +1292,7 @@ end
|
|||||||
|
|
||||||
--- Check if aircraft have accidentally been spawned on top of each other. If yes, they will be removed immediately.
|
--- Check if aircraft have accidentally been spawned on top of each other. If yes, they will be removed immediately.
|
||||||
-- @param #RAT self
|
-- @param #RAT self
|
||||||
-- @param #booblen switch If true, check is performed. If false, this check is omitted.
|
-- @param #boolean switch If true, check is performed. If false, this check is omitted.
|
||||||
function RAT:CheckOnTop(switch)
|
function RAT:CheckOnTop(switch)
|
||||||
self:F2(switch)
|
self:F2(switch)
|
||||||
if switch==nil then
|
if switch==nil then
|
||||||
@@ -1302,7 +1303,7 @@ end
|
|||||||
|
|
||||||
--- Put parking spot coordinates in a data base for future use of aircraft.
|
--- Put parking spot coordinates in a data base for future use of aircraft.
|
||||||
-- @param #RAT self
|
-- @param #RAT self
|
||||||
-- @param #booblen switch If true, parking spots are memorized. This is also the default setting.
|
-- @param #boolean switch If true, parking spots are memorized. This is also the default setting.
|
||||||
function RAT:ParkingSpotDB(switch)
|
function RAT:ParkingSpotDB(switch)
|
||||||
self:F2(switch)
|
self:F2(switch)
|
||||||
if switch==nil then
|
if switch==nil then
|
||||||
@@ -1363,6 +1364,21 @@ function RAT:Immortal()
|
|||||||
self.immortal=true
|
self.immortal=true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Radio menu On. Default is off.
|
||||||
|
-- @param #RAT self
|
||||||
|
function RAT:RadioMenuON()
|
||||||
|
self:F2()
|
||||||
|
self.f10menu=true
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Radio menu Off. This is the default setting.
|
||||||
|
-- @param #RAT self
|
||||||
|
function RAT:RadioMenuOFF()
|
||||||
|
self:F2()
|
||||||
|
self.f10menu=false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Activate uncontrolled aircraft.
|
--- Activate uncontrolled aircraft.
|
||||||
-- @param #RAT self
|
-- @param #RAT self
|
||||||
-- @param #number maxactivated Maximal numnber of activated aircraft. Absolute maximum will be the number of spawned groups. Default is 1.
|
-- @param #number maxactivated Maximal numnber of activated aircraft. Absolute maximum will be the number of spawned groups. Default is 1.
|
||||||
@@ -4265,10 +4281,10 @@ end
|
|||||||
function RAT:_CommandImmortal(group, switch)
|
function RAT:_CommandImmortal(group, switch)
|
||||||
|
|
||||||
-- Command structure for setting groups to invisible.
|
-- Command structure for setting groups to invisible.
|
||||||
local SetInvisible = {id = 'SetImmortal', params = {value = switch}}
|
local SetImmortal = {id = 'SetImmortal', params = {value = switch}}
|
||||||
|
|
||||||
-- Execute command.
|
-- Execute command.
|
||||||
group:SetCommand(SetInvisible)
|
group:SetCommand(SetImmortal)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Adds a parking spot at an airport when it has been used by a spawned RAT aircraft to the RAT parking data base.
|
--- Adds a parking spot at an airport when it has been used by a spawned RAT aircraft to the RAT parking data base.
|
||||||
|
|||||||
@@ -32,12 +32,13 @@
|
|||||||
--
|
--
|
||||||
-- # Demo Missions
|
-- # Demo Missions
|
||||||
--
|
--
|
||||||
-- ### [ALL Demo Missions pack of the last release](https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases)
|
-- ### [MOOSE - ALL Demo Missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS)
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
--
|
--
|
||||||
-- # YouTube Channel
|
-- # YouTube Channel
|
||||||
--
|
--
|
||||||
|
-- ### [MOOSE YouTube Channel](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg)
|
||||||
-- ### [MOOSE - On the Range - Demonstration Video](https://www.youtube.com/watch?v=kIXcxNB9_3M)
|
-- ### [MOOSE - On the Range - Demonstration Video](https://www.youtube.com/watch?v=kIXcxNB9_3M)
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
@@ -211,6 +212,9 @@
|
|||||||
--
|
--
|
||||||
-- The function @{#RANGE.DebugON}() can be used to send messages on screen. It also smokes all defined strafe and bombing targets, the strafe pit approach boxes and the range zone.
|
-- The function @{#RANGE.DebugON}() can be used to send messages on screen. It also smokes all defined strafe and bombing targets, the strafe pit approach boxes and the range zone.
|
||||||
--
|
--
|
||||||
|
-- Note that it can happen that the RANGE radio menu is not shown. Check that the range object is defined as a **global** variable rather than a local one.
|
||||||
|
-- The could avoid the lua garbage collection to accidentally/falsely deallocate the RANGE objects.
|
||||||
|
--
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
-- @field #RANGE
|
-- @field #RANGE
|
||||||
@@ -279,7 +283,7 @@ RANGE.id="RANGE | "
|
|||||||
|
|
||||||
--- Range script version.
|
--- Range script version.
|
||||||
-- @field #number version
|
-- @field #number version
|
||||||
RANGE.version="1.1.0"
|
RANGE.version="1.1.1"
|
||||||
|
|
||||||
--TODO list:
|
--TODO list:
|
||||||
--TODO: Add custom weapons, which can be specified by the user.
|
--TODO: Add custom weapons, which can be specified by the user.
|
||||||
@@ -1537,6 +1541,80 @@ function RANGE:_DisplayRangeInfo(_unitname)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Display bombing target locations to player.
|
||||||
|
-- @param #RANGE self
|
||||||
|
-- @param #string _unitname Name of the player unit.
|
||||||
|
function RANGE:_DisplayBombTargets(_unitname)
|
||||||
|
self:F(_unitname)
|
||||||
|
|
||||||
|
-- Get player unit and player name.
|
||||||
|
local _unit, _playername = self:_GetPlayerUnitAndName(_unitname)
|
||||||
|
|
||||||
|
-- Check if we have a player.
|
||||||
|
if _unit and _playername then
|
||||||
|
|
||||||
|
-- Player settings.
|
||||||
|
local _settings=_DATABASE:GetPlayerSettings(_playername) or _SETTINGS --Core.Settings#SETTINGS
|
||||||
|
|
||||||
|
-- Message text.
|
||||||
|
local _text="Bomb Target Locations:"
|
||||||
|
|
||||||
|
for _,_bombtarget in pairs(self.bombingTargets) do
|
||||||
|
local _target=_bombtarget.target --Wrapper.Positionable#POSITIONABLE
|
||||||
|
if _target and _target:IsAlive() then
|
||||||
|
|
||||||
|
-- Core.Point#COORDINATE
|
||||||
|
local coord=_target:GetCoordinate() --Core.Point#COORDINATE
|
||||||
|
local mycoord=coord:ToStringA2G(_unit, _settings)
|
||||||
|
_text=_text..string.format("\n- %s: %s",_bombtarget.name, mycoord)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self:_DisplayMessageToGroup(_unit,_text, nil, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Display pit location and heading to player.
|
||||||
|
-- @param #RANGE self
|
||||||
|
-- @param #string _unitname Name of the player unit.
|
||||||
|
function RANGE:_DisplayStrafePits(_unitname)
|
||||||
|
self:F(_unitname)
|
||||||
|
|
||||||
|
-- Get player unit and player name.
|
||||||
|
local _unit, _playername = self:_GetPlayerUnitAndName(_unitname)
|
||||||
|
|
||||||
|
-- Check if we have a player.
|
||||||
|
if _unit and _playername then
|
||||||
|
|
||||||
|
-- Player settings.
|
||||||
|
local _settings=_DATABASE:GetPlayerSettings(_playername) or _SETTINGS --Core.Settings#SETTINGS
|
||||||
|
|
||||||
|
-- Message text.
|
||||||
|
local _text="Strafe Target Locations:"
|
||||||
|
|
||||||
|
for _,_strafepit in pairs(self.strafeTargets) do
|
||||||
|
local _target=_strafepit --Wrapper.Positionable#POSITIONABLE
|
||||||
|
|
||||||
|
-- Pit parameters.
|
||||||
|
local coord=_strafepit.coordinate --Core.Point#COORDINATE
|
||||||
|
local heading=_strafepit.heading
|
||||||
|
|
||||||
|
-- Turn heading around ==> approach heading.
|
||||||
|
if heading>180 then
|
||||||
|
heading=heading-180
|
||||||
|
else
|
||||||
|
heading=heading+180
|
||||||
|
end
|
||||||
|
|
||||||
|
local mycoord=coord:ToStringA2G(_unit, _settings)
|
||||||
|
_text=_text..string.format("\n- %s: %s - heading %03d",_strafepit.name, mycoord, heading)
|
||||||
|
end
|
||||||
|
|
||||||
|
self:_DisplayMessageToGroup(_unit,_text, nil, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Report weather conditions at range. Temperature, QFE pressure and wind data.
|
--- Report weather conditions at range. Temperature, QFE pressure and wind data.
|
||||||
-- @param #RANGE self
|
-- @param #RANGE self
|
||||||
-- @param #string _unitname Name of the player unit.
|
-- @param #string _unitname Name of the player unit.
|
||||||
@@ -1792,11 +1870,11 @@ function RANGE:_AddF10Commands(_unitName)
|
|||||||
local _statsPath = missionCommands.addSubMenuForGroup(_gid, "Statistics", _rangePath)
|
local _statsPath = missionCommands.addSubMenuForGroup(_gid, "Statistics", _rangePath)
|
||||||
local _markPath = missionCommands.addSubMenuForGroup(_gid, "Mark Targets", _rangePath)
|
local _markPath = missionCommands.addSubMenuForGroup(_gid, "Mark Targets", _rangePath)
|
||||||
local _settingsPath = missionCommands.addSubMenuForGroup(_gid, "My Settings", _rangePath)
|
local _settingsPath = missionCommands.addSubMenuForGroup(_gid, "My Settings", _rangePath)
|
||||||
|
local _infoPath = missionCommands.addSubMenuForGroup(_gid, "Range Info", _rangePath)
|
||||||
-- F10/On the Range/<Range Name>/My Settings/
|
-- F10/On the Range/<Range Name>/My Settings/
|
||||||
local _mysmokePath = missionCommands.addSubMenuForGroup(_gid, "Smoke Color", _settingsPath)
|
local _mysmokePath = missionCommands.addSubMenuForGroup(_gid, "Smoke Color", _settingsPath)
|
||||||
local _myflarePath = missionCommands.addSubMenuForGroup(_gid, "Flare Color", _settingsPath)
|
local _myflarePath = missionCommands.addSubMenuForGroup(_gid, "Flare Color", _settingsPath)
|
||||||
|
|
||||||
--TODO: Convert to MOOSE menu.
|
|
||||||
-- F10/On the Range/<Range Name>/Mark Targets/
|
-- F10/On the Range/<Range Name>/Mark Targets/
|
||||||
missionCommands.addCommandForGroup(_gid, "Mark On Map", _markPath, self._MarkTargetsOnMap, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "Mark On Map", _markPath, self._MarkTargetsOnMap, self, _unitName)
|
||||||
missionCommands.addCommandForGroup(_gid, "Illuminate Range", _markPath, self._IlluminateBombTargets, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "Illuminate Range", _markPath, self._IlluminateBombTargets, self, _unitName)
|
||||||
@@ -1824,9 +1902,11 @@ function RANGE:_AddF10Commands(_unitName)
|
|||||||
missionCommands.addCommandForGroup(_gid, "Smoke Delay On/Off", _settingsPath, self._SmokeBombDelayOnOff, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "Smoke Delay On/Off", _settingsPath, self._SmokeBombDelayOnOff, self, _unitName)
|
||||||
missionCommands.addCommandForGroup(_gid, "Smoke Impact On/Off", _settingsPath, self._SmokeBombImpactOnOff, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "Smoke Impact On/Off", _settingsPath, self._SmokeBombImpactOnOff, self, _unitName)
|
||||||
missionCommands.addCommandForGroup(_gid, "Flare Hits On/Off", _settingsPath, self._FlareDirectHitsOnOff, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "Flare Hits On/Off", _settingsPath, self._FlareDirectHitsOnOff, self, _unitName)
|
||||||
-- F10/On the Range/<Range Name>/
|
-- F10/On the Range/<Range Name>/Range Information
|
||||||
missionCommands.addCommandForGroup(_gid, "Range Information", _rangePath, self._DisplayRangeInfo, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "General Info", _infoPath, self._DisplayRangeInfo, self, _unitName)
|
||||||
missionCommands.addCommandForGroup(_gid, "Weather Report", _rangePath, self._DisplayRangeWeather, self, _unitName)
|
missionCommands.addCommandForGroup(_gid, "Weather Report", _infoPath, self._DisplayRangeWeather, self, _unitName)
|
||||||
|
missionCommands.addCommandForGroup(_gid, "Bombing Targets", _infoPath, self._DisplayBombTargets, self, _unitName)
|
||||||
|
missionCommands.addCommandForGroup(_gid, "Strafe Pits", _infoPath, self._DisplayStrafePits, self, _unitName)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
self:T(RANGE.id.."Could not find group or group ID in AddF10Menu() function. Unit name: ".._unitName)
|
self:T(RANGE.id.."Could not find group or group ID in AddF10Menu() function. Unit name: ".._unitName)
|
||||||
|
|||||||
1844
Moose Development/Moose/Functional/Suppression.lua
Normal file
1844
Moose Development/Moose/Functional/Suppression.lua
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1050,9 +1050,10 @@ end
|
|||||||
-- @param Dcs.DCSTypes#Vec2 Vec2 The point to fire at.
|
-- @param Dcs.DCSTypes#Vec2 Vec2 The point to fire at.
|
||||||
-- @param Dcs.DCSTypes#Distance Radius The radius of the zone to deploy the fire at.
|
-- @param Dcs.DCSTypes#Distance Radius The radius of the zone to deploy the fire at.
|
||||||
-- @param #number AmmoCount (optional) Quantity of ammunition to expand (omit to fire until ammunition is depleted).
|
-- @param #number AmmoCount (optional) Quantity of ammunition to expand (omit to fire until ammunition is depleted).
|
||||||
|
-- @param #number WeaponType (optional) Enum for weapon type ID. This value is only required if you want the group firing to use a specific weapon, for instance using the task on a ship to force it to fire guided missiles at targets within cannon range. See http://wiki.hoggit.us/view/DCS_enum_weapon_flag
|
||||||
-- @return Dcs.DCSTasking.Task#Task The DCS task structure.
|
-- @return Dcs.DCSTasking.Task#Task The DCS task structure.
|
||||||
function CONTROLLABLE:TaskFireAtPoint( Vec2, Radius, AmmoCount )
|
function CONTROLLABLE:TaskFireAtPoint( Vec2, Radius, AmmoCount, WeaponType )
|
||||||
self:F2( { self.ControllableName, Vec2, Radius, AmmoCount } )
|
self:F2( { self.ControllableName, Vec2, Radius, AmmoCount, WeaponType } )
|
||||||
|
|
||||||
-- FireAtPoint = {
|
-- FireAtPoint = {
|
||||||
-- id = 'FireAtPoint',
|
-- id = 'FireAtPoint',
|
||||||
@@ -1079,6 +1080,10 @@ function CONTROLLABLE:TaskFireAtPoint( Vec2, Radius, AmmoCount )
|
|||||||
DCSTask.params.expendQtyEnabled = true
|
DCSTask.params.expendQtyEnabled = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if WeaponType then
|
||||||
|
DCSTask.params.weaponType=WeaponType
|
||||||
|
end
|
||||||
|
|
||||||
self:T3( { DCSTask } )
|
self:T3( { DCSTask } )
|
||||||
return DCSTask
|
return DCSTask
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -391,7 +391,7 @@ function POSITIONABLE:GetVelocityVec3()
|
|||||||
|
|
||||||
local DCSPositionable = self:GetDCSObject()
|
local DCSPositionable = self:GetDCSObject()
|
||||||
|
|
||||||
if DCSPositionable then
|
if DCSPositionable and DCSPositionable:isExist() then
|
||||||
local PositionableVelocityVec3 = DCSPositionable:getVelocity()
|
local PositionableVelocityVec3 = DCSPositionable:getVelocity()
|
||||||
self:T3( PositionableVelocityVec3 )
|
self:T3( PositionableVelocityVec3 )
|
||||||
return PositionableVelocityVec3
|
return PositionableVelocityVec3
|
||||||
@@ -433,7 +433,7 @@ function POSITIONABLE:GetVelocityKMH()
|
|||||||
|
|
||||||
local DCSPositionable = self:GetDCSObject()
|
local DCSPositionable = self:GetDCSObject()
|
||||||
|
|
||||||
if DCSPositionable then
|
if DCSPositionable and DCSPositionable:isExist() then
|
||||||
local VelocityVec3 = self:GetVelocityVec3()
|
local VelocityVec3 = self:GetVelocityVec3()
|
||||||
local Velocity = ( VelocityVec3.x ^ 2 + VelocityVec3.y ^ 2 + VelocityVec3.z ^ 2 ) ^ 0.5 -- in meters / sec
|
local Velocity = ( VelocityVec3.x ^ 2 + VelocityVec3.y ^ 2 + VelocityVec3.z ^ 2 ) ^ 0.5 -- in meters / sec
|
||||||
local Velocity = Velocity * 3.6 -- now it is in km/h.
|
local Velocity = Velocity * 3.6 -- now it is in km/h.
|
||||||
@@ -452,7 +452,7 @@ function POSITIONABLE:GetVelocityMPS()
|
|||||||
|
|
||||||
local DCSPositionable = self:GetDCSObject()
|
local DCSPositionable = self:GetDCSObject()
|
||||||
|
|
||||||
if DCSPositionable then
|
if DCSPositionable and DCSPositionable:isExist() then
|
||||||
local VelocityVec3 = self:GetVelocityVec3()
|
local VelocityVec3 = self:GetVelocityVec3()
|
||||||
local Velocity = ( VelocityVec3.x ^ 2 + VelocityVec3.y ^ 2 + VelocityVec3.z ^ 2 ) ^ 0.5 -- in meters / sec
|
local Velocity = ( VelocityVec3.x ^ 2 + VelocityVec3.y ^ 2 + VelocityVec3.z ^ 2 ) ^ 0.5 -- in meters / sec
|
||||||
self:T3( Velocity )
|
self:T3( Velocity )
|
||||||
|
|||||||
@@ -161,18 +161,28 @@ end
|
|||||||
|
|
||||||
--- Destroys the UNIT.
|
--- Destroys the UNIT.
|
||||||
-- @param #UNIT self
|
-- @param #UNIT self
|
||||||
|
-- @param #boolean GenerateEvent (Optional) true if you want to generate a crash or dead event for the unit.
|
||||||
-- @return #nil The DCS Unit is not existing or alive.
|
-- @return #nil The DCS Unit is not existing or alive.
|
||||||
function UNIT:Destroy()
|
function UNIT:Destroy( GenerateEvent )
|
||||||
self:F2( self.ObjectName )
|
self:F2( self.ObjectName )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
|
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
|
|
||||||
local UnitGroup = self:GetGroup()
|
local UnitGroup = self:GetGroup()
|
||||||
local UnitGroupName = UnitGroup:GetName()
|
local UnitGroupName = UnitGroup:GetName()
|
||||||
self:F( { UnitGroupName = UnitGroupName } )
|
self:F( { UnitGroupName = UnitGroupName } )
|
||||||
|
|
||||||
|
if GenerateEvent and GenerateEvent == true then
|
||||||
|
if self:IsAir() then
|
||||||
|
self:CreateEventCrash( timer.getTime(), DCSObject )
|
||||||
|
else
|
||||||
|
self:CreateEventDead( timer.getTime(), DCSObject )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
USERFLAG:New( UnitGroupName ):Set( 100 )
|
USERFLAG:New( UnitGroupName ):Set( 100 )
|
||||||
--BASE:CreateEventCrash( timer.getTime(), DCSObject )
|
|
||||||
DCSObject:destroy()
|
DCSObject:destroy()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ Functional/Range.lua
|
|||||||
Functional/ZoneGoal.lua
|
Functional/ZoneGoal.lua
|
||||||
Functional/ZoneGoalCoalition.lua
|
Functional/ZoneGoalCoalition.lua
|
||||||
Functional/ZoneCaptureCoalition.lua
|
Functional/ZoneCaptureCoalition.lua
|
||||||
|
Functional/Artillery.lua
|
||||||
|
Functional/Suppression.lua
|
||||||
|
Functional/PseudoATC.lua
|
||||||
|
|
||||||
AI/AI_Balancer.lua
|
AI/AI_Balancer.lua
|
||||||
AI/AI_A2A.lua
|
AI/AI_A2A.lua
|
||||||
|
|||||||
Reference in New Issue
Block a user