Setting a patrol
In this tutorial, we will learn how to set up a patrol. Since we are going to create a patrol that goes around near the edges of the map, we start off by creating appropriate waypoints. As always, we are using the map created in the previous tutorials. Open map.yaml to begin.
We create four waypoints that our units will be using by creating these four actors:
Patrol1: waypoint
Location: 16,16
Owner: Neutral
Patrol2: waypoint
Location: 47,16
Owner: Neutral
Patrol3: waypoint
Location: 47,47
Owner: Neutral
Patrol4: waypoint
Location: 16,47
Owner: Neutral
Then we turn off shroud and fog of war so that we can see what is actually happening. This is not recommended if you want to have an engaging single player experience. We are only doing this to see what is happening.
Options:
Crates: False
Fog: False
Shroud: False
AllyBuildRadius: False
FragileAlliances: False
StartingCash: 5000
ConfigurableStartingUnits: False
Now we make changes to the tutorialmap.lua file (or the file in which you do coding)
We first define the units that are going to be the part of our patrol and also the path that the patrol will begin with:
apcPatrol = {"apc", "3tnk"}
apcPath = { Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location }
We then define the function that will be called to initiate the patrol
SendPatrol = function()
Reinforcements.Reinforce(india, apcPatrol, apcPath, 15, function(vehicle)
vehicle.Patrol(apcPath, true, 5)
end)
end
So the patrol will be called for india and once it reaches the last patrol point, the Patrol function will be called making the units to move from one point to another in attack move stance:
You can see that the units will keep on going in a circle and engage anything that will come in their path. You can change the time to win the map from 60 to 120 seconds to see the units make their patrol journey. Now as always, I give you the complete code for the map.
JeepReinforcements = {"jeep", "jeep"}
JeepReinforcementsPath = { PakEntry.Location, PakRally.Location }
JeepDelay = 12
JeepInterval = 2
Force = { "e1", "e1", "e1", "e1", "e2"}
ForcePath = { IndiaEntry.Location, IndiaRally.Location }
ForceDelay = 15
ForceInterval = 2
apcPatrol = {"apc", "3tnk"}
apcPath = { Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location }
apcInterval = 2
ParadropUnitTypes = { "e1", "e1", "e1", "e3", "e3"}
ParadropWaypoints = { PakRally, IndiaRally}
AttackersTeam = { Attacker1, Attacker2 }
InsertionHelicopterType = "tran"
SniperReinforcements = { "gnrl", "sniper" }
SendPatrol = function()
Reinforcements.Reinforce(india, apcPatrol, apcPath, 15, function(vehicle) vehicle.Patrol(apcPath, true, 5) end)
end
AttackersKilled = function()
Trigger.AfterDelay(DateTime.Seconds(5), SendSnipers)
end
SendSnipers = function()
local passengers = Reinforcements.ReinforceWithTransport(player, InsertionHelicopterType,
SniperReinforcements, JeepReinforcementsPath, { PakEntry.Location })[2]
local vip = passengers[1]
Trigger.OnKilled(vip, MissionFailed)
vip.Stance = "Defend"
end
SendJeeps = function()
Reinforcements.Reinforce(player, JeepReinforcements, JeepReinforcementsPath, DateTime.Seconds(JeepInterval))
Media.PlaySpeechNotification(player, "ReinforcementsArrived")
end
SendIndianInfantry = function()
local units = Reinforcements.Reinforce(india, Force, ForcePath, ForceInterval)
Utils.Do(units, function(unit)
BindActorTriggers(unit)
end)
Trigger.AfterDelay(DateTime.Seconds(5), SendIndianInfantry)
end
BindActorTriggers = function(a)
if a.HasProperty("Hunt") then
if a.Owner == india then
Trigger.OnIdle(a, a.Hunt)
else
Trigger.OnIdle(a, function(a) a.AttackMove(Outpost.Location) end)
end
end
end
OutpostDestroyed = function()
MissionFailed()
end
MissionAccomplished = function()
Media.PlaySpeechNotification(player, "Win")
end
MissionFailed = function()
Media.PlaySpeechNotification(player, "Lose")
player.MarkFailedObjective(SurviveObjective)
india.MarkCompletedObjective(DestroyObjective)
end
ParadropIndianUnits = function()
local lz = Utils.Random(ParadropWaypoints).Location
local start = Map.CenterOfCell(Map.RandomEdgeCell()) + WVec.New(0, 0, Actor.CruiseAltitude("badr"))
local transport = Actor.Create("badr", true, { CenterPosition = start, Owner = india, Facing = (Map.CenterOfCell(lz) - start).Facing })
Utils.Do(ParadropUnitTypes, function(type)
local a = Actor.Create(type, false, { Owner = india })
BindActorTriggers(a)
transport.LoadPassenger(a)
end)
transport.Paradrop(lz)
Trigger.AfterDelay(DateTime.Seconds(15), ParadropIndianUnits)
end
WorldLoaded = function()
player = Player.GetPlayer("PAKISTAN")
india = Player.GetPlayer("INDIA")
Trigger.OnObjectiveCompleted(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnKilled(Outpost, OutpostDestroyed)
SurviveObjective = player.AddPrimaryObjective("The outpost must survive.")
DestroyObjective = india.AddPrimaryObjective("The Pakistani outpost must be destroyed.")
Trigger.AfterDelay(DateTime.Seconds(120), function()
MissionAccomplished()
player.MarkCompletedObjective(SurviveObjective)
india.MarkFailedObjective(DestroyObjective)
end)
Trigger.AfterDelay(DateTime.Seconds(2), function() Actor.Create("camera", true, { Owner = player, Location = PakRally.Location }) end)
Camera.Position = Outpost.CenterPosition
Trigger.AfterDelay(DateTime.Seconds(5), SendJeeps) --Sending Allied reinforcements
SendIndianInfantry(IndiaEntry.Location, Force, ForceInterval) --Sending Indian ground troops every 15 seconds
ParadropIndianUnits()
Trigger.OnAllKilled(AttackersTeam, AttackersKilled)
Trigger.AfterDelay(DateTime.Seconds(5), SendPatrol)
end
- made by Umair Azfar Khan
Players ๐ฒ
- FAQ โ
- Installation ๐ฆ
- Game Content ๐ฟ
- Hotkeys and Stances ๐ฎ
- Strategies ๐
- Settings ๐ง
- Dedicated Server โพ
- RaspberryPi ๐
- Badges & Icons ๐ฅ
- Changelog ๐
Modders โ๏ธ
- Audio guide ๐
- Traits ๐
- Palettes and Remaps ๐จ
- World Coordinate System ๐
- Map scripting
- Lua-API ๐
- Conditions ๐
- Mapping ๐ง
- Pixelart ๐
Developers ๐ง
- Contributing โค๏ธ
- Compiling
- Hacking
- Coding Standard ๐
- Branches and Releases ๐
- Release Checklist โ
- Sequences
- Glossary
- Reverse engineering ๐
- License ยฉ๏ธ