CougarFFW04 Posted January 15, 2019 Posted January 15, 2019 Hello, Comme j'envisage de basculer mes fonctionnalité Mist vers du ATME pour éviter de mixer les choses je me demandais s'il existe avec ATME des fonctions équivalente aux fonctionnalités Mist: - mist.scheduleFunction - mist.respawnGroup J'ai regardé vite fait mais je n'ai pas trouvé mais fort possible que j'ai pu raté ca dans la doc assez touffue... Merci
sunski34 Posted January 17, 2019 Posted January 17, 2019 Bonjour, concernant le spawn simple ou multiple, ainsi que l'auto respawn celà existe dans ATME pour les AI. Pour ce qui est du scheduling, ATME dispose qu'une classe alarme qui permet le déclenchement d'événement, le timing est à la seconde. Une alarme peut etre réarmée autant de fois que nécessaire. Je profite de ce mail pour indiquer que la version 1.46 est en cours de finalisation et apportera encore plus de stabilté. A+ Sunski
CougarFFW04 Posted January 18, 2019 Author Posted January 18, 2019 Bonjour, Pour ce qui est du scheduling, ATME dispose qu'une classe alarme qui permet le déclenchement d'événement, le timing est à la seconde. Une alarme peut etre réarmée autant de fois que nécessaire. Ca a l'air de correspondre effectivement a ce que je recherche. Merci. Bonjour, concernant le spawn simple ou multiple, ainsi que l'auto respawn celà existe dans ATME pour les AI. Par contre pour ca peux-tu STP me donner un peu plus de détail... Ce que je veux faire c'est simplement respawner un groupe à l'identique mais en regardant la doc a priori les fonctionnalités que j'ai trouvées permettent de faire une duplication mais ce n'est pas ce que je veux. Merci
sunski34 Posted January 19, 2019 Posted January 19, 2019 (edited) Cloning Il est tout à fait possible de cloner un groupe en multiple version, il faut utiliser la classe C_CloningContext. Deux possibilités, le faire avec des données directement dans le lua c'est plus compliqué car ce sont les tables DCS. Ou plus simple cloner un groupe existant, dans le cas ci dessous son nom est "source" et le groupe cloné s'appelle "dest". Si tu spawn plusieurs fois tu auras "dest #001" "dest #002" etc.... Dans l'exemple je mets une route spécifique. Pour avoir le même route que le groupe initial, il suffit de ne pas mettre de paramètre à la fonction spawn. Tu peux aussi créer des routes diverses donc avec cette classe C_Route. local cloningContext = ATME.C_CloningContext("source", "dest") if cloningContext ~= nil then local route = ATME.C_Route("GROUND") route:addAbsoluteWaypoint("spawnZone", 0) route:addInitialWaypointsFrom("source", 1) cloningContext:spawn(route) end ATTENTION : A partir de la V1.46 à venir, le onSpawnGroupHandler n'existera plus mais tu pourras ajouter une callback qui sera executée lors du spawn après le onCreateGroupHandler s'il existe : local cloningContext = ATME.C_CloningContext("source", "dest") if cloningContext ~= nil then local route = ATME.C_Route("GROUND") route:addAbsoluteWaypoint("spawnZone", 0) route:addInitialWaypointsFrom("source", 1) cloningContext:addSpawnCallback(mySpawnCallback) cloningContext:spawn(route) end et la fonction callback est de type : local function mySpawnCallback(context, group) -- Callback de spawn pour mon contexte cloningContext que l'on récupère dans context -- Le groupe spawné est récupéré dans group. ATME.displayForAll("New group " .. group:getName() .. " is spawned from intitial group : " .. context:getGroupName(), 5) end Edited January 19, 2019 by sunski34
sunski34 Posted January 19, 2019 Posted January 19, 2019 (edited) en complément, dans l'exemple, le nouveau groupe est spawnné dans une zone DCS nommée "spawnZone". Le positionnement dans cette zone est aléatoire. Après, à partir du waypoint 1, c'est la route du groupe "source" qui sera donc suivie elle aussi à partir du waypoint 1. Edited January 19, 2019 by sunski34
sunski34 Posted January 19, 2019 Posted January 19, 2019 J'oubliai : tu peux aussi créer plusieurs groupes identiques avec un délai entre chaque et une quantité définie. C'est la fonction setAutoRepeatSpawn(qté, période) dans la classe C_CloningContext. La période peut etre fixe ou aléatoire avec un min/max en secondes, voir la doc.
CougarFFW04 Posted January 19, 2019 Author Posted January 19, 2019 (edited) Hello, Merci pour les infos. Nickel pour les alarmes via le callback Maintenant concernant le respawn je vais essayer mais je crois qu'on ne s'est pas compris... Je ne veux PAS cloner. Je m'explique : - imaginons que j'ai un vol nommé "TOTO". - A un moment donné il part faire son taf et il revient, atterri. - Je détecte son atterrissage et après un certain delai (le temps de le laisser retourner tranquillement au parking) je veux simplement le re-spawner à l'identique. Donc je ne veux pas faire un clone "TITI" (ou autre) mais je veux simplement retrouver mon TOTO à l'identique et après je me charge de lui faire faire ce que j'ai envie. Dans ton explication possible que si je met "source" et "dest" identique j'obtiendrais effectivement ce que je veux mais je veux être sur que je ne rajoute pas une "nouveau" groupe. Après c'est peut-être finalement ce que fait DCS mais comme je n'en connais pas les rouages c'est pas clair pour moi si ce que tu proposes est exactement ce que je veux et ce que je faisais avec la fonction Mist indiquée... Sinon possible que l'auto-respawn soit effectivement ce que je veux. Je veux tester... Dernière question qu'est ce que la doc de setAutoRespawn entend par désactivation (et activation) ? Ca veut dire quoi concrètement dans DCS ? Le groupe n'existe plus et il disparait (apparait) ? J'attends tes précisions, Merci Edit1: Bon je fais un peu les question réponse :) Donc il semblerait que la fonction setAutoRespawn soit ce que je cherche mais il subsiste un problème c'est que l'autorespawn suppose que le groupe soit détruit ou désactivé. Dans mon cas (en tout cas pour mes test actuellement) comme je ne souhaite pas attendre la destruction il me faut donc le désactiver. Le problème c'est que je trouve bien une fonction activate mais pas la fonction pour désactiver et apparemment disable ne fait pas non plus l'affaire... Donc jusqu’à en savoir plus je vais rester avec mes fonctions Mist qui font leur taf Edit2 : malheureusement le onSpawnGroupHandler ne semble pas détecter lorsque les vols sont remis en place via la fonction mist.respawnGroup... Donc bloqué pour l'instant :( Edited January 19, 2019 by CougarFFW04
snowsniper Posted January 19, 2019 Posted January 19, 2019 (edited) pour un objet de classe Group ou AiUnit :disable() fonctionne pour désactiver faire disparaitre de DCS ton avion. " je veux simplement le re-spawner à l'identique" --> au point de départ du plan de vol ou il repart de là où il vient d'atterir ? si il repart du point de départ c'est mieux de faire un respawn ( duplication d'un modèle que tu peux mettre en invisible ) et detruire disable celui qui vient d'atterir. je pense que c'est ce que fait mist aussi a priori. ce n'est pas le même avion qui se téléporte lol. si tu veux que ce soit celui qui vient d'atterir qui repart en vol alors il faut lui affecter une nouvelle route, et des nouvelles taches : dans ce cas il faut que tu explore les set task pour de nouvelles actions et surtout set route pour refaire un nouveau plan de vol une fois atterit, ce qui permettra de réaffecter des chose à faire au meme objet group bonne découverte ;-) ...et bonne recherche je regarde de mon coté et je te mets les bonnes page de la doc en edit de ce post. : essenciellement : documentes toi dans la doc V146fr sur classe ATME.C_Task et tu fais une recherche sur "task" pour voir toutes les possibilités dans ton pdf reader ( il y a des liens clickables pour en haut de chaque page pour retourner rapidement au sommaire général ou au sommaire de la class en cours ) et surtout tu lis la page dans la classe ATME.C_Group : Object:setRoute / Object:setTask il y a aussi des exemples exploitable pour le setRoute, dans les missions exemples "autres exemples" Edited January 19, 2019 by snowsniper i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
snowsniper Posted January 19, 2019 Posted January 19, 2019 (edited) le plus simple dans le Mission Editor tu fais un TOTO Group que tu met en"activate later." il sera non visible dans la mission et va te servir de modele tu cree ton cloning_context avec comme modele de group TOTO, tu fais pour que le clone réutilise exactement la même route que le modèle et le même point de départ ( ou tu en redefinies un autre ) tu spawn le clone que l'on nomerra TITI, et qui aura exactement les même caractéritiques et emports. une fois TITI atterit, sur l'evenement handler onStopEngineAIUnitHandler ( au parking il eteint ses moteurs normalement ) tu fais un TITI:disable() et tu respawn TITIN°2 etc etc tu peux le faire avec l'autorespawn. et si tu veux pouvoir lui faire faire des choses particulière quelque soit le nombre / nom de l'avion spawné ( parce que le nom est indexé à chaque spawn) , le plus simple est de stocker dans une variable tampon propre au module, l'objet Aiunit ou Group que tu viens de spawner ATME.module[modulename].avionencours = Aiunit ou Cgroup à chaque nouveau spawn. comme ca tu peux lui faire faire une fonction facilement sur un appel F10radio ou d'autres conditions . en utilisant la variable ATME.module[modulename].avionencours Edited January 19, 2019 by snowsniper i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
CougarFFW04 Posted January 19, 2019 Author Posted January 19, 2019 (edited) Hello, Merci pour tes suggestions, je vais explorer tout cela. Ta réponse soulève quand même une interrogation : " je veux simplement le re-spawner à l'identique" --> au point de départ du plan de vol ou il repart de là où il vient d'atterir ? si il repart du point de départ c'est mieux de faire un respawn ( duplication d'un modèle que tu peux mettre en invisible ) et detruire disable celui qui vient d'atterir. je pense que c'est ce que fait mist aussi a priori. ce n'est pas le même avion qui se téléporte lol. Exactement ca Exactement ce que je veux faire... Par contre je ne trouve pas de fonction respawn dans la doc ATME.. Et c'est bien la mon problème... Je trouve le hasAutorespawn(), resetAutoRespawn(), setAutoRespawn() mais aucun simple respawn... Et comme je disais je ne trouve pas non plus avec ATME une fonction qui permettrait de désactiver un groupe pour que ca fonctionne sans que le groupe soit mort... Cette fonction existe pourtant de base dans DCS : function trigger.action.deactivateGroup(Group Group) Est-ce a dire que l'équivalent de cette fonction n'existe pas dans ATME ? Auquel cas ce n'est pas sis grave et j'utilise directement la fonction DCS. bref il n'est pas clair pour moi si quand tu dis c'est mieux de faire un respawnTu parles d'une simple fonction respawn que je ne trouve nulle part ou si tu veux parler de toute la manipe de clonage que tu suggères... Enfin j'aurais aussi aimé avoir ton avis pourquoi le onSpawnGroupHandler ne détecte pas un respawn avec la fonction Mist... Je ne comprend pas trop pourquoi car de mon point de vue, d'ou que le respawn vienne (Mist, MOOSE, autre) ca reste un événement DCS... Donc si tu pouvais éclaircir ces trois derniers points je serais sur de ne pas faire fausse route... Merci d'avance Edited January 19, 2019 by CougarFFW04
sunski34 Posted January 20, 2019 Posted January 20, 2019 (edited) repawn Bonjour, il n'y a pas de fonction respawn à proprement parler. Pour faire un respawn automatique, il faut utiliser la fonction setAutoRespawn de la classe ATME.C_Group. Cette fonction permet de respawner un groupe détruit avec un délai donné. Pour détruire un groupe, deux possibilités : dans la réalisation de la mission, à la réception des events DCS ad'hoc par ton script en utilisant la fonction disable de la classe ATME.C_Group, c'est ce que veut dire snowsniper Voici un exemple simple qui fixe l'autorespawn entre 1 et 4 seconde puis si le groupe existe le détruit... Donc il sera recréé ensuite dans le délai indiqué. Il existe un exemple en 1.45 dans "Other examples.zip" dont est tiré l'extrait ci dessous (ATME_direct_menu_spawn_destroy) : local group = ATME.C_Group.getByName("copy0") if group ~= nil then -- If exists, disable group ... thisModule:output("Avant auto...",1) group:setAutoRespawn("RANDOM 1 00:00:04") thisModule:output("Après auto...",1) group:disable() end Mais en faisant celà, le groupe va toujours refaire la même chose. Maintenant, si tu veux qu'un groupe reparte de l'endroit ou il est, il faut toujours faire un disable puis faire un spawn à partir du cloningcontext créé comme je t'ai montré mais cette fois avec une route inverse. Il faut la faire waypoint par waypoint pour l'instant car les copies de route ne se font pas en sens inverse (c'est une idée que je retiens). Je précise que dans les dernières version de DCS, pour les avions, il existe un nouveau cas "atterrir et repartir", je dois voir celà car pour l'instant non implémenté dans ATME. Edited January 20, 2019 by sunski34
snowsniper Posted January 20, 2019 Posted January 20, 2019 (edited) "Par contre je ne trouve pas de fonction respawn dans la doc ATME" context:spawn(route) page 119 est ce que tu cherches. context étant l'objet de classe de cloning définie préalablement, la methode souhaitée et la nouvelle route ) ça c'est le spawn simple, sinon il ya l'autorespawn comme expliqué ci dessus par Sun, qui semble mieux correspondre à ce que tu voulais faire si c'est toujours le même trajet 2) objetdeclassegroup:disable() et objetdeclasseAIunit:disable() fonctionnent même si l'objet est en vie. Edited January 20, 2019 by snowsniper i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
CougarFFW04 Posted January 20, 2019 Author Posted January 20, 2019 (edited) Salut et merci pour la réponse, Bonjour, dans la réalisation de la mission, à la réception des events DCS ad'hoc par ton script en utilisant la fonction disable de la classe ATME.C_Group, c'est ce que veut dire snowsniper local group = ATME.C_Group.getByName("copy0") if group ~= nil then -- If exists, disable group ... thisModule:output("Avant auto...",1) group:setAutoRespawn("RANDOM 1 00:00:04") thisModule:output("Après auto...",1) group:disable() end Mais en faisant celà, le groupe va toujours refaire la même chose. En fait c'est exactement ce que je faisais... Voici mon code : pour info je déclenche une alarme a un instant juste pour tester le mécanisme. Cette alarme (déclenchée pour chaque groupe) appel ce code qui est censé faire un respawn des groupes aprés x secondes (5 dans le cas présent): local function reSpawnAlarm(_alarm) local alarmName = _alarm:getName() if ATME.getTags(alarmName) ~= nil then groupName = ATME.getTags(alarmName)[2] _Group = ATME.C_Group.getByName(groupName) _Group:setAutoRespawn(5) _Group:disable() ATME.displayForAll(groupName.." will be respawned in 5 sec",3) end end Si je commente les deux lignes de code lié à l'autorespawn et disable, tout se passe bien. Donc tout le reste du code n'est pas en cause. Par contre dés que je les valide, le code m'annonce bien que les groupes seront remis en place mais dés que cet événement arrive j'ai ce message d'erreur : puis ensuite tout reprend normalement. Et c'est le genre de message d'erreur lié à ATME que je ne comprends pas... Voila pourquoi je cherchais une solution alternative (que je n'est toujours pas trouvé) depuis hier soir... Edited January 20, 2019 by CougarFFW04
snowsniper Posted January 20, 2019 Posted January 20, 2019 (edited) après un bug, ATME ne tourne plus, donc cela ne reprend pas normalement. lorsque j'ai ce genre de soucis, la bonne méthode est de circonscrire pour trouver là ou est l'erreur ou la variable nil qui fait bugger. pour ce faire on peut utiliser des traces visibles dans le log dcs : sur chaque ligne de log on trouve le script en cours [ script ] blablabla les traces ( sous reserve que "ATME.setDebugLevel(0)" ou ATME.setDebugLevel(1) soit bien lancé dans le Mission editor sont de cette forme : thisModule:outputVar("text what to test ",variabletotestanddisplayinlog,niveaudevisibilité(1)) ou if vartotest == nil then thisModule:output("ci ceci s'affiche alors la variable est nil à ce niveau" ,1) end une fois le probleme circonscrit on peu retirer ou commenter les traces après là tout de suite je ne sais pas trouver l'erreur sans le code complet. sur quel ligne du script dans le log, cela crash t'il car dans la fenêtre là c'est une référence du Core, donc peut probable il doit y avoir une ligne qui crash avant dans le script en cours. à priori la ligne 13 ou 11 ? cela correspond à quelle ligne concretement ? Edited January 20, 2019 by snowsniper i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
snowsniper Posted January 20, 2019 Posted January 20, 2019 euh juste à tester, j'ai un petit doute : peut être essayes ceci : _Group:setAutoRespawn("5") au lieu de _Group:setAutoRespawn(5) tiens moi informé i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
CougarFFW04 Posted January 20, 2019 Author Posted January 20, 2019 euh juste à tester, j'ai un petit doute : peut être essayes ceci : _Group:setAutoRespawn("5") au lieu de _Group:setAutoRespawn(5) tiens moi informé OK je vais essayer et je te tiens au courant.
CougarFFW04 Posted January 20, 2019 Author Posted January 20, 2019 (edited) Hello, Négatif concernant le entre "" ou pas. Concernant les lignes de code 11 et 13 de ce que je comprends ca ne fait pas référence à mon code d'autant que les lignes correspondantes : ligne 11 : respawnAfterLand = 720 -- delay before landed flight is re-spawned (suggest 12mn (720s)) ligne 13 : delayAfterReject = 900 -- delay between subsequent activation (when prob failed; suggest 15mn (900s)) ne sont pas utilisées dans le présent code et ne posaient aucun pb dans le code précédent ou je n'utilisais pas ATME. Par contre, je ne sais pas si c'est significatif ou pas (mais vu le message d'erreur peut-etre) la lgne 11 fait suite à : local thisModule Bon pour l'instant je suis un peu dans le floue avec cette erreur mais je vais continuer mes investigations en prenant en compte tes conseils précédents. Mais c'est vrai que dés que c'est plus dans mon code c'est le genre d'erreur ou je me sens un peu désemparé :joystick: :D D'ailleurs concernant tout cela je constate qu'un respawn déclencle a la fois un - onSpawnGroupHandler (a priori normal) mais aussi - onCreateGroupHandler (c'est peut-etre normal mais c'est ce que voulais éviter pour un respawn) Edited January 20, 2019 by CougarFFW04
snowsniper Posted January 20, 2019 Posted January 20, 2019 (edited) tu as quoi dans le dcs.log ? tu peux pas le mettre en PJ svp. PM même si la fenêtre d'alerte renvoi a une ligne du core ATME, les bugs dans le core engine ATME deviennent extremement rares plus probable à 99% erreur de typo d'usage ou de definition de variable / objet il faut trouver le sous processus cause au plus prêt du script en cours, et de la ligne concernée. essayes qd même de mettre local devant les ligne 11 et 13. ça mange pas de pain comme dirait l'autre. Edited January 20, 2019 by snowsniper i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
snowsniper Posted January 20, 2019 Posted January 20, 2019 "D'ailleurs concernant tout cela je constate qu'un respawn déclencle a la fois un - onSpawnGroupHandler (a priori normal) mais aussi - onCreateGroupHandler (c'est peut-etre normal mais c'est ce que voulais éviter pour un respawn)" ça c'est parce que tu utilises la V145. sur la V146 il n'ya plus de onSpawnGroupHandler mais une callback spécifique. i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
snowsniper Posted January 20, 2019 Posted January 20, 2019 (edited) edit: moi j'utiliserais plutot " _Alarm:getUserPrivateDatas(thisModule)" de la classe alarm pour faire transiter l'objet group et non son nom a récupérer plutot que les tags .. mais ce n'est que mon avis. au feeling groupname doit être nil ou ne correspondant pas à un objet existant ( a tester avec une trace ), ce qui ne bloque pas le script si tu commente les 2 lignes que tu dis. mais dès que tu y fait appel. bing sun aura un avis plus rapide et plus éclairé, mais il ne sera dispo qu'à 16h30 sans certitude. J'ai l'impression que l'index 2 de la table des tags extraits ne te retourne pas toujour le groupname de l'objet spawné. il faut tester la sortie avec une trace. pour rappel un objet spawné , son nom de groupe est indexé, model #001 ce qui veut dire que son nom complet correspond à 2 tags et non 1 seul. Edited January 20, 2019 by snowsniper i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
snowsniper Posted January 20, 2019 Posted January 20, 2019 pour plus de précisions sur la creation de l'alarme : local datas = _Alarm:getUserPrivateDatas(thisModule) datas.objectgroup = _Group -- store in private datas, object sur la callback : local datas = _Alarm:getUserPrivateDatas(thisModule) _Group = datas.objectgroup i7-10700KF CPU 3.80GHz - 32 GO Ram - - nVidia RTX 2070 - SSD Samsung EVO with LG TV screen 40" in 3840x2150 - cockpit scale 1:1 - MS FFB2 Joystick - COUGAR F16 throttle - Saitek Pro Flight Rudder Pedals
sunski34 Posted January 20, 2019 Posted January 20, 2019 local function reSpawnAlarm(_alarm) local alarmName = _alarm:getName() if ATME.getTags(alarmName) ~= nil then groupName = ATME.getTags(alarmName)[2] _Group = ATME.C_Group.getByName(groupName) _Group:setAutoRespawn(5) _Group:disable() ATME.displayForAll(groupName.." will be respawned in 5 sec",3) end end Es tu sur que _Group est bien non nil ? en d'autres termes que groupName est juste ? Le plus simple est de lié le groupe à l'alarme comme l'a dit snowsniper avec un getUserPrivateDatas qui te retourne une entrée sur une table à laquelle tu peut y définir ton groupe.
CougarFFW04 Posted January 20, 2019 Author Posted January 20, 2019 (edited) J'ai l'impression que l'index 2 de la table des tags extraits ne te retourne pas toujour le groupname de l'objet spawné. il faut tester la sortie avec une trace. pour rappel un objet spawné , son nom de groupe est indexé, model #001 ce qui veut dire que son nom complet correspond à 2 tags et non 1 seul. Comme je disais le code m'annonce bien que les groupes seront remis en place donc je récupère bien le nom des groupes d'origine. Pour la fin du log : 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Module module_Randomize_Mission - Alarme SPAWN F15E_STRIKE_1 déclenché 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Appel handler de l'alarme SPAWN F15E_STRIKE_1 pour le module module_Randomize_Mission 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #011 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Function C_Group_deleteUnit : appel C_group_delete 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete group = F15E_STRIKE_1 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #010 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Module module_Randomize_Mission - Alarme SPAWN F15C_ESC_3 déclenché 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Appel handler de l'alarme SPAWN F15C_ESC_3 pour le module module_Randomize_Mission 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #009 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #007 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Function C_Group_deleteUnit : appel C_group_delete 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete group = F15C_ESC_3 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #008 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Module module_Randomize_Mission - Alarme SPAWN M2000 déclenché 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Appel handler de l'alarme SPAWN M2000 pour le module module_Randomize_Mission 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #013 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Function C_Group_deleteUnit : appel C_group_delete 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete group = M2000 2019-01-20 16:00:45.007 INFO SCRIPTING: [ATME] Delete unit = Pilot #012 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Module module_Randomize_Mission - Alarme SPAWN F15C_ESC_2 déclenché 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Appel handler de l'alarme SPAWN F15C_ESC_2 pour le module module_Randomize_Mission 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete unit = Pilot #004 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete unit = Pilot #005 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Function C_Group_deleteUnit : appel C_group_delete 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete group = F15C_ESC_2 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete unit = Pilot #006 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Module module_Randomize_Mission - Alarme SPAWN F15C_ESC_1 déclenché 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Appel handler de l'alarme SPAWN F15C_ESC_1 pour le module module_Randomize_Mission 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete unit = Pilot #001 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete unit = Pilot #002 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Function C_Group_deleteUnit : appel C_group_delete 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete group = F15C_ESC_1 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Delete unit = Pilot #003 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:45.008 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:46.007 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:47.009 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:48.011 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:49.013 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:49.998 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:49.998 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:49.998 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:49.998 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:49.998 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:49.999 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:49.999 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:49.999 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:49.999 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:51.001 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:52.003 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:53.005 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:54.007 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:55.008 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:55.009 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:56.010 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:00:56.078 INFO SCRIPTING: [ATME] Event 15 déclenché 2019-01-20 16:00:56.079 INFO SCRIPTING: [ATME] Function C_Group_addUnit : ajout unité Pilot #001 2019-01-20 16:00:56.079 INFO SCRIPTING: [ATME] Create group = F15C_ESC_1 2019-01-20 16:00:56.079 INFO SCRIPTING: [ATME] Create unit = Pilot #001 2019-01-20 16:00:56.079 INFO SCRIPTING: [ATME] Event 15 déclenché 2019-01-20 16:00:56.079 INFO SCRIPTING: [ATME] Function C_Group_addUnit : ajout unité Pilot #002 2019-01-20 16:00:56.079 INFO SCRIPTING: [ATME] Create unit = Pilot #002 2019-01-20 16:00:58.316 ERROR DCS: Mission script error: : [string "C:\Users\COUGAR~1\AppData\Local\Temp\DCS\/~mis00002535.lua"]:22376: attempt to index field '?' (a nil value) stack traceback: [C]: ? [string "C:\Users\COUGAR~1\AppData\Local\Temp\DCS\/~mis00002535.lua"]:22376: in function 'onEvent' [string "Scripts/World/EventHandlers.lua"]:13: in function <[string "Scripts/World/EventHandlers.lua"]:11> 2019-01-20 16:00:58.317 INFO SCRIPTING: [ATME] Event 15 déclenché 2019-01-20 16:00:58.317 INFO SCRIPTING: [ATME] Function C_Group_addUnit : ajout unité Pilot #003 2019-01-20 16:00:58.317 INFO SCRIPTING: [ATME] Create unit = Pilot #003 2019-01-20 16:00:58.972 ERROR DCS: Mission script error: : [string "C:\Users\COUGAR~1\AppData\Local\Temp\DCS\/~mis00002535.lua"]:22376: attempt to index field '?' (a nil value) stack traceback: [C]: ? [string "C:\Users\COUGAR~1\AppData\Local\Temp\DCS\/~mis00002535.lua"]:22376: in function 'onEvent' [string "Scripts/World/EventHandlers.lua"]:13: in function <[string "Scripts/World/EventHandlers.lua"]:11> 2019-01-20 16:00:58.972 INFO SCRIPTING: [ATME] Event 15 déclenché 2019-01-20 16:00:58.973 INFO SCRIPTING: [ATME] Function C_Group_addUnit : ajout unité Pilot #004 2019-01-20 16:00:58.973 INFO SCRIPTING: [ATME] Create group = F15C_ESC_2 2019-01-20 16:00:58.973 INFO SCRIPTING: [ATME] Create unit = Pilot #004 2019-01-20 16:00:59.460 ERROR DCS: Mission script error: : [string "C:\Users\COUGAR~1\AppData\Local\Temp\DCS\/~mis00002535.lua"]:22376: attempt to index field '?' (a nil value) stack traceback: [C]: ? [string "C:\Users\COUGAR~1\AppData\Local\Temp\DCS\/~mis00002535.lua"]:22376: in function 'onEvent' [string "Scripts/World/EventHandlers.lua"]:13: in function <[string "Scripts/World/EventHandlers.lua"]:11> 2019-01-20 16:00:59.461 INFO SCRIPTING: [ATME] Event 15 déclenché 2019-01-20 16:00:59.461 INFO SCRIPTING: [ATME] Function C_Group_addUnit : ajout unité Pilot #005 2019-01-20 16:00:59.461 INFO SCRIPTING: [ATME] Create unit = Pilot #005 2019-01-20 16:00:59.461 INFO SCRIPTING: [ATME] Event 15 déclenché 2019-01-20 16:00:59.464 WARNING LOG: 7 duplicate message(s) skipped. 2019-01-20 16:00:59.464 INFO SCRIPTING: [ATME] Event 17 déclenché 2019-01-20 16:01:00.469 WARNING LOG: 1 duplicate message(s) skipped. 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Start main timer 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Gestion des spawn multiples 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Gestion des groupes avec tache on zone 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Reaffectation des spots sur changement de cibles 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Gestion des Handlers par module 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Groupes en attente de création -> Suppression si delai 0 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Finalisation de traitement Core event avec délai 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] Traitement des patrouilles 2019-01-20 16:01:00.469 INFO SCRIPTING: [ATME] End main timer 2019-01-20 16:01:01.421 INFO Lua: Lua CPU usage: metric: average mission execution: 3.3173 % 2019-01-20 16:01:03.082 INFO SCRIPTING: [ATME] Event 12 déclenché 2019-01-20 16:01:03.082 INFO SCRIPTING: [ATME] Fin de Mission 2019-01-20 16:01:03.091 INFO LuaExport::LuaExportStart: [Tacview.EndLog] Telemetry file closed 2019-01-20 16:01:03.091 INFO Config: netview stopped 2019-01-20 16:01:03.123 INFO TERRAIN: lSystem::CleanScenes() 2019-01-20 16:01:03.171 INFO TACVIEW.DLL: End of flight data recording 2019-01-20 16:01:03.172 INFO EDCORE: (dDispatcher)enterToState_:3 Edited January 20, 2019 by CougarFFW04
sunski34 Posted January 20, 2019 Posted January 20, 2019 (edited) Une mission exemple Voici une mission exemple et son fichier lua. Se mettre hors de l'avions par F2, puis F10 F1 Pour le groupe au sol pas d'alarme avec autorespawn entre 1 et 4 sec F2 Pour les deux helico avec alarme de 10s et autorespawn à 5 sec En version 1.45, Oui il y a toujours un create après un respawn ou un spawn. Si une partie du traitement se fait après la première initialisation, utiliser le onStartHandler avec un test du paramètre paramètre à true et récuperer le groupe pour faire le traitement. En 1.46 il n'y a plus d'appel a une callback de spawn si c'est un autorespawn car ATME considère que c'est le même groupe.ATME direct menu spawn and destroy.mizATME_direct_menu_spawn_destroy.lua Edited January 20, 2019 by sunski34
sunski34 Posted January 20, 2019 Posted January 20, 2019 Dans ton log, je vois que ta mission a deux modules. Pour commencer, supprime le module qui ne gère pas le respawn pour voir si le bug existe toujours. Si oui, il faut déjà passer en 1.46 et refaire les tests. Penser à mettre le onSpawnGroupHandler à nil (ou à le supprimer) et mettre en commentaire la fonction associée car sinon problème. Tiens moi au courant. As tu lu tes messages privés?
Recommended Posts