[ATME], remarques, bugs ou commentaires - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 05-22-2018, 08:23 AM   #1
sunski34
Member
 
Join Date: Mar 2015
Location: France - Montpellier
Posts: 585
Default [ATME], remarques, bugs ou commentaires

Bonjour à tous,

je crée ce jour ce thread qui regroupera l'ensemble des remontées utilisateurs, bugs, remarques ou demandes d'aide.

Enjoy ATME
Sunski34
sunski34 is offline   Reply With Quote
Old 05-23-2018, 09:09 PM   #2
guimcdo
Junior Member
 
Join Date: Oct 2016
Location: France - Toulouse
Posts: 56
Default

Cas 1: relance d'un ravitailleur après atterrissage pour cause de carburant

J'ai vu un post qui propose un script très complet pour faire un respawn d'un tanker, trop compliqué et pas forcement justifié à mes yeux.

Avec MIST, la fonction mist.respawngroup('mygroup', true) permet de relancer ce fameux tanker après atterrissage.

1) Y a t il une fonction ATME similaire à ce respawn?
2) La problématique est le déclenchement de cette fonction, qui se trouve dans l'action du déclencheur (Do script). Aujourd'hui, je suis obligé de bidouiller plusieurs conditions (vitesse < 2 kts et temps > 120 secondes) mais ce n'est pas propre. Est il possible, via le lua predicate, de détecter un évènement, du type engine shut down pour le groupe/unité en question?

Merci, pas sûre que mes question relève d'ATME ...
guimcdo is offline   Reply With Quote
Old 05-24-2018, 05:35 AM   #3
sunski34
Member
 
Join Date: Mar 2015
Location: France - Montpellier
Posts: 585
Default

Salut,

effectivement, je ne répondrai ni sur MIST ni sur l'utilisation d'un predicate car ce n'est pas lié à ATME.

Pour ce qui est du respawn après parking dans ATME, il n'y a pas de fonction à proprement parler qui fasse tout.

Par contre , tu vas trouver dans "Other examples.zip" (dispo en téléchargement) une mission avec le fichier lua qui va bien qui déclenche une destruction et un auto respawn à partir d'un menu. Il s'agit de ATME_direct_menu_spawn_destroy.lua.

Regarde lignes 35 à 40, copyPlane0 est le nom du groupe, ici celui de ton tanker.

Code:
local group = ATME.C_Group.getByName("copyPlane0")
group:setAutoRespawn()
if group ~= nil then
	-- If exists, disable group ...
	group:disable()
end
Je vois d'ailleurs un petite coquille dans mon exemple car group peut etre nil et donc group:setAutoRespawn peut engendrer une erreur, il faut que cette ligne soit dans le test if group ~= nil.

Ceci étant, on fixe un autorespawn (dans ce cas, le groupe est regénéré automatiquement à sa destruction), tu peux même passer un paramètre de temps de regénération voir ligne 18 :

Code:
group:setAutoRespawn("RANDOM 1 00:00:04")
Ici on attend entre 1 et 4 secondes avant l'auto respawn, voir doc pour plus de détail.

En ensuite, on detruit le groupe inutile par disable

Pour déclencher ce traitement, tu peux te baser sur l'atterrisage du tanker avec onLandingAIUnitHandler ou effectivement onEngineStopAIUnitHandler de la classe ATME.C_Module, voir dans le doc p207 pour les paramètres acceptés par ces fonctions.

si on reprend l'exemple, tu verras lignes 109 à 134 la définition des handlers, il faut associer une fonction conforme aux paramétres attendus à l'entrée équivalente (en gras ci dessous, remplacer le nil par ta fonction avec les bons paramètres), tu peux t'inspirer de onSpawn par exemple.

Code:
local newHandlers = {
		onCreatePlayerHandler = onCreatePlayer,
		onDeletePlayerHandler = nil,
		onUpdatePlayerHandler = onUpdatePlayer,
		onTakeoffPlayerHandler = nil,
		onLandingPlayerHandler = nil,
		onStartEnginePlayerHandler = nil,
		onStopEnginePlayerHandler = nil,
		
		onCreateAIUnitHandler = nil,
		onDeleteAIUnitHandler = nil,
		onDisableAIUnitHandler = nil,
		onTakeoffAIUnitHandler = nil,
		onLandingAIUnitHandler = nil,
		onStartEngineAIUnitHandler = nil,
		onStopEngineAIUnitHandler = nil,
		
		onCreateGroupHandler = nil,
		onSpawnGroupHandler = onSpawn,
		onDeleteGroupHandler = nil,
		onDisableGroupHandler = nil,
		
		onCreateStaticObjectHandler = nil,
		onDeleteStaticObjectHandler = nil,
	
		onTimerHandler = nil,
		onModuleStartHandler = onStart,
	}
Enfin, si tu veux que ton tanker soit regénéré aussi après destruction, il te faut mettre le group:setAutoRespawn dans le handler onCreateGroupHandler, en testant le nom du groupe bien sur pour faire l'action.

Conclusion : Se fait en 5 lignes de code dans ATME. Après tu peux améliorer en ajoutant une alarme pour lancer ce traitement après un certain temps ce qui laisserait le temps (voir pour celà les exemples dans "Manual examples" traitant des alarmes). Ca rajoute une ligne et une fonction. Tu as un readme des exemples dans "Manual Examples.zip". Attention cependant, il faudra vérifier qu'après l'arrêt moteur, le groupe est toujours actif dans DCS, il me semble qu'il est remplacé par un statique. Si c'est le cas, il faudra utiliser une autre méthode un peu plus compliquée, ou bien faire l'action immédiatement sans délai si fait sur arrêt moteur.

Enjoy ATME
Sunski

Last edited by sunski34; 05-24-2018 at 12:38 PM.
sunski34 is offline   Reply With Quote
Old 05-25-2018, 08:34 PM   #4
guimcdo
Junior Member
 
Join Date: Oct 2016
Location: France - Toulouse
Posts: 56
Default

Merci pour ta réponse hyper détaillée Sunski, je vais digérer ça piti à piti

Par contre, ta réponse m'éclaire sur un autre point qui n'a rien à voir, c'est que le LUA Predicate n'est capable d'interpréter que le script engine de DCS, et non pas des scripts chargés via un fichier tiers.

++
Loulou

Last edited by guimcdo; 05-25-2018 at 08:41 PM.
guimcdo is offline   Reply With Quote
Old 05-26-2018, 04:52 AM   #5
sunski34
Member
 
Join Date: Mar 2015
Location: France - Montpellier
Posts: 585
Default

Salut,

pour le prédicate, il était buggé en 1.5, donc j'avoue qu'à ce stade je n'ai pas creusé. Cependant, j'ai tendance à penser que le fonctionnement est identique au lancement d'un script dans un trigger (je parle d'un script direct et non d'un fichier script).

Aussi, si tu as des variables ou des fonctions globales, je pense que ca devrait marcher avec les prédicates, mais c'est à vérifier.

A+
sunski34 is offline   Reply With Quote
Old 06-03-2018, 06:13 PM   #6
ickyline
Junior Member
 
Join Date: Jan 2016
Posts: 54
Default

Salut,

J'aurais aimé savoir si il était possible d'avoir un petit coup de main pour l'édition de mission.
Je cherche depuis un moment comment réaliser un radio menu complexe, je l'ai déjà mis en place avec l'éditeur DCS mais dans l'éditeur ça devient vite un bordel monstre et faire répeter des triggers pour activer et désactiver devient laborieux.

Je compte donc me tourner vers ATME pour faire ma mission.
Cette mission est une mission d'entrainement pour mon escadrille.
Nous avons besoin de pouvoir "lancer différentes actions, qui lanceront a leurs tours des missions de manière aléatoire".

Exemple:
Le client 1 se connecte, DCS le détecte client 1 zone 1, après 10 sec il active un menu radio composé de :

Ouvrir un plan de vol
Ouvrir une mission AA
Ouvrir une mission AG
Ouvrir une mission MULTIROLE
ETC...

Si je sélectionne "ouvrir un plan de vol" DCS supprime les précédent menu radio et les remplace par :
Plan de vol court
Plan de vol moyen
Plan de vol long

Si je sélectionne "plan de vol moyen" DCS doit alors choisir aléatoirement un plan de vol sur 10 pré enregistré. Il renvera donc un message au joueur qui a demandé le plan de vol un message type :

Plan de vol n°123456 chargé, veuillez consulter le navlog n°4525
Le joueur devra alors ouvrir les documents en question (imprimé) ou se trouve tout les points de navigation en LAT et LONG pour les insérés manuellement.

Une fois que DCS à renvoyer le message il faut qu'il retourne dans son état d'origine (Donc les options de départ) :

Ouvrir un plan de vol
Ouvrir une mission AA
Ouvrir une mission AG
Ouvrir une mission MULTIROLE
ETC...

Tout cela doit être géré au cas par cas, afin que chaque pilote puisse disposer de la possibilité de pratiquer des tâches totalement différente.

Le hick c'est que je ne suis pas bon du tout en proggramation et j'ai bcp de mal à comprendre le fonctionnement. Serait il possible que vous me mettiez sur la piste afin que je puisse essayer de comprendre la logique?

Merci
ickyline is offline   Reply With Quote
Old 06-04-2018, 08:54 AM   #7
sunski34
Member
 
Join Date: Mar 2015
Location: France - Montpellier
Posts: 585
Default

Salut,

tu t'attaques à un gros morceau là...

Le plus compliqué va être de créer toutes les données en lua pour gérer tes cas.
Pour avoir un code simple, il faut prédéfinir les menus etc... avec des fonctions. J'ai déjà fait ce type de mission notamment pour de l'entrainement AA avec des bandits de différentes configurations.

Par ailleurs qu'entends tu par plans de vol? Utilises tu des WPs ? Si oui, pour l'instant, il n'est pas possible de changer les WP une fois dans l'avion comme on peut le faire pour une AI. En fait, je n'ai pas testé, je regarderai ce que ca donne et si ca marche je l'autoriserai mais je n'ai aucune certitude à cette heure.

En dehors de ce point, ce n'est pas insurmontable, mais ca demande un peu d'apprentissage, je pense que pour débuter tu vises haut.


Il vaut mieux commencer par créer des choses simples en lua pour comprendre les bases, ensuite tu pourras te lancer dans des missions plus complexes.

Tu dois comprendre le code de la mission d'entrainement A/A pour comprendre le fonctionnement de ce type d'approche. En multi avec des triggers, je pense que c'est abominable... C'est d'ailleurs pour celà que j'ai créé ATME, j'avais les mêmes soucis, mais je maitrise le code informatique.

Je peux t'aider, bien sur, mais il faut que tu avances étape par étape. Aussi, prends les exemples "Manual examples" pour voir comment créer un menus, un timer etc....

Une fois compris, vois alors cette mission d'entrainement AI. Si tu as des incompréhensions sur le code de cette mission, je pourrai te le détailler, voir si tu veux échanger via discord why not mais je ne suis dispo que les WE pour te faire un petit cours en attendant que je fasse mes vidéos de formations...

Vois aussi avec snowsniper ici sur le forum, il a fait un module intermédiaire qui gère déjà pas mal de trucs avec une notion de mini missions à l'intérieur d'une mission. C'est un module générique ATME qui peut te simplfier la vie sur un projet comme ca. Mais je ne sais pas s'il l'a déjà publié meme si les derniers tests étaient concluants

Bon courage

Last edited by sunski34; 06-04-2018 at 08:58 AM.
sunski34 is offline   Reply With Quote
Old 06-04-2018, 05:45 PM   #8
ickyline
Junior Member
 
Join Date: Jan 2016
Posts: 54
Default

Quote:
Originally Posted by sunski34 View Post
Salut,

tu t'attaques à un gros morceau là...

Le plus compliqué va être de créer toutes les données en lua pour gérer tes cas.
Pour avoir un code simple, il faut prédéfinir les menus etc... avec des fonctions. J'ai déjà fait ce type de mission notamment pour de l'entrainement AA avec des bandits de différentes configurations.

Par ailleurs qu'entends tu par plans de vol? Utilises tu des WPs ? Si oui, pour l'instant, il n'est pas possible de changer les WP une fois dans l'avion comme on peut le faire pour une AI. En fait, je n'ai pas testé, je regarderai ce que ca donne et si ca marche je l'autoriserai mais je n'ai aucune certitude à cette heure.

En dehors de ce point, ce n'est pas insurmontable, mais ca demande un peu d'apprentissage, je pense que pour débuter tu vises haut.


Il vaut mieux commencer par créer des choses simples en lua pour comprendre les bases, ensuite tu pourras te lancer dans des missions plus complexes.

Tu dois comprendre le code de la mission d'entrainement A/A pour comprendre le fonctionnement de ce type d'approche. En multi avec des triggers, je pense que c'est abominable... C'est d'ailleurs pour celà que j'ai créé ATME, j'avais les mêmes soucis, mais je maitrise le code informatique.

Je peux t'aider, bien sur, mais il faut que tu avances étape par étape. Aussi, prends les exemples "Manual examples" pour voir comment créer un menus, un timer etc....

Une fois compris, vois alors cette mission d'entrainement AI. Si tu as des incompréhensions sur le code de cette mission, je pourrai te le détailler, voir si tu veux échanger via discord why not mais je ne suis dispo que les WE pour te faire un petit cours en attendant que je fasse mes vidéos de formations...

Vois aussi avec snowsniper ici sur le forum, il a fait un module intermédiaire qui gère déjà pas mal de trucs avec une notion de mini missions à l'intérieur d'une mission. C'est un module générique ATME qui peut te simplfier la vie sur un projet comme ca. Mais je ne sais pas s'il l'a déjà publié meme si les derniers tests étaient concluants

Bon courage
Hello, merci pour ta réponse
Oui c'est un gros morceaux :p mais je sais pas pourquoi je ne sais jamais faire les choses simplement hahaha.

Merci pour les infos, je vais me pencher sur le code de base afin d'en comprendre les tenant et aboutissants, par contre effectivement je peux déjà prédire que je vais certainement te poser plusieurs question héhé.

Pour ce qui est des plans de vol effectivement il n'est pas possible d'en créé plusieurs et de les chargés en fonction de ce que l'on veut, c'est pour cela qu'en fait j'ai juste créé de faux plan de vol avec d'autres avions, j'ai relevé les coordonées que j'ai immédiatement collée sur un NAVLOG que nos pilotes télécharge et lise pour insérer les coordonnées lors du démarrages de l'avion. C'est le seul moyen pour faire ce que je voulais faire. Donc en résumé plutôt que de chargé un plan de vol, il "simule" une recherche dans la base de données en affichant des messages du genre ("Chargement du plan de vol", 3 sec après "10 plans de vols trouvés", 2 sec après, "Plan de vol chargé, consulté le fichier NAVLOG N°Blablabla") Dès lors les pilotes ouvrent leurs fichiers en question et recopie les informations dans l'avion.
ickyline is offline   Reply With Quote
Old 06-09-2018, 09:32 AM   #9
snowsniper
Member
 
snowsniper's Avatar
 
Join Date: Sep 2014
Location: France Oise Blacourt
Posts: 615
Default

interressant. il te faut par exemple une AI defini dans le ME avec 1 plan de vol par AI.
les rendre eventuellement invisible
avec ATME tu recupere les données de WP de ces AI , selon la mini mission selectionnée ou active
une mini mission 01 = datas de WP associée à l'AI 01
tu fais de ces datas une variable txt avec une pagination lisible
et tu l'affiches sur demande avec une gestion de menus , pour donner les bonne consignes à tes joueurs

après plus complexe
tu peux utiliser des conditions scriptée etape par etape linéaires selon le mini scenario en cours.( c'est tout le principe de ce que j'ai essayé de faire et que sunski a evoqué )
la question est de savoir si chacun gere l'objectif etape par etape de SON scenario dans une mission commune ou si les conditions (par exemple point de passage), doivent être validés par tous ceux qui ont selectionné cette mini mission.( notion de COOP possible grace à ATME quelque soit le nb de joueurs et d'appareil )
mais le principe de mon module sur base ATME c'est justement de permettre ces choix etapes par etapes pour chaque mini scenario dispo à la selection dans la même mission ( condition solo ou coop )

n'hésites pas à me contacter que je retrouve éventuellement un exemple propre proche de ce que tu veux faire (...ou pas selon l'idée que tu as déjà en tête ;-) ou alors je te partage la trame vierge. d'ailleur c'est une bonne idée que de mettre à dispo cette trame generique à qui veut l'utiliser je vais essayer d'y reconsacrer un peu de temps pour le mettre au propre et ajouter des commentaires exploitable à l'utilisation.

mais comme indiqué par SUN il serait raisonnable de te faire les dents sur les exemples de base d'abord même si ATME est plutôt intuitif (même pour un luanoob que j'étais).

@+
__________________

all my skins :

here
Spoiler:
Core i7-4790 @ 3.6GHz - 16GB
- nVidia GTX 970 - 2xSSD -
GRANDIN TV screen 39" in 1920x1080 cockpit scale 1:1
- MS FFB2 Joystick
- DIY MIDI Throttle with 14 analogic sliders and knobs
- Saitek Pro Flight Rudder Pedals
snowsniper is offline   Reply With Quote
Old 06-11-2018, 04:35 PM   #10
ickyline
Junior Member
 
Join Date: Jan 2016
Posts: 54
Default

Salut, merci pour vos réponses

Comme recommandé j'ai donc commencé à jouer avec le code lua etc pour faire mes essais.

Mais je rencontre déjà un problème sur mon premier test.

Je me suis servis du code dans le modul HelloWorld pour faire mes premiers essai de chargement du script etc.

Mais je reçois alors un message d'erreur lorsque je prend place dans un avion.

"[ATME] Error in script lua (out of a module lua file)
At line 41 - Constructor ATME.C_Module(name, handlers, debugSwitch)
-> name type must be string

ATME STOPPED

stack traceback:
[string
C:Users\...\AppData\Local\Temp\DCS.openbetaV mis00001739']:41: in main chunk"

Voici le code que j'ai utilisé :
Code:
-- Advanced  Tools for Mission Editor - ATME V1.30
-- December 2017

-- Part 1 : Module declarations - Name and specific module variable
local thisModule
local moduleName = "LCG_START"

-- Part 2 : Module variables and functions
local function onCreatePlayer(player)
    player:display("Hello World ... " .. player:getPseudo(), 10)
end


-- Part 3 : MAIN function for module initialisation
do
    local newHandlers = {
        onCreatePlayerHandler = onCreatePlayer,
        onDeletePlayerHandler = nil,
        onUpdatePlayerHandler = nil,
        onTakeoffPlayerHandler = nil,
        onLandingPlayerHandler = nil,
        onStartEnginePlayerHandler = nil,
        onStopEnginePlayerHandler = nil,
        
        onCreateAIUnitHandler = nil,
        onDeleteAIUnitHandler = nil,
        onTakeoffAIUnitHandler = nil,
        onLandingAIUnitHandler = nil,
        onStartEngineAIUnitHandler = nil,
        onStopEngineAIUnitHandler = nil,
        
        onCreateGroupHandler = nil,
		onSpawnGroupHandler = nil,
        onDeleteGroupHandler = nil,
        
        onCreateStaticObjectHandler = nil,
        onDeleteStaticObjectHandler = nil,
    
        onTimerHandler = nil,
        onModuleStartHandler = nil,
    }
        
    thisModule = ATME.C_Module(moduleName, newHandlers, true)
end
Une petite idée et explication?

Désolé mais comme je le disait j suis pas vraiment doué en programmation lol
ickyline is offline   Reply With Quote
Reply

Tags
atme script lua editeur

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 10:31 PM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.