mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge pull request #915 from FlightControl-Master/FF/Develop
ARTY v1.0.0
This commit is contained in:
@@ -933,6 +933,18 @@ function EVENT:onEvent( Event )
|
|||||||
Event.WeaponTypeName = Event.WeaponUNIT and Event.Weapon:getTypeName()
|
Event.WeaponTypeName = Event.WeaponUNIT and Event.Weapon:getTypeName()
|
||||||
--Event.WeaponTgtDCSUnit = Event.Weapon:getTarget()
|
--Event.WeaponTgtDCSUnit = Event.Weapon:getTarget()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- @FC: something like this should be added.
|
||||||
|
--[[
|
||||||
|
if Event.idx then
|
||||||
|
Event.MarkID=Event.idx
|
||||||
|
Event.MarkVec3=Event.pos
|
||||||
|
Event.MarkCoordinate=COORDINATE:NewFromVec3(Event.pos)
|
||||||
|
Event.MarkText=Event.text
|
||||||
|
Event.MarkCoalition=Event.coalition
|
||||||
|
Event.MarkGroupID = Event.groupID
|
||||||
|
end
|
||||||
|
]]
|
||||||
|
|
||||||
if Event.cargo then
|
if Event.cargo then
|
||||||
Event.Cargo = Event.cargo
|
Event.Cargo = Event.cargo
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ MESSAGE.Type = {
|
|||||||
-- @param #string MessageText is the text of the Message.
|
-- @param #string MessageText is the text of the Message.
|
||||||
-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
|
-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
|
||||||
-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ".
|
-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ".
|
||||||
|
-- @param #boolean ClearScreen (optional) Clear all previous messages if true.
|
||||||
-- @return #MESSAGE
|
-- @return #MESSAGE
|
||||||
-- @usage
|
-- @usage
|
||||||
-- -- Create a series of new Messages.
|
-- -- Create a series of new Messages.
|
||||||
@@ -77,7 +78,7 @@ MESSAGE.Type = {
|
|||||||
-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" )
|
-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" )
|
||||||
-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" )
|
-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" )
|
||||||
-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score")
|
-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score")
|
||||||
function MESSAGE:New( MessageText, MessageDuration, MessageCategory )
|
function MESSAGE:New( MessageText, MessageDuration, MessageCategory, ClearScreen )
|
||||||
local self = BASE:Inherit( self, BASE:New() )
|
local self = BASE:Inherit( self, BASE:New() )
|
||||||
self:F( { MessageText, MessageDuration, MessageCategory } )
|
self:F( { MessageText, MessageDuration, MessageCategory } )
|
||||||
|
|
||||||
@@ -94,6 +95,11 @@ function MESSAGE:New( MessageText, MessageDuration, MessageCategory )
|
|||||||
else
|
else
|
||||||
self.MessageCategory = ""
|
self.MessageCategory = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.ClearScreen=false
|
||||||
|
if ClearScreen~=nil then
|
||||||
|
self.ClearScreen=ClearScreen
|
||||||
|
end
|
||||||
|
|
||||||
self.MessageDuration = MessageDuration or 5
|
self.MessageDuration = MessageDuration or 5
|
||||||
self.MessageTime = timer.getTime()
|
self.MessageTime = timer.getTime()
|
||||||
@@ -114,18 +120,24 @@ end
|
|||||||
-- @param self
|
-- @param self
|
||||||
-- @param #string MessageText is the text of the Message.
|
-- @param #string MessageText is the text of the Message.
|
||||||
-- @param #MESSAGE.Type MessageType The type of the message.
|
-- @param #MESSAGE.Type MessageType The type of the message.
|
||||||
|
-- @param #boolean ClearScreen (optional) Clear all previous messages.
|
||||||
-- @return #MESSAGE
|
-- @return #MESSAGE
|
||||||
-- @usage
|
-- @usage
|
||||||
-- MessageAll = MESSAGE:NewType( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", MESSAGE.Type.Information )
|
-- MessageAll = MESSAGE:NewType( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", MESSAGE.Type.Information )
|
||||||
-- MessageRED = MESSAGE:NewType( "To the RED Players: You receive a penalty because you've killed one of your own units", MESSAGE.Type.Information )
|
-- MessageRED = MESSAGE:NewType( "To the RED Players: You receive a penalty because you've killed one of your own units", MESSAGE.Type.Information )
|
||||||
-- MessageClient1 = MESSAGE:NewType( "Congratulations, you've just hit a target", MESSAGE.Type.Update )
|
-- MessageClient1 = MESSAGE:NewType( "Congratulations, you've just hit a target", MESSAGE.Type.Update )
|
||||||
-- MessageClient2 = MESSAGE:NewType( "Congratulations, you've just killed a target", MESSAGE.Type.Update )
|
-- MessageClient2 = MESSAGE:NewType( "Congratulations, you've just killed a target", MESSAGE.Type.Update )
|
||||||
function MESSAGE:NewType( MessageText, MessageType )
|
function MESSAGE:NewType( MessageText, MessageType, ClearScreen )
|
||||||
|
|
||||||
local self = BASE:Inherit( self, BASE:New() )
|
local self = BASE:Inherit( self, BASE:New() )
|
||||||
self:F( { MessageText } )
|
self:F( { MessageText } )
|
||||||
|
|
||||||
self.MessageType = MessageType
|
self.MessageType = MessageType
|
||||||
|
|
||||||
|
self.ClearScreen=false
|
||||||
|
if ClearScreen~=nil then
|
||||||
|
self.ClearScreen=ClearScreen
|
||||||
|
end
|
||||||
|
|
||||||
self.MessageTime = timer.getTime()
|
self.MessageTime = timer.getTime()
|
||||||
self.MessageText = MessageText:gsub("^\n","",1):gsub("\n$","",1)
|
self.MessageText = MessageText:gsub("^\n","",1):gsub("\n$","",1)
|
||||||
@@ -135,6 +147,15 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- Clears all previous messages from the screen before the new message is displayed. Not that this must come before all functions starting with ToX(), e.g. ToAll(), ToGroup() etc.
|
||||||
|
-- @param #MESSAGE self
|
||||||
|
-- @return #MESSAGE
|
||||||
|
function MESSAGE:Clear()
|
||||||
|
self:F()
|
||||||
|
self.ClearScreen=true
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player".
|
--- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player".
|
||||||
@@ -170,7 +191,7 @@ function MESSAGE:ToClient( Client, Settings )
|
|||||||
if self.MessageDuration ~= 0 then
|
if self.MessageDuration ~= 0 then
|
||||||
local ClientGroupID = Client:GetClientGroupID()
|
local ClientGroupID = Client:GetClientGroupID()
|
||||||
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
||||||
trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration )
|
trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration , self.ClearScreen)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -194,7 +215,7 @@ function MESSAGE:ToGroup( Group, Settings )
|
|||||||
|
|
||||||
if self.MessageDuration ~= 0 then
|
if self.MessageDuration ~= 0 then
|
||||||
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
||||||
trigger.action.outTextForGroup( Group:GetID(), self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration )
|
trigger.action.outTextForGroup( Group:GetID(), self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration, self.ClearScreen )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -262,7 +283,7 @@ function MESSAGE:ToCoalition( CoalitionSide, Settings )
|
|||||||
if CoalitionSide then
|
if CoalitionSide then
|
||||||
if self.MessageDuration ~= 0 then
|
if self.MessageDuration ~= 0 then
|
||||||
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
||||||
trigger.action.outTextForCoalition( CoalitionSide, self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration )
|
trigger.action.outTextForCoalition( CoalitionSide, self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration, self.ClearScreen )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -305,7 +326,7 @@ function MESSAGE:ToAll()
|
|||||||
|
|
||||||
if self.MessageDuration ~= 0 then
|
if self.MessageDuration ~= 0 then
|
||||||
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
|
||||||
trigger.action.outText( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration )
|
trigger.action.outText( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration, self.ClearScreen )
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|||||||
@@ -251,6 +251,28 @@ do -- COORDINATE
|
|||||||
return { x = self.x, y = self.z }
|
return { x = self.x, y = self.z }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Returns the coordinate from the latitude and longitude given in decimal degrees.
|
||||||
|
-- @param #COORDINATE self
|
||||||
|
-- @param #number latitude Latitude in decimal degrees.
|
||||||
|
-- @param #number longitude Longitude in decimal degrees.
|
||||||
|
-- @param #number altitude (Optional) Altitude in meters. Default is the land height at the coordinate.
|
||||||
|
-- @return #COORDINATE
|
||||||
|
function COORDINATE:NewFromLLDD( latitude, longitude, altitude)
|
||||||
|
|
||||||
|
-- Returns a point from latitude and longitude in the vec3 format.
|
||||||
|
local vec3=coord.LLtoLO(latitude, longitude)
|
||||||
|
|
||||||
|
-- Convert vec3 to coordinate object.
|
||||||
|
local _coord=self:NewFromVec3(vec3)
|
||||||
|
|
||||||
|
-- Adjust height
|
||||||
|
if altitude==nil then
|
||||||
|
_coord.y=altitude
|
||||||
|
end
|
||||||
|
|
||||||
|
return _coord
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Returns if the 2 coordinates are at the same 2D position.
|
--- Returns if the 2 coordinates are at the same 2D position.
|
||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
@@ -935,26 +957,25 @@ do -- COORDINATE
|
|||||||
-- The first point is the closest point on road of the given coordinate. The last point is the closest point on road of the ToCoord. Hence, the coordinate itself and the final ToCoord are not necessarily included in the path.
|
-- The first point is the closest point on road of the given coordinate. The last point is the closest point on road of the ToCoord. Hence, the coordinate itself and the final ToCoord are not necessarily included in the path.
|
||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
-- @param #COORDINATE ToCoord Coordinate of destination.
|
-- @param #COORDINATE ToCoord Coordinate of destination.
|
||||||
-- @return #table Table of coordinates on road.
|
-- @return #table Table of coordinates on road. If no path on road can be found, nil is returned.
|
||||||
function COORDINATE:GetPathOnRoad(ToCoord)
|
function COORDINATE:GetPathOnRoad(ToCoord)
|
||||||
|
|
||||||
-- DCS API function returning a table of vec2.
|
-- DCS API function returning a table of vec2.
|
||||||
local path = land.findPathOnRoads("roads", self.x, self.z, ToCoord.x, ToCoord.z)
|
local path = land.findPathOnRoads("roads", self.x, self.z, ToCoord.x, ToCoord.z)
|
||||||
|
|
||||||
--Path[#Path+1]=COORDINATE:NewFromVec2(path[1])
|
|
||||||
--Path[#Path+1]=COORDINATE:NewFromVec2(path[#path])
|
|
||||||
--Path[#Path+1]=self:GetClosestPointToRoad()
|
|
||||||
--Path[#Path+1]=ToCoord:GetClosestPointToRoad()
|
|
||||||
-- I've removed this stuff because it severely slows down DCS in case of paths with a lot of segments.
|
|
||||||
-- Just the beginning and the end point is sufficient.
|
|
||||||
|
|
||||||
local Path={}
|
local Path={}
|
||||||
--Path[#Path+1]=self
|
|
||||||
for i, v in ipairs(path) do
|
|
||||||
Path[#Path+1]=COORDINATE:NewFromVec2(v)
|
|
||||||
end
|
|
||||||
--Path[#Path+1]=ToCoord
|
|
||||||
|
|
||||||
|
if path then
|
||||||
|
--Path[#Path+1]=self
|
||||||
|
for i, v in ipairs(path) do
|
||||||
|
Path[#Path+1]=COORDINATE:NewFromVec2(v)
|
||||||
|
end
|
||||||
|
--Path[#Path+1]=ToCoord
|
||||||
|
else
|
||||||
|
-- There are cases where no path on road can be found.
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
return Path
|
return Path
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1153,13 +1174,19 @@ do -- COORDINATE
|
|||||||
--- Mark to All
|
--- Mark to All
|
||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
-- @param #string MarkText Free format text that shows the marking clarification.
|
-- @param #string MarkText Free format text that shows the marking clarification.
|
||||||
|
-- @param #boolean ReadOnly (Optional) Mark is readonly and cannot be removed by users. Default false.
|
||||||
|
-- @param #string Text (Optional) Text displayed when mark is added. Default none.
|
||||||
-- @return #number The resulting Mark ID which is a number.
|
-- @return #number The resulting Mark ID which is a number.
|
||||||
-- @usage
|
-- @usage
|
||||||
-- local TargetCoord = TargetGroup:GetCoordinate()
|
-- local TargetCoord = TargetGroup:GetCoordinate()
|
||||||
-- local MarkID = TargetCoord:MarkToAll( "This is a target for all players" )
|
-- local MarkID = TargetCoord:MarkToAll( "This is a target for all players" )
|
||||||
function COORDINATE:MarkToAll( MarkText )
|
function COORDINATE:MarkToAll( MarkText, ReadOnly, Text )
|
||||||
local MarkID = UTILS.GetMarkID()
|
local MarkID = UTILS.GetMarkID()
|
||||||
trigger.action.markToAll( MarkID, MarkText, self:GetVec3(), false, "" )
|
if ReadOnly==nil then
|
||||||
|
ReadOnly=false
|
||||||
|
end
|
||||||
|
local text=Text or ""
|
||||||
|
trigger.action.markToAll( MarkID, MarkText, self:GetVec3(), ReadOnly, text)
|
||||||
return MarkID
|
return MarkID
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1167,50 +1194,66 @@ do -- COORDINATE
|
|||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
-- @param #string MarkText Free format text that shows the marking clarification.
|
-- @param #string MarkText Free format text that shows the marking clarification.
|
||||||
-- @param Coalition
|
-- @param Coalition
|
||||||
|
-- @param #boolean ReadOnly (Optional) Mark is readonly and cannot be removed by users. Default false.
|
||||||
|
-- @param #string Text (Optional) Text displayed when mark is added. Default none.
|
||||||
-- @return #number The resulting Mark ID which is a number.
|
-- @return #number The resulting Mark ID which is a number.
|
||||||
-- @usage
|
-- @usage
|
||||||
-- local TargetCoord = TargetGroup:GetCoordinate()
|
-- local TargetCoord = TargetGroup:GetCoordinate()
|
||||||
-- local MarkID = TargetCoord:MarkToCoalition( "This is a target for the red coalition", coalition.side.RED )
|
-- local MarkID = TargetCoord:MarkToCoalition( "This is a target for the red coalition", coalition.side.RED )
|
||||||
function COORDINATE:MarkToCoalition( MarkText, Coalition )
|
function COORDINATE:MarkToCoalition( MarkText, Coalition, ReadOnly, Text )
|
||||||
local MarkID = UTILS.GetMarkID()
|
local MarkID = UTILS.GetMarkID()
|
||||||
trigger.action.markToCoalition( MarkID, MarkText, self:GetVec3(), Coalition, false, "" )
|
if ReadOnly==nil then
|
||||||
|
ReadOnly=false
|
||||||
|
end
|
||||||
|
local text=Text or ""
|
||||||
|
trigger.action.markToCoalition( MarkID, MarkText, self:GetVec3(), Coalition, ReadOnly, text )
|
||||||
return MarkID
|
return MarkID
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Mark to Red Coalition
|
--- Mark to Red Coalition
|
||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
-- @param #string MarkText Free format text that shows the marking clarification.
|
-- @param #string MarkText Free format text that shows the marking clarification.
|
||||||
|
-- @param #boolean ReadOnly (Optional) Mark is readonly and cannot be removed by users. Default false.
|
||||||
|
-- @param #string Text (Optional) Text displayed when mark is added. Default none.
|
||||||
-- @return #number The resulting Mark ID which is a number.
|
-- @return #number The resulting Mark ID which is a number.
|
||||||
-- @usage
|
-- @usage
|
||||||
-- local TargetCoord = TargetGroup:GetCoordinate()
|
-- local TargetCoord = TargetGroup:GetCoordinate()
|
||||||
-- local MarkID = TargetCoord:MarkToCoalitionRed( "This is a target for the red coalition" )
|
-- local MarkID = TargetCoord:MarkToCoalitionRed( "This is a target for the red coalition" )
|
||||||
function COORDINATE:MarkToCoalitionRed( MarkText )
|
function COORDINATE:MarkToCoalitionRed( MarkText, ReadOnly, Text )
|
||||||
return self:MarkToCoalition( MarkText, coalition.side.RED )
|
return self:MarkToCoalition( MarkText, coalition.side.RED, ReadOnly, Text )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Mark to Blue Coalition
|
--- Mark to Blue Coalition
|
||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
-- @param #string MarkText Free format text that shows the marking clarification.
|
-- @param #string MarkText Free format text that shows the marking clarification.
|
||||||
|
-- @param #boolean ReadOnly (Optional) Mark is readonly and cannot be removed by users. Default false.
|
||||||
|
-- @param #string Text (Optional) Text displayed when mark is added. Default none.
|
||||||
-- @return #number The resulting Mark ID which is a number.
|
-- @return #number The resulting Mark ID which is a number.
|
||||||
-- @usage
|
-- @usage
|
||||||
-- local TargetCoord = TargetGroup:GetCoordinate()
|
-- local TargetCoord = TargetGroup:GetCoordinate()
|
||||||
-- local MarkID = TargetCoord:MarkToCoalitionBlue( "This is a target for the blue coalition" )
|
-- local MarkID = TargetCoord:MarkToCoalitionBlue( "This is a target for the blue coalition" )
|
||||||
function COORDINATE:MarkToCoalitionBlue( MarkText )
|
function COORDINATE:MarkToCoalitionBlue( MarkText, ReadOnly, Text )
|
||||||
return self:MarkToCoalition( MarkText, coalition.side.BLUE )
|
return self:MarkToCoalition( MarkText, coalition.side.BLUE, ReadOnly, Text )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Mark to Group
|
--- Mark to Group
|
||||||
-- @param #COORDINATE self
|
-- @param #COORDINATE self
|
||||||
-- @param #string MarkText Free format text that shows the marking clarification.
|
-- @param #string MarkText Free format text that shows the marking clarification.
|
||||||
-- @param Wrapper.Group#GROUP MarkGroup The @{Wrapper.Group} that receives the mark.
|
-- @param Wrapper.Group#GROUP MarkGroup The @{Wrapper.Group} that receives the mark.
|
||||||
|
-- @param #boolean ReadOnly (Optional) Mark is readonly and cannot be removed by users. Default false.
|
||||||
|
-- @param #string Text (Optional) Text displayed when mark is added. Default none.
|
||||||
-- @return #number The resulting Mark ID which is a number.
|
-- @return #number The resulting Mark ID which is a number.
|
||||||
-- @usage
|
-- @usage
|
||||||
-- local TargetCoord = TargetGroup:GetCoordinate()
|
-- local TargetCoord = TargetGroup:GetCoordinate()
|
||||||
-- local MarkGroup = GROUP:FindByName( "AttackGroup" )
|
-- local MarkGroup = GROUP:FindByName( "AttackGroup" )
|
||||||
-- local MarkID = TargetCoord:MarkToGroup( "This is a target for the attack group", AttackGroup )
|
-- local MarkID = TargetCoord:MarkToGroup( "This is a target for the attack group", AttackGroup )
|
||||||
function COORDINATE:MarkToGroup( MarkText, MarkGroup )
|
function COORDINATE:MarkToGroup( MarkText, MarkGroup, ReadOnly, Text )
|
||||||
local MarkID = UTILS.GetMarkID()
|
local MarkID = UTILS.GetMarkID()
|
||||||
trigger.action.markToGroup( MarkID, MarkText, self:GetVec3(), MarkGroup:GetID(), false, "" )
|
if ReadOnly==nil then
|
||||||
|
ReadOnly=false
|
||||||
|
end
|
||||||
|
local text=Text or ""
|
||||||
|
trigger.action.markToGroup( MarkID, MarkText, self:GetVec3(), MarkGroup:GetID(), ReadOnly, text )
|
||||||
return MarkID
|
return MarkID
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1725,7 +1725,7 @@ end
|
|||||||
--@param Core.Point#COORDINATE a Coordinate.
|
--@param Core.Point#COORDINATE a Coordinate.
|
||||||
--@param Core.Point#COORDINATE b Coordinate.
|
--@param Core.Point#COORDINATE b Coordinate.
|
||||||
--@return #number angle Angle from a to b in degrees.
|
--@return #number angle Angle from a to b in degrees.
|
||||||
function SUPPRESSION:_Heading(a, b, distance)
|
function SUPPRESSION:_Heading(a, b)
|
||||||
local dx = b.x-a.x
|
local dx = b.x-a.x
|
||||||
local dy = b.z-a.z
|
local dy = b.z-a.z
|
||||||
local angle = math.deg(math.atan2(dy,dx))
|
local angle = math.deg(math.atan2(dy,dx))
|
||||||
|
|||||||
@@ -355,9 +355,9 @@ function CONTROLLABLE:SetTask( DCSTask, WaitTime )
|
|||||||
local function SetTask( Controller, DCSTask )
|
local function SetTask( Controller, DCSTask )
|
||||||
if self and self:IsAlive() then
|
if self and self:IsAlive() then
|
||||||
local Controller = self:_GetController()
|
local Controller = self:_GetController()
|
||||||
self:I( "Before SetTask" )
|
--self:I( "Before SetTask" )
|
||||||
Controller:setTask( DCSTask )
|
Controller:setTask( DCSTask )
|
||||||
self:I( "After SetTask" )
|
--self:I( "After SetTask" )
|
||||||
else
|
else
|
||||||
BASE:E( { DCSControllableName .. " is not alive anymore.", DCSTask = DCSTask } )
|
BASE:E( { DCSControllableName .. " is not alive anymore.", DCSTask = DCSTask } )
|
||||||
end
|
end
|
||||||
@@ -2651,8 +2651,9 @@ function CONTROLLABLE:OptionAlarmStateGreen()
|
|||||||
|
|
||||||
if self:IsGround() then
|
if self:IsGround() then
|
||||||
Controller:setOption( AI.Option.Ground.id.ALARM_STATE, AI.Option.Ground.val.ALARM_STATE.GREEN )
|
Controller:setOption( AI.Option.Ground.id.ALARM_STATE, AI.Option.Ground.val.ALARM_STATE.GREEN )
|
||||||
elseif self:IsShip() then
|
elseif self:IsShip() then
|
||||||
Controller:setOption( AI.Option.Naval.id.ALARM_STATE, AI.Option.Naval.val.ALARM_STATE.GREEN )
|
-- AI.Option.Naval.id.ALARM_STATE does not seem to exist!
|
||||||
|
--Controller:setOption( AI.Option.Naval.id.ALARM_STATE, AI.Option.Naval.val.ALARM_STATE.GREEN )
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|||||||
Reference in New Issue
Block a user