Discord a écrit : ↑08 mai 2021, 14:43
à quand un sujet : "le scripting pour les nuls" ? ça ne serait pas du luxe !
Et en francais
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 15:06
par Alleluia
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 15:06
par Mexmarsouin
Perso, j'utilisais le langage sqf pour Arma 3, d'après ce que j'ai ouïe dire, ça pourrait m'aider pour le lua.
Ceci dit, j'avais pas pensé à Moose, je vais me pencher dessus avant de re-créer la roue...
@Voltage, OK, je savais pas, merci pour l'info, je vais tester cela, ce sera peut être encore plus simple .
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 15:47
par Biluf
Nan désolé y a pas en Français.
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 16:43
par Discord
je suis en train de regarder sa première vidéo tuto, et il y a déjà des trucs qui ne sont pas clairs pour moi (ou, plutôt, dont je ne comprend pas la logique) : pour spawn un tank, il met un tank en activation retardée, appelle le groupe "tank" et l'unité "tank", et il utilise la ligne Tank = SPAWN:new("tank"). Si l'unité avait été nommée "Patrick" et le groupe "baston", comment aurait-il fallu taper la ligne ? (en fait, j'aimerais savoir ce qui permet à la bécane de comprendre que c'est le tank "Patrick" qu'il faut spawner, et pas le "Jean-Luc" ou l'hélico "François").
Plus tard, il parle de TankGroup = tank:spawn, qu'est-ce que le Tankroup représente pour la bécane ?
-- Définition du groupe Convoi (Nom du groupe dans l'EM)
local GroupConvoi = GROUP:FindByName("Convoi")
-- Définition du groupe "Modèle" de l'infanterie (Nom du groupe dans l'EM)
local Infantery = GROUP:FindByName("Infantery")
-- Tableau où on stockera si telle ou telle camion a déjà fait sortir son infanterie (pour ne pas spawn à l'infini)
TabConvoiUnits = {}
-- Scheduler, tourne toutes les 10 secondes
SCHEDULER:New( nil,
function ()
-- On récupère les camions qui sont dans le convoi
local ConvoiUnits = GroupConvoi:GetUnits()
-- Pour chaque camion du convoi on fait l'opération ci-dessous
for UnitID, ConvoiUnit in pairs( ConvoiUnits ) do
-- Définition de la zone autour du camion
local UnitZone = ZONE_UNIT:New("UnitZone", ConvoiUnit, 20)
-- Récupération de la vitesse du camion
local UnitSpeed = ConvoiUnit:GetVelocityKMH()
-- Récupération du nom du camion, ça nous sera utile pour "nommer" chaque infanterie qui en sort
local UnitName = ConvoiUnit:GetName()
local SpawnName = UnitName .. "_Infantery"
-- Si la vitesse du Camion est égale à 0 Km/h
if UnitSpeed == 0 then
-- Et que l'infantery n'est pas déjà sortie du camion, alors on la fait sortir autour du camion
if TabConvoiUnits[UnitName] == false then
SPAWN:NewWithAlias("Infantery", SpawnName):SpawnInZone(UnitZone, true)
-- On indique dans la tableau que l'infanterie du camion est sortie
TabConvoiUnits[UnitName] = true
end
-- Sinon, on rentre l'infantery en la cherchant par le nom qu'on lui a donné
else
local GroupSet = SET_GROUP:New():FilterPrefixes(SpawnName):FilterActive():FilterStart()
GroupSet:ForEachGroupAlive(
function (group)
group:Destroy()
end
)
-- On indique dans la tableau que l'infanterie du camion est rentrée
TabConvoiUnits[UnitName] = false
end
end
end, {}, 1, 10
)
Tank c'est la variable du script dans laquelle sera enregistré l'objet spawné
"tank" c'est le nom du groupe dans l'Editeur de Mission.
Tu ne peux faire spawn que des groupes ou des statics, jamais d'unité seule. https://flightcontrol-master.github.io/ ... Spawn.html
Le Lua étant sensible à la casse, une variable nommé toto sera différente d'une variable nommée Toto
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:12
par Discord
ok, là c'est clair (je crois).
donc pour faire spawner Patrick, du groupe Baston, la ligne aurait pu être écrite :
je_spawn_un_tank = Spawn:new("Baston")
c'est ça ?
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:17
par Biluf
Oui mais attention à la casse, c'est très important :
je_spawn_un_tank = SPAWN:New("Baston")
Aussi quand on fais des scripts, il faut toujours avoir à côté les logs de DCS pour voir s'il n'y a pas d'erreur. A partir du moment où t'as une erreur, tout le script s'arrête. C'est d'ailleurs pour ça que les missions scriptées ne foirent jamais, parce qu’on a déjà éliminé toutes les erreurs possibles ^^.
Je conseille d'utiliser un parseur de log comme LogExpert pour surveiller le log DCS. C'est vital pour ne pas passer 15 ans à essayer de comprendre pourquoi le script ne fonctionne pas.
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:19
par Discord
un log ?
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:21
par Biluf
C:\Users\<User>\Saved Games\DCS\Logs\dcs.log
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:22
par Discord
oui mais ça sert à quoi ?
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:24
par Biluf
Ben ouvre le, c'est là que ça balance tout ce que fais DCS
Re: Question diverse éditeur de mission
Publié : 08 mai 2021, 17:29
par Discord
ok, je suppose que, lorsque tu lance ton script et qu'il foire, ça va te faire une ligne warning à "l'endroit"/au moment où le script a foiré ?