Vous reprendrez bien un peu de script !
White-sky 07 nov. 2016
Pour MIST c'est très simple, il te suffit de créer un trigger "temps sup à 5" et comme action "Exécuter fichier script - > MIST".
MIST est le script mère, les autres scripts (enfin pas tous d'ailleurs, certains sont autonomes) vont aller chercher dans MIST les fonctions qu'ils utilisent pour eux.
Pour faire simple, ton script GCI utilise la fonction "blabla", dans son code, y'a marqué "exec blabla", mais il ne définit pas ce que fait "blabla", il se contente de dire "blabla est une fonction que MIST définit, moi je me contente de l'exécuter".
Tu dois donc t'assurer de lancer MIST avant de lancer d'autres scripts, donc si tu as un script GCI par exemple, tu crées un second trigger "Temps sup à 10" et exécuter fichier script -> GCI.
Ensuite pour la configuration interne du script :
Je ne connais pas ton script, mais tu dois avoir du coup des paramètres à définir, par exemple le nom de la zone, le nom de l'unité GCI etc, donc une fois les scripts initialisés, tu crées un nouveau trigger (temps sup à 15 par exemple), et tu mets comme action "exécuter script" (pas exécuter fichier script), et dans la case tu marques les lignes de code qui sont normalement explicités.
Pour résumer : 3 temps :
- Initialisation de MIST au bout de 5 secondes.
- Initialisation du script GCI au bout de 10 secondes.
- Configuration du script GCI au bout de 15 secondes.
Exemple :
Le script du manpad qui descend du char.
Préparation : Nommer le char en question "char" par exemple (nom de l'unité).
Trigger 1 : Temps sup à 5 : exécuter fichier script : MIST
Trigger 2 : Temps sup à 10 : exécuter fichier script : Manpad (je connais plus son nom)
Trigger 3 : Temps sup à 15 : exécuter script : AddDismounts("char", "MANPADS")
Dés lors, un manpad descendra de l'unité char lorsque celle-ci est à l'arrêt. Le processus est le suivant : Le script Manpad invoque la fonction AddDismounts, qui est définie par MIST.
MIST est le script mère, les autres scripts (enfin pas tous d'ailleurs, certains sont autonomes) vont aller chercher dans MIST les fonctions qu'ils utilisent pour eux.
Pour faire simple, ton script GCI utilise la fonction "blabla", dans son code, y'a marqué "exec blabla", mais il ne définit pas ce que fait "blabla", il se contente de dire "blabla est une fonction que MIST définit, moi je me contente de l'exécuter".
Tu dois donc t'assurer de lancer MIST avant de lancer d'autres scripts, donc si tu as un script GCI par exemple, tu crées un second trigger "Temps sup à 10" et exécuter fichier script -> GCI.
Ensuite pour la configuration interne du script :
Je ne connais pas ton script, mais tu dois avoir du coup des paramètres à définir, par exemple le nom de la zone, le nom de l'unité GCI etc, donc une fois les scripts initialisés, tu crées un nouveau trigger (temps sup à 15 par exemple), et tu mets comme action "exécuter script" (pas exécuter fichier script), et dans la case tu marques les lignes de code qui sont normalement explicités.
Pour résumer : 3 temps :
- Initialisation de MIST au bout de 5 secondes.
- Initialisation du script GCI au bout de 10 secondes.
- Configuration du script GCI au bout de 15 secondes.
Exemple :
Le script du manpad qui descend du char.
Préparation : Nommer le char en question "char" par exemple (nom de l'unité).
Trigger 1 : Temps sup à 5 : exécuter fichier script : MIST
Trigger 2 : Temps sup à 10 : exécuter fichier script : Manpad (je connais plus son nom)
Trigger 3 : Temps sup à 15 : exécuter script : AddDismounts("char", "MANPADS")
Dés lors, un manpad descendra de l'unité char lorsque celle-ci est à l'arrêt. Le processus est le suivant : Le script Manpad invoque la fonction AddDismounts, qui est définie par MIST.
Winglet 07 nov. 2016
Ben si c'est le script GCI+CAP aleatoire que Tintin a proposé, il faut l'editer un chouille.
Rien de méchant, on se fait un TS Angus un de ces soir si tu veux.
Rien de méchant, on se fait un TS Angus un de ces soir si tu veux.
Angus 07 nov. 2016
yep je veux bien ! ça à l'air super intéressant , mais je pige pas tout .... on le met où sur notre ordi ce Mist ????? est ce qu'il est intégré à la mission ou il faut que l'hébergeur l'ai aussi sur son ordi ???
Tu m'expliqueras tout ça winglet
Tu m'expliqueras tout ça winglet
White-sky 07 nov. 2016
Non le fichier se comporte comme nun audio. Tu le mets où tu veux sur ton pc, tu l'ouvres par l'éditeur via le trigger "exécuter fichier script", et pis toc il est intégré à la mission comme les audios.
Angus 28 juil. 2017
Quelqu'un s'aurait prendre un peu de son temps pour m'expliquer comment fonctionne le script CTLD ? j'en aurais bien besoin pour la campagne vu que ED nous a dauber les charges sous élingues et la fonction d'embarquement/débarquement de passagers ...
Angus 29 juil. 2017
Bon en fait de ce que je vois on doit quand même se prendre la tête à faire des trigger de zone , donc autant se servir de l'éditeur de mission quoi ....
Lucky-O 25 sept. 2017
Salut aux mission makers
Qu'est-ce que vous pensez de l'ATME Advanced Tools for Mission Editor ?
On peut le trouver avec une notice en français. (pdf de 348 pages, tout de même...)
Qu'est-ce que vous pensez de l'ATME Advanced Tools for Mission Editor ?
On peut le trouver avec une notice en français. (pdf de 348 pages, tout de même...)
Angus 25 sept. 2017
ben que c'est encore un truc où il faut être ingénieur informaticien pour faire une mission ... Pour le moment de tout ce que j'ai vu des trucs avec script lua , on peut les faire par trigger ...
En ce qui me concerne , comme je scénarise chaque mission en fonction de ce que je veux faire ... les scripts ne sont pas forcément d'une grande utilité .à vous de me démontrer le contraire
En ce qui me concerne , comme je scénarise chaque mission en fonction de ce que je veux faire ... les scripts ne sont pas forcément d'une grande utilité .à vous de me démontrer le contraire
Flo 20 déc. 2017
Le script missile trouvé sur le ternet que j'utilise pour le stand de de tir: faie une fois > temps supérieur à 5 sec > executer script
A la deuxième ligne, 0 va afficher une explosion à l'impact, 1 va désactiver l'explosion
Quand le missile lancé contre un joueur va arriver très proche de son avion, le missile disparait et on voit affiché le message " **** a été touché par un missile sol-air :-( "
do
local remove_missile_method = 0
-- 0 will create an explosion
-- 1 will use Object.destroy() which simply makes the missile disappear.
local aiMissiles = {}
local numActive = 0
local uid = 1
local idNum = 1
local function simpleEvent(f) -- from mist
local handler = {}
idNum = idNum + 1
handler.id = idNum
handler.f = f
handler.onEvent = function(self, event)
self.f(event)
end
world.addEventHandler(handler)
end
getMag = function(vec) -- from mist
return (vec.x^2 + vec.y^2 + vec.z^2)^0.5
end
get3DDist = function(point1, point2)
return getMag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z})
end
local function removeMis(id)
if Object.isExist(aiMissiles[id].missile) then -- if missile is still active and needs to be destroyed
if Weapon.getTarget(aiMissiles[id].missile) == aiMissiles[id].origTarg and Unit.getPlayerName(aiMissiles[id].origTarg) then
trigger.action.outText(Unit.getPlayerName(aiMissiles[id].origTarg) .. ' a été touché par un missile sol-air :-(', 20)
end
if remove_missile_method == 0 then
trigger.action.explosion(Object.getPosition(aiMissiles[id].missile).p, 5)
else
Object.destroy(aiMissiles[id].missile)
end
end
aiMissiles[id] = nil
numActive = numActive - 1
return
end
local function checkMis(mis)
local tot = 0
if Object.isExist(mis.missile) == false then
removeMis(mis.uid)
else
if Object.isExist(mis.origTarg) == true then
local misVel = getMag(Object.getVelocity(mis.missile))
local targVel = getMag(Object.getVelocity(mis.origTarg))
local dist = get3DDist(Object.getPoint(mis.missile), Object.getPoint(mis.origTarg))
if dist < 100 then -- if its close and still guiding
removeMis(mis.uid)
else
tot = dist/(misVel*2)
timer.scheduleFunction(checkMis, mis, timer.getTime() + tot)
end
end
end
end
local function aiShot(event)
if event.id == world.event.S_EVENT_SHOT and event.initiator and not Unit.getPlayerName(event.initiator) then -- if AI
if event.weapon and Weapon.getDesc(event.weapon).missileCategory and (Weapon.getDesc(event.weapon).missileCategory == 2 or Weapon.getDesc(event.weapon).missileCategory == 1) then
local newMis = {}
newMis.launchTime = timer.getTime()
newMis.uid = uid
newMis.missile = event.weapon
newMis.origTarg = Weapon.getTarget(event.weapon)
newMis.lostTrack = false
aiMissiles[uid] = newMis
uid = uid + 1
numActive = numActive + 1
timer.scheduleFunction(checkMis, newMis, timer.getTime() + 4)
end
end
end
simpleEvent(aiShot)
env.info('Training Sams by Grimes Loaded')
end
A la deuxième ligne, 0 va afficher une explosion à l'impact, 1 va désactiver l'explosion
Quand le missile lancé contre un joueur va arriver très proche de son avion, le missile disparait et on voit affiché le message " **** a été touché par un missile sol-air :-( "
do
local remove_missile_method = 0
-- 0 will create an explosion
-- 1 will use Object.destroy() which simply makes the missile disappear.
local aiMissiles = {}
local numActive = 0
local uid = 1
local idNum = 1
local function simpleEvent(f) -- from mist
local handler = {}
idNum = idNum + 1
handler.id = idNum
handler.f = f
handler.onEvent = function(self, event)
self.f(event)
end
world.addEventHandler(handler)
end
getMag = function(vec) -- from mist
return (vec.x^2 + vec.y^2 + vec.z^2)^0.5
end
get3DDist = function(point1, point2)
return getMag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z})
end
local function removeMis(id)
if Object.isExist(aiMissiles[id].missile) then -- if missile is still active and needs to be destroyed
if Weapon.getTarget(aiMissiles[id].missile) == aiMissiles[id].origTarg and Unit.getPlayerName(aiMissiles[id].origTarg) then
trigger.action.outText(Unit.getPlayerName(aiMissiles[id].origTarg) .. ' a été touché par un missile sol-air :-(', 20)
end
if remove_missile_method == 0 then
trigger.action.explosion(Object.getPosition(aiMissiles[id].missile).p, 5)
else
Object.destroy(aiMissiles[id].missile)
end
end
aiMissiles[id] = nil
numActive = numActive - 1
return
end
local function checkMis(mis)
local tot = 0
if Object.isExist(mis.missile) == false then
removeMis(mis.uid)
else
if Object.isExist(mis.origTarg) == true then
local misVel = getMag(Object.getVelocity(mis.missile))
local targVel = getMag(Object.getVelocity(mis.origTarg))
local dist = get3DDist(Object.getPoint(mis.missile), Object.getPoint(mis.origTarg))
if dist < 100 then -- if its close and still guiding
removeMis(mis.uid)
else
tot = dist/(misVel*2)
timer.scheduleFunction(checkMis, mis, timer.getTime() + tot)
end
end
end
end
local function aiShot(event)
if event.id == world.event.S_EVENT_SHOT and event.initiator and not Unit.getPlayerName(event.initiator) then -- if AI
if event.weapon and Weapon.getDesc(event.weapon).missileCategory and (Weapon.getDesc(event.weapon).missileCategory == 2 or Weapon.getDesc(event.weapon).missileCategory == 1) then
local newMis = {}
newMis.launchTime = timer.getTime()
newMis.uid = uid
newMis.missile = event.weapon
newMis.origTarg = Weapon.getTarget(event.weapon)
newMis.lostTrack = false
aiMissiles[uid] = newMis
uid = uid + 1
numActive = numActive + 1
timer.scheduleFunction(checkMis, newMis, timer.getTime() + 4)
end
end
end
simpleEvent(aiShot)
env.info('Training Sams by Grimes Loaded')
end
Flo 02 sept. 2018
A TOUS les appareils embarqués, oyez, oyez !
Un script que je cherchais tel le Saint-Grââl depuis un moment (d'ailleurs si Joseph d'Arimatie est pas trop con, le Grâäl, c'est un bocal à anchois) et que j'ai finalement pu faire fonctionner grâce à l'aide Grimes, LE Monsieur Mist sur les forums d'ED.
Voilà un script qui vous permet d'avoir des infos trèèèèèèèèèèèèèèèèès utiles, à savoir le cap et la vitesse de votre maison flottante en tenant compte de la déclinaison magnétique.
Le script est dispo ici: https://drive.google...iew?usp=sharing
Pour ce faire, question marqueur, ça se passe comme ça:
1) Une fois, temps >10 secondes, exécutez le fichier script mist et créez un menu radio pour tel ou tel groupe qui déclenche le marqueur 1 (ou 2, ou 3, ou peu importe)
2) Sur bascule de condtion, quand marqueur 1 est vrai:
- exécuter fichier script InfoNavire
- désactiver marqueur 1
- et ajoutez si vous voulez un son de radio
En mission, allez sur le menu F10, déclenchez le menu radio, et voilà:
Screen_180902_115122.png (1,7 Mo)
Nombre de téléchargements : 12
ATTENTION, TRES IMPORTANT: dans le fichier script joint, n'oubliez SURTOUT PAS de remplacer tarawa à la ligne 2 par le nom d'unité du navire dont vous voulez connaître les infos, sinon forcément ça va chier dans la colle
Chose que vous pouvez changer, c'est la durée en secondes pendant laquelle vous voulez voir le message affiché à l'écran, à la ligne 10, remplacez 30 par ce que vous voulez
L'intérêt de tout ça ? Ben fini de devoir faire parcourir toute la carte en longueur ou largeur à votre porte-aéronef pour être sûr de connaître le cap à suivre en final lors d'un appontage aux instruments
Un script que je cherchais tel le Saint-Grââl depuis un moment (d'ailleurs si Joseph d'Arimatie est pas trop con, le Grâäl, c'est un bocal à anchois) et que j'ai finalement pu faire fonctionner grâce à l'aide Grimes, LE Monsieur Mist sur les forums d'ED.
Voilà un script qui vous permet d'avoir des infos trèèèèèèèèèèèèèèèèès utiles, à savoir le cap et la vitesse de votre maison flottante en tenant compte de la déclinaison magnétique.
Le script est dispo ici: https://drive.google...iew?usp=sharing
Pour ce faire, question marqueur, ça se passe comme ça:
1) Une fois, temps >10 secondes, exécutez le fichier script mist et créez un menu radio pour tel ou tel groupe qui déclenche le marqueur 1 (ou 2, ou 3, ou peu importe)
2) Sur bascule de condtion, quand marqueur 1 est vrai:
- exécuter fichier script InfoNavire
- désactiver marqueur 1
- et ajoutez si vous voulez un son de radio
En mission, allez sur le menu F10, déclenchez le menu radio, et voilà:
Screen_180902_115122.png (1,7 Mo)
Nombre de téléchargements : 12
ATTENTION, TRES IMPORTANT: dans le fichier script joint, n'oubliez SURTOUT PAS de remplacer tarawa à la ligne 2 par le nom d'unité du navire dont vous voulez connaître les infos, sinon forcément ça va chier dans la colle
Chose que vous pouvez changer, c'est la durée en secondes pendant laquelle vous voulez voir le message affiché à l'écran, à la ligne 10, remplacez 30 par ce que vous voulez
L'intérêt de tout ça ? Ben fini de devoir faire parcourir toute la carte en longueur ou largeur à votre porte-aéronef pour être sûr de connaître le cap à suivre en final lors d'un appontage aux instruments
Storm 02 sept. 2018
Euh........ Mais faut quand meme que le navire (plus precisement le pont) soit dans l'axe du vent?? Donc pour le moment on est obligé de mettre les infos dans le brief? Sauf si on ne met pas de vent
Flo 02 sept. 2018
C'est la limitation du truc jusqu'à ce qu'on ait des navires qui virent debout au vent une fois que tu t'annonces, mais bon, j'ai arrêté de rêver il y'a bien longtemps
Loulou 19 mars 2019
Concernant le script des missiles d'entrainement, n'avez vous pas l'impression que le comportement du missile change? Pour ma part, là où sans le script je peux leurrer des missiles IR, avec le script ils me hit systématiquement ....
Flo 19 mars 2019
Yep, testé et apparement le script seul ne fonctionne pas. M'en suis pas aperçu car sur ma zone d'entraînement, j'avais aussi mis des triggers à l'époque "quand groupe dans (hors)zone , executer avec priorité tache inmmortel on (off)" par sécurité car pas sûr, c'est d'ailleurs pour ça qu'il y'a autant de triggers, car un groupe = UN avion. Par contre, aucune influence sur le comportement du missile pour ma part
Loulou 19 mars 2019
Non par contre pour ma part, le script fonctionne nickel, y'a explosion, ou pas selon ce qu'on met dans les premières lignes, et ensuite le message, mais on est pas touché. Dans ma mission, je charge MIST auparavant, et il est appelé par ce script, donc mandatory pour moi !
Enjoy
Enjoy
Migow 28 juil. 2019
script pour rendre invincible des joueurs dans une/des zones pour du training
--by migow invincibility script 0.6 local coalition_player_side = coalition.side.BLUE local zone_name_array = {} local trace_debug = false trigger.action.outText("Script Invulnerabilite On",1) function AddInvicibilityArea(area_name)-- a appeler pour chaque zone zone_name_array[#zone_name_array +1] = area_name end local function SetPlayersInvicibleInArea() local player_array = coalition.getPlayers(coalition_player_side) for player_index, player in ipairs(player_array) do local invincible = false local player_group = player:getGroup() if player_group then for zone_index, zone_name in ipairs(zone_name_array) do local zone = trigger.misc.getZone(zone_name) if zone then if mist.utils.get2DDist(player:getPosition().p, zone.point) < zone.radius then -- if it is in the zone invincible =true break; else invincible = false end end end player_group:getController():setCommand({id = 'SetImmortal', params = {value = invincible}}) -- set immortal to invincible if trace_debug then if invincible then trigger.action.outText("invincible",1) else trigger.action.outText("vulnerable",1) end end end end end AddInvicibilityArea("invincible")--zone a appeler en exemple AddInvicibilityArea("miaw") mist.scheduleFunction(SetPlayersInvicibleInArea, {}, timer.getTime(), 1)