Tutoriel MISTFR pour simplifier vos éditions de mission

Tutoriel MISTFR pour simplifier vos éditions de mission

II) Application pratique.

Je vais donner plusieurs exemples d’une fonction :

Exemple 1:

Je crée une mission multi avec mettons 20 hélicos joueurs. Je veux un trigger qui fasse que si un hélico joueur rentre  dans une zone, ça déclenche un marker. La coalition est la coalition rouge.

La solution par trigger est la suivante : créer une zone, créer les appareils, et ensuite créer le trigger où je vais lister les 20 appareils. Et si y’a d’autres zones pour d’autres triggers plus tard, rebelotte. C’est chiant et ça prend 3 plombes à faire.

Avec MIST, ça prend 3 lignes, en un trigger.

Je crée ma zone de déclenchement que j’appelle « Z1 », et un trigger :

UNE FOIS/TEMPS SUP À 5/EXÉCUTER SCRIPT.

Je vais utiliser la fonction « mist.flagFunc.units_in_zones » page 15.

Dans la case je marque :

mist.flagFunc.units_in_zones{
units = {‘[red][helicopter]’},
zones = {‘Z1’},
flag = 1
             }

Et voilà. Tout hélicoptère rouge entrant dans la zone Z1 activera le marker 1.
Je n’ai plus qu’à faire des copier-coller si j’envisage une zone Z2 avec un marker 2, une zone Z3 avec un marker 3 etc.
Ça m’a pris 30 secondes à copier-coller et à remplir. Si je veux qu’il y’ait tous les hélicos et tous les avions, ma seconde ligne sera la suivante :

units = {‘[red][helicopter]’,'[red][plane]’}

 

Exemple 2:

Plus compliqué : je veux créer dans une mission le cas suivant :
Un Huey transporte des troupes. Il doit déposer ses troupes dans un village. Si le Huey est endommagé et qu’il parvient malgré tout à se poser, je veux que l’on considère que les passagers ont été tués, et qu’il ne peut plus dans ces conditions déposer les troupes.

 

Décomposons en chaine logique :

On a 1 Huey. Ce Huey doit aller dans une zone et déclencher un marker 1. Si ce Huey est endommagé je déclenche un marker 2, et le marker 1 ne doit pas se déclencher.

Là, si tu es un missionmaker expérimenté, tu saisis l’embrouille : Tu ne peux pas dire à DCS de ne pas déclencher un marker 1 si un marker 2 est activé, tu ne peux que lui dire de déclencher un marker 1 si un marker 2 est activé. DCS ne connaît pas la négation.

Donc tu ne peux pas le faire. Et si, avec MIST, tu pouvais ?

Intéressons nous de nouveau à la fonction « mist.flagFunc.units_in_zones »
On crée la zone de posé Z1. On appelle notre Huey bob (nom de l’unité).
On crée un trigger qui dit que le marker 2 est activé si le Huey est endommagé.

On crée notre trigger :
UNE FOIS/TEMPS SUP À 5/EXÉCUTER SCRIPT.

Dans la case on marque :

mist.flagFunc.units_in_zones{
units = {‘[g]bob’},
zones = {‘Z1’},
flag = 1,
stopflag = 2
               }

La ligne « stopflag = 2 » signifie tout simplement que si le marker 2 est actif, le marker 1 ne pourra pas s’activer.

On a résolu notre problème.

Bon, tu vois, c’est pas très compliqué.

La fonction de la page d’après : « mist.flagFunc.units_in_moving_zones » permet de faire exactement ce qu’on vient de faire sur une zone mobile cette fois-ci. Tu as juste à remplir les lignes qui sont données dans la description et à t’inspirer des exemples. Egalement, autre point intéressant de cette fonction, et de bien d’autres, il est possible d’ajouter la ligne :

zone_type = sphere

Qui, comme son nom l’indique, permet de transformer notre zone de trigger qui est par défaut un cylindre qui monte à une altitude infinie en une sphère ayant pour diamètre celui de la zone, plutôt cool non pour les notions de plancher et les trainings face aux SAM !

 

Exemple 3:

Je veux faire une mission d’infiltration. J’ai placé des chars bleus dans la zone. Je suis coalition rouge. Je ne veux qu’ils soient autorisés à tirer que si je rentre dans leur ligne supposée de visée. En l’occurence, je vais passer par derrière une forêt, je prévois que pour que l’IA puisse me voir, il faudrait que je grimpe au dessus des arbres, à une altitude mettons de 30 m/Sol. Si tel est le cas, alors l’ennemi engagera. 

Décomposons cela en termes logiques:

Un Kamov-50 nom d’unité « ka », doit traverser une zone sans être vu. Il ne doit pas dépasser une altitude de 30 mètres par rapport à chaque unité présente sur zone (et non par rapport au niveau de la mer) à distance mettons de 1000 m de chaque véhicule. Sinon, on active un marker 1 qui a pour effet de mettre l’IA en tir autorisé.

Inutile de décrire le calvaire que ce serait à faire, au cas par cas pour chaque char, sur une zone vaste et accidentée, via les triggers classiques, j’estime sans exagérer qu’il faudrait 2 à 3 triggers par char, et les renommer chacun individuellement, à raison d’au moins 5 minutes par char. Un calvaire.

On va à la page 22 chercher la fonction « mist.flagFunc.units_LOS « 

On crée comme d’hab notre trigger pour exécuter MIST, et le trigger pour exécuter un script. On peut mettre comme condition pour exécuter le script que le ka soit dans la zone d’infiltration. On met également un second trigger activant un marker 2 si le kamov parvient à traverser la zone.

On marque :

mist.flagFunc.units_LOS{
unitset1 = {‘[g]ka’}
altoffset1 = 0,
unitset2 = {‘[blue][vehicle]’},
altoffset2 = 30,
flag = 1,
stopflag = 2,
radius = 1000,
interval = 5
}

Allez je traduis en un petit paragraphe en suivant le code : Si le centre de l’unité ka (d’où l’altitude = 0) passe dans la ligne de visée des chars bleus qui commence 30 mètres au dessus de leur tête et s’étend sur 1000 mètres, en se rafraichissant toutes les 5 secondes, alors on active le marker 1. Si le marker 2 est activé, alors le marker 1 ne pourra jamais s’activer.

En mission, ce que ça donnera :

Si je vole sous les 30 m/sol ou à plus de 1000 mètres de chaque char, alors je passerai inaperçu. Si je vole au dessus de 30m/sol à moins de 1000 mètres d’un char, alors il me verra et donnera l’alerte. Le marker 1 sera activé, et ce marker 1 que j’ai configuré a pour effet de régler tout le monde en tir libre. Si je parviens à traverser la zone et à rentrer dans une seconde zone de triggers, alors le marker 2 sera activé et j’ai réussi le pari.

L’intérêt sur nos missions : ben déjà je trouve cet exemple assez stylé. En prime ça nous permettrait de moduler la capacité de détection des SAM radar par exemple, les mettre selon les modèles de 5 à 50 mètres là où DCS les colle tous à 10 mètres.

Bref, c’est assez con non ?

 

Exemple 4:

Je veux créer une mission où je dois détruire un bâtiment dans une ville. Ce bâtiment n’a pas été posé par mes soins, il s’agit d’un bâtiment présent de base sur la carte. 

Décomposons cela en termes logiques.

Je veux que lorsqu’un bâtiment présent dans une zone de trigger Z1 soit détruit, un marker 1 s’active.
Je mets comme toujours en place tous mes triggers pour éxécuter MIST etc.
Je crée une zone Z1 qui englobe un bâtiment, ou un village, bref tout dépend de ce que je veux : rendre compte de la destruction d’un bâtiment en particulier ? Ou de dommages collatéraux sur tout un village suite à une frappe ratée ?

J’utilise la fonction page 13 « mist.flagFunc.mapobjs_dead_zones  »

J’écris :

mist.flagFunc.mapobjs_dead_zones {
zones = {‘Z1’},
flag = 1
}

Mettons maintenant que je veuille que le marker ne se déclenche que si 3 bâtiments sont détruits dans la zone Z1, peu m’importe lesquels.
Je rajoute la ligne :

req_num = 3

2 of 4