Trigger und delayed functions

» Siedler Map Source Forum » Siedler DEdK Script Forum » Trigger und delayed functions

Seiten: 1

Play4FuN
#1
30.12.2017 23:28
Beiträge: 475

Trigger und delayed functions

Abend Gemeinde,

hat jemand Rat?

Ziel: Mittels Trigger möchte ich Funktionen samt Parametern nach X Sekunden (hier z.B. 5) verzögert aufrufen (StartCountdown nimmt ja leider keine Parameter).

Meine Idee war sowas:

DelayFunction("functionname", 5, {paramA, paramB})
-- ...
function DelayFunction(_name, _delay, _actionTable)
	Trigger.RequestTrigger(Events.LOGIC_EVENT_EVERY_SECOND, "DelayFunctionTimer", _name, 1, {_delay}, {unpack(_actionTable)})
end

function DelayFunctionTimer(_delay)
	if Counter.Tick2("DelayFunctionTimer", _delay) then
		return true
	end
end


Funktioniert recht gut, nur wie beende ich das nachdem die 5 Sekunden abgelaufen sind und die Funktion 1x aufgerufen wurde? Denn aktuell wird weiterhin alle 5s die Action Funktion vom Trigger gestartet. Vermutlich übersehe ich was total einfaches...

____________________
LG Play4FuN

Zedeg
#2
31.12.2017 00:51
Beiträge: 395

Ein müder Zedeg empfiehlt ein return true in functionname.

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

mcb
#3
31.12.2017 01:19
Beiträge: 1280

Oder du machst sowas wie hier:

function DelayFunction(func, delay, ...)
   StartSimpleJob(function(t, func, arg)
      t.t = t.t - 1
      if t.t < 0 then
         func(unpack(arg))
         return true
      end
   end, {t=delay}, arg)
end


Hat den Vorteil, das du mehrere auf einmal laufen haben kannst.
(Ungetestet, braucht Trigger-Fix)

PS: Statt {unpack(foo)} reicht auch einfach foo, kommt das selbe bei raus

Play4FuN
#4
31.12.2017 11:05
Beiträge: 475

Okay, deinen Trigger-Fix schau ich mir mal an.

@Zedeg: jou habe ich auch schon gemacht, nur manche Funktionen haben selbst schon Rückgabewerte anderen Typs...

____________________
LG Play4FuN

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum