SUVars: mehr speicherbare Variablen
SU Library: erst ab Version 0.5.0 verfügbar!
"SUVars" statt "Vars" (momentan nur bei UBO-Test!)
Es war noch nie einfacher, Lua-Variablen über Speicherstände hinweg abzuspeichern - ohne Installation oder externes Script - und zwar über "SUVars".
"SUVars" ist eine neue globale Tabelle in Lua, die automatisch mit allen Einträgen abgespeichert und beim Laden wiederhergestellt wird - ohne Namensvorgabe (Die Siedler 4 unterstützen bisher ja nur 9 "Vars.SaveX" Variablen).
⇒ D.h., alles was gesichert werden soll, muss einfach irgendwo in der Tabelle "SUVars" ablegt werden.
Mit der richtigen Handhabung können so auch dynamische Daten abgespeichert werden.
Wichtig:
Tabelleneinträge müssen einmalig(!) initialisiert werden, bevor sie abgefragt und/oder verglichen werden. Sonst wird "
nil
" zurückgegeben, was nicht mit anderen Werten außer "nil
" verglichen werden kann.Die Tabelle sollte nie im globalen Bereich beschrieben werden, da das die Tabelle bei jedem Laden überschreibt.
-- Do NOT do this:
--SUVars["gameTime"] = 0 -- this OVERWRITES the saved value each time you load it!
--------------------------
-- How to use it properly:
-- Don't forget to initialize the values once!
function initVariables()
SUVars["gameTime"] = -1
end
function fiveTicks()
local time = Game.Time()
if SUVars["gameTime"] < time then
SUVars["gameTime"] = time -- saves the last processed time
-- do something here...
dbg.stm(time)
--SUVars["number1"] = 123
--SUVars.number2 = 456
--SUVars["str1"] = "Hey "
--SUVars.str2 = "there!"
--SUVars["subtable1"] = {1, 2, 3, "4", "5"}
end
end
-- check for proper SULib version
function new_game()
-- don't add anything in this function above these lines
if SU then
local requiredVersion = "0.5.0"
if SU.VersionOK(requiredVersion) == 0 then
dbg.stm("SU Library Version requirement not met! The Map-Script needs at least Version "..requiredVersion..", you have Version "..SU.VERSION.."!")
dbg.stm("Update (and restart The Settlers IV via) Settlers United to get the latest Version installed.")
return
end
else
dbg.stm("SU Library is missing!")
dbg.stm("Update (and restart The Settlers IV via) Settlers United to get the latest Version installed.")
return
end
-- SU Library loaded and required Version fulfilled
-- add your normal code here...
request_event(initVariables, Events.FIRST_TICK_OF_NEW_GAME)
request_event(fiveTicks, Events.FIVE_TICKS)
end
function register_functions()
reg_func(initVariables)
reg_func(fiveTicks)
end
Last updated