Datenbank Zeigt nicht richtigen Status

Hallo

Ich merk schon, dass ich in Sachen Lua noch viel lernen muss.
Ich habe jetzt soweit alle meine Scripts angepasst an das was ich hier bei Euch gelernt habe und alles funktioniert einwandfrei. Nun wollte ich eine Tabelle hinzufügen, um später eventuell einzelne Mods ein und auszuschalten und oder einige Abfragen zu machen bzw. speichern

Was geht:

  • Tabelle erstellt mit Standard Werten
  • Eintrag in die Tabelle

Was nicht richtig geht:

  • Tabellenabruf in den einzelnen Mods

Ich habe zum Beispiel mal die Struktur meines Addons verkleinert auf TestScript und würde gerne wissen, was ich da falsch mache. Die Reihenfolge der Dateien wird so wie geschrieben, geladen.

  • Addon.toc

SavedVariablesPerCharacter: BSADB

  • LibDBS.lua – Ladet die Tabelle mit den Standards.
if BSADB == nil or not BSADB then
    BSADB = {TestScript = {status = false,},}
else 
    BSADB = {}
end
  • LibCMD.lua – Ladet Command Befehle zum Steuern
SLASH_MOD1 = "/mod"
SlashCmdList["MOD"] = function(cmdmsg, editbox)
	local cmd, mod = strsplit(" ",cmdmsg)
	if cmd == "start" then
		modStart(mod)
	end
end
  • LibFNC.lua – Ladet alle Funktionen, die ich später nutze global
modStart = function(mod)
	BSADB[mod].status = true
	ReloadUI()
end
  • TestScript.lua
local script = "TestScript"
if BSADB[script].status == true then 
	print("Mod ist an")
else
	print("Mod ist aus")
end
  • Addon.lua – Tabellen Datei in SavedVariables
BSADB = {
	["TestScript"] = {
		["status"] = false,
	},
}

So wenn ich nun per CMD Befehl /mod start TestScript das TestScript starte, dann schreibt er mir in die Tabelle true und in der Datei in SavedVariables steht dann auch true drin.
Aber im Spiel kommt aus der TestScript immer noch der print("Mod ist aus")

  • TestScript.lua

Chat: Mod ist aus

  • Addon.lua – Tabellen Datei in SavedVariables
BSADB = {
	["TestScript"] = {
		["status"] = true,
	},
}

Das versteh ich grad nicht wirklich :frowning:
Ich hoffe auf gute Tipps

MfG

Das ist nur so mit ein bischen extra zusammengestelltem Beispiel-Pseudocode echt schwer zu sagen. :confused: Man hat so gut wie keine Idee, wann was ausgeführt wird und so.

Ich frage mich, wann der Code aus TestScript.lua ausgeführt wird.
Und, welchen Zweck verfolgt das hier:

Das scheint mir nicht viel Sinn zu machen.

BSADB == nil
und
not BSADB
sollten btw identisch sein. Ist also redundant.

Vorschlag: Du könntest dein komplettes Addon irgendwo synchronisieren. Zum Beispiel auf http://github.com/. Dann wäre es vermutlich einfacher Fehler zu sehen.

Hi

Das ist nicht pseudo zusammengestellt. Das ist das Beispiel.
Genau so werden die Daten auch geladen. So wie ich das geschreiben habe.

in der Toc wird folgendes nach Reihe geladen:

LibDBS.lua
LibCMD.lua
LibFNC.lua
TestScript.lua

Was in den drin steht steht oben

Das mit der if nil or not war ein Versuch, da ich gemerkt hatte, dass wenn ich keine Tabelle angebe, diese nil ist, wenn ich aber irgendwo nur BSADB = {} stehen habe, ist diese nicht mehr nil, aber ohne Inhalt. Das war ein Versuch, zum etwas rumexperimentieren, den ich grad nur per Copy Paste mit genommen habe. Sry, normal steht

if BSADB == nil then BSADB = {...

Klar habe ich in den einzelnen Lib Dateien etwas mehr drin, was aber nichts mit der Tabelle zu tun hat, oder in an oder um die Tabelle schreibt.

MfG

Okö, danke.

Wenn das wirklich der echte Code ist, dann fällt mir dazu Folgendes ein:
Die savedvariables sind nicht direkt beim Laden der LUA-Datei geladen. Dazu musst du auf das Event ADDON_LOADED für das eigenen Addon bzw. VARIABLES_LOADED für alle Addons warten.
https://wowwiki.fandom.com/wiki/Saving_variables_between_game_sessions
Liegt das Problem möglicherweise da?

OMG

DANKE

Vor lauter herummfummeln und umbaun, hatte ich jetzt aus fast allen Mods bei mir die registered Events weggenommen. Was für ein Fehler.

Peinlich :roll_eyes:

Danke Dir trotzdem dür Deine Zeit :slight_smile:
MfG

Kein Problem. Absolut nicht peinlich. Dafür ist das Forum hier da. :slight_smile: