Trigger und delayed functions

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

Pages: 1

Play4FuN
#1
30-12-2017 23:28
Posts: 370

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
Posts: 384

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
Posts: 1111

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
Posts: 370

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

Pages: 1

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

Impressum