Jump to content

ATME : alarm...


CougarFFW04

Recommended Posts

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) end

mais 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 by CougarFFW04
Link to comment
Share on other sites

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 by sunski34
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...