Announcement

Collapse
No announcement yet.

ATME : alarm...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    ATME : alarm...

    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 :

    Code:
    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
    Last edited 01-19-2019, 12:05 PM.

    #2
    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...

    Comment


      #3
      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 :

      Code:
      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.
      Last edited 01-20-2019, 06:20 AM.

      Comment

      Working...
      X