←  DCS World

131st VFS 'Death Vipers'

»

Vous reprendrez bien un peu de script !

 Photo 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.
Citer

 Photo 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.
Citer

 Photo 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 :gg:
Citer

 Photo 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.
Citer

 Photo 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 ...
Citer

 Photo 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 ....
Citer

 Photo 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...)
Citer

 Photo 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 :gg:
Citer

 Photo 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
Citer

 Photo White-sky 21 déc. 2017

Belle trouvaille !
Citer

 Photo 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à:

Fichier joint  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
Citer

 Photo 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 :P
Citer

 Photo 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
Citer

 Photo Angus 02 sept. 2018

avec un joueur CA on peut faire virer le Navire pour les recovery ;)
Citer

 Photo 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 ....
Citer

 Photo Wilco 19 mars 2019

Non, je réussis à en leurrer deux ou trois avant d'avoir un missile fatal.
Citer

 Photo 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
Citer

 Photo Loulou 19 mars 2019

Bon ben c'est moi qui est mauvais :blush:
Citer

 Photo 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
Citer

 Photo 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)
Citer