Lien de téléchargement : https://github.com/m...nScriptingTools
Bon, on va s’intéresser à un tabou au sein de l’escadron : l’écriture d’un script. PAPAPAPA Te tire pas de suite tu vas voir que d’une c’est ultra simple, de deux ça va te faire passer ton temps moyen d’édition de 4h à 20 minutes. Enfin je compte pas dans les 20 minutes le temps qu’il va te falloir à lire tout ça, mais le comprendre si t’es pas aussi con que t’en as l’air, ça devrait être assez (assez) rapide.
Bon déjà MIST c’est quoi ?
MIST c’est une bibliothèque de fonctions. Ces fonctions ne sont ni plus ni moins que des triggers déguisés. Les mêmes que ceux que tu utilises sur DCS. Sauf que là où pour une opération, quelconque, il te faudra faire 50 triggers. MIST lui, se contentera de le faire en 3 lignes de code… Que tu copie-colleras dans DCS. Alors, heureux ? Moi aussi je t’aime.
I) Introduction.
Bon, déjà, commençons par le commencement. L’utilisation de MIST dans une mission est la suivante. On charge la K-7 MIST dans DCS (oui je sais que t’es un peu gâteux du coup j’utilise ton vocabulaire), et ensuite on peut aller puiser dans son contenu via des triggers.
Du coup, prérequis : On crée un trigger :
UNE FOIS/TEMPS SUP À 3/EXECUTER FICHIER SCRIPT : MIST.lua
Voilà la K-7 est chargée. Maintenant, on va ouvrir ensemble le superbe pdf qui t’est livré avec ton nouvel achat. (Mais nan c’est gratuit). Et on va s’intéresser, de prime abord, aux premières pages, qui définissent les différentes manières que l’on pourra utiliser pour inclure des unités dans nos triggers scriptés.
L’idée est simple, on va utiliser une fonction de MIST qui va exécuter un trigger, par exemple, activer un marker quand une unité est dans la zone. Mais il faut pour ce faire lui dire quelles unités prendre. Et c’est là la différence fondamentale avec l’éditeur de DCS. Tu peux par exemple lui dire de ne compter que les véhicules rouges. Ou les hélicoptères bleus, ou les navires rouges, etc etc. Tu peux lui dire de compter les navires bleus ainsi que les hélicoptères rouges… Bref tu peux tout lui dire. Tout est affaire de sémantique.
On va trouver une manière assez simple de décomposer le « nom » de pareille catégorie. Pour les navires rouges par exemple, on l’appelera dans notre script comme ceci :
[red][ship]
Voilà. Si j’ai envie de retirer de la table les navires rouges, je me contente de mettre un – devant le red : [-red][ship] Voilà. Tu trouveras dans la première page tous les moyens de nommer une unité dans ton trigger, par pays, par type d’unité, tu peux tous les sélectionner via [all] aussi. Bref, tu peux tout faire, c’est ça qu’est beau.
En bref : [Sac dans lequel je veux puiser mon unité][Type d'unité]
Donc jusqu’ici, rien de compliqué. Alors on va mettre ça en pratique.
II) Application pratique.
Je vais donner deux exemples d’une fonction, j’en développerai d’autres sur les prochaines pages.
Exemple type : 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]'}
Allez, second exemple, 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 !
Voilà, c’est tout pour ce premier post de tutoriel sur MIST. On se revoit prochainement pour une utilisation plus complexe de l’ensemble. Disons que ça t’aura donné une idée du potentiel de simplification de ce système.