Petite démonstration du SPAWN de MOOSE.
Objectif : Créer un spawn aléatoire entre 4 différents groupes de CAP sur un système aléatoire de 3 zones de Spawn (n'importe où dans la zone) qui se dirige vers un système aléatoire de 4 waypoints (à 20km près).
Le tout avec des menus / sous menu et des messages à la coalition.
En prime des spawns à la demande d'un AWACS et d'un tanker.
Aucun trigger à part le load de Moose et du fichier de script propre à la mission, keep it clean !
Fichier miz avec à côté les 2 Lua inclus dans la mission
Le code est abondamment commenté
Code : Tout sélectionner
-- CONFIGURATION SPAWNS DE GROUPES
-- Table des zones pour le spawn des groupes de CAP
local ZoneStartTable = {
ZONE:New("CAP START 1"),
ZONE:New("CAP START 2"),
ZONE:New("CAP START 3"),
}
-- Définition d'une route
local Spawn_CAP_1 = SPAWN:New("Route_CAP_1")
-- N'importe quel groupe dont le nom commence par "Easy_Template_CAP"
:InitRandomizeTemplatePrefixes("Easy_Template_CAP")
-- Random waypoint - Commence au waypoint 1, fin au waypoint 4, à 20000 mètres près
:InitRandomizeRoute(1, 4, 20000)
-- FONCTIONS D'ACTIVATION DES SPAWNS
-- Mission A2A Easy
function A2A_Easy_Start()
-- on tire au sort un index du tableau des zones (entre 1 et le nombre d'entrées de la table)
local randomZone = math.random(1,#ZoneStartTable)
-- Zone, random position, alt minimum en mètre, alt maximum en mètre
Spawn_CAP_1:SpawnInZone(ZoneStartTable[randomZone], true, 7500, 10000)
-- Message aux bleus, temps en seconde
MessageToBlue("Mission A2A Easy lancée",10)
end
-- AWACS
function SpawnAwacs()
-- On détruit l'Awacs s'il est déjà spawn
if AwacsSpawned then AwacsSpawned:Destroy() end
-- On spawn le groupe AWACS
AwacsSpawned = SPAWN:New("AWACS"):Spawn()
-- Message aux bleus, temps en seconde
MessageToBlue("AWACS disponible",10)
end
-- Tanker
function SpawnTanker()
-- On détruit le tanker s'il est déjà spawn
if TankerSpawned then TankerSpawned:Destroy() end
-- On spawn le groupe "Tanker"
TankerSpawned = SPAWN:New("Tanker"):Spawn()
-- Message aux bleus, temps en seconde
MessageToBlue("Tanker disponible",10)
end
-- MENU F10
-- menu général des missions
local menuMissions = MENU_COALITION:New(coalition.side.BLUE, "Missions")
-- sous menu de mission (sous le menu général des missions)
local menua2aMission = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Pop A2A Mission", menuMissions, A2A_Easy_Start)
-- menu de lancement AWACS
local menuAwacs = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Pop AWACS", nil, SpawnAwacs)
-- menu de lancement Tanker
local menuTanker = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Pop TANKER", nil, SpawnTanker)