Tutoriel MISTFR pour simplifier vos éditions de mission

Tutoriel MISTFR pour simplifier vos éditions de mission

Cas pratique particulièrement dur. Il va falloir suivre.

Je veux qu’un convoi de blindé choisisse une destination au hasard entre 3 choix possibles. Je veux qu’en cours de route il modifie au hasard à nouveau son choix. Je veux que s’il rencontre un hélicoptère hostile, un groupe de défense anti-aérienne présent sur sa base de départ le rejoigne. Je veux également qu’un avion de chasse le rejoigne. Je veux enfin que si le groupe blindé perde plus de la moitié de ses unités, il se replie sur la base. 

Accrochez vous, cet exemple sera très complet et très dur.

Configurons notre carte ensemble.

– J’ai un convoi nommé Viking. Il part du camp « D1 ».
– J’ai un second convoi anti-aérien qui reste par défaut sur D1, il se nomme AAA.
– J’ai un avion qui est posé sur la base aérienne proche, en démarrage à froid, case non contrôlée cochée.
– J’ai 3 destinations possibles pour Viking. Les zones Z1, Z2, et Z3.
– Lorsque Viking part pour un de ses choix, il doit passer dans une zone Val1, Val2, ou Val3 permettant d’activer un marker spécifique et de garder ainsi une trace de son choix.
– Au milieu de chaque itinéraire, j’ai les zones C1, C2, et C3. Lorsque Viking passera dedans, il devra à nouveau changer d’itinéraire.
– Suite à ces zones C1, C2, et C3, j’ai de nouvelles zones pour valider le second choix : Val11 et Val12 pour C1, Val21 et Val22 pour C2, Val31 et Val32 pour C3.
– J’ai une zone nommée Viking que je placerai dans un trigger en tant que zone mobile, afin qu’elle soit en permanence centrée sur Viking.
– Dans les actions avancées, Viking et AAA ont en « temps de dispersion » la valeur 5.

Essayez de trouver.

Vous y arrivez pas ? C’est normal. On va procéder par étape.

– Etape 1 : Configurer le repli de Viking. (Simple)
– Etape 2 : Configurer le premier choix d’itinéraire. (Simple)
– Etape 3 : Configurer la validation du premier choix d’itinéraire. (Simple)
– Etape 4 : Configurer le second choix d’itinéraire. (Moyen)
– Etape 5 : Configurer la validation du second choix d’itinéraire. (Moyen)
– Etape 6 : Configurer le fait que Viking alerte en voyant un hélico. (Simple)
– Etape 7 : Configurer AAA pour qu’il rejoigne Viking s’il est avant son second choix d’itinéraire. (Moyen)
– Etape 8 : Configurer AAA pour qu’il rejoigne Viking s’il est après son second choix d’itinéraire. (Dur)
– Etape 9 : Configurer AAA pour qu’il s’arrête une fois avoir rejoint Viking. (Simple)
– Etape 10 : Configurer l’avion pour qu’il rejoigne Viking. (Dur)

10 étapes. Accrochez vous les gars ça va être pénible et vous allez être perdus plus d’une fois.

Etape 1 : Le repli de Viking. 

Je veux que Viking se replie s’il perd 50% ou plus de ses forces sur le camp de base D1. Simple.

Je crée un trigger :

UNE FOIS / GROUPE VIVANT INF A : 50 / ACTIVER MARKER 666

Je crée un second trigger :

UNE FOIS / MARKER 666 VRAI / EXECUTER SCRIPT

Je vais chercher la fonction mist.groupToRandomZone page 43. 

J’écris :

mist.groupToRandomZone(‘Viking’, ‘D1’, nil, nil, 80, true)

La fonction veut dire que le groupe Viking se rend dans la zone D1 sans tenir une formation particulière (nil signifie rien), ni n’aura un cap final particulier, mais se tire par contre à 80 km/h en passant par la route (Prend il la route ? Oui ou non. True ou false.)

Voilà la question est règlée.

Etape 2 : Le premier choix de l’itinéraire de Viking.

Il doit choisir entre Z1, Z2, et Z3.

On crée un trigger :
UNE FOIS / TEMPS SUR À 5 / EXECUTER SCRIPT.

On réutilise la même fonction, avec une différence cette fois :
mist.groupToRandomZone(‘Viking’, {‘Z1’, ‘Z2’, ‘Z3’}, nil, nil, 40, true)

J’ai crée une liste de choix possibles, d’où l’accolade, et oui accessoirement je lui ai dit d’aller à 40 à l’heure, mais vous mettez ce que vous voulez, vous pouvez mettre nil même on s’en branle.

Voilà qui est fait, au bout de 5 secondes il fait son choix.

Etape 3 : Valider l’itinéraire. 

Il est vital pour plus tard que je puisse dire quel itinéraire il a choisi, sinon je ne pourrai jamais dire à AAA quel chemin prendre pour le rejoindre. J’ai donc mes zones Val1, Val2, Val3 qui sont placées au début de chaque itinéraire.

Je peux donc rajouter sur mon script précédent le code suivant :

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val1’},
flag = 1
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val2’},
flag = 2
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val3’},
flag = 3
}

Voilà, à ce stade, vous devez comprendre ce que ça fait. Bon juste le [g]<Viking> alors. Cette fonction demande à désigner de base une unité. Mais Viking n’est pas une unité, c’est un groupe. Donc j’utilise la désignation spéciale [g] qui signifie groupe suivie du nom du groupe entre les <>.

Etape 4 : Configurer le second choix d’itinéraire. 

Ok, donc il va changer d’itinéraire arrivé dans les zones C1, C2, ou C3.

On reprend encore notre trigger de départ, on rajoute :

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘C1’},
flag = 11
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘C2’},
flag = 12
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘C3’},
flag = 13
}

Voilà.

Maintenant on crée les triggers :
( a ) UNE FOIS / MARKER 11 VRAI / EXECUTER SCRIPT
( b ) UNE FOIS / MARKER 12 VRAI / EXECUTER SCRIPT
( c ) UNE FOIS / MARKER 13 VRAI / EXECUTER SCRIPT

Avec en ( a ) :

mist.groupToRandomZone(‘Viking’, {‘Z2’, ‘Z3’}, nil, nil, 40, true)

En ( b ) :

mist.groupToRandomZone(‘Viking’, {‘Z1’, ‘Z3’}, nil, nil, 40, true)

En ( c ) :

mist.groupToRandomZone(‘Viking’, {‘Z1’, ‘Z2’}, nil, nil, 40, true)

En bref, à chaque fois il refait un choix entre les deux destinations restantes.

Etape 5 : Valider le second choix. 

Il est également vital de garder une trace du second choix. Je place donc mes zones de trigger Val11 et Val12 derrière C1 sur la route que Viking prendra selon s’il va en Z2 ou en Z3. Idem pour Val21 et Val22 pour C2, Val31 et Val32 pour C3.

On reprend maintenant notre trigger du début qui est géant maintenant.

On marque :

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val11’},
flag = 1000
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val12’},
flag = 1001
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val21’},
flag = 2000
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val22’},
flag = 2001
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val31’},
flag = 3000
},

mist.flagFunc.units_in_zones{
units = {‘[g]Viking’},
zones = {‘Val32’},
flag = 3001
}

Et voilà le choix sera gardé en mémoire.

Etape 6 : Faire en sortes que Viking donne l’alerte s’il voit un hélico.

Tu dois connaître la réponse.
Allez je te la file quand même, on reprend la fonction page 22 mist.flagFunc.units_LOS.

On rajoute toujours sur notre trigger de départ :

mist.flagFunc.units_LOS{
unitset1 = {‘[red][helicopter]’}
altoffset1 = 0,
unitset2 = {‘[g]Viking’},
altoffset2 = 20,
flag = 100,
radius = 4000,
interval = 5
}

Voilà, là il détectera tout hélico ennemi volant plus de 20 m au dessus de sa tête dans un rayon de 4000 m. J’ai mis ça au pif. Ça activera un marker 100. C’est tout ce dont on a besoin.

Etape 7 : Configurer AAA pour qu’il rejoigne Viking lorsque celui-ci n’a pas encore fait son second choix d’itinéraire.

C’est maintenant que tous les markers qu’on a créé vont être utiles.

Viking vient de donner l’alerte, le marker 100 est donc actif.

On crée les 3 triggers suivants :

( a ) UNE FOIS / MARKER 100 VRAI ET MARKER 1 VRAI / EXECUTER SCRIPT
( b ) UNE FOIS / MARKER 100 VRAI ET MARKER 2 VRAI / EXECUTER SCRIPT
( c ) UNE FOIS / MARKER 100 VRAI ET MARKER 3 VRAI / EXECUTER SCRIPT

En ( a ) on marque :

mist.groupToRandomZone(‘AAA’, ‘Z1’, nil, nil, 80, true)

En ( b ) on marque :

mist.groupToRandomZone(‘AAA’, ‘Z2’, nil, nil, 80, true)

En ( c ) on marque :

mist.groupToRandomZone(‘AAA’, ‘Z3’, nil, nil, 80, true)

On met 80 km/h pour qu’ils se bougent le cul.

Dans le même temps, on prend Viking, on va dans les actions avancées déclenchées par trigger, on fait « Effectuer la tache – Maintenir position ». On met comme condition d’arrêt le marker 666 afin qu’il puisse quand même se replier en cas de pertes.

On crée un trigger :

UNE FOIS / MARKER 100 VRAI / TACHE IA EXECUTER : Maintenir position.

Comme ça Viking s’est arrêté.

Voilà AAA part pour le rejoindre.

Etape 8 : Configurer AAA pour rejoindre Viking lorsque celui-ci a fait son second choix. 

Allez on est partis, pour l’instant AAA se rend sur le premier choix d’itinéraire de Viking, une fois qu’il arrivera dans la zone C1, C2, ou C3, il faudra qu’il fasse le même choix que lui.

On crée les triggers suivants :

Pour C1 :

( a ) UNE FOIS / GROUPE AAA DANS ZONE C1 ET MARKER 1000 VRAI / EXECUTER SCRIPT
( b ) UNE FOIS / GROUPE AAA DANS ZONE C1 ET MARKER 1001 VRAI / EXECUTER SCRIPT :

Avec pour ( a ) :

mist.groupToRandomZone(‘AAA’, ‘Z2’, nil, nil, 80, true)

Pour ( b ) :

mist.groupToRandomZone(‘AAA’, ‘Z3’, nil, nil, 80, true)

Pour C2 :

( a ) UNE FOIS / GROUPE AAA DANS ZONE C2 ET MARKER 2000 VRAI / EXECUTER SCRIPT
( b ) UNE FOIS / GROUPE AAA DANS ZONE C2 ET MARKER 2001 VRAI / EXECUTER SCRIPT :

Avec pour ( a ) :

mist.groupToRandomZone(‘AAA’, ‘Z1’, nil, nil, 80, true)

Pour ( b ) :

mist.groupToRandomZone(‘AAA’, ‘Z3’, nil, nil, 80, true)

Pour C3 :

( a ) UNE FOIS / GROUPE AAA DANS ZONE C3 ET MARKER 3000 VRAI / EXECUTER SCRIPT
( b ) UNE FOIS / GROUPE AAA DANS ZONE C3 ET MARKER 3001 VRAI / EXECUTER SCRIPT :

Avec pour ( a ) :

mist.groupToRandomZone(‘AAA’, ‘Z1’, nil, nil, 80, true)

Pour ( b ) :

mist.groupToRandomZone(‘AAA’, ‘Z2’, nil, nil, 80, true)

Voilà. Allez on a presque fini.

Etape 9 : Configurer AAA pour qu’il s’arrête lorsqu’il aura rejoint Viking. 

C’est de la pisse de chat ça.

Allez hop, on met comme action déclenchée sur trigger pour AAA :

Effectuer tâche – Maintenir position.

On crée un trigger :

UNE FOIS / GROUPE AAA EN PARTIE DANS ZONE MOBILE VIKING DU GROUPE VIKING / TACHE IA EXECUTER : Maintenir position.

Et voilà !

Etape 10 : Faire en sortes que l’avion rejoigne Viking. 

Pfff que du trigger, pas de script ici.

Bon déjà on crée un WP sur chaque zone D1, C1, C2, C3 et Z1, Z2, Z3.

On règle dans les actions avancées l’appareil sur : radar on en permanence, tirer partout bref faut qu’il asmathe.

On va dans les actions avancées déclenchées sur trigger :
En premier : Exécuter tâche : démarrage.
Ensuite : Exécuter tâche (je crois de mémoire) – basculer sur WP.

Et on crée autant d’actions avancées qu’il n’y a de WP.

Ensuite ben c’est très simple. On va lui faire remonter la piste !

Vlà les triggers en vrac.

UNE FOIS / MARKER 100 VRAI / TACHE IA EXECUTER : démarrage.
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 15 / TACHE IA EXECUTER : basculer sur WP « D1 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 25 ET MARKER 1 VRAI / TACHE IA EXECUTER : basculer sur WP « C1 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 25 ET MARKER 2 VRAI / TACHE IA EXECUTER : basculer sur WP « C2 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 25 ET MARKER 3 VRAI / TACHE IA EXECUTER : basculer sur WP « C3 ».

Ensuite,

UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 300 ET MARKER 1000 VRAI / TACHE IA EXECUTER : basculer sur WP « Z2 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 300 ET MARKER 1001 VRAI / TACHE IA EXECUTER : basculer sur WP « Z3 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 300 ET MARKER 2000 VRAI / TACHE IA EXECUTER : basculer sur WP « Z1 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 300 ET MARKER 2001 VRAI / TACHE IA EXECUTER : basculer sur WP « Z3 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 300 ET MARKER 300 VRAI / TACHE IA EXECUTER : basculer sur WP « Z1 ».
UNE FOIS / TEMPS DEPUIS MARQUEUR 100 : 300 ET MARKER 3001 VRAI / TACHE IA EXECUTER : basculer sur WP « Z2 ».

À noter que les délais sont susceptibles d’être modifiés pour améliorer le comportement et le timing des changements de cap.

Voilà, notre exercice est terminé.

A vous de jouer

Article rédigé par : white-sky

 

4 of 4