CougarFFW04 Posted January 19, 2019 Share Posted January 19, 2019 (edited) Hello, Bon alors j'ai un petit problème avec les alarmes... Je suis encore en phase d'expérimentation et possible que je trouve la réponse avant même qu'elle ne soit posté ici mais au pire ca pourra toujours servir a quelqu'un d'autre... Donc mon problème est le suivant : je met en place un certain nombre d'alarme (par exemple TITI, TOTO , TATA) et ensuite dans ma fonction onTimer qui traite tout les event je voudrais identifier lorsqu'un event est une alarme puis récupérer le nom de cette alarme... Je ne parle pas des modules exemple qui entre parenthèse sont trés bien fait mais qui ne peuvent répondre a toutes les fonctionnalités de ATME en seulement quelques modules. Les petits exemples montrent comment récupérer une alarme donné par exemple : if events:isAlarm("TOTO") then ATME.displayForAll("peu importe",5) endmais c'est pas ce que je veux faire... Aide bienvenue... Si je trouve avant la réponse je mettrais la solution. Merci Edit: Bon ben je sèche et c'est vraiment dommage que dans la doc il n'y ai pas un exemple simple en quelques lignes... Comme dans Mist par exemple. Ca permettrait souvent d'éclaircir les choses et de ne pas perdre un temps fou (quand on découvre ATME) pour des truc basiques... Donc en occurrence je cherchais un truc du genre : events:isAlarm() qui retournerait true ou false selon (et j'imagine que les wildcard n'esxiste pas)... et getAlarmName() qui retournerait le nom de l'alarme en question Mais je n'ai rien trouvé de tout cela... Surement ma faute (d'autant qu'il n'est pas très clair pour moi ce qui est considéré comme coreEvent ou pas... par exemple une alarme c'est un coreEvent ou pas...) Bref bloqué pour l'instant :( Edited January 19, 2019 by CougarFFW04 Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 19, 2019 Author Share Posted January 19, 2019 Solution trouvée (ce n'est peut-etre pas la seule et j'immagine qu'il a peut-etre quand même moyen de traiter ca via le onTimer) je suis passé par un addAlarmCallback... Link to comment Share on other sites More sharing options...
sunski34 Posted January 20, 2019 Share Posted January 20, 2019 (edited) Oui c'est la solution, passer par la callback. Tu peux aussi par le onTimer mais en utilisant la boucle sur les événements à traiter.... suivi d'un gros if... elseif... end exemple : local function onTimer(events) for _id, _ in events:pairs() do if events:isCoreEvent(_id) == true then -- Si c'est un core event if events:getCoreEventType(_id) == "SIGNAL_UNIT_IN_ZONE" then local datas = events:getCoreEventDatas(_id) datas.unit:display("You enter zone", 5) elseif events:getCoreEventType(_id) == "SIGNAL_UNIT_OUT_OF_ZONE" then local datas = events:getCoreEventDatas(_id) datas.unit:display("You leave the zone", 5) end elseif events:isAlarm(_id) then --- Traitement d'alarme, _id vaudra l'une de tes alarmes TOTO TITI ou TATA end end end Mais la ca devient compliqué, mieux est donc effectivement la callback qui simplifie le code, le onTimerHandler devant être réservé à de petits scripts rapides. Pour info il existe aussi des callback pour les core events. Edited January 20, 2019 by sunski34 Link to comment Share on other sites More sharing options...
Recommended Posts