Banner Image

Module Functional.AmmoTruck

Functional -- Send a truck to supply artillery groups.


AMMOTRUCK - Send a truck to supply artillery groups.


Missions:

AmmoTruck


Author : applevangelist

Global(s)

Global AMMOTRUCK

Amateurs talk about tactics, but professionals study logistics. - General Robert H Barrow, USMC

Simple Class to re-arm your artillery with trucks.

#AMMOTRUCK AMMOTRUCK

Amateurs talk about tactics, but professionals study logistics. - General Robert H Barrow, USMC

Simple Class to re-arm your artillery with trucks.

AMMOTRUCK

  • Controls a SET_GROUP of trucks which will re-arm a SET_GROUP of artillery groups when they run out of ammunition.

1 The AMMOTRUCK concept

A SET_GROUP of trucks which will re-arm a SET_GROUP of artillery groups when they run out of ammunition. They will be based on a homebase and drive from there to the artillery groups and then back home. Trucks are the only known in-game mechanic to re-arm artillery and other units in DCS. Working units are e.g.: M-939 (blue), Ural-375 and ZIL-135 (both red).

2 Set-up

Define a set of trucks and a set of artillery:

       local truckset = SET_GROUP:New():FilterCoalitions("blue"):FilterActive(true):FilterCategoryGround():FilterPrefixes("Ammo Truck"):FilterStart()
       local ariset = SET_GROUP:New():FilterCoalitions("blue"):FilterActive(true):FilterCategoryGround():FilterPrefixes("Artillery"):FilterStart()

Create an AMMOTRUCK object to take care of the artillery using the trucks, with a homezone:

       local ammotruck = AMMOTRUCK:New(truckset,ariset,coalition.side.BLUE,"Logistics",ZONE:FindByName("HomeZone") 

2 Options and their default values

       ammotruck.ammothreshold = 5 -- send a truck when down to this many rounds
       ammotruck.remunidist = 20000 -- 20km - send trucks max this far from home
       ammotruck.unloadtime = 600 -- 10 minutes - min time to unload ammunition
       ammotruck.waitingtime = 1800 -- 30 mintes - wait max this long until remunition is done
       ammotruck.monitor = -60 -- 1 minute - AMMOTRUCK checks run every one minute
       ammotruck.routeonroad = true -- Trucks will **try** to drive on roads
       ammotruck.usearmygroup = false -- If true, will make use of ARMYGROUP in the background (if used in DEV branch)
   ammotruck.reloads = 5 -- Maxn re-arms a truck can do before he needs to go home and restock. Set to -1 for unlimited

3 FSM Events to shape mission

Truck has been sent off:

       function ammotruck:OnAfterRouteTruck(From, Event, To, Truckdata, Aridata)
         ...
       end

Truck has arrived:

       function ammotruck:OnAfterTruckArrived(From, Event, To, Truckdata)
         ...
       end 

Truck is unloading:

       function ammotruck:OnAfterTruckUnloading(From, Event, To, Truckdata)
         ...
       end 

Truck is returning home:

       function ammotruck:OnAfterTruckReturning(From, Event, To, Truckdata)
         ...
       end  

Truck is arrived at home:

       function ammotruck:OnAfterTruckHome(From, Event, To, Truckdata)
         ...
       end 
                   

Type(s)

Fields and Methods inherited from AMMOTRUCK Description

AMMOTRUCK:CheckArrivedTrucks(dataset)

AMMOTRUCK:CheckDrivingTrucks(dataset)

AMMOTRUCK:CheckReturningTrucks(dataset)

AMMOTRUCK:CheckTargetsAlive()

AMMOTRUCK:CheckTrucksAlive()

AMMOTRUCK:CheckUnloadingTrucks(dataset)

AMMOTRUCK:CheckWaitingTargets(dataset)

AMMOTRUCK.ClassName

Class Name

AMMOTRUCK:FindTarget(name)

AMMOTRUCK:FindTruck(name)

AMMOTRUCK:GetAmmoStatus(Group)

AMMOTRUCK:New(Truckset, Targetset, Coalition, Alias, Homezone)

AMMOTRUCK:OnAfterRouteTruck(From, Event, To, Truck)

On after "RouteTruck" event.

AMMOTRUCK:OnAfterTruckHome(From, Event, To, Truck)

On after "TruckHome" event.

AMMOTRUCK:OnAfterTruckReturning(From, Event, To, Truck)

On after "TruckReturning" event.

AMMOTRUCK:OnAfterTruckUnloading(From, Event, To, Truck)

On after "TruckUnloading" event.

AMMOTRUCK.State

AMMOTRUCK:Stop()

Triggers the FSM event "Stop".

AMMOTRUCK:__Stop(delay)

Triggers the FSM event "Stop" after a delay.

AMMOTRUCK.alias

Alias name

AMMOTRUCK.ammothreshold

Threshold (min) ammo before sending a truck

AMMOTRUCK.coalition

Coalition this is for

AMMOTRUCK.debug

Debug flag

AMMOTRUCK.hasarmygroup

AMMOTRUCK.homezone

AMMOTRUCK.lid

Lid for log entries

AMMOTRUCK.monitor

Monitor interval in seconds

AMMOTRUCK:onafterMonitor(From, Event, To)

AMMOTRUCK:onafterRouteTruck(From, Event, To, Truckdata, Aridata)

AMMOTRUCK:onafterStart(From, Event, To)

AMMOTRUCK:onafterStop(From, Event, To)

AMMOTRUCK:onafterTruckReturning(From, Event, To, Truck)

AMMOTRUCK:onafterTruckUnloading(From, Event, To, Truckdata)

AMMOTRUCK.reloads

Number of reloads a single truck can do before he must return home

AMMOTRUCK.remunidist

Max distance trucks will go

AMMOTRUCK.remunitionqueue

List of (alive) #AMMOTRUCK.data artillery to be reloaded

AMMOTRUCK.routeonroad

Route truck on road if true (default)

AMMOTRUCK.targetlist

List of (alive) #AMMOTRUCK.data artillery

AMMOTRUCK.targetset

SET of artillery

AMMOTRUCK.trucklist

List of (alive) #AMMOTRUCK.data trucks

AMMOTRUCK.truckset

SET of trucks

AMMOTRUCK.unloadtime

Unload time in seconds

AMMOTRUCK.usearmygroup

AMMOTRUCK.version

Version string

AMMOTRUCK.waitingtargets

List of (alive) #AMMOTRUCK.data artillery waiting

AMMOTRUCK.waitingtime

Max waiting time in seconds

  • AMMOTRUCK class, extends Core.FSM#FSM

Field(s)

#string AMMOTRUCK.ClassName

Class Name

#string AMMOTRUCK.alias

Alias name

#number AMMOTRUCK.ammothreshold

Threshold (min) ammo before sending a truck

#number AMMOTRUCK.coalition

Coalition this is for

#boolean AMMOTRUCK.debug

Debug flag

#string AMMOTRUCK.lid

Lid for log entries

#number AMMOTRUCK.monitor

Monitor interval in seconds

#number AMMOTRUCK.reloads

Number of reloads a single truck can do before he must return home

#number AMMOTRUCK.remunidist

Max distance trucks will go

#table AMMOTRUCK.remunitionqueue

List of (alive) #AMMOTRUCK.data artillery to be reloaded

#boolean AMMOTRUCK.routeonroad

Route truck on road if true (default)

#table AMMOTRUCK.targetlist

List of (alive) #AMMOTRUCK.data artillery

#table AMMOTRUCK.trucklist

List of (alive) #AMMOTRUCK.data trucks

#number AMMOTRUCK.unloadtime

Unload time in seconds

#string AMMOTRUCK.version

Version string

#table AMMOTRUCK.waitingtargets

List of (alive) #AMMOTRUCK.data artillery waiting

#number AMMOTRUCK.waitingtime

Max waiting time in seconds

Function(s)

Defined in:

AMMOTRUCK

Parameter:

#table dataset

table of #AMMOTRUCK.data entries

Return value:

self

Defined in:

AMMOTRUCK

Parameter:

#table dataset

table of #AMMOTRUCK.data entries

Return value:

self

Defined in:

AMMOTRUCK

Parameter:

#table dataset

table of #AMMOTRUCK.data entries

Return value:

self

Defined in:

AMMOTRUCK

Return value:

self

Defined in:

AMMOTRUCK

Return value:

self

Defined in:

AMMOTRUCK

Parameter:

#table dataset

table of #AMMOTRUCK.data entries

Return value:

self

Defined in:

AMMOTRUCK

Parameter:

#table dataset

table of #AMMOTRUCK.data entries

Return value:

self

Defined in:

AMMOTRUCK

Parameter:

#string name

Artillery group name to find

Return value:

Defined in:

AMMOTRUCK

Parameter:

#string name

Truck group name to find

Return value:

Defined in:

AMMOTRUCK

Parameter:

Return value:

self

Defined in:

AMMOTRUCK

Parameters:

Set of truck groups

Core.Set#SET_GROUP Targetset

Set of artillery groups

#number Coalition

Coalition

#string Alias

Alias Name

Core.Zone#ZONE Homezone

Home, return zone for trucks

Return value:

self

Usage:

Define a set of trucks and a set of artillery:  
           local truckset = SET_GROUP:New():FilterCoalitions("blue"):FilterActive(true):FilterCategoryGround():FilterPrefixes("Ammo Truck"):FilterStart()
           local ariset = SET_GROUP:New():FilterCoalitions("blue"):FilterActive(true):FilterCategoryGround():FilterPrefixes("Artillery"):FilterStart()

Create an AMMOTRUCK object to take care of the artillery using the trucks, with a homezone:  
           local ammotruck = AMMOTRUCK:New(truckset,ariset,coalition.side.BLUE,"Logistics",ZONE:FindByName("HomeZone") 

On after "RouteTruck" event.

Defined in:

AMMOTRUCK

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On after "TruckHome" event.

Defined in:

AMMOTRUCK

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On after "TruckReturning" event.

Defined in:

AMMOTRUCK

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On after "TruckUnloading" event.

Defined in:

AMMOTRUCK

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

Triggers the FSM event "Stop".

Stops the AMMOTRUCK and all its event handlers.

Defined in:

AMMOTRUCK

Triggers the FSM event "Stop" after a delay.

Stops the AMMOTRUCK and all its event handlers.

Defined in:

AMMOTRUCK

Parameter:

#number delay

Delay in seconds.

Defined in:

AMMOTRUCK

Parameters:

#string From

#string Event

#string To

Return value:

self

Defined in:

AMMOTRUCK

Parameters:

#string From

#string Event

#string To

#AMMOTRUCK.data Truckdata

#AMMOTRUCK.data Aridata

Return value:

self

Defined in:

AMMOTRUCK

Parameters:

#string From

#string Event

#string To

Return value:

self

Defined in:

AMMOTRUCK

Parameters:

#string From

#string Event

#string To

Return value:

self

Defined in:

AMMOTRUCK

Parameters:

#string From

#string Event

#string To

Return value:

self

Defined in:

AMMOTRUCK

Parameters:

#string From

#string Event

#string To

#AMMOTRUCK.data Truckdata

Return value:

self