mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Documentation + Fixing bugs in CleanUp class related to client bug in 1.5.3
This commit is contained in:
parent
1a530ad9ba
commit
4f315022b4
File diff suppressed because it is too large
Load Diff
@ -89,8 +89,8 @@ function BASE:Inherit( Child, Parent )
|
||||
end
|
||||
|
||||
--- This is the worker method to retrieve the Parent class.
|
||||
-- @tparam BASE Child is the Child class from which the Parent class needs to be retrieved.
|
||||
-- @treturn Parent
|
||||
-- @param BASE Child is the Child class from which the Parent class needs to be retrieved.
|
||||
-- @return Parent
|
||||
function BASE:Inherited( Child )
|
||||
local Parent = getmetatable( Child )
|
||||
-- env.info('Inherited class of ' .. Child.ClassName .. ' is ' .. Parent.ClassName )
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
--- CARGO Classes
|
||||
-- @classmod CARGO
|
||||
-- @module CARGO
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
--- CLEANUP Classes
|
||||
-- @classmod CLEANUP
|
||||
-- @module CLEANUP
|
||||
-- @author Flightcontrol
|
||||
|
||||
Include.File( "Routines" )
|
||||
@ -8,6 +8,8 @@ Include.File( "Mission" )
|
||||
Include.File( "Client" )
|
||||
Include.File( "Task" )
|
||||
|
||||
--- The CLEANUP class.
|
||||
-- @type CLEANUP
|
||||
CLEANUP = {
|
||||
ClassName = "CLEANUP",
|
||||
ZoneNames = {},
|
||||
@ -16,9 +18,9 @@ CLEANUP = {
|
||||
}
|
||||
|
||||
--- Creates the main object which is handling the cleaning of the debris within the given Zone Names.
|
||||
-- @tparam table{string,...}|string ZoneNames which is a table of zone names where the debris should be cleaned. Also a single string can be passed with one zone name.
|
||||
-- @tparam ?number TimeInterval is the interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes.
|
||||
-- @treturn CLEANUP
|
||||
-- @param table{string,...}|string ZoneNames which is a table of zone names where the debris should be cleaned. Also a single string can be passed with one zone name.
|
||||
-- @param ?number TimeInterval is the interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes.
|
||||
-- @return CLEANUP
|
||||
-- @usage
|
||||
-- -- Clean these Zones.
|
||||
-- CleanUpAirports = CLEANUP:New( { 'CLEAN Tbilisi', 'CLEAN Kutaisi' }, 150 )
|
||||
@ -58,7 +60,7 @@ function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName )
|
||||
self:T( { GroupObject, CleanUpGroupName } )
|
||||
|
||||
if GroupObject then -- and GroupObject:isExist() then
|
||||
MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll()
|
||||
--MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll()
|
||||
trigger.action.deactivateGroup(GroupObject)
|
||||
self:T( { "GroupObject Destroyed", GroupObject } )
|
||||
end
|
||||
@ -70,15 +72,16 @@ function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName )
|
||||
self:T( { CleanUpUnit, CleanUpUnitName } )
|
||||
|
||||
if CleanUpUnit then
|
||||
MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll()
|
||||
--MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll()
|
||||
local CleanUpGroup = Unit.getGroup(CleanUpUnit)
|
||||
if CleanUpGroup then
|
||||
-- TODO Client bug in 1.5.3
|
||||
if CleanUpGroup and CleanUpGroup:isExist() then
|
||||
local CleanUpGroupUnits = CleanUpGroup:getUnits()
|
||||
if #CleanUpGroupUnits == 1 then
|
||||
local CleanUpGroupName = CleanUpGroup:getName()
|
||||
local Event = {["initiator"]=CleanUpUnit,["id"]=8}
|
||||
world.onEvent(Event)
|
||||
trigger.action.deactivateGroup(CleanUpGroup)
|
||||
world.onEvent( Event )
|
||||
trigger.action.deactivateGroup( CleanUpGroup )
|
||||
self:T( { "Destroyed Group:", CleanUpGroupName } )
|
||||
else
|
||||
CleanUpUnit:destroy()
|
||||
@ -117,7 +120,10 @@ function CLEANUP:_EventCrash( event )
|
||||
local CleanUpUnit = event.initiator -- the Unit
|
||||
local CleanUpUnitName = CleanUpUnit:getName() -- return the name of the Unit
|
||||
local CleanUpGroup = Unit.getGroup(CleanUpUnit)-- Identify the Group
|
||||
local CleanUpGroupName = CleanUpGroup:getName() -- return the name of the Group
|
||||
local CleanUpGroupName = ""
|
||||
if CleanUpGroup and CleanUpGroup:isExist() then
|
||||
CleanUpGroupName = CleanUpGroup:getName() -- return the name of the Group
|
||||
end
|
||||
|
||||
self.CleanUpList[CleanUpUnitName] = {}
|
||||
self.CleanUpList[CleanUpUnitName].CleanUpUnit = CleanUpUnit
|
||||
@ -160,8 +166,6 @@ function CLEANUP:_EventHitCleanUp( event )
|
||||
local CleanUpUnit = event.initiator -- the Unit
|
||||
if CleanUpUnit and CleanUpUnit:isExist() and Object.getCategory(CleanUpUnit) == Object.Category.UNIT then
|
||||
local CleanUpUnitName = event.initiator:getName() -- return the name of the Unit
|
||||
local CleanUpGroup = Unit.getGroup(event.initiator)-- Identify the Group
|
||||
local CleanUpGroupName = CleanUpGroup:getName() -- return the name of the Group
|
||||
|
||||
if routines.IsUnitInZones( CleanUpUnit, self.ZoneNames ) ~= nil then
|
||||
self:T( "Life: " .. CleanUpUnitName .. ' = ' .. CleanUpUnit:getLife() .. "/" .. CleanUpUnit:getLife0() )
|
||||
@ -245,7 +249,6 @@ function CLEANUP:_Scheduler()
|
||||
for CleanUpUnitName, UnitData in pairs( self.CleanUpList ) do
|
||||
|
||||
self:T( { CleanUpUnitName, UnitData } )
|
||||
local CleanUpGroup = Group.getByName(UnitData.CleanUpGroupName)
|
||||
local CleanUpUnit = Unit.getByName(UnitData.CleanUpUnitName)
|
||||
local CleanUpGroupName = UnitData.CleanUpGroupName
|
||||
local CleanUpUnitName = UnitData.CleanUpUnitName
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
--- CLIENT Classes
|
||||
-- @classmod CLIENT
|
||||
-- @module CLIENT
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
@ -9,6 +9,8 @@ Include.File( "Message" )
|
||||
--- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player".
|
||||
-- These clients are defined within the Mission Orchestration Framework (MOF)
|
||||
|
||||
--- The CLIENT class
|
||||
-- @type CLIENT
|
||||
CLIENT = {
|
||||
ONBOARDSIDE = {
|
||||
NONE = 0,
|
||||
@ -30,9 +32,9 @@ CLIENT = {
|
||||
|
||||
|
||||
--- Use this method to register new Clients within the MOF.
|
||||
-- @tparam string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client.
|
||||
-- @tparam string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client.
|
||||
-- @treturn CLIENT
|
||||
-- @param string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client.
|
||||
-- @param string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client.
|
||||
-- @return CLIENT
|
||||
-- @usage
|
||||
-- -- Create new Clients.
|
||||
-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' )
|
||||
@ -54,7 +56,7 @@ function CLIENT:New( ClientName, ClientBriefing )
|
||||
end
|
||||
|
||||
--- Resets a CLIENT.
|
||||
-- @tparam string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client.
|
||||
-- @param string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client.
|
||||
function CLIENT:Reset( ClientName )
|
||||
self:T()
|
||||
self._Menus = {}
|
||||
@ -62,7 +64,7 @@ end
|
||||
|
||||
--- ClientGroup returns the Group of a Client.
|
||||
-- This function is modified to deal with a couple of bugs in DCS 1.5.3
|
||||
-- @treturn Group
|
||||
-- @return Group
|
||||
function CLIENT:ClientGroup()
|
||||
--self:T()
|
||||
|
||||
@ -168,7 +170,7 @@ self:T()
|
||||
end
|
||||
|
||||
--- Returns the Unit of the @{CLIENT}.
|
||||
-- @treturn Unit
|
||||
-- @return Unit
|
||||
function CLIENT:GetClientGroupUnit()
|
||||
self:T()
|
||||
|
||||
@ -186,7 +188,7 @@ self:T()
|
||||
end
|
||||
|
||||
--- Returns the DCSUnit of the @{CLIENT}.
|
||||
-- @treturn DCSUnit
|
||||
-- @return DCSUnit
|
||||
function CLIENT:GetClientGroupDCSUnit()
|
||||
self:T()
|
||||
|
||||
@ -211,7 +213,7 @@ end
|
||||
|
||||
|
||||
--- Returns the Position of the @{CLIENT}.
|
||||
-- @treturn Position
|
||||
-- @return Position
|
||||
function CLIENT:ClientPosition()
|
||||
--self:T()
|
||||
|
||||
@ -227,7 +229,7 @@ function CLIENT:ClientPosition()
|
||||
end
|
||||
|
||||
--- Transport defines that the Client is a Transport.
|
||||
-- @treturn CLIENT
|
||||
-- @return CLIENT
|
||||
function CLIENT:Transport()
|
||||
self:T()
|
||||
|
||||
@ -236,8 +238,8 @@ self:T()
|
||||
end
|
||||
|
||||
--- AddBriefing adds a briefing to a Client when a Player joins a Mission.
|
||||
-- @tparam string ClientBriefing is the text defining the Mission briefing.
|
||||
-- @treturn CLIENT
|
||||
-- @param string ClientBriefing is the text defining the Mission briefing.
|
||||
-- @return CLIENT
|
||||
function CLIENT:AddBriefing( ClientBriefing )
|
||||
self:T()
|
||||
self.ClientBriefing = ClientBriefing
|
||||
@ -245,7 +247,7 @@ self:T()
|
||||
end
|
||||
|
||||
--- IsTransport returns if a Client is a transport.
|
||||
-- @treturn bool
|
||||
-- @return bool
|
||||
function CLIENT:IsTransport()
|
||||
self:T()
|
||||
return self.ClientTransport
|
||||
@ -279,11 +281,11 @@ end
|
||||
|
||||
--- Message is the key Message driver for the CLIENT class.
|
||||
-- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system.
|
||||
-- @tparam string Message is the text describing the message.
|
||||
-- @tparam number MessageDuration is the duration in seconds that the Message should be displayed.
|
||||
-- @tparam string MessageId is a text identifying the Message in the MessageQueue. The Message system overwrites Messages with the same MessageId
|
||||
-- @tparam string MessageCategory is the category of the message (the title).
|
||||
-- @tparam number MessageInterval is the interval in seconds between the display of the Message when the CLIENT is in the air.
|
||||
-- @param string Message is the text describing the message.
|
||||
-- @param number MessageDuration is the duration in seconds that the Message should be displayed.
|
||||
-- @param string MessageId is a text identifying the Message in the MessageQueue. The Message system overwrites Messages with the same MessageId
|
||||
-- @param string MessageCategory is the category of the message (the title).
|
||||
-- @param number MessageInterval is the interval in seconds between the display of the Message when the CLIENT is in the air.
|
||||
function CLIENT:Message( Message, MessageDuration, MessageId, MessageCategory, MessageInterval )
|
||||
self:T()
|
||||
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
--- Administers the Initial Sets of the Mission Templates as defined within the Mission Editor.
|
||||
-- Administers the Spawning of new Groups within the DCSRTE and administers these new Groups within the DATABASE object(s).
|
||||
-- @classmod DATABASE
|
||||
-- @module DATABASE
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
Include.File( "Menu" )
|
||||
Include.File( "Group" )
|
||||
|
||||
--- The DATABASE class
|
||||
-- @type DATABASE
|
||||
DATABASE = {
|
||||
ClassName = "DATABASE",
|
||||
Units = {},
|
||||
@ -36,7 +38,7 @@ DATABASECategory =
|
||||
|
||||
|
||||
--- Creates a new DATABASE Object to administer the Groups defined and alive within the DCSRTE.
|
||||
-- @treturn DATABASE
|
||||
-- @return DATABASE
|
||||
-- @usage
|
||||
-- -- Define a new DATABASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE.
|
||||
-- DBObject = DATABASE:New()
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
--- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone.
|
||||
-- @classmod DEPLOYTASK
|
||||
-- @module DEPLOYTASK
|
||||
|
||||
Include.File( "Task" )
|
||||
|
||||
--- A DeployTask
|
||||
-- @type DEPLOYTASK
|
||||
--
|
||||
DEPLOYTASK = {
|
||||
ClassName = "DEPLOYTASK",
|
||||
TEXT = { "Deploy", "deployed", "unloaded" },
|
||||
@ -72,7 +71,7 @@ end
|
||||
|
||||
|
||||
--- When the cargo is unloaded, it will move to the target zone name.
|
||||
-- @tparam string TargetZoneName Name of the Zone to where the Cargo should move after unloading.
|
||||
-- @param string TargetZoneName Name of the Zone to where the Cargo should move after unloading.
|
||||
function DEPLOYTASK:SetCargoTargetZoneName( TargetZoneName )
|
||||
self:T()
|
||||
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
--- A DESTROYBASETASK will monitor the destruction of Groups and Units. This is a BASE class, other classes are derived from this class.
|
||||
-- @classmod DESTROYBASETASK
|
||||
-- @module DESTROYBASETASK
|
||||
-- @see DESTROYGROUPSTASK
|
||||
-- @see DESTROYUNITTYPESTASK
|
||||
-- @see DESTROY_RADARS_TASK
|
||||
|
||||
Include.File("Task")
|
||||
|
||||
--- The DESTROYBASETASK class
|
||||
-- @type DESTROYBASETASK
|
||||
DESTROYBASETASK = {
|
||||
ClassName = "DESTROYBASETASK",
|
||||
Destroyed = 0,
|
||||
@ -14,11 +16,11 @@ DESTROYBASETASK = {
|
||||
}
|
||||
|
||||
--- Creates a new DESTROYBASETASK.
|
||||
-- @tparam string DestroyGroupType Text describing the group to be destroyed. f.e. "Radar Installations", "Ships", "Vehicles", "Command Centers".
|
||||
-- @tparam string DestroyUnitType Text describing the unit types to be destroyed. f.e. "SA-6", "Row Boats", "Tanks", "Tents".
|
||||
-- @tparam table{string,...} DestroyGroupPrefixes Table of Prefixes of the Groups to be destroyed before task is completed.
|
||||
-- @tparam ?number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}.
|
||||
-- @treturn DESTROYBASETASK
|
||||
-- @param string DestroyGroupType Text describing the group to be destroyed. f.e. "Radar Installations", "Ships", "Vehicles", "Command Centers".
|
||||
-- @param string DestroyUnitType Text describing the unit types to be destroyed. f.e. "SA-6", "Row Boats", "Tanks", "Tents".
|
||||
-- @param table{string,...} DestroyGroupPrefixes Table of Prefixes of the Groups to be destroyed before task is completed.
|
||||
-- @param ?number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}.
|
||||
-- @return DESTROYBASETASK
|
||||
function DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupPrefixes, DestroyPercentage )
|
||||
local self = BASE:Inherit( self, TASK:New() )
|
||||
self:T()
|
||||
|
||||
@ -1,20 +1,21 @@
|
||||
--- DESTROYGROUPSTASK
|
||||
-- @classmod DESTROYGROUPSTASK
|
||||
-- @module DESTROYGROUPSTASK
|
||||
|
||||
Include.File("DestroyBaseTask")
|
||||
|
||||
--- To monitor and score the destruction of Groups in the DCSRTE.
|
||||
--- The DESTROYGROUPSTASK class
|
||||
-- @type
|
||||
DESTROYGROUPSTASK = {
|
||||
ClassName = "DESTROYGROUPSTASK",
|
||||
GoalVerb = "Destroy Groups",
|
||||
}
|
||||
|
||||
--- Creates a new DESTROYGROUPSTASK.
|
||||
-- @tparam string DestroyGroupType String describing the group to be destroyed.
|
||||
-- @tparam string DestroyUnitType String describing the unit to be destroyed.
|
||||
-- @tparam table{string,...} DestroyGroupNames Table of string containing the name of the groups to be destroyed before task is completed.
|
||||
-- @tparam ?number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}.
|
||||
---@treturn DESTROYGROUPSTASK
|
||||
-- @param string DestroyGroupType String describing the group to be destroyed.
|
||||
-- @param string DestroyUnitType String describing the unit to be destroyed.
|
||||
-- @param table{string,...} DestroyGroupNames Table of string containing the name of the groups to be destroyed before task is completed.
|
||||
-- @param ?number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}.
|
||||
---@return DESTROYGROUPSTASK
|
||||
function DESTROYGROUPSTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
@ -32,8 +33,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Report Goal Progress.
|
||||
-- @tparam Group DestroyGroup Group structure describing the group to be evaluated.
|
||||
-- @tparam Unit DestroyUnit Unit structure describing the Unit to be evaluated.
|
||||
-- @param Group DestroyGroup Group structure describing the group to be evaluated.
|
||||
-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated.
|
||||
function DESTROYGROUPSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit )
|
||||
trace.f(self.ClassName)
|
||||
trace.i( self.ClassName, DestroyGroup:getSize() )
|
||||
|
||||
@ -1,16 +1,18 @@
|
||||
--- Task class to destroy radar installations.
|
||||
-- @classmod DESTROYRADARSTASK
|
||||
-- @module DESTROYRADARSTASK
|
||||
|
||||
Include.File("DestroyBaseTask")
|
||||
|
||||
--- The DESTROYRADARS class
|
||||
-- @type
|
||||
DESTROYRADARSTASK = {
|
||||
ClassName = "DESTROYRADARSTASK",
|
||||
GoalVerb = "Destroy Radars"
|
||||
}
|
||||
|
||||
--- Creates a new DESTROYRADARSTASK.
|
||||
-- @tparam table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed.
|
||||
-- @treturn DESTROYRADARSTASK
|
||||
-- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed.
|
||||
-- @return DESTROYRADARSTASK
|
||||
function DESTROYRADARSTASK:New( DestroyGroupNames )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
@ -26,8 +28,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Report Goal Progress.
|
||||
-- @tparam Group DestroyGroup Group structure describing the group to be evaluated.
|
||||
-- @tparam Unit DestroyUnit Unit structure describing the Unit to be evaluated.
|
||||
-- @param Group DestroyGroup Group structure describing the group to be evaluated.
|
||||
-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated.
|
||||
function DESTROYRADARSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
|
||||
@ -1,19 +1,21 @@
|
||||
--- Set TASK to destroy certain unit types.
|
||||
-- @classmod DESTROYUNITTYPESTASK
|
||||
-- @module DESTROYUNITTYPESTASK
|
||||
|
||||
Include.File("DestroyBaseTask")
|
||||
|
||||
--- The DESTROYUNITTYPESTASK class
|
||||
-- @type
|
||||
DESTROYUNITTYPESTASK = {
|
||||
ClassName = "DESTROYUNITTYPESTASK",
|
||||
GoalVerb = "Destroy",
|
||||
}
|
||||
|
||||
--- Creates a new DESTROYUNITTYPESTASK.
|
||||
-- @tparam string DestroyGroupType String describing the group to be destroyed. f.e. "Radar Installations", "Fleet", "Batallion", "Command Centers".
|
||||
-- @tparam string DestroyUnitType String describing the unit to be destroyed. f.e. "radars", "ships", "tanks", "centers".
|
||||
-- @tparam table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed.
|
||||
-- @tparam string DestroyUnitTypes Table of string containing the type names of the units to achieve mission success.
|
||||
-- @treturn DESTROYUNITTYPESTASK
|
||||
-- @param string DestroyGroupType String describing the group to be destroyed. f.e. "Radar Installations", "Fleet", "Batallion", "Command Centers".
|
||||
-- @param string DestroyUnitType String describing the unit to be destroyed. f.e. "radars", "ships", "tanks", "centers".
|
||||
-- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed.
|
||||
-- @param string DestroyUnitTypes Table of string containing the type names of the units to achieve mission success.
|
||||
-- @return DESTROYUNITTYPESTASK
|
||||
function DESTROYUNITTYPESTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
@ -38,8 +40,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Report Goal Progress.
|
||||
-- @tparam Group DestroyGroup Group structure describing the group to be evaluated.
|
||||
-- @tparam Unit DestroyUnit Unit structure describing the Unit to be evaluated.
|
||||
-- @param Group DestroyGroup Group structure describing the group to be evaluated.
|
||||
-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated.
|
||||
function DESTROYUNITTYPESTASK:ReportGoalProgress( DestroyGroup, DestroyUnit )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
|
||||
@ -1,15 +1,17 @@
|
||||
--- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME.
|
||||
-- @classmod GOHOMETASK
|
||||
-- @module GOHOMETASK
|
||||
|
||||
Include.File("Task")
|
||||
|
||||
--- The GOHOMETASK class
|
||||
-- @type
|
||||
GOHOMETASK = {
|
||||
ClassName = "GOHOMETASK",
|
||||
}
|
||||
|
||||
--- Creates a new GOHOMETASK.
|
||||
-- @tparam table{string,...}|string LandingZones Table of Landing Zone names where Home(s) are located.
|
||||
-- @treturn GOHOMETASK
|
||||
-- @param table{string,...}|string LandingZones Table of Landing Zone names where Home(s) are located.
|
||||
-- @return GOHOMETASK
|
||||
function GOHOMETASK:New( LandingZones )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
--- Encapsulation of DCS World Menu system in a set of MENU classes.
|
||||
-- @classmod MENU
|
||||
-- @module MENU
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
|
||||
|
||||
--- The MENU class
|
||||
-- @type
|
||||
MENU = {
|
||||
ClassName = "MENU",
|
||||
MenuPath = nil,
|
||||
@ -24,6 +25,8 @@ function MENU:New( MenuText, MenuParentPath )
|
||||
return Child
|
||||
end
|
||||
|
||||
--- The COMMANDMENU class
|
||||
-- @type
|
||||
COMMANDMENU = {
|
||||
ClassName = "COMMANDMENU",
|
||||
CommandMenuFunction = nil,
|
||||
@ -47,8 +50,8 @@ function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenu
|
||||
return Child
|
||||
end
|
||||
|
||||
---
|
||||
|
||||
--- The SUBMENU class
|
||||
-- @type
|
||||
SUBMENU = {
|
||||
ClassName = "SUBMENU"
|
||||
}
|
||||
@ -67,6 +70,8 @@ function SUBMENU:New( MenuText, ParentMenu )
|
||||
return Child
|
||||
end
|
||||
|
||||
--- The MENU_SUB_GROUP class
|
||||
-- @type
|
||||
MENU_SUB_GROUP = {
|
||||
ClassName = "MENU_SUB_GROUP"
|
||||
}
|
||||
@ -85,6 +90,8 @@ function MENU_SUB_GROUP:New( GroupID, MenuText, ParentMenu )
|
||||
return self
|
||||
end
|
||||
|
||||
--- The MENU_COMMAND_GROUP class
|
||||
-- @type
|
||||
MENU_COMMAND_GROUP = {
|
||||
ClassName = "MENU_COMMAND_GROUP"
|
||||
}
|
||||
|
||||
@ -6,12 +6,13 @@
|
||||
-- Messages are sent to Clients with MESSAGE:@{ToClient}().
|
||||
-- Messages are sent to Coalitions with MESSAGE:@{ToCoalition}().
|
||||
-- Messages are sent to All Players with MESSAGE:@{ToAll}().
|
||||
-- @classmod MESSAGE
|
||||
-- @module MESSAGE
|
||||
|
||||
Include.File( "Trace" )
|
||||
Include.File( "Base" )
|
||||
|
||||
|
||||
--- The MESSAGE class
|
||||
-- @type
|
||||
MESSAGE = {
|
||||
ClassName = "MESSAGE",
|
||||
MessageCategory = 0,
|
||||
@ -20,11 +21,11 @@ MESSAGE = {
|
||||
|
||||
|
||||
--- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients.
|
||||
-- @tparam string MessageText is the text of the Message.
|
||||
-- @tparam string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability.
|
||||
-- @tparam number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
|
||||
-- @tparam string MessageID is a string expressing the ID of the Message.
|
||||
-- @treturn MESSAGE
|
||||
-- @param string MessageText is the text of the Message.
|
||||
-- @param string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability.
|
||||
-- @param number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
|
||||
-- @param string MessageID is a string expressing the ID of the Message.
|
||||
-- @return MESSAGE
|
||||
-- @usage
|
||||
-- -- Create a series of new Messages.
|
||||
-- -- MessageAll is meant to be sent to all players, for 25 seconds, and is classified as "Score".
|
||||
@ -54,8 +55,8 @@ trace.f(self.ClassName, { MessageText, MessageCategory, MessageDuration, Message
|
||||
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".
|
||||
-- @tparam CLIENT Client is the Group of the Client.
|
||||
-- @treturn MESSAGE
|
||||
-- @param CLIENT Client is the Group of the Client.
|
||||
-- @return MESSAGE
|
||||
-- @usage
|
||||
-- -- Send the 2 messages created with the @{New} method to the Client Group.
|
||||
-- -- Note that the Message of MessageClient2 is overwriting the Message of MessageClient1.
|
||||
@ -85,7 +86,7 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
--- Sends a MESSAGE to the Blue coalition.
|
||||
-- @treturn MESSAGE
|
||||
-- @return MESSAGE
|
||||
-- @usage
|
||||
-- -- Send a message created with the @{New} method to the BLUE coalition.
|
||||
-- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue()
|
||||
@ -103,7 +104,7 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
--- Sends a MESSAGE to the Red Coalition.
|
||||
-- @treturn MESSAGE
|
||||
-- @return MESSAGE
|
||||
-- @usage
|
||||
-- -- Send a message created with the @{New} method to the RED coalition.
|
||||
-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed()
|
||||
@ -122,7 +123,7 @@ end
|
||||
|
||||
--- Sends a MESSAGE to a Coalition.
|
||||
-- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}.
|
||||
-- @treturn MESSAGE
|
||||
-- @return MESSAGE
|
||||
-- @usage
|
||||
-- -- Send a message created with the @{New} method to the RED coalition.
|
||||
-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED )
|
||||
@ -143,7 +144,7 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
--- Sends a MESSAGE to all players.
|
||||
-- @treturn MESSAGE
|
||||
-- @return MESSAGE
|
||||
-- @usage
|
||||
-- -- Send a message created to all players.
|
||||
-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll()
|
||||
@ -163,9 +164,8 @@ end
|
||||
|
||||
|
||||
|
||||
--- MESSAGEQUEUE
|
||||
--- The MESSAGEQUEUE class
|
||||
-- @type MESSAGEQUEUE
|
||||
|
||||
MESSAGEQUEUE = {
|
||||
ClientGroups = {},
|
||||
CoalitionSides = {}
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
--- A MISSION is the main owner of a Mission orchestration within MOOSE . The Mission framework orchestrates @{CLIENT}s, @{TASK}s, @{STAGE}s etc.
|
||||
-- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}.
|
||||
-- @classmod MISSION
|
||||
-- @module MISSION
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
Include.File( "Client" )
|
||||
Include.File( "Task" )
|
||||
|
||||
|
||||
--- The MISSION class
|
||||
-- @type
|
||||
MISSION = {
|
||||
ClassName = "MISSION",
|
||||
Name = "",
|
||||
@ -38,11 +39,11 @@ function MISSION:Meta()
|
||||
end
|
||||
|
||||
--- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc.
|
||||
-- @tparam string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players.
|
||||
-- @tparam string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field.
|
||||
-- @tparam string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}.
|
||||
-- @tparam string MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"...
|
||||
-- @treturn MISSION
|
||||
-- @param string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players.
|
||||
-- @param string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field.
|
||||
-- @param string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}.
|
||||
-- @param string MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"...
|
||||
-- @return MISSION
|
||||
-- @usage
|
||||
-- -- Declare a few missions.
|
||||
-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' )
|
||||
@ -76,7 +77,7 @@ function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoal
|
||||
end
|
||||
|
||||
--- Returns if a Mission has completed.
|
||||
-- @treturn bool
|
||||
-- @return bool
|
||||
function MISSION:IsCompleted()
|
||||
self:T()
|
||||
return self.MissionStatus == "ACCOMPLISHED"
|
||||
@ -195,7 +196,7 @@ end
|
||||
|
||||
|
||||
--- Add a goal function to a MISSION. Goal functions are called when a @{TASK} within a mission has been completed.
|
||||
-- @tparam function GoalFunction is the function defined by the mission designer to evaluate whether a certain goal has been reached after a @{TASK} finishes within the @{MISSION}. A GoalFunction must accept 2 parameters: Mission, Client, which contains the current MISSION object and the current CLIENT object respectively.
|
||||
-- @param function GoalFunction is the function defined by the mission designer to evaluate whether a certain goal has been reached after a @{TASK} finishes within the @{MISSION}. A GoalFunction must accept 2 parameters: Mission, Client, which contains the current MISSION object and the current CLIENT object respectively.
|
||||
-- @usage
|
||||
-- PatriotActivation = {
|
||||
-- { "US SAM Patriot Zerti", false },
|
||||
@ -236,8 +237,8 @@ function MISSION:AddGoalFunction( GoalFunction )
|
||||
end
|
||||
|
||||
--- Show the briefing of the MISSION to the CLIENT.
|
||||
-- @tparam CLIENT Client to show briefing to.
|
||||
-- @treturn CLIENT
|
||||
-- @param CLIENT Client to show briefing to.
|
||||
-- @return CLIENT
|
||||
function MISSION:ShowBriefing( Client )
|
||||
self:T( { Client.ClientName } )
|
||||
|
||||
@ -255,8 +256,8 @@ function MISSION:ShowBriefing( Client )
|
||||
end
|
||||
|
||||
--- Register a new @{CLIENT} to participate within the mission.
|
||||
-- @tparam CLIENT Client is the @{CLIENT} object. The object must have been instantiated with @{CLIENT:New}.
|
||||
-- @treturn CLIENT
|
||||
-- @param CLIENT Client is the @{CLIENT} object. The object must have been instantiated with @{CLIENT:New}.
|
||||
-- @return CLIENT
|
||||
-- @usage
|
||||
-- Add a number of Client objects to the Mission.
|
||||
-- Mission:AddClient( CLIENT:New( 'US UH-1H*HOT-Deploy Troops 1', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() )
|
||||
@ -277,8 +278,8 @@ trace.r( self.ClassName, "" )
|
||||
end
|
||||
|
||||
--- Find a @{CLIENT} object within the @{MISSION} by its ClientName.
|
||||
-- @tparam CLIENT ClientName is a string defining the Client Group as defined within the ME.
|
||||
-- @treturn CLIENT
|
||||
-- @param CLIENT ClientName is a string defining the Client Group as defined within the ME.
|
||||
-- @return CLIENT
|
||||
-- @usage
|
||||
-- -- Seach for Client "Bomber" within the Mission.
|
||||
-- local BomberClient = Mission:FindClient( "Bomber" )
|
||||
@ -289,9 +290,9 @@ end
|
||||
|
||||
|
||||
--- Register a @{TASK} to be completed within the @{MISSION}. Note that there can be multiple @{TASK}s registered to be completed. Each TASK can be set a certain Goal. The MISSION will not be completed until all Goals are reached.
|
||||
-- @tparam TASK Task is the @{TASK} object. The object must have been instantiated with @{TASK:New} or any of its inherited @{TASK}s.
|
||||
-- @tparam number TaskNumber is the sequence number of the TASK within the MISSION. This number does have to be chronological.
|
||||
-- @treturn TASK
|
||||
-- @param TASK Task is the @{TASK} object. The object must have been instantiated with @{TASK:New} or any of its inherited @{TASK}s.
|
||||
-- @param number TaskNumber is the sequence number of the TASK within the MISSION. This number does have to be chronological.
|
||||
-- @return TASK
|
||||
-- @usage
|
||||
-- -- Define a few tasks for the Mission.
|
||||
-- PickupZones = { "NATO Gold Pickup Zone", "NATO Titan Pickup Zone" }
|
||||
@ -324,8 +325,8 @@ function MISSION:AddTask( Task, TaskNumber )
|
||||
end
|
||||
|
||||
--- Get the TASK idenified by the TaskNumber from the Mission. This function is useful in GoalFunctions.
|
||||
-- @tparam number TaskNumber is the number of the @{TASK} within the @{MISSION}.
|
||||
-- @treturn TASK
|
||||
-- @param number TaskNumber is the number of the @{TASK} within the @{MISSION}.
|
||||
-- @return TASK
|
||||
-- @usage
|
||||
-- -- Get Task 2 from the Mission.
|
||||
-- Task2 = Mission:GetTask( 2 )
|
||||
@ -349,7 +350,7 @@ function MISSION:GetTask( TaskNumber )
|
||||
end
|
||||
|
||||
--- Get all the TASKs from the Mission. This function is useful in GoalFunctions.
|
||||
-- @treturn {TASK,...} Structure of TASKS with the @{TASK} number as the key.
|
||||
-- @return {TASK,...} Structure of TASKS with the @{TASK} number as the key.
|
||||
-- @usage
|
||||
-- -- Get Tasks from the Mission.
|
||||
-- Tasks = Mission:GetTasks()
|
||||
@ -379,7 +380,6 @@ _TransportExecuteStage = {
|
||||
|
||||
--- The MISSIONSCHEDULER is an OBJECT and is the main scheduler of ALL active MISSIONs registered within this scheduler. It's workings are considered internal and is automatically created when the Mission.lua file is included.
|
||||
-- @type MISSIONSCHEDULER
|
||||
|
||||
MISSIONSCHEDULER = {
|
||||
Missions = {},
|
||||
MissionCount = 0,
|
||||
|
||||
@ -3,18 +3,20 @@
|
||||
-- Performance: If in a DCSRTE there are a lot of moving GROUND units, then in a multi player mission, this WILL create lag if
|
||||
-- the main DCS execution core of your CPU is fully utilized. So, this class will limit the amount of simultaneous moving GROUND units
|
||||
-- on defined intervals (currently every minute).
|
||||
-- @classmod MOVEMENT
|
||||
-- @module MOVEMENT
|
||||
|
||||
Include.File( "Routines" )
|
||||
|
||||
--- the MOVEMENT class
|
||||
-- @type
|
||||
MOVEMENT = {
|
||||
ClassName = "MOVEMENT",
|
||||
}
|
||||
|
||||
--- Creates the main object which is handling the GROUND forces movement.
|
||||
-- @tparam table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object.
|
||||
-- @tparam number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute.
|
||||
-- @treturn MOVEMENT
|
||||
-- @param table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object.
|
||||
-- @param number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute.
|
||||
-- @return MOVEMENT
|
||||
-- @usage
|
||||
-- -- Limit the amount of simultaneous moving units on the ground to prevent lag.
|
||||
-- Movement_US_Platoons = MOVEMENT:New( { 'US Tank Platoon Left', 'US Tank Platoon Middle', 'US Tank Platoon Right', 'US CH-47D Troops' }, 15 )
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
--- A NOTASK is a dummy activity... But it will show a Mission Briefing...
|
||||
-- @classmod NOTASK
|
||||
-- @module NOTASK
|
||||
|
||||
Include.File("Task")
|
||||
|
||||
--- Modeling a sequence of STAGEs to do nothing, but wait for the mission goal.
|
||||
--- The NOTASK class
|
||||
-- @type
|
||||
NOTASK = {
|
||||
ClassName = "NOTASK",
|
||||
}
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
--- A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone.
|
||||
-- @classmod PICKUPTASK
|
||||
-- @module PICKUPTASK
|
||||
-- @parent TASK
|
||||
|
||||
Include.File("Task")
|
||||
Include.File("Cargo")
|
||||
|
||||
--- The PICKUPTASK class
|
||||
-- @type
|
||||
PICKUPTASK = {
|
||||
ClassName = "PICKUPTASK",
|
||||
TEXT = { "Pick-Up", "picked-up", "loaded" },
|
||||
@ -12,9 +14,9 @@ PICKUPTASK = {
|
||||
}
|
||||
|
||||
--- Creates a new PICKUPTASK.
|
||||
-- @tparam table{string,...}|string LandingZones Table of Zone names where Cargo is to be loaded.
|
||||
-- @tparam CARGO_TYPE CargoType Type of the Cargo. The type must be of the following Enumeration:..
|
||||
-- @tparam number OnBoardSide Reflects from which side the cargo Group will be on-boarded on the Carrier.
|
||||
-- @param table{string,...}|string LandingZones Table of Zone names where Cargo is to be loaded.
|
||||
-- @param CARGO_TYPE CargoType Type of the Cargo. The type must be of the following Enumeration:..
|
||||
-- @param number OnBoardSide Reflects from which side the cargo Group will be on-boarded on the Carrier.
|
||||
function PICKUPTASK:New( CargoType, OnBoardSide )
|
||||
local self = BASE:Inherit( self, TASK:New() )
|
||||
self:T()
|
||||
|
||||
@ -1,16 +1,17 @@
|
||||
--- A ROUTETASK orchestrates the travel to a specific zone defined within the ME.
|
||||
-- @classmod ROUTETASK
|
||||
-- @module ROUTETASK
|
||||
|
||||
--- Modeling a sequence of STAGEs to fly back to the home base specified by an Arrival Zone.
|
||||
--- The ROUTETASK class
|
||||
-- @type
|
||||
ROUTETASK = {
|
||||
ClassName = "ROUTETASK",
|
||||
GoalVerb = "Route",
|
||||
}
|
||||
|
||||
--- Creates a new ROUTETASK.
|
||||
-- @tparam table{sring,...}|string LandingZones Table of Zone Names where the target is located.
|
||||
-- @tparam string TaskBriefing (optional) Defines a text describing the briefing of the task.
|
||||
-- @treturn ROUTETASK
|
||||
-- @param table{sring,...}|string LandingZones Table of Zone Names where the target is located.
|
||||
-- @param string TaskBriefing (optional) Defines a text describing the briefing of the task.
|
||||
-- @return ROUTETASK
|
||||
function ROUTETASK:New( LandingZones, TaskBriefing )
|
||||
trace.f(self.ClassName, { LandingZones, TaskBriefing } )
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
--- Provides defensive behaviour to a set of SAM sites within a running Mission.
|
||||
-- @classmod SEAD
|
||||
-- @module SEAD
|
||||
-- @author to be searched on the forum
|
||||
-- @author (co) Flightcontrol (Modified and enriched with functionality)
|
||||
|
||||
@ -9,6 +9,8 @@ Include.File( "Mission" )
|
||||
Include.File( "Client" )
|
||||
Include.File( "Task" )
|
||||
|
||||
--- The SEAD class
|
||||
-- @type
|
||||
SEAD = {
|
||||
ClassName = "SEAD",
|
||||
TargetSkill = {
|
||||
@ -23,8 +25,8 @@ SEAD = {
|
||||
--- Creates the main object which is handling defensive actions for SA sites or moving SA vehicles.
|
||||
-- When an anti radiation missile is fired (KH-58, KH-31P, KH-31A, KH-25MPU, HARM missiles), the SA will shut down their radars and will take evasive actions...
|
||||
-- Chances are big that the missile will miss.
|
||||
-- @tparam table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken.
|
||||
-- @treturn SEAD
|
||||
-- @param table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken.
|
||||
-- @return SEAD
|
||||
-- @usage
|
||||
-- -- CCCP SEAD Defenses
|
||||
-- -- Defends the Russian SA installations from SEAD attacks.
|
||||
|
||||
@ -340,7 +340,6 @@ end
|
||||
-- The method will take the position of the group as the first position in the array.
|
||||
-- @param self
|
||||
-- @param #number SpawnAngle The angle in degrees how the groups and each unit of the group will be positioned.
|
||||
-- @param #number SpawnFormation The formation of the Units within the Group.
|
||||
-- @param #number SpawnWidth The amount of Groups that will be positioned on the X axis.
|
||||
-- @param #number SpawnDeltaX The space between each Group on the X-axis.
|
||||
-- @param #number SpawnDeltaY The space between each Group on the Y-axis.
|
||||
@ -348,7 +347,7 @@ end
|
||||
-- @usage
|
||||
-- -- Define an array of Groups.
|
||||
-- Spawn_BE_Ground = SPAWN:New( 'BE Ground' ):Limit( 2, 24 ):Visible( 90, "Diamond", 10, 100, 50 )
|
||||
function SPAWN:SpawnArray( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY )
|
||||
function SPAWN:Array( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY )
|
||||
self:T( { self.SpawnTemplatePrefix, SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY } )
|
||||
|
||||
self.SpawnVisible = true -- When the first Spawn executes, all the Groups need to be made visible before start.
|
||||
@ -996,6 +995,9 @@ function SPAWN:_RandomizeTemplate( SpawnIndex )
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.route = routines.utils.deepCopy( self.SpawnTemplate.route )
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.x = self.SpawnTemplate.x
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.y = self.SpawnTemplate.y
|
||||
for UnitID = 1, #self.SpawnGroups[SpawnIndex].SpawnTemplate.units do
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].heading = self.SpawnTemplate.units[1].heading
|
||||
end
|
||||
end
|
||||
|
||||
return self
|
||||
@ -1038,7 +1040,7 @@ function SPAWN:_TranslateRotate( SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, Spa
|
||||
-- Assign
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].x = SpawnRootX - RotatedX
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].y = SpawnRootY + RotatedY
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = math.rad( SpawnAngle )
|
||||
self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading + math.rad( SpawnAngle )
|
||||
end
|
||||
|
||||
return self
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
--- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer.
|
||||
-- @classmod STAGE
|
||||
-- @module STAGE
|
||||
-- @author Flightcontrol
|
||||
|
||||
Include.File( "Routines" )
|
||||
@ -8,7 +8,8 @@ Include.File( "Mission" )
|
||||
Include.File( "Client" )
|
||||
Include.File( "Task" )
|
||||
|
||||
|
||||
--- The STAGE class
|
||||
-- @type
|
||||
STAGE = {
|
||||
ClassName = "STAGE",
|
||||
MSG = { ID = "None", TIME = 10 },
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
--- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited.
|
||||
-- @classmod TASK
|
||||
-- @module TASK
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
@ -7,6 +7,8 @@ Include.File( "Mission" )
|
||||
Include.File( "Client" )
|
||||
Include.File( "Stage" )
|
||||
|
||||
--- The TASK class
|
||||
-- @type
|
||||
TASK = {
|
||||
|
||||
-- Defines the different signal types with a Task.
|
||||
@ -43,7 +45,7 @@ TASK = {
|
||||
}
|
||||
|
||||
--- Instantiates a new TASK Base. Should never be used. Interface Class.
|
||||
-- @treturn TASK
|
||||
-- @return TASK
|
||||
function TASK:New()
|
||||
trace.f(self.ClassName)
|
||||
|
||||
@ -87,7 +89,7 @@ end
|
||||
|
||||
|
||||
--- Get progress of a TASK.
|
||||
-- @treturn string GoalsText
|
||||
-- @return string GoalsText
|
||||
function TASK:GetGoalProgress()
|
||||
trace.f(self.ClassName)
|
||||
|
||||
@ -110,8 +112,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Show progress of a TASK.
|
||||
-- @tparam MISSION Mission Group structure describing the Mission.
|
||||
-- @tparam CLIENT Client Group structure describing the Client.
|
||||
-- @param MISSION Mission Group structure describing the Mission.
|
||||
-- @param CLIENT Client Group structure describing the Client.
|
||||
function TASK:ShowGoalProgress( Mission, Client )
|
||||
trace.f(self.ClassName)
|
||||
|
||||
@ -140,7 +142,7 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Returns if a TASK is done.
|
||||
-- @treturn bool
|
||||
-- @return bool
|
||||
function TASK:IsDone()
|
||||
trace.i( self.ClassName, self.TaskDone )
|
||||
return self.TaskDone
|
||||
@ -165,14 +167,14 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Returns the Goals of a TASK
|
||||
-- @treturn @table Goals
|
||||
-- @return @table Goals
|
||||
function TASK:GetGoals()
|
||||
return self.GoalTasks
|
||||
end
|
||||
|
||||
--- Returns if a TASK has Goal(s).
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK.
|
||||
-- @treturn bool
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK.
|
||||
-- @return bool
|
||||
function TASK:Goal( GoalVerb )
|
||||
trace.f(self.ClassName)
|
||||
if not GoalVerb then
|
||||
@ -186,8 +188,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Sets the total Goals to be achieved of the Goal Name
|
||||
-- @tparam number GoalTotal is the number of times the GoalVerb needs to be achieved.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @param number GoalTotal is the number of times the GoalVerb needs to be achieved.
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
function TASK:SetGoalTotal( GoalTotal, GoalVerb )
|
||||
trace.f(self.ClassName, { GoalTotal, GoalVerb } )
|
||||
|
||||
@ -202,7 +204,7 @@ trace.f(self.ClassName, { GoalTotal, GoalVerb } )
|
||||
end
|
||||
|
||||
--- Gets the total of Goals to be achieved within the TASK of the GoalVerb.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
function TASK:GetGoalTotal( GoalVerb )
|
||||
trace.f(self.ClassName)
|
||||
if not GoalVerb then
|
||||
@ -216,9 +218,9 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Sets the total of Goals currently achieved within the TASK of the GoalVerb.
|
||||
-- @tparam number GoalCount is the total number of Goals achieved within the TASK.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @treturn TASK
|
||||
-- @param number GoalCount is the total number of Goals achieved within the TASK.
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @return TASK
|
||||
function TASK:SetGoalCount( GoalCount, GoalVerb )
|
||||
trace.f(self.ClassName)
|
||||
if not GoalVerb then
|
||||
@ -231,9 +233,9 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Increments the total of Goals currently achieved within the TASK of the GoalVerb, with the given GoalCountIncrease.
|
||||
-- @tparam number GoalCountIncrease is the number of new Goals achieved within the TASK.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @treturn TASK
|
||||
-- @param number GoalCountIncrease is the number of new Goals achieved within the TASK.
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @return TASK
|
||||
function TASK:IncreaseGoalCount( GoalCountIncrease, GoalVerb )
|
||||
trace.f(self.ClassName)
|
||||
if not GoalVerb then
|
||||
@ -246,8 +248,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Gets the total of Goals currently achieved within the TASK of the GoalVerb.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @treturn TASK
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @return TASK
|
||||
function TASK:GetGoalCount( GoalVerb )
|
||||
trace.f(self.ClassName)
|
||||
if not GoalVerb then
|
||||
@ -261,8 +263,8 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Gets the percentage of Goals currently achieved within the TASK of the GoalVerb.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @treturn TASK
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @return TASK
|
||||
function TASK:GetGoalPercentage( GoalVerb )
|
||||
trace.f(self.ClassName)
|
||||
if not GoalVerb then
|
||||
@ -276,7 +278,7 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- Returns if all the Goals of the TASK were achieved.
|
||||
-- @treturn bool
|
||||
-- @return bool
|
||||
function TASK:IsGoalReached( )
|
||||
|
||||
local GoalReached = true
|
||||
@ -301,9 +303,9 @@ function TASK:IsGoalReached( )
|
||||
end
|
||||
|
||||
--- Adds an Additional Goal for the TASK to be achieved.
|
||||
-- @tparam string GoalVerb is the name of the Goal of the TASK.
|
||||
-- @tparam string GoalTask is a text describing the Goal of the TASK to be achieved.
|
||||
-- @tparam number GoalIncrease is a number by which the Goal achievement is increasing.
|
||||
-- @param string GoalVerb is the name of the Goal of the TASK.
|
||||
-- @param string GoalTask is a text describing the Goal of the TASK to be achieved.
|
||||
-- @param number GoalIncrease is a number by which the Goal achievement is increasing.
|
||||
function TASK:AddGoalCompletion( GoalVerb, GoalTask, GoalIncrease )
|
||||
trace.f( self.ClassName, { GoalVerb, GoalTask, GoalIncrease } )
|
||||
|
||||
@ -315,8 +317,8 @@ trace.f( self.ClassName, { GoalVerb, GoalTask, GoalIncrease } )
|
||||
end
|
||||
|
||||
--- Returns if the additional Goal for the TASK was completed.
|
||||
-- @tparam ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @treturn string Goals
|
||||
-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used.
|
||||
-- @return string Goals
|
||||
function TASK:GetGoalCompletion( GoalVerb )
|
||||
trace.f( self.ClassName, { GoalVerb } )
|
||||
|
||||
@ -382,80 +384,80 @@ trace.f(self.ClassName)
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a RED SMOKE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddSmokeRed( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.RED, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a GREEN SMOKE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddSmokeGreen( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.GREEN, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a BLUE SMOKE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddSmokeBlue( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.BLUE, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a WHITE SMOKE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddSmokeWhite( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.WHITE, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, an ORANGE SMOKE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddSmokeOrange( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a RED FLARE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddFlareRed( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.RED, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a GREEN FLARE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddFlareGreen( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.GREEN, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a BLUE FLARE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddFlareBlue( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.BLUE, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, a WHITE FLARE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddFlareWhite( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.WHITE, SignalHeight )
|
||||
end
|
||||
|
||||
--- When the CLIENT is approaching the landing zone, an ORANGE FLARE will be fired by an optional SignalUnitNames.
|
||||
-- @tparam table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @tparam number SignalHeight Altitude that the Signal should be fired...
|
||||
-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone.
|
||||
-- @param number SignalHeight Altitude that the Signal should be fired...
|
||||
function TASK:AddFlareOrange( SignalUnitNames, SignalHeight )
|
||||
trace.f(self.ClassName)
|
||||
self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight )
|
||||
|
||||
@ -1,13 +1,12 @@
|
||||
--- UNIT Classes
|
||||
-- @classmod UNIT
|
||||
-- @module UNIT
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
Include.File( "Message" )
|
||||
|
||||
UNITS = {}
|
||||
|
||||
|
||||
--- The UNIT class
|
||||
-- @type
|
||||
UNIT = {
|
||||
ClassName="UNIT",
|
||||
}
|
||||
|
||||
@ -1,13 +1,12 @@
|
||||
--- ZONE Classes
|
||||
-- @classmod ZONE
|
||||
-- @module ZONE
|
||||
|
||||
Include.File( "Routines" )
|
||||
Include.File( "Base" )
|
||||
Include.File( "Message" )
|
||||
|
||||
ZONES = {}
|
||||
|
||||
|
||||
--- The ZONE class
|
||||
-- @type
|
||||
ZONE = {
|
||||
ClassName="ZONE",
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
Include.File( "Spawn" )
|
||||
|
||||
|
||||
-- Tests Anapa
|
||||
-- -----------
|
||||
-- Tests Anapa: Spawn Basics
|
||||
-- -------------------------
|
||||
-- Spawning groups using Spawn function.
|
||||
Spawn_Plane = SPAWN:New( "Spawn Plane" )
|
||||
Group_Plane = Spawn_Plane:Spawn()
|
||||
@ -38,18 +38,17 @@ Group_Plane:Route( Route_Plane )
|
||||
--Group_Helicopter:Route( Route_Helicopter )
|
||||
|
||||
|
||||
-- Tests Batumi
|
||||
-- ------------
|
||||
-- Tests Batumi: Scheduled Spawning
|
||||
-- --------------------------------
|
||||
-- Unlimited spawning of groups, scheduled every 30 seconds ...
|
||||
Spawn_Plane_Scheduled = SPAWN:New( "Spawn Plane Scheduled" ):SpawnScheduled( 30, 0.4 )
|
||||
Spawn_Helicopter_Scheduled = SPAWN:New( "Spawn Helicopter Scheduled" ):SpawnScheduled( 30, 1 )
|
||||
Spawn_Ship_Scheduled = SPAWN:New( "Spawn Ship Scheduled" ):SpawnScheduled( 30, 0.5 )
|
||||
Spawn_Vehicle_Scheduled = SPAWN:New( "Spawn Vehicle Scheduled" ):SpawnScheduled( 30, 0.5 )
|
||||
|
||||
-- Tests Tbilisi
|
||||
-- -------------
|
||||
-- Tests Tbilisi: Limited Spawning
|
||||
-- -------------------------------
|
||||
-- Spawing one group, and respawning the same group when it lands ...
|
||||
|
||||
Spawn_Plane_Limited_Repeat = SPAWN:New( "Spawn Plane Limited Repeat" ):Limit( 1, 1 ):Repeat():Spawn()
|
||||
Spawn_Plane_Limited_RepeatOnLanding = SPAWN:New( "Spawn Plane Limited RepeatOnLanding" ):Limit( 1, 1 ):Repeat():Spawn()
|
||||
Spawn_Plane_Limited_RepeatOnEngineShutDown = SPAWN:New( "Spawn Plane Limited RepeatOnEngineShutDown" ):Limit( 1, 1 ):Repeat():Spawn()
|
||||
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user