|
|
(8 révisions intermédiaires par un utilisateur sont masquées) |
Ligne 2 : |
Ligne 2 : |
| | | |
| == Contexte == | | == Contexte == |
− | Soit une station radar EWR, qui pourrait être un AWACS, ou tout autre unité, voire groupe d'unité. | + | Soit une station radar EWR, qui pourrait être un AWACS, ou tout autre unité, voire groupe d'unités. |
| | | |
| Dès que l'EWR détecte un avion ennemi, cela doit déclencher une action ou des actions, comme l'activation de chasseurs. | | Dès que l'EWR détecte un avion ennemi, cela doit déclencher une action ou des actions, comme l'activation de chasseurs. |
Ligne 16 : |
Ligne 16 : |
| ''mist.flagFunc.units_LOS'' | | ''mist.flagFunc.units_LOS'' |
| | | |
− | Cette fonction sert à mettre un flag à TRUE lorsqu'une unité est détecté par une autre. LOS = Line Of Sight = ligne de mire en anglais. La détection dépend de plusieurs facteurs: à 3m dans les 6 d'un tank, celui-ci ne nous détecte pas....tant qu'on ne rentre pas dans son champs de vision. A 200km dans un ciel sans relief, on est détecté par une unité AWACS. Donc la notion de détection est très liée au type d'unités, et on peut très bien utiliser cette fonction pour qu'une infanterie "détecte" les hélicoptères CSAR venant la secourir, qu'un AWACS dans le ciel. | + | Cette fonction sert à mettre un flag à TRUE lorsqu'une unité est détecté par une autre. LOS = Line Of Sight = ligne de mire en anglais. La détection dépend de plusieurs facteurs: à 3 km dans les 6 d'un tank, celui-ci ne nous détecte pas....tant qu'on ne rentre pas dans son champs de vision ou qu'il nous entende. A 200km dans un ciel sans relief, on est détecté par une unité AWACS. Donc la notion de détection est très liée au type d'unités, et on peut aussi bien utiliser cette fonction pour qu'une infanterie "détecte" les hélicoptères CSAR venant la secourir, que pour un AWACS dans le ciel. |
| | | |
| Notre script contiendra le texte suivant: | | Notre script contiendra le texte suivant: |
Ligne 33 : |
Ligne 33 : |
| Sauvez ce script dans un fichier texte que vous nommerez "ce_que_vous_voulez.lua". Moi je l'appelle ici ''baksan.lua''. | | Sauvez ce script dans un fichier texte que vous nommerez "ce_que_vous_voulez.lua". Moi je l'appelle ici ''baksan.lua''. |
| | | |
− | Lorsque ce script sera exécuté, il affichera "script chargé" en haut à droite de l'écran (normalement 2s après le lâcher de pause, et pendant 1s), puis la fonction vérifiera toutes les 8s si l'unité qui s'appelle 'Mig-29' est détectée par l'unité qui s'appelle '[URMN]EWR', et à chaque fois que ce sera le cas, elle mettra le flag numéro 10 à TRUE. J'ai rajouté un stop-flag optionnel, le numéro 11, qui permet de désactiver la vérification. Sans cela, la vérification aura lieu toutes les 8s et jusqu'à la fin de la partie. Afin d'alléger l'exécution de la mission, et une fois la première détection réalisée, je souhaite désactiver cette fonction pour des raisons de performances. C'est facultatif est inutile pour les missions non-chargées en script. | + | Lorsque ce script sera exécuté, il affichera "script chargé" en haut à droite de l'écran grâce à la fonction ''trigger.action.outText'' (2s après le lâcher de pause, et pendant 1s), puis la fonction ''mist.flagFunc.units_LOS'' vérifiera toutes les 8s si l'unité qui s'appelle 'Mig-29' est détectée par l'unité qui s'appelle '[URMN]EWR', et à chaque fois que ce sera le cas, elle mettra le flag numéro 10 à TRUE. J'ai rajouté un stop-flag optionnel, le numéro 11, qui permet de désactiver la vérification. Sans cela, la vérification aura lieu toutes les 8s et jusqu'à la fin de la partie. Afin d'alléger l'exécution de la mission, et une fois la première détection réalisée, je souhaite désactiver cette fonction pour des raisons de performances. C'est facultatif est inutile pour les missions non-chargées en script. |
| | | |
− | Les variables ''altoffset1'' et ''altoffset2'' servent à déplacer vers le haut le 'point de vue' de l'unité. Par exemple, une station EWR avec une antenne à 5m de haut par rapport au sol, si on met ''altoffset2 = 0'', la ligne-de-mire partira du sol, en mettant 5m, la ligne-de-mire part réellement du centre de l'antenne. La valeur est à adapter en fonction des unités choisies. | + | Les variables ''altoffset1'' et ''altoffset2'' servent à déplacer vers le haut le 'point de vue' de l'unité. Par exemple, une station EWR avec une antenne à 5m de haut par rapport au sol, si on met ''altoffset2 = 0'', la ligne-de-mire partira du sol, en mettant 5m, la ligne-de-mire partira réellement du centre de l'antenne. La valeur est à adapter en fonction des unités choisies. |
| | | |
| == Dans l'éditeur == | | == Dans l'éditeur == |
| Voyons maintenant comment relier notre script et le script Mistv2_0 avec la mission. Tout se fait avec les triggers: | | Voyons maintenant comment relier notre script et le script Mistv2_0 avec la mission. Tout se fait avec les triggers: |
| | | |
− | # Je rattache mes scripts à la mission
| + | 1. Je rattache mes scripts à la mission |
| [[Image:Script_load.jpg]] | | [[Image:Script_load.jpg]] |
| | | |
| | | |
− | # Et maintenant, je crée les actions qui se déroulent lorsque le fameux flag N°10 est mis à TRUE (=la détection a lieu):
| + | 2. Et maintenant, je crée les actions qui se déroulent lorsque le fameux flag N°10 est mis à TRUE (=la détection a lieu): |
| [[Image:Script_actions.jpg]] | | [[Image:Script_actions.jpg]] |
| | | |
Ligne 68 : |
Ligne 68 : |
| unitset1 = {'[plane]'} signifie n'importe quelle avion<br /> | | unitset1 = {'[plane]'} signifie n'importe quelle avion<br /> |
| unitset1 = {'[c]Georgia'} signifie n'importe quelle unité Géorgienne<br /> | | unitset1 = {'[c]Georgia'} signifie n'importe quelle unité Géorgienne<br /> |
| + | unitset1 = {'[g]4xMig-25'} signifie n'importe quelle unité du groupe qui s'appelle '4xMig-25'<br /> |
| | | |
| Et on peut les combiner:<br /> | | Et on peut les combiner:<br /> |
Ligne 81 : |
Ligne 82 : |
| | | |
| {'[blue][plane]', '[-c]Georgia', '[-g]Hawg 1'} signifiera toutes les unités qui sont des avions de la coalition BLUE, mais pas géorgiens, et qui ne soient pas le groupe qui s'appelle 'Hawg 1'.<br /> | | {'[blue][plane]', '[-c]Georgia', '[-g]Hawg 1'} signifiera toutes les unités qui sont des avions de la coalition BLUE, mais pas géorgiens, et qui ne soient pas le groupe qui s'appelle 'Hawg 1'.<br /> |
| + | |
| + | <center>''Plus d'info: page 7 du doc .pdf de Mist v2_0.''</center> |
| | | |
| En modifiant notre script du haut de la façon suivante: | | En modifiant notre script du haut de la façon suivante: |
− |
| |
− |
| |
| | | |
| <span style="color: #ffae00;">trigger.action.outText("script chargé", 1)</span><br /><br /> | | <span style="color: #ffae00;">trigger.action.outText("script chargé", 1)</span><br /><br /> |
| <span style="color: #ffae00;">mist.flagFunc.units_LOS{</span><br /> | | <span style="color: #ffae00;">mist.flagFunc.units_LOS{</span><br /> |
− | <span style="color: #ffae00;"> unitset1 = {'[blue]'},</span><br /> | + | <span style="color: #ffae00;"> unitset1 = {'[blue][helicopter]','[blue][plane]'},</span><br /> |
| <span style="color: #ffae00;"> altoffset1 = 0,</span><br /> | | <span style="color: #ffae00;"> altoffset1 = 0,</span><br /> |
| <span style="color: #ffae00;"> unitset2 = {'[URMN]EWR', '[red][vehicule]'},</span><br /> | | <span style="color: #ffae00;"> unitset2 = {'[URMN]EWR', '[red][vehicule]'},</span><br /> |
Ligne 97 : |
Ligne 98 : |
| <span style="color: #ffae00;">}</span> | | <span style="color: #ffae00;">}</span> |
| | | |
− | Toute unité de la coalition BLUE qui sera détectée soit par la station EWR qui s'appelle '[URMN]EWR' soit par n'importe quel véhicule de la coalition RED, déclenchera le Flag N°10. | + | Toute unité volante de la coalition BLUE qui sera détectée soit par la station EWR qui s'appelle '[URMN]EWR' soit par n'importe quel véhicule de la coalition RED, déclenchera le Flag N°10. |
| | | |
− | <center>Plus d'info: page 7 du doc .pdf de Mist v2_0.</center>
| + | A vous de jouer maintenant :-) |
Version actuelle en date du 19 septembre 2013 à 13:41
Actions déclenchées sur la détection des ennemis
Contexte
Soit une station radar EWR, qui pourrait être un AWACS, ou tout autre unité, voire groupe d'unités.
Dès que l'EWR détecte un avion ennemi, cela doit déclencher une action ou des actions, comme l'activation de chasseurs.
Prérequis
- Mist v2_0: on aura besoin de Mist v2_0, un script apportant un tas de fonctions intéressantes en plus du Scripting Engine fournit par ED. En fait, tout est faisable uniquement avec le Scripting Engine, mais Mist v2_0 nous facilite grandement la vie, en lisant le contenu de la mission au démarrage de celle-ci. Télécharger Mist v2_0
- Un script à nous: un simple fichier texte qui sera lancé 2 seondes après le démarrage de la mission. Pourquoi 2 secondes ? car il faut être certain que le script Mist ait fini d'être exécuté et donc d'avoir initialisé tout ce dont il a besoin avant d'exécuter notre script qui utilise Mist.
Notre Script
Vous trouverez dans le fichier .rar de Mist un fichier .pdf expliquant toutes les fonctions disponibles. Nous allons utiliser ici:
mist.flagFunc.units_LOS
Cette fonction sert à mettre un flag à TRUE lorsqu'une unité est détecté par une autre. LOS = Line Of Sight = ligne de mire en anglais. La détection dépend de plusieurs facteurs: à 3 km dans les 6 d'un tank, celui-ci ne nous détecte pas....tant qu'on ne rentre pas dans son champs de vision ou qu'il nous entende. A 200km dans un ciel sans relief, on est détecté par une unité AWACS. Donc la notion de détection est très liée au type d'unités, et on peut aussi bien utiliser cette fonction pour qu'une infanterie "détecte" les hélicoptères CSAR venant la secourir, que pour un AWACS dans le ciel.
Notre script contiendra le texte suivant:
trigger.action.outText("script chargé", 1)
mist.flagFunc.units_LOS{
unitset1 = {'Mig-29'},
altoffset1 = 0,
unitset2 = {'[URMN]EWR'},
altoffset2 = 5,
flag = 10,
stopflag = 11,
interval = 8,
}
Sauvez ce script dans un fichier texte que vous nommerez "ce_que_vous_voulez.lua". Moi je l'appelle ici baksan.lua.
Lorsque ce script sera exécuté, il affichera "script chargé" en haut à droite de l'écran grâce à la fonction trigger.action.outText (2s après le lâcher de pause, et pendant 1s), puis la fonction mist.flagFunc.units_LOS vérifiera toutes les 8s si l'unité qui s'appelle 'Mig-29' est détectée par l'unité qui s'appelle '[URMN]EWR', et à chaque fois que ce sera le cas, elle mettra le flag numéro 10 à TRUE. J'ai rajouté un stop-flag optionnel, le numéro 11, qui permet de désactiver la vérification. Sans cela, la vérification aura lieu toutes les 8s et jusqu'à la fin de la partie. Afin d'alléger l'exécution de la mission, et une fois la première détection réalisée, je souhaite désactiver cette fonction pour des raisons de performances. C'est facultatif est inutile pour les missions non-chargées en script.
Les variables altoffset1 et altoffset2 servent à déplacer vers le haut le 'point de vue' de l'unité. Par exemple, une station EWR avec une antenne à 5m de haut par rapport au sol, si on met altoffset2 = 0, la ligne-de-mire partira du sol, en mettant 5m, la ligne-de-mire partira réellement du centre de l'antenne. La valeur est à adapter en fonction des unités choisies.
Dans l'éditeur
Voyons maintenant comment relier notre script et le script Mistv2_0 avec la mission. Tout se fait avec les triggers:
1. Je rattache mes scripts à la mission
2. Et maintenant, je crée les actions qui se déroulent lorsque le fameux flag N°10 est mis à TRUE (=la détection a lieu):
Et voilà !!!
Astuces: la puissance de Mist
Le truc sympa de Mist, c'est qu'il fournit une fonctionnalité avancée de sélection des unités. Je m'explique. Dans le cas en haut, on à identifié les unités par leur nom.
Exemple, la station EWR qui détecte doit s'appeler '[URMN]EWR'
Mais on peut mettre autre chose que le nom d'une unité dans les paramètres unitset1 et unitset2 de la fonction mist.flagFunc.units_LOS !!
Exemples:
unitset1 = {'un certain nom'} signifie l'unité qui s'appelle 'un certain nom'
unitset1 = {'[blue]'} signifie n'importe quelle unité de la coalition BLUE
unitset1 = {'[all]'} signifie n'importe quelle unité du jeu
unitset1 = {'[plane]'} signifie n'importe quelle avion
unitset1 = {'[c]Georgia'} signifie n'importe quelle unité Géorgienne
unitset1 = {'[g]4xMig-25'} signifie n'importe quelle unité du groupe qui s'appelle '4xMig-25'
Et on peut les combiner:
unitset1 = {'[red][helicopter]'} signifie n'importe quel hélico de la coalition RED
Et on peut soustraire avec le '-':
unitset1 = {'[red][-c]Georgia'} signifie toutes les unités de la coalition RED sauf celles Géorgiennes
Et on peut en mettre plusieurs:
unitset1 = {'[red][helicopter', '[c]France'} signifie toutes les unités Françaises + les hélicoptères de la coalition RED
Pour arriver au final à faire des choses vraiment compliquées mais plus simplement que lister la totalité des noms des unités !
{'[blue][plane]', '[-c]Georgia', '[-g]Hawg 1'} signifiera toutes les unités qui sont des avions de la coalition BLUE, mais pas géorgiens, et qui ne soient pas le groupe qui s'appelle 'Hawg 1'.
Plus d'info: page 7 du doc .pdf de Mist v2_0.
En modifiant notre script du haut de la façon suivante:
trigger.action.outText("script chargé", 1)
mist.flagFunc.units_LOS{
unitset1 = {'[blue][helicopter]','[blue][plane]'},
altoffset1 = 0,
unitset2 = {'[URMN]EWR', '[red][vehicule]'},
altoffset2 = 5,
flag = 10,
stopflag = 11,
interval = 8,
}
Toute unité volante de la coalition BLUE qui sera détectée soit par la station EWR qui s'appelle '[URMN]EWR' soit par n'importe quel véhicule de la coalition RED, déclenchera le Flag N°10.
A vous de jouer maintenant :-)