Tutoriel MISTFR pour simplifier vos éditions de mission

Tutoriel MISTFR pour simplifier vos éditions de mission

III) Explication de la manière d’écrire un code script.

Prenons pour ce faire l’exemple du script suivant :

mist.flagFunc.units_in_zones{
units = {‘[g]bob’, ‘[red][helicopter]’, ‘[-c][helicopter]france’},
zones = {‘Z1’, ‘Z2’, ‘Z3’},
flag = 1,
stopflag = 2
}

Bon, déjà, première étape, expliquer le but de ce script : 

On utilise la fonction Mist.flagFunc.units_in_zones. C’est la fonction du premier post qui permet de d’activer un marker lorsque des unités rentrent dans une zone.

Un script commence toujours par l’appel de la fonction mère, donc en première ligne Mist.flagFunc.units_in_zones.

Ensuite on ouvre une accolade { . Cette accolade se referme à la toute dernière ligne. Cela signifie que l’ensemble des paramètres de fonctionnement de la fonction sont compris au sein de cette accolade. L’accolade sert de manière générale à créer une liste, que ce soit une liste de paramètres, d’unités, de zones de triggers, de WP etc.

Chaque ligne qui suit correspond à un paramètre. Il ne vous faudra jamais oublier entre 2 lignes la virgule  » , « . Cette virgule permet de séparer les paramètres entre eux, il est vital de la mettre sinon le script lira tous les paramètres comme un seul et même terme et il ne comprendra pas. La dernière ligne n’a pas de virgule car elle est immédiatement suivie de la dernière accolade.

Au sein de la ligne 2, on a un listing d’unités. units = {‘[g]bob’, ‘[red][helicopter]’, ‘[-c][helicopter]france’},

D’abord le nom du paramètre : Units. Suivi d’un =. Ensuite on ouvre une accolade pour faire comprendre que l’on va établir une liste, une « table » des unités présentes dans ce paramètre. On oublie surtout pas les ‘ autour de chaque unité, et la virgule les séparant, et on laisse toujours un espace après chaque virgule.

Dans ce paramètre, on trouve : un groupe ([g]) nommée bob, Les hélicoptères rouges (mettons que la coalition rouge comprenne Russie et France), et enfin ce truc : [-c][helicopter]france

Décomposons le. 

Par défaut [c] signifie ajouter. [-c] signifie donc retirer. On retire donc quelque chose. [helicopter] signifie le type d’unité que l’on retire. On retire donc des hélicoptères. NE JAMAIS MARQUER [-helicopter], ça ne veut rien dire. Enfin on trouve <france>, ce qui correspond au pays France.

Donc pour retraduire totalement la ligne : Dans le paramètre unités, je liste : bob, les hélicoptères rouges, auxquels je retire les hélicoptères français.

La ligne zones = {‘Z1’, ‘Z2’, ‘Z3’}, voit la création d’une nouvelle liste pour le paramètre zones. On a 3 zones de trigger nommées Z1, Z2, et Z3. J’insiste encore une fois sur la nécessité des apostrophes autour de chaque zone, de la virgule, et de l’espace après chaque virgule.

Pour les deux lignes suivantes, on ne crée pas de liste. En effet, on ne peut pas marquer (du moins je ne pense pas) :
flag = {‘1’, ‘2’, ‘3’},

Pour la simple et bonne raison que ce paramètre ne peut qu’actionner un seul marker. Idem pour le suivant. Il faudra créer une autre fonction avec un autre marker pour pouvoir faire un « effet combiné ».

Enfin, dans mon script, plutôt que de copier coller 40 triggers d’exécution de script avec à chaque fois une fonction, je peux tout à fait marquer sur un seul et même trigger :

mist.flagFunc.units_in_zones{
units = {‘[g]bob’, ‘[red][helicopter]’, ‘[-c][helicopter]france’},
zones = {‘Z1’, ‘Z2’, ‘Z3’},
flag = 1,
stopflag = 2
},

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

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

Le jeu se contentera du coup d’enchainer les fonctions d’un coup en un seul et même trigger. Notez encore une fois la présence d’une virgule cette fois-ci à la fin de chaque fonction, et son absence pour la dernière car ben… Y’a rien qui suit. ;)

3 of 4