Hey,
habe mir heute ein XML Setting System geschrieben, das Problem ist, das die Tabelle settingsSave nicht extern benutzt werden kann und ich verstehe nicht wieso:
Lua
local settingsPath = ":vio_stored_files"
settings = {}
settingsSave = {}
settings[1] = {name = "joinmessage", status = 1, value = "false", }
settings[2] = {name = "hud", status = "false", value = 1, }
settings[3] = {name = "gangwarhitmarker", status = 0, value = "false", }
settings[4] = {name = "betamapstream", status = 0, value = "false", }
settings[5] = {name = "test", status = 1, value = 2221, }
function createSettings ()
settingsTree = xmlLoadFile ( settingsPath.."/userSettings.xml" )
if settingsTree then
outputConsole("Einstellungen gefunden. Werden nun geladen...")
for i, setting in ipairs(settings) do
local xml = xmlFindChild ( settingsTree, setting.name, 0 )
if xml then
local xmlStatus = xmlNodeGetValue ( xmlFindChild ( xml, "status", 0 ) )
local xmlValue = xmlNodeGetValue ( xmlFindChild ( xml, "value", 0 ) )
print("["..setting.name.." - "..i.."] Status: "..xmlStatus..", Value "..xmlValue)
settingsSave[i] = {name = setting.name,status = xmlStatus, value = xmlValue }
else
outputChatBox("Fehler beim laden deiner Einstellungen! ("..setting.name..")")
end
end
else
settingsTree = xmlCreateFile ( settingsPath.."/userSettings.xml", "userSettings_"..getPlayerName(getLocalPlayer()) )
outputChatBox("Einstellungs Datei wird erstellt.")
for i, setting in ipairs(settings) do
local xml = xmlCreateChild ( settingsTree, setting.name )
xmlNodeSetValue (xmlCreateChild ( xml, "status"), setting.status )
xmlNodeSetValue (xmlCreateChild ( xml, "value"), setting.value )
print("["..setting.name.." - "..i.."] Status: "..xmlStatus..", Value "..xmlValue)
settingsSave[i] = {name = setting.name,status = setting.status, value =setting.value }
end
xmlSaveFile(settingsTree)
end
end
function changeSetting (id, state, var)
local id = tonumber(id)
print(id)
if settingsTree then
if state then
settingsSave[id].status = state
end
if var then
settingsSave[id].value = var
end
else
print("Einstellungen konnten nicht geladen werden.")
end
end
function changeSettingx (cmd, id)
changeSetting(id,"false",54)
end
addCommandHandler("cs",changeSettingx, false)
function getSettingsx (cmd, id)
print(settingsSave[id].status, settingsSave[id].value)
end
addCommandHandler("gs",getSettingsx, false)
function ClientResourceStop ()
for i, setting in ipairs(settings) do
local xml = xmlFindChild ( settingsTree, setting.name, 0 )
local xmlStatus = xmlNodeGetValue ( xmlFindChild ( xml, "status", 0 ) )
local xmlValue = xmlNodeGetValue ( xmlFindChild ( xml, "value", 0 ) )
if xmlStatus ~= settingsSave[i].status then
outputConsole ( "Status von "..settingsSave[i].name.." von "..xmlStatus.." zu "..settingsSave[i].status.." geändert." )
xmlNodeSetValue (xmlFindChild ( xml, "status", 0 ), settingsSave[i].status )
end
if xmlValue ~= settingsSave[i].value then
outputConsole ( "Wert von "..settingsSave[i].name.." von "..xmlValue.." zu "..settingsSave[i].value.." geändert." )
xmlNodeSetValue (xmlFindChild ( xml, "value", 0 ), settingsSave[i].value )
end
xmlSaveFile ( settingsTree )
xmlUnloadFile ( settingsTree )
outputConsole ( "Einstellungen gespeichert." )
end
end
addEventHandler ( "onClientResourceStop", resourceRoot, ClientResourceStop )
createSettings ()
Alles anzeigen
Das steht im Debug: http://prntscr.com/hwaeta
Ich geh jetzt ins Bett kein Bock mehr, danke im Vorrraus.