Aide - Recherche - Membres - Calendrier
Version complète : Transport pour MI8 et UH-1H
3rd-Wing · Escadre virtuelle DCS > DCS (& LockOn) > Add-ons / Mods / Skins / ...
Pages : 1, 2
gillesdrone
voilà cette nuit je me suis penché sur le CTTS.lua mis en lien par Az

voir ici

qui lui meme a été modifié par MasterZelgadis

et j'ai fait d'autres modifs qui permettent entre autre de transporter un ZU a un endroit sans avoir besoin de trigger

j'ai la possibilité de rajouter d'autres objets

dites moi si vous avez des envies particulières

déjà je vais mettre un mortier

je vais rajouter les élément de FARP pour qu"il soit ops
il faudra donc plusieurs hélicos et plusieurs voyages

voilà ce que cela donne en images

au tarmac avec l'équipe logistique et les troupes
Cliquez pour voir le fichier-joint

on peut contrôler si on a bien embarqué ce qu'il faut
Cliquez pour voir le fichier-joint

dépose des troupes prés d'un pont à attaquer
Cliquez pour voir le fichier-joint

dépose de la ZU
Cliquez pour voir le fichier-joint

vu de l’intérieur
Cliquez pour voir le fichier-joint



les troupes partent à l’assaut

Cliquez pour voir le fichier-joint

elles avancent vers le pont en face

Cliquez pour voir le fichier-joint

voilà on va bien s'amuser russieflag.gif wavetowel2.gif
Harke
a ba ça c'est excellent !
gillesdrone
CITATION(Harke @ 24 Sep 2013, 12:03) *

a ba ça c'est excellent !

petit bemol ; il faut que je trouve comment rendre le ZU actif , car pour l'instant je le pose et c'est tout
pas fait l'essai avec le CA ce qui pourrait être pas mal aussi wink.gif
j'ai une petite idée car dans le script la partie loadcargo , est en éléments statiques
a voir comment changer le type wink.gif
Goztreh
CITATION(gillesdrone @ 24 Sep 2013, 12:28) *

petit bemol ; il faut que je trouve comment rendre le ZU actif , car pour l'instant je le pose et c'est tout


J'ai le cas avec le respawn de mes unités AI in flight.
Je me penche sur cette fonction:

Controller.setTask ('group name',<task>)

Goz.

Edit: En bien plus détaillé:

Fonction Controller

gillesdrone
par contre les bonhommes eux sont actifs et en excellent wink.gif
Jackes
Super Gilles on pourra faire une équipe attaque protection et une équipe logistique. Ça va donner de belles missions. thumbsup.gif
gillesdrone
ça progressse cheer.gif

maintenant je transporte 8 infanteries et 2 ZU simple
et elles sont actives en mode IA ou en mode CA thumbsup.gif

en image
vue implantation au largage
Cliquez pour voir le fichier-joint

elles tirent sur des camions que je fais passer en ville

Cliquez pour voir le fichier-joint

et maintenant le résultat

Cliquez pour voir le fichier-joint
Tacno
Un mortier 120 serait plus efficace (pour les tirs balistiques, indirects et à couverts) et réaliste qu'un bi-tube de 23mm AAA, non ?
Enfin moi je dis cela.....C'est pas comme si cela faisait depuis 15-20 ans (pour des opérations spéciales).
Un mortier de 120mm pèse 650kg, un obus de 120mm pèse 14kg, des servants, qui sont des costauds, il faut déplacer, porter la bête : 5 hommes. Si on donne une échelle moyenne: 85kg (un beau bébé) + (5kg de fringues) + 15 kg(sac standard 24h) + 5kg(arme+mun.), soit 110kg par homme.
Si vous souhaitez déplacer un mortier en Mil-Mi 8, il faut donc compter l'ajout des masses de :
mortier : 650 kg
20 obus : 280 kg ( on ne compte pas les caisses)
5 servants (chef de pièce, pointeur, tireur-chargeur, pourvoyeur, artificier) : 550 kg
= 1480 kg dans le cargo.
Est-ce que vous prenez en compte la charge, et le temps de descendre et montage du mortier, etc ?


-EDIT-
En complément, un ZSU23-2 mesure 4,6m (non démontable) et pèse 950 kg. Il faudra ajouter les servants et les obus.
gillesdrone
CITATION(Tacno @ 26 Sep 2013, 10:35) *

Un mortier 120 serait plus efficace (pour les tirs balistiques, indirects et à couverts) et réaliste qu'un bi-tube de 23mm AAA, non ?
Enfin moi je dis cela.....C'est pas comme si cela faisait depuis 15-20 ans (pour des opérations spéciales).
Un mortier de 120mm pèse 650kg, un obus de 120mm pèse 14kg, des servants, qui sont des costauds, il faut déplacer, porter la bête : 5 hommes. Si on donne une échelle moyenne: 85kg (un beau bébé) + (5kg de fringues) + 15 kg(sac standard 24h) + 5kg(arme+mun.), soit 110kg par homme.
Si vous souhaitez déplacer un mortier en Mil-Mi 8, il faut donc compter l'ajout des masses de :
mortier : 650 kg
20 obus : 280 kg ( on ne compte pas les caisses)
5 servants (chef de pièce, pointeur, tireur-chargeur, pourvoyeur, artificier) : 550 kg
= 1480 kg dans le cargo.
Est-ce que vous prenez en compte la charge, et le temps de descendre et montage du mortier, etc ?


-EDIT-
En complément, un ZSU23-2 mesure 4,6m (non démontable) et pèse 950 kg. Il faudra ajouter les servants et les obus.

je sais et approuve ce que tu dis mais comme ce sont des essais jai pris le premier code que jai trouvé

j avais mis en 2 eme option le mortier mais ke voulais passer l'info comme quoi c'était faisable
gillesdrone
j'ai trouvé les caracteristiques du ZU pour moi ça rentre dans un MI8

Caractéristiques générales
Dimensions hors-tout en position de mise à feu
Longueur : 4570 millimètres
Largeur : 2880 millimètres
Taille : 1220 millimètres
Poids : 0.95 tonne
Armement : deux 2A14 Afanasyev-Yakushev autocannons de 23 millimètres
Longueur de baril : 2010 millimètres/ 87.3 calibres
Vitesse de museau : 970 ms
Poids de projectile : 178 g
Taux du feu
Répétition : 2.000 séries par minute
Pratique : 400 séries par minute
Portée utile : 2 - 2.5 kilomètres
Altitude efficace : 1.5 - 2 kilomètres
Servez d' équipier : 6
Galevsky
Ça rentre, ou ça voyage en dessous, ça revient au même pour DCS, car on a pas le choix et c'est "simulé par le script", mais l'idée du ZU est bien que ce soit transportable par hélico.
Tacno
Juste pour poursuivre dans la réflexion : un MANPAD IGLA est moins lourds, plus rapide, précis etc...
Mais dans quel type d'utilisation projettes-tu le ZSU-23 x2, en AAA ou bien en autodéfense sol-sol, au attaque sol-sol ?
En 39-45 des canons AAA on été reconvertis en sol-sol car ils y étaient très efficaces et plus efficace que les canons prévus (cadence de tir, saturation, etc...).
Pour moi, dans mon idée (je n'ai rien à imposer comme d'hab, qu'on ne s'y trompe pas) : déploiement attaque/interdiction sol (en projection) : mortier de 120,
intersection air (en projection) : IGLA.
En déploiement rapide des forces, c'est le top...
gillesdrone
de toute façon pour l'instant je fait des tests , on verra ce qui est faisable et le plus judicieux

le man pad , on peut en mettre 2 dans le script de l'infanterie en le modifiant ( fait )

une question Gal , je vois qu'on ne peut pas charger plus d'un script d'initialisation , on peut les merger ensemble ?

Goztreh
CITATION(gillesdrone @ 30 Sep 2013, 20:31) *

de toute façon pour l'instant je fait des tests , on verra ce qui est faisable et le plus judicieux

le man pad , on peut en mettre 2 dans le script de l'infanterie en le modifiant ( fait )

une question Gal , je vois qu'on ne peut pas charger plus d'un script d'initialisation , on peut les merger ensemble ?


Tu peux faire un once time more 2 et tu lances ton deuxième script sans soucis.

Goz.
Tacno
CITATION(gillesdrone @ 30 Sep 2013, 20:31) *

de toute façon pour l'instant je fait des tests , on verra ce qui est faisable et le plus judicieux

Je n'écris que des idées qui me passent par la tête. Si ça amène de l'eau au moulin, tant mieux.
Galevsky
Soit tu merges tout (et donc tu mets tes scripts à la fin du script Mist), soit tu fais comme l'exemple du wiki (1 script à l'initialisation de la mission + 1 script 2s plus tard loadé via trigger), et tu peux soit remettre 2 s plus tard etc.... mais perso je te conseille de développer dans plein de fichiers différents, puis tu les merges en un seul....
gillesdrone
petites images de la mission test d'hier

d'abord la mission avec transport de troupe pour reprendre un pont

Jackes dépose ses troupes

Cliquez pour voir le fichier-joint

ensuite mission où on embarque 2 manpads chacun

d'abord la dépose

Cliquez pour voir le fichier-joint

le résultat ça met un peu la pagaille dans le ciel du coup tous les hélicos usflag.gif nous font un feu d'artifice wink.gif

Cliquez pour voir le fichier-joint

pour l'instant il faut choisir le script en fonction de la mission de ce que l'on veut transporter , car le mix troupes soldats et manpads fonctionne mais les troupes ne se déplacent plus , ce n'est pas un Problème pour les manpads puisqu'ils tirent a 2 Km mais si pour les soldats

je doit voir avec un mix " drop zone" " pick zone " comment faire wink.gif car là on à les troupes dans l'hélico au démarrage, mais on peut les reprendre et les déplacer ailleurs ce qui est bien quand même
gillesdrone
suite a des essais avec Jackes cet après midi , et aussi d'après une doc " armée " aide aux fantassins

le MI8 peut embarquer 28 hommes de combats sur 1240 Km et 50 sur 500 Km

avec le script modifié on peut transporter :

transport de 1 M1043 HMMWV Armament
ou
transport de 1 M1045 HMMWV TOW
ou
transport de maximum 32 hommes de combats
ou
transport de 1 ZU standard
ou
transport de 2 manpads

je pense que là on peut bien gérer surtout que une fois posé on prend la main en CA sur les troupes

je cherche maintenant comment pouvoir mixer les charges sur des hélicos différents dans une même mission
car pour l'heure tous les hélicos ont le même armement
Azrayen'
Vous avez une capacité sling ??

Parce qu'un Humvee, c'est pas tout petit... et ça rentre pas : http://commons.wikimedia.org/wiki/File:Mil_Mi8T_3_Heck.jpg
gillesdrone
suivant les doc on a soit 32 soit 50 hommes on mettra 32 maxi pour être dans les clous

pour les M1043 HMMWV la soute est assez grande. mais on considère qu'on les prendra en sling ( vu que dans 2 more Week le sling devrait être développé ) wink.gif
Azrayen'
CITATION(gillesdrone @ 5 Oct 2013, 18:41) *
pour les M1043 HMMWV la soute est assez grande.

Sérieux ?? T'as les billes (mesures) qui le montrent ? J'ai juste un gros (ou est-ce petit ? tongue.gif) doute en regardant les tofs. Et qui de la nécessaire rampe ?

CITATION(gillesdrone @ 5 Oct 2013, 18:41) *

suivant les doc on a soit 32 soit 50 hommes on mettra 32 maxi pour être dans les clous

Moi je lis plutôt 24 sur Wikipedia. 32, c'est pour la version civile, mais dans ce cas c'est 80Kg par bonhomme, donc sans le sac, le flingue... etc.

Je vais regarder ce qu'il y a dans le manuel de l'US Army, c'est la version la plus proche.


[edit] section 4-4 dudit manuel :
CITATION
The Mi-17 can be configured for troop, personnel,
and medevac flights. The maximum number of
troops or persons which can be transported is 24.

The average weight for each equipped troop is 100
kg (220.5 lb). With less than 22 troops on board, seat
No's. 1 and 2 are left empty.


----

Et pour charger un Humvee, c'est ultra juste + obligation de réduire la hauteur (donc pas pratique). OK pour simuler un sling en revanche, ça ça passe opérationnellement.

Hélico :
Cargo cabin interior dimensions:
Length, from fwd bulkhead to frame No. 13 .. 17.52 ft
Width, maximum .......................................... 7.7 ft
Height ......................................................... 5.9 ft

Humvee :
Length ......................................................... 15 ft (4.57 m), wheelbase 10 ft 10 in (3.30 m)
Width ............................................................ 7 ft 1 in (2.16 m)
Height .......................................................... 6 ft (1.83 m), reducible to 4 ft 6 in (1.37 m)
gillesdrone
en fait j'ai une doc militaire qui fait état de 50 soldat combatants

et 32 pour un autre doc la version militaire Cargo
http://helimat.free.fr/Fiches_Techniques/MiMil/5_MiMil-8.htm

par contre l'autre doc je peux te la faire parvenir mais pas diffusable whistling.gif

et effectivement pour le MVee ce serait en sling idem pour la ZU

vue qu'on peut charger 4000 kg
Azrayen'
Non, pas la peine de diffuser, je faisais juste une remarque en passant.
Je pense qu'il y a une erreur dans le document dont tu parles. Voici pourquoi :
- plusieurs sources (dont US Army) indiquent 24 pax max
- 24 sièges en cabine
- 50 gusses x 100 Kg = 5t de charge detective.gif
- alors que l'hélico est décrit pour une charge utile max de 4t

wink.gif
gillesdrone
CITATION(Azrayen' @ 5 Oct 2013, 23:07) *

Non, pas la peine de diffuser, je faisais juste une remarque en passant.
Je pense qu'il y a une erreur dans le document dont tu parles. Voici pourquoi :
- plusieurs sources (dont US Army) indiquent 24 pax max
- 24 sièges en cabine
- 50 gusses x 100 Kg = 5t de charge detective.gif
- alors que l'hélico est décrit pour une charge utile max de 4t

wink.gif


oui je me suis dit aussi que 50 gus dans 10m² c'était trop smile.gif
va falloir faire un feedback au instructeurs gap.gif

j'ai donc mis 20 maxi c'est déja bien wink.gif


Giat
Cool tout ça
Moi je rêve de missions amphibie avec un huey qui vient prendre des hommes et du matériel sur des navires pour un assaut :-)
gillesdrone
pas possible :

pas moyen sauf avec ma méthode bourrin de poser des troupes sur bateaux
ensuite si tu ne te pose pas au sol ( le script connait le sea level à ta position et donc même alti pour toi) pas d'exé du script

mais je vais faire des essais quand même wink.gif

Galevsky
Mais si, tu simules un "cargo" qui estvide, qui se rempli virtuellement de troupes quand tu es à là bonne distance et hauteur, puis une fois que tu es au sol au bout de X temps, tu vide le cargo et fait poper des troupes à cote de l’hélicoptère.
gillesdrone
pas besoin

je pars de l'aeroport avec des troupes embarquées

je me pose sur le porte avion

je drop les troupes

puis un autre hélico peut venir les rechercher ou je peux avec le meme hélico les reprendre

Cliquez pour voir le fichier-joint

Cliquez pour voir le fichier-joint

pourquoi je fais comme cela car le Pb des bateaux est encore pire depuis la nouvelle mise a jour , même les bateaux en deactivate les hélicos posés dessus bougent et sautent jusque tomber à l'eau crash.gif
Giat
N'est-il pas plus simple de "Créer" les troupes une fois posé en campagne ?

Cad que le chargement des troupes est virtuel ( sauf le poids) mais son déchargement est réel ( les troupes apparaissent )!
gillesdrone
cest bon ca marche meme du port avion il faut juste que le MI8 soit cold start smile.gif
du coup onpeut faire ce qu on veut
gillesdrone
si tu veux Giat mets un petit scénario que je sache ce que tu veux ,
gillesdrone
je me suis penché sur le lua de transport
j'ai fait quelques tests et petite nouveauté

on charge une mines

on se pose sur une route

Cliquez pour voir le fichier-joint

où un convoi doit passer

Cliquez pour voir le fichier-joint

et boom quand le convoi passe

Cliquez pour voir le fichier-joint

a savoir qu'il faut se positionner A DROITE de la route dans le sens de roulage du convoi pour la poser , j'ai des essais où les véhicules passent a coté

mais par exemple pour bloquer sur un pont , avec 2 ou 3 aller retour on pose en décallé ou bien a 2 MI8 on fait l'affaire et cela marche, en plus on peut charger des hommes de troupes pour l'embuscade smile.gif
de nouveaux scénaris en perspective thumbsup.gif
gillesdrone
de nouveaux essais et 2 camions de moins en 2 coups

en fait pour être sur de toucher il faut se poser aligné a la route du coté droit dans le sens du roulage du convoi

la mine est posée 20 m dans l'axe du MI8 wink.gif

et de 1

Cliquez pour voir le fichier-joint

et de 2
Cliquez pour voir le fichier-joint
gillesdrone
bon il faut aussi larguer les hommes et attendre pour mettre la mine gap.gif

Cliquez pour voir le fichier-joint
gillesdrone
promis j'arrete de casser des avions , pardon le 72nd blushing.gif

j'ai fait une petite mission , 1 MI8 et 1 Su25T

je prends le MI8 , je pose une mine milieu de piste pour voir ...

ensuite je saute dans le Su25T qui est en vol j'adore wub.gif , je me présente cool comme il faut thumbsup.gif , j'atterris super bien ( mod chevilles qui enflent ) jesors.gif

et voilà ce qui se passe en milieu de piste au roulage ...


Cliquez pour voir le fichier-joint

BaDCrC
Excellente idée Gilles.

On va pouvoir faire des missions ou on va pouvoir pourrir des vallées entières de mines et anihiler des convois entiers.
gillesdrone
pour compléter notre arsenal , j'ai fait un script pour les mortiers smile.gif

voilà ce que cela donne , apres les avoir posé il faut en gros 5 minutes pour se mettre à tirer .

Cliquez pour voir le fichier-joint

le résultat : tirent bien ma foi :

Cliquez pour voir le fichier-joint

on peut choisir le nombre de mortiers à transporter , comme je compte 2 hommes pour 1 mortier , j'en ai mis 8 ce qui fait 16 hommes plus le matos . mais chacun est libre wink.gif

les mortiers cherchent s'il y a des ENI dans un rayon de 2 à 3 Km s'orientent vers l'objectif et tirent

etcher
J'avais un script dans le genre il y a un bout de temps, je le met ici au cas où tu trouverais quelque chose d'intéressant.

CODE

in_zone = {}
mig_chance = 10
mig_in_flight = false
spawned_red_units = {}
spawned_blue_units = {}
group_counter = 500
unit_counter = 500
add = 10
mult = 10
main_zone = trigger.misc.getZone("MainZone")
blue_units_in_main_zone = {}
init = false
score = 0
pending_score = 0
fac = {
["x"] = nil,
["y"] = nil,
["init"] = false,
["delay"] = 30,
["counter"] = 1,
["name"] = "FAC",
}
huey_max_loadout = 12
hueys = {
["Huey #1"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #2"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #3"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #4"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #5"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #6"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #7"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #8"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
}
blue_ground_groups = {
["anti_tank_humvee"] = {
[1] = "M1045 HMMWV TOW",
[2] = "M1045 HMMWV TOW",
},
["stryker_missile"] = {
[1] = "M1134 Stryker ATGM",
},
["stryker_canon"] = {
[1] = "M1128 Stryker MGS",
},
["mortar"] = {
[1] = "2B11 mortar",
[2] = "2B11 mortar",
[3] = "2B11 mortar",
[4] = "2B11 mortar",
[5] = "2B11 mortar",
[6] = "Soldier M4",
[7] = "Soldier M4",
[8] = "Soldier M4",
},
}

blue_flyable_units = {
["A-10C"] = {
["count"] = 0,
["force"] = 5,
},
["Ka-50"] = {
["count"] = 0,
["force"] = 5,
},
["UH-1H"] = {
["count"] = 0,
["force"] = 1,
},
["P-51D"] = {
["count"] = 0,
["force"] = 0,
},
["total"] = 0,
}
red_units = {
[1] = {
["name"] = "BMP-3",
["force"] = 5,
},
[2] = {
["name"] = "BTR-80",
["force"] = 3,
},
[3] = {
["name"] = "T-55",
["force"] = 2,
},
[4] = {
["name"] = "Ural-375 PBU",
["force"] = 1,
},
[5] = {
["name"] = "T-80UD",
["force"] = 4,
},
[6] = {
["name"] = "Ural-375 ZU-23",
["force"] = 5
},
[7] = {
["name"] = "ZSU-23-4 Shilka",
["force"] = 6,
},
[8] = {
["name"] = "Strela-1 9P31",
["force"] = 8,
},
[9] = {
["name"] = "SAU Gvozdika",
["force"] = 3,
},
}

zones = {
["pickup"] = {
[1] = {
["name"] = "FARP1",
["smoke_color"] = trigger.smokeColor.Blue,
},
[2] = {
["name"] = "FARP2",
["smoke_color"] = trigger.smokeColor.Blue,
},
},
["mig"] = {
[1] = "MIG1",
[2] = "MIG2",
},
["red_spawn"] = {
[1] = {
["name"] = "N",
},
[2] = {
["name"] = "NE",
},
[3] = {
["name"] = "E",
},
[4] = {
["name"] = "SE",
},
[5] = {
["name"] = "S",
},
[6] = {
["name"] = "SW",
},
[7] = {
["name"] = "W",
},
[8] = {
["name"] = "NW",
},
},
}

function spawn_mig()
group_counter = group_counter + 1
unit_counter = unit_counter + 1
local sel = math.random(2)
local mig_name = "Mig" .. unit_counter
local start_zone = nil
local dest_zone = nil
if sel == 1 then
start_zone = trigger.misc.getZone(zones["mig"][1])
dest_zone = trigger.misc.getZone(zones["mig"][2])
else
start_zone = trigger.misc.getZone(zones["mig"][2])
dest_zone = trigger.misc.getZone(zones["mig"][1])
end
env.info("spawn_mig 9")
local group = {
["modulation"] = 0,
["tasks"] =
{
}, -- end of ["tasks"]
["task"] = "CAP",
["uncontrolled"] = false,
["route"] =
{
["points"] =
{
[1] =
{
["alt"] = 20000,
["type"] = "Turning Point",
["action"] = "Turning Point",
["alt_type"] = "BARO",
["formation_template"] = "",
["properties"] =
{
["vnav"] = 1,
["scale"] = 0,
["angle"] = 0,
["vangle"] = 0,
["steer"] = 2,
}, -- end of ["properties"]
["ETA"] = 0,
["y"] = start_zone.point.z,
["x"] = start_zone.point.x,
["speed"] = 138.88888888889,
["ETA_locked"] = true,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
[1] =
{
["enabled"] = true,
["auto"] = true,
["id"] = "EngageTargets",
["number"] = 1,
["key"] = "CAP",
["params"] =
{
["targetTypes"] =
{
[1] = "Air",
}, -- end of ["targetTypes"]
["priority"] = 0,
}, -- end of ["params"]
}, -- end of [1]
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["speed_locked"] = true,
}, -- end of [1]
[2] =
{
["alt"] = 2000,
["type"] = "Turning Point",
["action"] = "Turning Point",
["alt_type"] = "BARO",
["formation_template"] = "",
["properties"] =
{
["vnav"] = 1,
["scale"] = 0,
["angle"] = 0,
["vangle"] = 0,
["steer"] = 2,
}, -- end of ["properties"]
["ETA"] = 303.9621922784,
["y"] = dest_zone.point.z,
["x"] = -dest_zone.point.x,
["speed"] = 138.88888888889,
["ETA_locked"] = false,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["speed_locked"] = false,
}, -- end of [2]
}, -- end of ["points"]
}, -- end of ["route"]
["groupId"] = group_counter,
["hidden"] = false,
["units"] =
{
[1] =
{
["alt"] = 2000,
["heading"] = 1.316297268452,
["callsign"] = 101,
["psi"] = -1.316297268452,
["livery_id"] = "120 gviap #45 domna ab",
["onboard_num"] = "11",
["type"] = "MiG-29A",
["y"] = start_zone.point.z,
["x"] = start_zone.point.x,
["name"] = mig_name,
["payload"] =
{
["pylons"] =
{
[1] =
{
["CLSID"] = "{682A481F-0CB5-4693-A382-D00DD4A156D7}",
}, -- end of [1]
[7] =
{
["CLSID"] = "{682A481F-0CB5-4693-A382-D00DD4A156D7}",
}, -- end of [7]
}, -- end of ["pylons"]
["fuel"] = "3380",
["flare"] = 30,
["chaff"] = 30,
["gun"] = 100,
}, -- end of ["payload"]
["speed"] = 138.88888888889,
["unitId"] = unit_counter,
["alt_type"] = "BARO",
["skill"] = "Average",
}, -- end of [1]
}, -- end of ["units"]
["y"] = start_zone.point.z,
["x"] = start_zone.point.x,
["name"] = "MIG group" .. group_counter,
["communication"] = true,
["start_time"] = 0,
["frequency"] = 124,
}
coalition.addGroup(country.id.RUSSIA, Group.Category.AIRPLANE, group)
trigger.action.outText("ALERTE ALERTE ALERTE ALERTE\nMig 29 en approche, je répète, Mig29 en approche !\n\nLes pleutres, planquez-vous !\n\nLes autres, TAIAU !!!\n(il vaut 100 points, le bougre, une fois, hein !)", 15)
mig_in_flight = mig_name
timer.scheduleFunction(destroy_mig, nil, timer.getTime() + 300)
end

function destroy_mig()
local unit = Unit.getByName(mig_in_flight)
if unit then
unit:destroy()
trigger.action.outText("Le Mig est parti, fin de menace !!!", 15)
mig_in_flight = false
return
end
trigger.action.outText("Wow, vous avez réussi à descendre le Mig ??? Joliiiiiii !!! Score + 100", 15)
score = score + 100
end

function build_group(args, new_unit_func)
group_counter = group_counter + 1
-- args = {
-- ["name"] = "example",
-- ["x"] = x,
-- ["y"] = y,
-- ["dest"] = nil,
-- ["units"] = {
-- [1] = "unit1",
-- [2] = "unit2",
-- [3] = "unit3",
-- [4] = "unit4"
-- },

-- }
local group = {
["manualHeading"] = false,
["visible"] = false,
["taskSelected"] = true,
["groupId"] = group_counter,
["hidden"] = false,
["units"] = {},
["y"] = args["y"],
["x"] = args["x"],
["name"] = args["name"] .. group_counter,
["start_time"] = 0,
["task"] = "Ground Nothing",
["route"] = {
["points"] =
{
[1] =
{
["alt"] = 41,
["type"] = "Turning Point",
["ETA"] = 0,
["alt_type"] = "BARO",
["formation_template"] = "",
["y"] = args["y"],
["x"] = args["x"],
["ETA_locked"] = true,
["speed"] = 5.5555555555556,
["action"] = "On Road",
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
},
},
},
["speed_locked"] = false,
},
},
},
}
if args["dest"] ~= nil then
local dest = {
["alt"] = 54,
["type"] = "Turning Point",
["ETA"] = 52.09716824195,
["alt_type"] = "BARO",
["formation_template"] = "",
["y"] = args["dest"]["y"],
["x"] = args["dest"]["x"],
["ETA_locked"] = false,
["speed"] = 5.1,
["action"] = "On Road",
["speed_locked"] = false,
["task"] = {
["id"] = "ComboTask",
["params"] = {
["tasks"] = {},
},
},
}
table.insert(group["route"]["points"], dest)
end
local units = args["units"]
for i=1,#units do
local angle = math.pi * 2 * (i-1) / #units
local xofs = math.cos(angle) * 40
local yofs = math.sin(angle) * 40
table.insert(group["units"], new_unit_func(args["x"] + xofs, args["y"] + yofs, units[i], angle))
end
return group
end

function select_random_in_table(table)
return table[math.random( #table )]["name"]
end

function select_zone()
local sel = math.random( #spawn_zones )
local zone_name = spawn_zones[sel]
return zone_name
end

function get_distance(x1, y1, x2, y2)
return math.sqrt(math.pow(x1-x2,2) + math.pow(y1-y2,2))
end

function red_units_in_main_zone()
local tbl = spawned_red_units
if #tbl > 0 then
for i=1,#tbl do
local unit_name = tbl[i]
local unit = Unit.getByName(tbl[i])
if unit then
local unit_life = unit:getLife()
if unit_life > 1 then
return true
end
end
end
end
score = score + pending_score
return false
end

function new_red_unit(x, y, unit_type)
local unit_name = "EnemyUnit" .. unit_counter
table.insert(spawned_red_units, unit_name)
return new_unit(x, y, unit_type, unit_name)
end

function new_blue_unit(x, y, unit_type)
local unit_name = "FriendlyUnit" .. unit_counter
table.insert(spawned_blue_units, unit_name)
local unit = new_unit(x, y, unit_type, unit_name)
unit["playerCanDrive"] = true
return unit
end

function new_unit(x, y, unit_type, unit_name, heading)
local unit = {
["y"] = y,
["type"] = unit_type,
["name"] = unit_name,
["unitId"] = unit_counter,
["heading"] = heading,
["playerCanDrive"] = false,
["skill"] = "Average",
["x"] = x,
}
unit_counter = unit_counter + 1
return unit
end

function spawn_red_group()
local zone_name = select_random_in_table(zones["red_spawn"])
local zone = trigger.misc.getZone(zone_name)
local left_to_assign = 0
for k, v in pairs(blue_flyable_units) do
if not string.match(k, "total") then
if v["count"] > 0 then
if v["force"] > 0 then
left_to_assign = add + left_to_assign + v["force"] * v["count"]
end
end
end
end
if left_to_assign == 0 then
return
end
local difficulty = left_to_assign
local units = {}
local sel = nil
while left_to_assign > 0 do
sel = math.random( #red_units )
if red_units[sel]["force"] <= left_to_assign then
table.insert(units, red_units[sel]["name"])
left_to_assign = left_to_assign - red_units[sel]["force"]
end
end
if #units > 0 then
local args = {
["name"] = "Enemy_group",
["x"] = zone.point.x,
["y"] = zone.point.z,
["dest"] = {
["x"] = main_zone.point.x,
["y"] = main_zone.point.z,
},
["units"] = units,
}
coalition.addGroup(country.id.RUSSIA, Group.Category.GROUND, build_group(args, new_red_unit))
add = add + mult
trigger.action.outText(string.format("Un nouveau groupe d'ennemis vient d'apparaître !\nDirection: %s\nDifficulté: %d\nScore de l'équipe bleue jusqu'ici: %d", zone_name, difficulty, score), 15)
spawn_smoke(zone.point.x, zone.point.z, trigger.smokeColor.Red)
-- score = score + difficulty
pending_score = difficulty
end
return nil
end

function spawn_fac(arg)
group_counter = group_counter + 1
unit_counter = unit_counter + 1
fac["init"] = false
trigger.action.outText("Réapparition d'un nouveau FAC", 15)
local x = arg["x"]
local y = arg["y"]
local group = {
["manualHeading"] = false,
["taskSelected"] = true,
["route"] =
{
["points"] =
{
[1] =
{
["alt"] = 922,
["type"] = "Turning Point",
["ETA"] = 0,
["alt_type"] = "BARO",
["formation_template"] = "",
["y"] = y,
["x"] = x,
["ETA_locked"] = true,
["speed"] = 5.5555555555556,
["action"] = "Off Road",
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["speed_locked"] = true,
}, -- end of [1]
}, -- end of ["points"]
}, -- end of ["route"]
["groupId"] = group_counter,
["tasks"] =
{
}, -- end of ["tasks"]
["hidden"] = false,
["units"] =
{
[1] =
{
["y"] = y,
["type"] = "M-1 Abrams",
["name"] = fac["name"],
["unitId"] = unit_counter,
["heading"] = 3.1415926535898,
["playerCanDrive"] = true,
["skill"] = "Excellent",
["x"] = x,
}, -- end of [1]
}, -- end of ["units"]
["y"] = y,
["x"] = x,
["name"] = fac["name"],
["visible"] = false,
["start_time"] = 0,
["task"] = "Ground Nothing",
}
coalition.addGroup(country.id.USA, Group.Category.GROUND, group)
return nil
end

function huey_in_pickup_zone(unit)
for i=1,#zones["pickup"] do
local trigger_zone = trigger.misc.getZone(zones["pickup"][i]["name"])
if unit_is_in_trigger_zone(unit, trigger_zone) then
return trigger_zone
end
end
return nil
end

function huey_load(args)
local huey_name = args["name"]
local unit = Unit.getByName(huey_name)
local player_name = unit:getPlayerName()
local units_loaded = ""
if huey_in_pickup_zone(unit) then
local group_to_load = args["group_to_load"]
if hueys[huey_name]["loaded"] == false then
hueys[huey_name]["loaded"] = {}
for i=1,#group_to_load do
table.insert(hueys[huey_name]["loaded"], group_to_load[i])
units_loaded = string.format("%s\n%s", units_loaded, group_to_load[i])
end
trigger.action.outText(string.format("%s a chargé des troupes, une fois, hein !%s", player_name, units_loaded), 5)
return
end
trigger.action.outText(string.format("%s, tu as déjà chargé des troupes, une fois, hein !", player_name), 5)
return
end
trigger.action.outText(string.format("%s, tu n'es pas dans une zone de chargement, une fois, hein !", player_name), 5)
end

function huey_load_close_units(huey_name)
local unit = Unit.getByName(huey_name)
local player_name = unit:getPlayerName()
if hueys[huey_name]["loaded"] ~= false then
trigger.action.outText(string.format("%s, tu as déjà chargé des troupes, une fois, hein !", player_name), 5)
return
end
local tbl = spawned_blue_units
local loaded_units = false
if #tbl > 0 then
for i=1,#tbl do
local ground_unit_name = tbl[i]
local ground_unit = Unit.getByName(tbl[i])
if ground_unit then
local ground_unit_pos = ground_unit:getPoint()
local huey_pos = unit:getPoint()
if get_distance(huey_pos.x, huey_pos.z, ground_unit_pos.x, ground_unit_pos.z) <= 60 then
if hueys[huey_name]["loaded"] == false then
hueys[huey_name]["loaded"] = {}
end
table.insert(hueys[huey_name]["loaded"], ground_unit:getTypeName())
ground_unit:destroy()
if loaded_units == false then
loaded_units = 1
end
loaded_units = loaded_units + 1
end
end
end
end
if loaded_units and loaded_units > 0 then
trigger.action.outText(string.format("%s a récupéré %d unités sur le champ de bataille, une fois, hein", player_name, loaded_units - 1), 5)
return
end
trigger.action.outText(string.format("%s: désolé, pas d'unités amies à proxmité, une fois, hein", player_name), 5)
end

function huey_unload(huey_name)
local unit = Unit.getByName(huey_name)
local player_name = unit:getPlayerName()
local pos = unit:getPoint()
if unit:inAir() then
trigger.action.outText(string.format("%s vient d'essayer de balancer ses passagers par la fenêtre, une fois, hein !", player_name), 5)
return
end
if hueys[huey_name]["loaded"] == false then
trigger.action.outText(string.format("%s, tu n'as pas chargé des troupes, une fois, hein !", player_name), 5)
return
end
local args = {
["name"] = "FriendlyGroup",
["x"] = pos.x,
["y"] = pos.z,
["dest"] = nil,
["units"] = hueys[huey_name]["loaded"],
}
coalition.addGroup(country.id.USA, Group.Category.GROUND, build_group(args, new_blue_unit))
trigger.action.outText(string.format("%s a déchargé ses troupes, une fois, hein !", player_name), 5)
hueys[huey_name]["loaded"] = false
end

function unit_is_in_trigger_zone(unit, trigger_zone)
local unitpos = unit:getPoint()
return get_distance(unitpos.x, unitpos.z, trigger_zone.point.x, trigger_zone.point.z) < trigger_zone.radius
end

function spawn_smoke(smoke_x, smoke_y, smoke_color)
trigger.action.smoke({x=smoke_x, y=land.getHeight({ x = smoke_x, y = smoke_y }), z=smoke_y}, smoke_color)
end

function show_score()
trigger.action.outText(string.format("Score: %s", score), 5)
end

function smoke_timer(arg, time)
for i=1,#zones["pickup"] do
local zone = trigger.misc.getZone(zones["pickup"][i]["name"])
spawn_smoke(zone.point.x, zone.point.z, zones["pickup"][i]["smoke_color"])
end
return time + 270
end

function check_red(arg, time)
if not red_units_in_main_zone() then
spawn_red_group()
end
return time + 5
end

function count_blue_in_main_zone(arg, time)
blue_flyable_units["total"] = 0
blue_flyable_units["A-10C"]["count"] = 0
blue_flyable_units["Ka-50"]["count"] = 0
blue_flyable_units["UH-1H"]["count"] = 0
blue_flyable_units["P-51D"]["count"] = 0
for k, v in pairs(mist.DBs.humansByName) do
local this_unit = Unit.getByName(k)
if this_unit ~= nil then
local player = this_unit:getPlayerName()
if unit_is_in_trigger_zone(this_unit, main_zone) then
blue_flyable_units["total"] = blue_flyable_units["total"] + 1
blue_flyable_units[v["type"]]["count"] = blue_flyable_units[v["type"]]["count"] + 1
if in_zone[player] ~= true then
trigger.action.outText(string.format("%s vient d'entrer dans la zone avec son %s, une fois, hein", player, v["type"]), 5)
in_zone[player] = true
end
else
if in_zone[player] == true then
trigger.action.outText(string.format("%s vient de sortir de la zone, une fois, hein", player), 5)
in_zone[player] = false
end
end
end
end
return time + 5
end

function do_fac(arg, time) -- hmm, do him ! =p
local fac_unit = Unit.getByName(fac["name"])
if fac_unit == nil and not fac["init"] then
fac["init"] = true
fac["name"] = "FAC" .. fac["counter"]
fac["counter"] = fac["counter"] + 1
local args = {}
args["x"] = fac["x"] + 50
args["y"] = fac["y"]
trigger.action.outText(string.format("Le FAC a été détruit. Réapparation d'un nouveau FAC dans %d secondes, une fois, hein", fac["delay"]), 15)
timer.scheduleFunction(spawn_fac, args, timer.getTime() + fac["delay"])
else
if fac_unit ~= nil then
local fac_pos = fac_unit:getPoint()
fac["x"] = fac_pos.x
fac["y"] = fac_pos.z
end
end
return time + 5
end

function huey_add_radio_commands(arg, time)
for k,v in pairs(hueys) do
if hueys[k]["has_radio_command"] == false then
local unit = Unit.getByName(k)
if unit ~= nil then
local group = unit:getGroup()
if group ~= nil then
local gid = group:getID()
-- local path_1 = missionCommands.addSubMenu("Charger un nouveau groupe", nil)
missionCommands.addCommandForGroup(gid, "Charger un HMMVV anti-chars", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["anti_tank_humvee"],})
missionCommands.addCommandForGroup(gid, "Charger un Stryker missile", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["stryker_missile"],})
missionCommands.addCommandForGroup(gid, "Charger un Stryker canon", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["stryker_canon"],})
missionCommands.addCommandForGroup(gid, "Charger un groupe mortier", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["mortar"],})
missionCommands.addCommandForGroup(gid, "Décharger les troupes", nil, huey_unload, k)
missionCommands.addCommandForGroup(gid, "Charger les unités proches", nil, huey_load_close_units, k)
missionCommands.addCommandForGroup(gid, "Afficher le score", nil, show_score, nil)
hueys[k]["has_radio_command"] = true
end
end
end
end
return time + 5
end

function check_mig(arg, time)
if mig_in_flight ~= false then
return
end
local sel = math.random(100)
if sel <= mig_chance then
spawn_mig()
end
return time + 300
end

do
timer.scheduleFunction(count_blue_in_main_zone, nil, timer.getTime() + 5)
timer.scheduleFunction(check_red, nil, timer.getTime() + 12)
timer.scheduleFunction(do_fac, nil, timer.getTime() + 8)
timer.scheduleFunction(huey_add_radio_commands, nil, timer.getTime() + 9)
timer.scheduleFunction(smoke_timer, nil, timer.getTime() + 11)
timer.scheduleFunction(check_mig, nil, timer.getTime() + 300)
end


En gros, tu définis une grosse zone sur la carte, et des points de spawn pour les ennemis. Au fur et à mesure que les bleus rentrent dans la zone, des troupes ennemies apparaissent aléatoirement (tu définis les points de spawn au moyen de zones également). Le type et la quantité d'ennemis dépend du nombre et du type de troupes bleues dans la zone principale. 1 Huey fera apparaître moins d'ennemis que 4 A10, par exemple.

Chaque fois qu'un groupe ennemi est détruit, le score bleu augmente, et un nouveau groupe apparaît un peu après. Aussi, au plus la mission avance (au plus le score bleu grimpe), au plus il y a d'ennemis.

Je le met ici parce que j'avais créé une mécanique permettant aux Huey de choisir ce qu'ils voulaient embarquer. Tu leur définis une ou plusieurs zones dans lesquelles ils peuvent aller chercher des troupes, ils choisissent ce qu'ils veulent (mortier, infanterie, stryker ( ^^ ), etc ...) via menu radio. Ensuite, ils vont les déposer où il veulent, et ils peuvent même les ré-embarquer de n'importe où sur le champ de bataille pour peu qu'ils se posent à côté.

Le contrôle CA est activé par défaut, donc tout le monde peut prendre le contrôle des zigotos au sol.

Il y a encore quelques autres fonctions, mais la comme ça j'ai oublié, de toute façon tout est dans le code =)

Ah, et les "une fois, hein", quelqu'un m'avait dit que la mission ne faisait pas assez "belge" ... =D

EDIT: en relisant le début du code, je me rappelle que j'ai viré les fantassins, ils ne servaient pas à grand chose =s

EDIT2: j'ai oublié de préciser que le script utilise Mist
Azrayen'
CITATION(gillesdrone @ 25 Jan 2014, 19:51) *
voilà ce que cela donne
Cliquez pour voir le fichier-joint

Sympa. Ne pourrait-on pas pousser jusqu'à faire apparaitre les servants ?
gillesdrone
CITATION(Azrayen' @ 25 Jan 2014, 21:38) *

Sympa. Ne pourrait-on pas pousser jusqu'à faire apparaitre les servants ?


je vais voir mais pas évident car je met les mortiers à la place des fantassins , mais je vais y réfléchir , là en écrivant j'ai une petite idée wink.gif
Galevsky
Si tu veux, j'ai un script qui rajoute un fantassin:

addMan(location, bearing, distance, country, type)

Du coup tu l'appelles a chaque mortier généré.
gillesdrone
CITATION(Galevsky @ 26 Jan 2014, 13:52) *

Si tu veux, j'ai un script qui rajoute un fantassin:

addMan(location, bearing, distance, country, type)

Du coup tu l'appelles a chaque mortier généré.


ça m’intéresse bien sur , voir comment combiner les deux wink.gif
Galevsky
CODE

-------------------
-- Get Locations --
-------------------
function getRandomLocationInPrefixedZones(prefix)
    local prefixedZones={}
    for zoneName, zone in pairs(mist.DBs.zonesByName) do
        if (string.find(zoneName, "^"..prefix..".*")) then
            table.insert(prefixedZones,zone)
        end
    end
    
    if table.getn(prefixedZones) == 0 then
        return nil
    end
    
    local chosenZone = prefixedZones[math.random(#prefixedZones)];
    
    local result = {}
    result.x = chosenZone.point.x + math.random(chosenZone.radius * -1, chosenZone.radius)
    result.z = chosenZone.point.z + math.random(chosenZone.radius * -1, chosenZone.radius)
    return result
end


function getLocationInSector(origin, distance, bearing)  
    local result = {}
    result.x = origin.x + math.cos(math.rad(bearing)) * distance;
    result.y = origin.y + math.sin(math.rad(bearing)) * distance;
    return result
end


function getRandomLocationInSector(origin, minDistance, maxDistance, minBearing, maxBearing)
    local chosenBearing = math.random(minBearing, maxBearing)
    local chosenDistance = math.random(minDistance, maxDistance)
    
    local result = {}
    result.x = origin.x + math.cos(math.rad(chosenBearing)) * chosenDistance;
    result.y = origin.y + math.sin(math.rad(chosenBearing)) * chosenDistance;
    return result
end


function getLocation2Face(unit, minDistance, maxDistance)
    local chosenDistance = math.random(minDistance, maxDistance)
    
    local result = {}
    result.x = unit.point.x + math.cos(unit.heading) * chosenDistance;
    result.y = unit.point.y + math.sin(unit.heading) * chosenDistance;
    return result
end



Ca, ce sont mes méthodes pour calculer de nouvelles positions par rapport à d'autres.

En gros, tu peux appeler

getLocationInSector(origin, 25, 180) et ca va te renvoyer un objet localisation situé à 25m au dans la radiale 180° par rapport à l'origine.


CODE
function addEjectedPilotUnit(unitId, location)
    local units = {}
    units[1] =  {
        ["y"] = location.z,
        ["type"] = "Paratrooper AKS-74",
        ["name"] = "Paratrooper AKS-74"..unitId..1,
        ["unitId"] = unitId+1,
        ["heading"] = math.random(360),
        ["playerCanDrive"] = false,
        ["skill"] = "Average",
        ["x"] = location.x,
    }
    return units
end


function addMan(location, country)
    local unitId = getGenerationId()
    local data = {
        ["visible"] = false,
        ["groupId"] = unitId,
        ["tasks"] = {},
        ["hidden"] = false,
        ["units"] = addEjectedPilotUnit(unitId, location),
        ["name"] = "CSARunit- "..unitId,
    }

    coalition.addGroup(country.id[country], Group.Category.GROUND, data)
    -- timer.scheduleFunction(SignalPosition, { [1] = location }, timer.getTime() + 1)
    
end


Quand on fait un addMan(location, "RUSSIA"), ça va te créer un groupe qui contient une unité de type Paratrooper AKS-74 à l'endroit que tu veux,

donc en gros il faut que tu appelles un:

addMan(getLocationInSector(origin, 3, radiale), "RUSSIA");

pour générer un fantassin à 3m et sur la radiale par rapport à l'origin.... l'origin étant la location du mortar. Pour calculer la bonne radiale, il va falloir que tu fasses un petit calcul pour avoir la radiale de la position de l'hélico par rapport au mortar.... histoire que les bonhommes soient entre l'hélico et le mortier.


On remarquera également que si jamais tu fais l'appel:


addMan(getRandomLocationInPrefixedZones("csar"), "RUSSIA");

Ca va te générer un fantassin russe situé dans une position aléatoire parmi l'ensemble des zones définies dans la mission et dont le nom commence par "csar".

En gros, tu définies plein de zones dans toutes vallées de montagne en les appellant "csar01", "csar02", etc.... en faisant gaffe que l'hélico peut se poser dans chacune d'elles (terrain plat, pas de foret), et tu peux rejouer ta mission autant de fois que tu veux, ton bonhomme ne sera jamais au même endroit.

2 détails:

chaque unité générée doit avoir un nom unique, sinon l'unité qui portait le même nom est dégagée. J'utilise donc une fonction getGenerationId() qui me donne un numéro unique que j'utilise dans mes noms, comme ça je suis sûr qu'il n'y a pas collision.

Il te faut donc ma fonction également et son compteur:

CODE

generatedUnitsNb = 100
function getGenerationId()
    generatedUnitsNb = generatedUnitsNb + 1
    return generatedUnitsNb
end


Et j'ai commenté -- timer.scheduleFunction(SignalPosition, { [1] = location }, timer.getTime() + 1),

c'est ma fonction qui tire une fusée si une unité rentre dans une zone de 5km centrée autours de la position du fantassin.



gillesdrone
Cool merci je regarde ça wink.gif
gillesdrone
il faut avoir Mist d'installé je pense
Galevsky
ah oui, en version 3 tant qu'a faire, mais ça marche avec la 2.(enfin installé.... inclus dans la mission disons plutôt !)
Azrayen'
Hello

Jamais utilisé de script. Besoin d'une explication rapide (je comprends le principe, juste les spécifiques de DCS : fichier à télécharger ? où le mettre ? comment appeler les fonctions apportées ?) pour une mission en cours de prépa.

Si un bonne âme, merci smile.gif
Sinon, j'irais creuser ce qui est fourni sur le lien du post #1.

++
Az'
Raiden
Une petite page sur le wiki dans la section création de mission serait top thumbsup.gif

Bien à vous,
gillesdrone
dans mon espace /public/Gillesdrone/CTTS tu trouveras des exemples de mission ET un Tuto wink.gif

ces scripts n'utilisent pas Mist
Azrayen'
Merci Gilles, tuto très clair smile.gif
J'essaye et te ferais un retour.
C'est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.