MinuteEvents = {-- table of all events at all minutes in format _minuteEventTable[minute][funcid (from 1 - n; no specific meaning)] _minuteEventTable = {}}-- calls all function types in tablefunctionMinuteEvents._subroutine_foreachFunction(i,v)iftype(v) =="function" thenv();endendfunctionMinuteEvents.runMinuteEventTick()-- true on first tick of new minutelocal currentMinute = Game.Time()if Vars.Save9 ~= currentMinute then Vars.Save9 = currentMinute -- minute-- calls all functions in tableif MinuteEvents._minuteEventTable[Vars.Save9] ~=nilthenforeach(MinuteEvents._minuteEventTable[Vars.Save9],MinuteEvents._subroutine_foreachFunction)endendend-- sets Save9 to 0 on startfunctionMinuteEvents.initVars() Vars.Save9 =0endfunctionMinuteEvents.new_game()request_event(MinuteEvents.runMinuteEventTick,Events.TICK)request_event(register_minute_events,Events.FIRST_TICK_OF_NEW_OR_LOADED_GAME)request_event(MinuteEvents.initVars,Events.FIRST_TICK_OF_NEW_GAME)endfunctionMinuteEvents.register_functions()reg_func(MinuteEvents.runMinuteEventTick)reg_func(MinuteEvents.initVars)reg_func(register_minute_events)end-- util function to usefunctionrequestMinuteEvent(eventfunc,minute)if MinuteEvents._minuteEventTable[minute] ==nilthen MinuteEvents._minuteEventTable[minute] = {}endtinsert(MinuteEvents._minuteEventTable[minute],eventfunc)end
Siedler-4-Lua-Minute-Events-Library
Eine easy-to-use library zum benutzen von callback funktionen die zu bestimmten Minuten aufgerufen werden
Benutzung
in deine new_game Funktion musst du die Funktion MinuteEvents.new_game() aufrufen
in deine register_functions Funktion musst du die Funktion MinuteEvents.register_functions() aufrufen
du benötigst eine Funktion mit dem Namen register_minute_events(), in der du die Funktionen, die zu bestimmten Minuten einmalig aufgerufen werden sollen registrierst
-- ... füge hier die library ein
function new_game()
MinuteEvents.new_game()
end
function register_functions()
MinuteEvents.register_functions()
end
function testFunc()
dbg.stm("testfunc")
end
function register_minute_events()
requestMinuteEvent(testFunc,5)
end```