04/26/24, 12:24 PM | #1 | |
Join Date: Apr 2024
Posts: 5
|
savedVariables returning nil
I'm having trouble getting my saved variables to work...
In the following, "if GOLDMetrics.savedVariables" is returning nil despite happening after I create my savedVariables, resulting in "function expected instead of nil." Thing is, it's also not showing the "no saved variables" message I've put under else. I'm not sure what's going on. Code:
GOLDMetrics = GOLDMetrics or {} GOLDMetrics.name = "GOLDMetrics" GOLDMetrics.variableVersion = 2 -- --------------------------------------------------------------------------------------------------------------------------------- -- LIBRARIES -- --------------------------------------------------------------------------------------------------------------------------------- -- LibChatMessage local chat = LibChatMessage.Create("GOLDMetrics", "GOLDMetrics") -- LibAddonMenu local LAM = LibAddonMenu2 local saveData = {} local GOLDPanel = "GOLDMetrics" local GOLDpanelData = { type = "panel", name = "GOLDMetrics", displayName = "GOLDMetrics", author = "VessVelendas", version = "1.0", slashCommnad = "/GOLDMetrics", registerforRefresh = true, } local GOLDoptionsTable = { [1] = { type = "header", name = "Where you started...", width = "full", }, [2] = { type = "description", title = nil, text = "Date Initialized:", width = "half", }, [3] = { type = "description", title = nil, text = "00/00/0000", width = "half", }, [4] = { type = "description", title = nil, text = "Initial Gold:", width = "half", }, [5] = { type = "description", title = nil, text = "100,000,000", width = "half", }, [6] = { type = "header", name = "Where you are now...", width = "full", }, [7] = { type = "description", title = nil, text = "Current Date:", width = "half", }, [8] = { type = "description", title = nil, text = "00/00/0000", width = "half", }, [9] = { type = "description", title = nil, text = "Current Gold:", width = "half", }, [10] = { type = "description", title = nil, text = "100,000,000", width = "half", }, [11] = { type = "description", title = nil, text = "Goal (Daily):", width = "half", }, [12] = { type = "description", title = nil, text = "100,000,000", width = "half", }, [13] = { type = "description", title = nil, text = "Daily Goal Fulfilled?", width = "half", }, [14] = { type = "description", title = nil, text = "NO", width = "half", }, [15] = { type = "description", title = nil, text = "Daily Difference:", width = "half", }, [16] = { type = "description", title = nil, text = "-000", width = "half", }, [17] = { type = "header", name = "Settings", width = "full", }, [18] = { type = "description", title = nil, text = "NOTE: The formula is Current Gold + Slider Value.", width = "full", }, [19] = { type = "slider", name = "Daily Goal", tooltip = "Amount to add to your current gold", min = 0, max = 1000000, step = 1000, getFunc = function() return 3 end, setFunc = function(value) d(value) end, width = "full", default = 500000, }, [20] = { type = "checkbox", name = "Ignore Changes", tooltip = "Transactions that happen while this is checked won't be counted.", getFunc = function() return true end, setFunc = function(value) d(value) end, width = "full" } } -- --------------------------------------------------------------------------------------------------------------------------------- -- SAVEDVARIABLES -- --------------------------------------------------------------------------------------------------------------------------------- -- Defaults GOLDMetrics.Default = { FirstInit = 0, InitDate = 0, InitGold = 0, CurDay = 0, CurGold = 0, GoalAmount = 0, CurGoal = 0, GoalFulfilled = 0, Difference = 0 } -- --------------------------------------------------------------------------------------------------------------------------------- -- CODE BEGINS HERE -- --------------------------------------------------------------------------------------------------------------------------------- -- When Player is Loaded function GOLDMetrics.PlayerLoaded() GOLDMetrics.savedVariables = ZO_SavedVars:NewAccountWide("GOLDMetricsVar", GOLDMetrics.variableVersion, nil, GOLDMetrics.Default, GetWorldName()) chat:Print("SavedVariables created") -- LibAddonMenu LAM:RegisterAddonPanel("GOLDMetrics", GOLDpanelData) LAM:RegisterOptionControls("GOLDMetrics", GOLDoptionsTable) -- I want to update SavedVariables on load so this is commented out -- EVENT_MANAGER:UnregisterForEvent(GOLDMetrics.name, EVENT_ADD_ON_LOADED) GOLDMetrics.Init() end function GOLDMetrics.Init() -- Only if first init if GOLDMetrics.savedVariables then if GOLDMetrics.savedVariables.FirstInit == 0 or nil then GOLDMetrics.savedVariables.InitDate = GetDateElementsFromTimestamp(GetTimeStamp()) GOLDMetrics.savedVariables.CurDay = GetDateElementsFromTimestamp(GetTimeStamp()) -- Reset Goal Completion GOLDMetrics.savedVariables.GoalFulfilled = 0 chat:Print("RESET Goal Fulfillment") -- Reset Difference GOLDMetrics.savedVariables.Difference = 0 chat:Print("RESET Difference") -- Update Money curMoney = GetCurrentMoney() GOLDMetrics.savedVariables.CurGold = curMoney chat:Print("UPDATE Current Gold") -- Update Goal GOLDMetrics.savedVariables.CurGoal = GOLDMetrics.savedVariables.CurGold + GOLDMetrics.savedVariables.GoalAmount curGoal2 = GOLDMetrics.savedVariables.CurGoal chat:Print("UPDATE Daily Goal") GOLDMetrics.savedVariables.FirstInit = 1 chat:Print("Initialized") end -- Check the date oldYear, oldMonth, oldDay = GetDateElementsFromTimestamp(GOLDMetrics.savedVariables.CurDay) year, month, day = GetDateElementsFromTimestamp(GetTimeStamp()) if day ~= oldDay then chat:Print("Date has changed") -- Reset Goal Completion GOLDMetrics.savedVariables.GoalFulfilled = 0 chat:Print("RESET Goal Fulfillment") -- Reset Difference GOLDMetrics.savedVariables.Difference = 0 chat:Print("RESET Difference") -- Update Money curMoney = GetCurrentMoney() GOLDMetrics.savedVariables.CurGold = curMoney chat:Print("UPDATE Current Gold") -- Update Goal GOLDMetrics.savedVariables.CurGoal = GOLDMetrics.savedVariables.CurGold + GOLDMetrics.savedVariables.GoalAmount CurGoal2 = GOLDMetrics.savedVariables.CurGoal chat:Print("UPDATE Daily Goal") else chat:Print("Date has NOT changed") -- Update Money curMoney = GetCurrentMoney() GOLDMetrics.savedVariables.CurGold = curMoney chat:Print("UPDATE Current Gold") end else chat:Print("No savedVariable") end end -- EVENT_MANAGER:RegisterForEvent(GOLDMetrics.name, EVENT_ADD_ON_LOADED, GOLDMetrics.AddOnLoaded) EVENT_MANAGER:RegisterForEvent(GOLDMetrics.name, EVENT_PLAYER_ACTIVATED, GOLDMetrics.PlayerLoaded) -- EVENT_MANAGER:RegisterForEvent("GOLDMetrics", EVENT_MONEY_UPDATE, GOLDMetrics.Update) |
|
04/26/24, 01:27 PM | #2 |
Your EVENT_ADD_ON_LOADED is commented so I assume your addon never loads properly.
Use EVENT_ADD_ON_LOADED to Init once, it will fire for each addon so make sure you check for your addon''s name and after that unregister this event again! In there register the EVENT_PLAYER_ACTIVATED event (this will fire again and again, if not unregistered, on EACH zone change with loading screen, teleport etc.). Basically addons should always start like this, unless you need another usecase. Else your addons will init before other addons/dependencies like LibAddonMenu and LibChatMessage etc. are loaded and initialized! Lua Code:
Last edited by Baertram : 04/26/24 at 01:33 PM. |
|
04/26/24, 01:43 PM | #3 | |
Join Date: Apr 2024
Posts: 5
|
I haven't been able to get on addon loaded to work. When I put stuff under it, that stuff is never triggered, even if I remove the if statement I use to gate if from being triggered by other addons.
|
|
04/26/24, 03:03 PM | #4 |
You got a typo in there then, or did something else wrong (filenames of lua in your txt got a typo or whatever).
Code:
if addonName ~= GOLDMetrics.name then return end So if "GOLDMetrics" is not your folder and txt file name you need to change for the EVENT_ADD_ON_LOADED the name chekc to your folder & txt file name!!! Lua Code:
Last edited by Baertram : 04/26/24 at 03:09 PM. |
|
ESOUI » Developer Discussions » Lua/XML Help » savedVariables returning nil |
«
Previous Thread
|
Next Thread
»
|
Display Modes |
Linear Mode |
Switch to Hybrid Mode |
Switch to Threaded Mode |
|
|