Question diverse éditeur de mission

Tutos et entraide sur la création de missions DCS
Avatar de l’utilisateur
Voltage29
Officier
Messages : 2169
Inscription : 27 mars 2018, 20:45

Spécialité :

Re: Question diverse éditeur de mission

#136

Message par Voltage29 »

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
Avatar de l’utilisateur
Alleluia
Membre
Messages : 1458
Inscription : 10 nov. 2016, 05:43

Spécialité :

Re: Question diverse éditeur de mission

#137

Message par Alleluia »

Mexmarsouin
Officier
Messages : 2531
Inscription : 12 avr. 2019, 21:30

Spécialité :

Re: Question diverse éditeur de mission

#138

Message 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 ;).
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#139

Message par Biluf »



Nan désolé y a pas en Français.
Avatar de l’utilisateur
Discord
Réserviste
Messages : 1440
Inscription : 29 juin 2019, 14:47

Re: Question diverse éditeur de mission

#140

Message 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 ?
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#141

Message par Biluf »

J'ai fait un tuto sur les Spawn MOOSE déjà viewtopic.php?f=132&t=4123
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#142

Message par Biluf »

@Mexmarsouin : J'ai fait un POC :) Ça marche, c'est un peu brut de pomme mais ça fonctionne


POC.jpg

Code : Tout sélectionner

-- 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
)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#143

Message par Biluf »

@Discord

Code : Tout sélectionner

Tank = SPAWN:new("tank")
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
Avatar de l’utilisateur
Discord
Réserviste
Messages : 1440
Inscription : 29 juin 2019, 14:47

Re: Question diverse éditeur de mission

#144

Message 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 ?
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#145

Message 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.
Avatar de l’utilisateur
Discord
Réserviste
Messages : 1440
Inscription : 29 juin 2019, 14:47

Re: Question diverse éditeur de mission

#146

Message par Discord »

un log ?
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#147

Message par Biluf »

C:\Users\<User>\Saved Games\DCS\Logs\dcs.log
Avatar de l’utilisateur
Discord
Réserviste
Messages : 1440
Inscription : 29 juin 2019, 14:47

Re: Question diverse éditeur de mission

#148

Message par Discord »

oui mais ça sert à quoi ?
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: Question diverse éditeur de mission

#149

Message par Biluf »

Ben ouvre le, c'est là que ça balance tout ce que fais DCS
Avatar de l’utilisateur
Discord
Réserviste
Messages : 1440
Inscription : 29 juin 2019, 14:47

Re: Question diverse éditeur de mission

#150

Message 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é ?
Répondre