Module Tasking.Task_CARGO
Tasking - Base class to model tasks for players to transport cargo.
Features:
TASK_CARGO is the base class for:
Test Missions:
Test missions can be located on the main GITHUB site.
Tasking system.
If you are not yet aware what the MOOSE tasking system is about, read FIRST the explanation on the Tasking.Task module.
Context of cargo tasking.
The Moose framework provides various CARGO classes that allow DCS physical or logical objects to be transported or sling loaded by Carriers. The CARGO_ classes, as part of the MOOSE core, are able to Board, Load, UnBoard and UnLoad cargo between Carrier units.
The TASK_CARGO class is not meant to use within your missions as a mission designer. It is a base class, and other classes are derived from it.
The following TASK_CARGO_ classes are important, as they implement the CONCRETE tasks:
- Tasking.Task_Cargo_Transport#TASK_CARGO_TRANSPORT: Defines a task for a human player to transport a set of cargo between various zones.
- Tasking.Task_Cargo_CSAR#TASK_CARGO_CSAR: Defines a task for a human player to Search and Rescue wounded pilots.
However! The menu system and basic usage of the TASK_CARGO classes is explained in the #TASK_CARGO class description. So please browse further below to understand how to use it from a player perspective!
Cargo tasking from a player perspective.
A human player can join the battle field in a client airborne slot or a ground vehicle within the CA module (ALT-J). The player needs to accept the task from the task overview list within the mission, using the menus.
Once the task is assigned to the player and accepted by the player, the player will obtain an extra Cargo (Radio) Menu that contains the CARGO objects that need to be transported.
Each Tasking.Task_CARGO#TASK_CARGO object has a certain state:
- UnLoaded: The cargo is located within the battlefield. It may still need to be transported.
- Loaded: The cargo is loaded within a Carrier. This can be your air unit, or another air unit, or even a vehicle.
- Boarding: The cargo is running or moving towards your Carrier for loading.
- UnBoarding: The cargo is driving or jumping out of your Carrier and moves to a location in the Deployment Zone.
Cargo must be transported towards different Deployment Core.Zones.
The Cargo Menu system allows to execute various actions to transport the cargo. In the menu, you'll find for each CARGO, that is part of the scope of the task, various actions that can be completed. Depending on the location of your Carrier unit, the menu options will vary.
Joining a Cargo Transport Task
Once you've joined a task, using the Join Planned Task Menu, you can Pickup cargo from a pickup location and Deploy cargo in deployment zones, using the Task Action Menu.
Task Action Menu.
When a player has joined a CARGO
task (type), for that player only,
it's Task Action Menu will show an additional menu options.
From within this menu, you will be able to route to a cargo location, deploy zone, and load/unload cargo.
Pickup cargo by Boarding, Loading and Sling Loading.
There are three different ways how cargo can be picked up:
Boarding: Moveable cargo (like infantry or vehicles), can be boarded, that means, the cargo will move towards your carrier to board. However, it can only execute the boarding actions if it is within the foreseen Reporting Range. Therefore, it is important that you steer your Carrier within the Reporting Range around the cargo, so that boarding actions can be executed on the cargo. The reporting range is set by the mission designer. Fortunately, the cargo is reporting to you when it is within reporting range.
Loading: Stationary cargo (like crates), which are heavy, can only be loaded or sling loaded, meaning, your carrier must be close enough to the cargo to be able to load the cargo within the carrier bays. Moose provides you with an additional menu system to load stationary cargo into your carrier bays using the menu. These menu options will become available, when the carrier is within loading range. The Moose cargo will report to the carrier when the range is close enough. The load range is set by the mission designer.
Sling Loading: Stationary cargo (like crates), which are heavy, can only be loaded or sling loaded, meaning, your carrier must be close enough to the cargo to be able to load the cargo within the carrier bays. Sling loading cargo is done using the default DCS menu system. However, Moose cargo will report to the carrier that it is within sling loading range.
In order to be able to pickup cargo, you'll need to know where the cargo is located, right?
Fortunately, if your Carrier is not within the reporting range of the cargo, the HQ can help to route you to the locations of cargo.
Use the task action menu to receive HQ help for this.
Depending on the location within the battlefield, the task action menu will contain Route options that can be selected to start the HQ sending you routing messages. The route options will vary, depending on the position of your carrier, and the location of the cargo and the deploy zones. Note that the route options will only be created for cargo that is in scope of your cargo transportation task, so there may be other cargo objects within the DCS simulation, but if those belong to other cargo transportations tasks, then no routing options will be shown for these cargo. This is done to ensure that different teams have a defined scope for defined cargo, and that multiple teams can join multiple tasks, transporting cargo simultaneously in a cooperation.
In this example, there is a menu option to Route to pickup cargo.... Use this menu to route towards cargo locations for pickup into your carrier.
When you select this menu, you'll see a new menu listing the different cargo types that are out there in the dcs simulator. These cargo types are symbolic names that are assigned by the mission designer, like oil, liquid, engineers, food, workers etc. MOOSE has introduced this concept to allow mission designers to make different cargo types for different purposes. Only the creativity of the mission designer limits now the things that can be done with cargo ... Okay, let's continue ..., and let's select Oil ...
When selected, the HQ will send you routing messages.
An example of routing in BR mode.
Note that the coordinate display format in the message can be switched between LL DMS, LL DDM, MGRS and BR.
Use the Core.Settings menu to change your display format preferences.
There you can change the display format to another format that suits your need. Because cargo transportation is Air 2 Ground oriented, you need to select the A2G coordinate format display options. Note that the main settings menu contains much more options to control your display formats, like switch to metric and imperial, or change the duration of the display messages.
Here I changed the routing display format to LL DMS.
One important thing to know, is that the routing messages will flash at regular time intervals. When using BR coordinate display format, the distance and angle will change accordingly from your carrier position and the location of the cargo.
Another important note is the routing towards deploy zones. These routing options will only be shown, when your carrier bays have cargo loaded. So, only when there is something to be deployed from your carrier, the deploy options will be shown.
Pickup Cargo.
In order to pickup cargo, use the task action menu to route to a specific cargo. When a cargo route is selected, the HQ will send you routing messages indicating the location of the cargo.
Upon arrival at the cargo, and when the cargo is within reporting range, the cargo will contact you and further instructions will be given.
When your Carrier is airborne, you will receive instructions to land your Carrier. The action will not be completed until you've landed your Carrier.
For ground carriers, you can just drive to the optimal cargo board or load position.
It takes a bit of skill to land a helicopter near a cargo to be loaded, but that is part of the game, isn't it? Expecially when you are landing in a "hot" zone, so when cargo is under immediate threat of fire.
Board Cargo (infantry).
If your Carrier is within the Reporting Range of the cargo, and the cargo is moveable, the cargo can be boarded! This type of cargo will be most of the time be infantry.
A Board cargo... sub menu has appeared, because your carrier is in boarding range of the cargo (infantry). Select the Board cargo... menu.
Any cargo that can be boarded (thus movable cargo), within boarding range of the carrier, will be listed here! In this example, the cargo Engineers can be boarded, by selecting the menu option.
After the menu option to board the cargo has been selected, the boarding process is started. A message from the cargo is communicated to the pilot, that boarding is started.
The pilot must wait at the exact position until all cargo has been boarded!
The moveable cargo will run in formation to your carrier, and will board one by one, depending on the near range set by the mission designer. The near range as added because carriers can be large or small, depending on the object size of the carrier.
Note that multiple units may need to board your Carrier, so it is required to await the full boarding process.
Once the cargo is fully boarded within your Carrier, you will be notified of this.
Remarks:
- For airborne Carriers, it is required to land first before the Boarding process can be initiated. If during boarding the Carrier gets airborne, the boarding process will be cancelled.
- The carrier must remain stationary when the boarding sequence has started until further notified.
Load Cargo.
Cargo can be loaded into vehicles or helicopters or airplanes, as long as the carrier is sufficiently near to the cargo object.
If your Carrier is within the Loading Range of the cargo, thus, sufficiently near to the cargo, and the cargo is stationary, the cargo can be loaded, but not boarded!
Select the task action menu and now a Load cargo... sub menu will be listed. Select the Load cargo... sub menu, and a further detailed menu will be shown.
For each non-moveable cargo object (crates etc), within loading range of the carrier, the cargo will be listed and can be loaded into the carrier!
Once the cargo is loaded within your Carrier, you will be notified of this.
Remarks:
- For airborne Carriers, it is required to land first right near the cargo, before the loading process can be initiated. As stated, this requires some pilot skills :-)
Sling Load Cargo (helicopters only).
If your Carrier is within the Loading Range of the cargo, and the cargo is stationary, the cargo can also be sling loaded! Note that this is only possible for helicopters.
To sling load cargo, there is no task action menu required. Just follow the normal sling loading procedure and the cargo will report. Use the normal DCS sling loading menu system to hook the cargo you the cable attached on your helicopter.
Again note that you may land firstly right next to the cargo, before the loading process can be initiated. As stated, this requires some pilot skills :-)
Deploy cargo by Unboarding, Unloading and Sling Deploying.
Deploying the relevant cargo within deploy zones, will make you achieve cargo transportation tasks!!!
There are two different ways how cargo can be deployed:
Unboarding: Moveable cargo (like infantry or vehicles), can be unboarded, that means, the cargo will step out of the carrier and will run to a group location. Moose provides you with an additional menu system to unload stationary cargo from the carrier bays, using the menu. These menu options will become available, when the carrier is within the deploy zone.
Unloading: Stationary cargo (like crates), which are heavy, can only be unloaded or sling loaded. Moose provides you with an additional menu system to unload stationary cargo from the carrier bays, using the menu. These menu options will become available, when the carrier is within the deploy zone.
Sling Deploying: Stationary cargo (like crates), which are heavy, can also be sling deployed. Once the cargo is within the deploy zone, the cargo can be deployed from the sling onto the ground.
In order to be able to deploy cargo, you'll need to know where the deploy zone is located, right? Fortunately, the HQ can help to route you to the locations of deploy zone. Use the task action menu to receive HQ help for this.
Depending on the location within the battlefield, the task action menu will contain Route options that can be selected to start the HQ sending you routing messages. Also, if the carrier cargo bays contain cargo, then beside Route options there will also be Deploy options listed. These Deploy options are meant to route you to the deploy zone locations.
Depending on the task that you have selected, the deploy zones will be listed. There may be multiple deploy zones within the mission, but only the deploy zones relevant for your task will be available in the menu!
When a routing option is selected, you are sent routing messages in a selected coordinate format. Possible routing coordinate formats are: Bearing Range (BR), Lattitude Longitude (LL) or Military Grid System (MGRS). Note that for LL, there are two sub formats. (See pickup).
When you are within the range of the deploy zone (can be also a polygon!), a message is communicated by HQ that you have arrived within the zone!
The routing messages are formulated in the coordinate format that is currently active as configured in your settings profile. Use the Settings Menu to select the coordinate format that you would like to use for location determination.
Unboard Cargo.
If your carrier contains cargo, and the cargo is moveable, the cargo can be unboarded! You can only unload cargo if there is cargo within your cargo bays within the carrier.
Select the task action menu and now an Unboard cargo... sub menu will be listed! Again, this option will only be listed if there is a non moveable cargo within your cargo bays.
Now you will see a menu option to unload the non-moveable cargo. In this example, you can unload the Engineers that was loaded within your carrier cargo bays. Depending on the cargo loaded within your cargo bays, you will see other options here! Select the relevant menu option from the cargo unload menu, and the cargo will unloaded from your carrier.
The cargo will step out of your carrier and will move towards a grouping point. When the unboarding process has started, you will be notified by a message to your carrier.
The moveable cargo will unboard one by one, so note that multiple units may need to unboard your Carrier, so it is required to await the full completion of the unboarding process.
Once the cargo is fully unboarded from your carrier, you will be notified of this.
Remarks:
- For airborne carriers, it is required to land first before the unboarding process can be initiated. If during unboarding the Carrier gets airborne, the unboarding process will be cancelled.
- Once the moveable cargo is unboarded, they will start moving towards a specified gathering point.
- The moveable cargo will send a message to your carrier with unboarding status updates.
Deploying a cargo within a deployment zone, may complete a deployment task! So ensure that you deploy the right cargo at the right deployment zone!
Unload Cargo.
If your carrier contains cargo, and the cargo is stationary, the cargo can be unloaded, but not unboarded! You can only unload cargo if there is cargo within your cargo bays within the carrier.
Select the task action menu and now an Unload cargo... sub menu will be listed! Again, this option will only be listed if there is a non moveable cargo within your cargo bays.
Now you will see a menu option to unload the non-moveable cargo. In this example, you can unload the Crate that was loaded within your carrier cargo bays. Depending on the cargo loaded within your cargo bays, you will see other options here! Select the relevant menu option from the cargo unload menu, and the cargo will unloaded from your carrier.
Once the cargo is unloaded fom your Carrier, you may be notified of this, when there is a truck near to the cargo. If there is no truck near to the unload area, no message will be sent to your carrier!
Remarks:
- For airborne Carriers, it is required to land first, before the unloading process can be initiated.
- A truck must be near the unload area to get messages to your carrier of the unload event!
- Unloading is only for non-moveable cargo.
- The non-moveable cargo must be within your cargo bays, or no unload option will be available.
Deploying a cargo within a deployment zone, may complete a deployment task! So ensure that you deploy the right cargo at the right deployment zone!
Sling Deploy Cargo (helicopters only).
If your Carrier is within the deploy zone, and the cargo is stationary, the cargo can also be sling deploying! Note that this is only possible for helicopters.
To sling deploy cargo, there is no task action menu required. Just follow the normal sling deploying procedure.
Deploying a cargo within a deployment zone, may complete a deployment task! So ensure that you deploy the right cargo at the right deployment zone!
Cargo tasking from a mission designer perspective.
Please consult the documentation how to implement the derived classes of SET_CARGO in:
- Tasking.Task_CARGO#TASK_CARGO: Documents the main methods how to handle the cargo tasking from a mission designer perspective.
- Tasking.Task_CARGO#TASK_CARGO_TRANSPORT: Documents the specific methods how to handle the cargo transportation tasking from a mission designer perspective.
- Tasking.Task_CARGO#TASK_CARGO_CSAR: Documents the specific methods how to handle the cargo CSAR tasking from a mission designer perspective.
Developer Note
Note while this class still works, it is no longer supported as the original author stopped active development of MOOSE Therefore, this class is considered to be deprecated
Author: FlightControl
Contributions:
Global(s)
Global TASK_CARGO |
Model tasks for players to transport Cargo. |
Model tasks for players to transport Cargo.
This models the process of a flexible transporation tasking system of cargo.
1) A flexible tasking system.
The TASK_CARGO classes provide you with a flexible tasking sytem, that allows you to transport cargo of various types between various locations and various dedicated deployment zones.
The cargo in scope of the TASK_CARGO classes must be explicitly given, and is of type SET_CARGO. The SET_CARGO contains a collection of CARGO objects that must be handled by the players in the mission.
2) Cargo Tasking from a mission designer perspective.
A cargo task is governed by a Tasking.Mission object. Tasks are of different types. The #TASK object is used or derived by more detailed tasking classes that will implement the task execution mechanisms and goals.
2.1) Derived cargo task classes.
The following TASK_CARGO classes are derived from #TASK.
TASK
TASK_CARGO
TASK_CARGO_TRANSPORT
TASK_CARGO_CSAR
2.1.1) Cargo Tasks
- Tasking.Task_CARGO#TASK_CARGO_TRANSPORT - Models the transportation of cargo to deployment zones.
- Tasking.Task_CARGO#TASK_CARGO_CSAR - Models the rescue of downed friendly pilots from behind enemy lines.
2.2) Handle TASK_CARGO Events ...
The TASK_CARGO classes define Cargo transport tasks, based on the tasking capabilities defined in Tasking.Task#TASK.
2.2.1) Boarding events.
Specific Cargo event can be captured, that allow to trigger specific actions!
- Boarded: Triggered when the Cargo has been Boarded into your Carrier.
- UnBoarded: Triggered when the cargo has been Unboarded from your Carrier and has arrived at the Deployment Zone.
2.2.2) Loading events.
Specific Cargo event can be captured, that allow to trigger specific actions!
- Loaded: Triggered when the Cargo has been Loaded into your Carrier.
- UnLoaded: Triggered when the cargo has been Unloaded from your Carrier and has arrived at the Deployment Zone.
2.2.2) Standard TASK_CARGO Events
The TASK_CARGO is implemented using a Core.Fsm#FSM_TASK, and has the following standard statuses:
- None: Start of the process.
- Planned: The cargo task is planned.
- Assigned: The cargo task is assigned to a Wrapper.Group#GROUP.
- Success: The cargo task is successfully completed.
- Failed: The cargo task has failed. This will happen if the player exists the task early, without communicating a possible cancellation to HQ.
Type(s)
Fields and Methods inherited from FSM_PROCESS | Description |
---|---|
Fields and Methods inherited from TASK_CARGO | Description |
---|---|
TASK_CARGO:GetAutoAssignPriority(AutoAssignMethod, TaskGroup) |
This function is called from the Tasking.CommandCenter#COMMANDCENTER to determine the method of automatic task selection. |
TASK_CARGO:New(Mission, SetGroup, TaskName, SetCargo, TaskType, TaskBriefing) |
Instantiates a new TASK_CARGO. |
TASK_CARGO:OnAfterCargoDeployed(From, Event, To, TaskUnit, Cargo, DeployZone) |
CargoDeployed Handler OnAfter for TASK_CARGO |
TASK_CARGO:OnAfterCargoPickedUp(From, Event, To, TaskUnit, Cargo) |
CargoPickedUp Handler OnAfter for TASK_CARGO |
TASK_CARGO:OnBeforeCargoDeployed(From, Event, To, TaskUnit, Cargo, DeployZone) |
CargoDeployed Handler OnBefore for TASK_CARGO |
TASK_CARGO:OnBeforeCargoPickedUp(From, Event, To, TaskUnit, Cargo) |
CargoPickedUp Handler OnBefore for TASK_CARGO |
Set a limit on the amount of cargo items that can be loaded into the Carriers. |
|
Set a penalty when the task goals have failed.. |
|
Set a score when progress is made. |
|
Set a score when success is achieved. |
|
Fields and Methods inherited from TASK | Description |
---|---|
FSM Abort synchronous event function for TASK. |
|
A group aborting the task. |
|
Gets the SET_GROUP assigned to the TASK. |
|
TASK_CARGO:AddProgress(PlayerName, ProgressText, ProgressTime, ProgressPoints) |
Add Task Progress for a Player Name |
Assign the #TASK to a Wrapper.Group. |
|
Assign the #TASK to an alive Wrapper.Unit. |
|
FSM Cancel synchronous event function for TASK. |
|
Clear the Wrapper.Group assignment from the #TASK. |
|
A group crashing and thus aborting from the task. |
|
FSM Fail synchronous event function for TASK. |
|
Gets the #TASK briefing. |
|
Get goal of a task |
|
Gets the SET_GROUP assigned to the TASK. |
|
Gets the ID of the Task |
|
Gets the Mission to where the TASK belongs. |
|
Gets the Name of the Task |
|
Create a count of the players in the Task. |
|
Create a list of the players in the Task. |
|
Get the default or currently assigned Core.Fsm#FSM_PROCESS template with key ProcessName. |
|
Gets the Scoring of the task |
|
Gets the FiniteStateMachine of #TASK with key Wrapper.Unit. |
|
Gets the #TASK status. |
|
Returns the #TASK briefing. |
|
Get Task Control Menu |
|
Gets the Task Index, which is a combination of the Task type, the Task name. |
|
Returns the #TASK name. |
|
Gets the Type of the Task |
|
Get the Task FSM Process Template |
|
Goal Trigger for TASK |
|
Returns if the #TASK has still alive and assigned Units. |
|
Checks if there is a FiniteStateMachine assigned to Wrapper.Unit for #TASK. |
|
Init Task Control Menu |
|
Returns if the #TASK is assigned to the Group. |
|
Is the #TASK status Aborted. |
|
Is the #TASK status Assigned. |
|
Is the #TASK status Cancelled. |
|
Is the #TASK status Failed. |
|
Is the #TASK status Hold. |
|
Is the #TASK status Planned. |
|
Is the #TASK status Replanned. |
|
Is the #TASK status Success. |
|
Add a PlayerUnit to join the Task. |
|
Report the task status. |
|
Report the task status. |
|
Report the task status. |
|
Send a message of the #TASK to the assigned Wrapper.Groups. |
|
TASK_CARGO:New(Mission, SetGroupAssign, TaskName, TaskType, TaskBriefing) |
Instantiates a new TASK. |
TASK_CARGO:OnAfterGoal(From, Event, To, PlayerUnit, PlayerName) |
Goal Handler OnAfter for TASK |
FSM PlayerAborted event handler prototype for TASK. |
|
FSM PlayerCrashed event handler prototype for TASK. |
|
FSM PlayerDead event handler prototype for TASK. |
|
TASK_CARGO:OnBeforeGoal(From, Event, To, PlayerUnit, PlayerName) |
Goal Handler OnBefore for TASK |
Remove the menu option of the #TASK for a Wrapper.Group. |
|
TASK_CARGO:RefreshTaskControlMenu(TaskUnit, MenuTime, MenuTag) |
Refresh Task Control Menu |
A group rejecting a planned task. |
|
Remove the assigned menu option of the #TASK for a Wrapper.Group. |
|
Remove the menu options of the #TASK to all the groups in the SetGroup. |
|
Remove FiniteStateMachines from #TASK with key Wrapper.Unit. |
|
Remove Task Control Menu |
|
FSM Replan synchronous event function for TASK. |
|
Create a detailed report of the Task. |
|
Create an overiew report of the Task. |
|
Create a summary report of the Task. |
|
Send the briefing message of the #TASK to the assigned Wrapper.Groups. |
|
Set the assigned menu options of the #TASK. |
|
Sets a #TASK briefing. |
|
Set detection of a task |
|
Set dispatcher of a task |
|
Set goal of a task |
|
The Set of Groups assigned to the Task |
|
Set Wrapper.Group assigned to the #TASK. |
|
Sets the ID of the Task |
|
Set the menu options of the #TASK to all the groups in the SetGroup. |
|
Set the Menu for a Group |
|
Sets the Name of the Task |
|
TASK_CARGO:SetPlannedMenuForGroup(TaskGroup, MenuText, MenuTime) |
Set the planned menu option of the #TASK. |
Set a penalty when the A2A attack has failed. |
|
Set a score when progress has been made by the player. |
|
Set a score when all the targets in scope of the A2A attack, have been destroyed. |
|
Add a FiniteStateMachine to #TASK with key Wrapper.Unit. |
|
Sets the TimeOut for the #TASK. |
|
Sets the Type of the Task |
|
Sets the Task FSM Process Template |
|
Sets a #TASK to status Aborted. |
|
Sets a #TASK to status Assigned. |
|
Sets a #TASK to status Cancelled. |
|
Sets a #TASK to status Failed. |
|
Sets a #TASK to status Hold. |
|
Sets a #TASK to status Planned. |
|
Sets a #TASK to status Replanned. |
|
Sets a #TASK to status Success. |
|
FSM Success synchronous event function for TASK. |
|
UnAssign the #TASK from a Wrapper.Group. |
|
UnAssign the #TASK from the Wrapper.Groups. |
|
UnAssign the #TASK from an alive Wrapper.Unit. |
|
FSM Abort asynchronous event function for TASK. |
|
FSM Cancel asynchronous event function for TASK. |
|
FSM Fail asynchronous event function for TASK. |
|
Goal Asynchronous Trigger for TASK |
|
FSM Replan asynchronous event function for TASK. |
|
FSM Success asynchronous event function for TASK. |
|
FSM function for a TASK |
|
FSM function for a TASK |
|
FSM function for a TASK |
|
TASK_CARGO:onenterAssigned(Event, From, To, PlayerUnit, PlayerName) |
FSM function for a TASK |
FSM function for a TASK |
|
FSM function for a TASK |
|
FSM function for a TASK |
|
FSM function for a TASK |
|
FSM function for a TASK |
Fields and Methods inherited from FSM_TASK | Description |
---|---|
Creates a new FSM_TASK object. |
|
Field(s)
Map of Carriers having a cargo item count to check the cargo loading limits.
setmetatable( {}, { __mode = "v" } ) -- weak table on value
Function(s)
Defined in:
TASK_CARGO
Parameters:
Core.Zone#ZONE DeployZone
Wrapper.Unit#UNIT TaskUnit
Return value:
This function is called from the Tasking.CommandCenter#COMMANDCENTER to determine the method of automatic task selection.
Defined in:
TASK_CARGO
Parameters:
#number AutoAssignMethod
The method to be applied to the task.
Wrapper.Group#GROUP TaskGroup
The player group.
Defined in:
TASK_CARGO
Return value:
#list<Core.Zone#ZONE\_BASE>:
The Deployment Zones.
Defined in:
TASK_CARGO
Defined in:
TASK_CARGO
Defined in:
TASK_CARGO
Parameter:
Wrapper.Unit#UNIT TaskUnit
Return value:
The Zone object where the Target is located on the map.
Instantiates a new TASK_CARGO.
Defined in:
TASK_CARGO
Parameters:
Tasking.Mission#MISSION Mission
Core.Set#SET_GROUP SetGroup
The set of groups for which the Task can be assigned.
#string TaskName
The name of the Task.
Core.Set#SET_CARGO SetCargo
The scope of the cargo to be transported.
#string TaskType
The type of Cargo task.
#string TaskBriefing
The Cargo Task briefing.
Return value:
self
CargoDeployed Handler OnAfter for TASK_CARGO
Defined in:
TASK_CARGO
Parameters:
#string From
#string Event
#string To
Wrapper.Unit#UNIT TaskUnit
The Unit (Client) that Deployed the cargo. You can use this to retrieve the PlayerName etc.
Cargo.Cargo#CARGO Cargo
The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
Core.Zone#ZONE DeployZone
The zone where the Cargo got Deployed or UnBoarded.
Usage:
-- Add a Transport task to transport cargo of different types to a Transport Deployment Zone.
TaskDispatcher = TASK_CARGO_DISPATCHER:New( Mission, TransportGroups )
local CargoSetWorkmaterials = SET_CARGO:New():FilterTypes( "Workmaterials" ):FilterStart()
local EngineerCargoGroup = CARGO_GROUP:New( GROUP:FindByName( "Engineers" ), "Workmaterials", "Engineers", 250 )
local ConcreteCargo = CARGO_SLINGLOAD:New( STATIC:FindByName( "Concrete" ), "Workmaterials", "Concrete", 150, 50 )
local CrateCargo = CARGO_CRATE:New( STATIC:FindByName( "Crate" ), "Workmaterials", "Crate", 150, 50 )
local EnginesCargo = CARGO_CRATE:New( STATIC:FindByName( "Engines" ), "Workmaterials", "Engines", 150, 50 )
local MetalCargo = CARGO_CRATE:New( STATIC:FindByName( "Metal" ), "Workmaterials", "Metal", 150, 50 )
-- Here we add the task. We name the task "Build a Workplace".
-- We provide the CargoSetWorkmaterials, and a briefing as the 2nd and 3rd parameter.
-- The :AddTransportTask() returns a Tasking.Task_Cargo_Transport#TASK_CARGO_TRANSPORT object, which we keep as a reference for further actions.
-- The WorkplaceTask holds the created and returned Tasking.Task_Cargo_Transport#TASK_CARGO_TRANSPORT object.
local WorkplaceTask = TaskDispatcher:AddTransportTask( "Build a Workplace", CargoSetWorkmaterials, "Transport the workers, engineers and the equipment near the Workplace." )
-- Here we set a TransportDeployZone. We use the WorkplaceTask as the reference, and provide a ZONE object.
TaskDispatcher:SetTransportDeployZone( WorkplaceTask, ZONE:New( "Workplace" ) )
Helos = { SPAWN:New( "Helicopters 1" ), SPAWN:New( "Helicopters 2" ), SPAWN:New( "Helicopters 3" ), SPAWN:New( "Helicopters 4" ), SPAWN:New( "Helicopters 5" ) }
EnemyHelos = { SPAWN:New( "Enemy Helicopters 1" ), SPAWN:New( "Enemy Helicopters 2" ), SPAWN:New( "Enemy Helicopters 3" ) }
-- This is our worker method! So when a cargo is deployed within a deployment zone, this method will be called.
-- By example we are spawning here a random friendly helicopter and a random enemy helicopter.
function WorkplaceTask:OnAfterCargoDeployed( From, Event, To, TaskUnit, Cargo, DeployZone )
Helos[ math.random(1,#Helos) ]:Spawn()
EnemyHelos[ math.random(1,#EnemyHelos) ]:Spawn()
end
CargoPickedUp Handler OnAfter for TASK_CARGO
Defined in:
TASK_CARGO
Parameters:
#string From
#string Event
#string To
Wrapper.Unit#UNIT TaskUnit
The Unit (Client) that PickedUp the cargo. You can use this to retrieve the PlayerName etc.
Cargo.Cargo#CARGO Cargo
The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
CargoDeployed Handler OnBefore for TASK_CARGO
Defined in:
TASK_CARGO
Parameters:
#string From
#string Event
#string To
Wrapper.Unit#UNIT TaskUnit
The Unit (Client) that Deployed the cargo. You can use this to retrieve the PlayerName etc.
Cargo.Cargo#CARGO Cargo
The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
Core.Zone#ZONE DeployZone
The zone where the Cargo got Deployed or UnBoarded.
Return value:
#boolean:
CargoPickedUp Handler OnBefore for TASK_CARGO
Defined in:
TASK_CARGO
Parameters:
#string From
#string Event
#string To
Wrapper.Unit#UNIT TaskUnit
The Unit (Client) that PickedUp the cargo. You can use this to retrieve the PlayerName etc.
Cargo.Cargo#CARGO Cargo
The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
Return value:
#boolean:
Defined in:
TASK_CARGO
Parameters:
Core.Zone#ZONE DeployZone
Wrapper.Unit#UNIT TaskUnit
Return value:
Defined in:
TASK_CARGO
Parameter:
ReportGroup
Set a limit on the amount of cargo items that can be loaded into the Carriers.
Defined in:
TASK_CARGO
Parameter:
CargoLimit
Specifies a number of cargo items that can be loaded in the helicopter.
Return value:
Defined in:
TASK_CARGO
Parameters:
AI.AI_Cargo#AI_CARGO Cargo
The cargo.
Wrapper.Unit#UNIT TaskUnit
Return value:
Defined in:
TASK_CARGO
Parameters:
Core.Zone#ZONE DeployZone
Wrapper.Unit#UNIT TaskUnit
Return value:
Defined in:
TASK_CARGO
Parameters:
#list<Core.Zone#ZONE> DeployZones
Wrapper.Unit#UNIT TaskUnit
Return value:
Defined in:
TASK_CARGO
Set a penalty when the task goals have failed..
Defined in:
TASK_CARGO
Parameters:
#string Text
The text to display to the player, when the task goals has failed.
#number Penalty
The penalty in points.
Wrapper.Unit#UNIT TaskUnit
Return value:
Set a score when progress is made.
Defined in:
TASK_CARGO
Parameters:
#string Text
The text to display to the player, when there is progress on the task goals.
#number Score
The score in points.
Wrapper.Unit#UNIT TaskUnit
Return value:
Set a score when success is achieved.
Defined in:
TASK_CARGO
Parameters:
#string Text
The text to display to the player, when the task goals have been achieved.
#number Score
The score in points.
Wrapper.Unit#UNIT TaskUnit
Return value:
Defined in:
TASK_CARGO
Parameters:
Color
Might be SMOKECOLOR.Blue, SMOKECOLOR.Red SMOKECOLOR.Orange, SMOKECOLOR.White or SMOKECOLOR.Green
self
SmokeColor
Defined in:
TASK_CARGO
Field(s)
Map of Carriers having a cargo item count to check the cargo loading limits.
setmetatable( {}, { __mode = "v" } ) -- weak table on value
Function(s)
FSM Abort synchronous event function for TASK.
Use this event to Abort the Task.
Defined in:
A group aborting the task.
Gets the SET_GROUP assigned to the TASK.
Add Task Progress for a Player Name
Defined in:
Parameters:
#string PlayerName
The name of the player.
#string ProgressText
The text that explains the Progress achieved.
#number ProgressTime
The time the progress was achieved.
ProgressPoints
Return value:
Assign the #TASK to a Wrapper.Group.
Assign the #TASK to an alive Wrapper.Unit.
FSM Cancel synchronous event function for TASK.
Use this event to Cancel the Task.
Defined in:
Clear the Wrapper.Group assignment from the #TASK.
A group crashing and thus aborting from the task.
FSM Fail synchronous event function for TASK.
Use this event to Fail the Task.
Defined in:
TODO: Obsolete? - Fail processes from #TASK with key Wrapper.Unit. @param #TASK self @param #string TaskUnitName @return #TASK self
Gets the #TASK briefing.
Get goal of a task
Gets the SET_GROUP assigned to the TASK.
Gets the ID of the Task
Gets the Mission to where the TASK belongs.
Gets the Name of the Task
Create a count of the players in the Task.
Create a list of the players in the Task.
Get the default or currently assigned Core.Fsm#FSM_PROCESS template with key ProcessName.
Gets the Scoring of the task
Gets the FiniteStateMachine of #TASK with key Wrapper.Unit.
Returns the #TASK briefing.
Get Task Control Menu
Defined in:
Parameters:
Wrapper.Unit#UNIT TaskUnit
The Wrapper.Unit that contains a player.
TaskName
Return value:
TaskControlMenu The Task Control Menu
Gets the Task Index, which is a combination of the Task type, the Task name.
Returns the #TASK name.
Gets the Type of the Task
Get the Task FSM Process Template
Goal Trigger for TASK
Defined in:
Parameters:
Wrapper.Unit#UNIT PlayerUnit
The Wrapper.Unit of the player.
#string PlayerName
The name of the player.
Returns if the #TASK has still alive and assigned Units.
Checks if there is a FiniteStateMachine assigned to Wrapper.Unit for #TASK.
Init Task Control Menu
Defined in:
Parameter:
Wrapper.Unit#UNIT TaskUnit
The Wrapper.Unit that contains a player.
Return value:
Task Control Menu Refresh ID
Returns if the #TASK is assigned to the Group.
Add a PlayerUnit to join the Task.
For each Group within the Task, the Unit is checked if it can join the Task. If the Unit was not part of the Task, false is returned. If the Unit is part of the Task, true is returned.
Defined in:
Parameters:
Wrapper.Unit#UNIT PlayerUnit
The CLIENT or UNIT of the Player joining the Mission.
Wrapper.Group#GROUP PlayerGroup
The GROUP of the player joining the Mission.
Return value:
#boolean:
true if Unit is part of the Task.
Report the task status.
Report the task status.
Report the task status.
Send a message of the #TASK to the assigned Wrapper.Groups.
Instantiates a new TASK.
Should never be used. Interface Class.
Defined in:
Parameters:
Tasking.Mission#MISSION Mission
The mission wherein the Task is registered.
Core.Set#SET_GROUP SetGroupAssign
The set of groups for which the Task can be assigned.
#string TaskName
The name of the Task
#string TaskType
The type of the Task
TaskBriefing
Return value:
self
Goal Handler OnAfter for TASK
Defined in:
Parameters:
#string From
#string Event
#string To
Wrapper.Unit#UNIT PlayerUnit
The Wrapper.Unit of the player.
#string PlayerName
The name of the player.
FSM PlayerAborted event handler prototype for TASK.
Defined in:
Parameters:
Wrapper.Unit#UNIT PlayerUnit
The Unit of the Player when he went back to spectators or left the mission.
#string PlayerName
The name of the Player.
FSM PlayerCrashed event handler prototype for TASK.
Defined in:
Parameters:
Wrapper.Unit#UNIT PlayerUnit
The Unit of the Player when he crashed in the mission.
#string PlayerName
The name of the Player.
FSM PlayerDead event handler prototype for TASK.
Defined in:
Parameters:
Wrapper.Unit#UNIT PlayerUnit
The Unit of the Player when he died in the mission.
#string PlayerName
The name of the Player.
Goal Handler OnBefore for TASK
Defined in:
Parameters:
#string From
#string Event
#string To
Wrapper.Unit#UNIT PlayerUnit
The Wrapper.Unit of the player.
#string PlayerName
The name of the player.
Return value:
#boolean:
Remove the menu option of the #TASK for a Wrapper.Group.
Refresh Task Control Menu
Defined in:
Parameters:
Wrapper.Unit#UNIT TaskUnit
The Wrapper.Unit that contains a player.
MenuTime
The refresh time that was used to refresh the Task Control Menu items.
MenuTag
The tag.
A group rejecting a planned task.
Remove the assigned menu option of the #TASK for a Wrapper.Group.
Remove the menu options of the #TASK to all the groups in the SetGroup.
Remove FiniteStateMachines from #TASK with key Wrapper.Unit.
Remove Task Control Menu
FSM Replan synchronous event function for TASK.
Use this event to Replan the Task.
Defined in:
Create a detailed report of the Task.
List the Task Status, and the Players assigned to the Task.
Create an overiew report of the Task.
List the Task Name and Status
Create a summary report of the Task.
List the Task Name and Status
Send the briefing message of the #TASK to the assigned Wrapper.Groups.
Defined in:
Set the assigned menu options of the #TASK.
Sets a #TASK briefing.
Set detection of a task
Set dispatcher of a task
Set goal of a task
Set Wrapper.Group assigned to the #TASK.
Sets the ID of the Task
Set the menu options of the #TASK to all the groups in the SetGroup.
Set the Menu for a Group
Sets the Name of the Task
Set the planned menu option of the #TASK.
Defined in:
Parameters:
Wrapper.Group#GROUP TaskGroup
#string MenuText
The menu text.
#number MenuTime
Return value:
self
Set a penalty when the A2A attack has failed.
Defined in:
Parameters:
#string PlayerName
The name of the player.
#number Penalty
The penalty in points, must be a negative value!
Wrapper.Unit#UNIT TaskUnit
Return value:
Set a score when progress has been made by the player.
Defined in:
Parameters:
#string PlayerName
The name of the player.
#number Score
The score in points to be granted when task process has been achieved.
Wrapper.Unit#UNIT TaskUnit
Return value:
Set a score when all the targets in scope of the A2A attack, have been destroyed.
Defined in:
Parameters:
#string PlayerName
The name of the player.
#number Score
The score in points.
Wrapper.Unit#UNIT TaskUnit
Return value:
Add a FiniteStateMachine to #TASK with key Wrapper.Unit.
Sets the TimeOut for the #TASK.
If #TASK stayed planned for longer than TimeOut, it gets into Cancelled status.
Sets the Type of the Task
Sets the Task FSM Process Template
FSM Success synchronous event function for TASK.
Use this event to make the Task a Success.
Defined in:
UnAssign the #TASK from a Wrapper.Group.
UnAssign the #TASK from the Wrapper.Groups.
Defined in:
UnAssign the #TASK from an alive Wrapper.Unit.
FSM Abort asynchronous event function for TASK.
Use this event to Abort the Task.
Defined in:
FSM Cancel asynchronous event function for TASK.
Use this event to Cancel the Task.
Defined in:
FSM Fail asynchronous event function for TASK.
Use this event to Fail the Task.
Defined in:
Goal Asynchronous Trigger for TASK
Defined in:
Parameters:
#number Delay
Wrapper.Unit#UNIT PlayerUnit
The Wrapper.Unit of the player.
#string PlayerName
The name of the player.
FSM Replan asynchronous event function for TASK.
Use this event to Replan the Task.
Defined in:
FSM Success asynchronous event function for TASK.
Use this event to make the Task a Success.
Defined in:
FSM function for a TASK
FSM function for a TASK
FSM function for a TASK
FSM function for a TASK
Defined in:
Parameters:
#string Event
#string From
#string To
PlayerUnit
PlayerName
FSM function for a TASK
FSM function for a TASK
FSM function for a TASK
FSM function for a TASK
FSM function for a TASK
Field(s)
Map of Carriers having a cargo item count to check the cargo loading limits.
setmetatable( {}, { __mode = "v" } ) -- weak table on value
Function(s)
Creates a new FSM_TASK object.
Defined in:
Parameter:
#string TaskName
The name of the task.