WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Lua/XML Help (https://www.wowinterface.com/forums/forumdisplay.php?f=16)
-   -   AceDB not building table (https://www.wowinterface.com/forums/showthread.php?t=55907)

Sweetsour 12-08-17 11:06 PM

AceDB not building table
 
I've been at this for hours and I'm not sure why it isn't working. I've been successful with AceDB with my previous Addon, but the only thing ending up in this addon's SavedVariables table is the profile keys; the data shown in the "defaults" table below is nowhere to be found.

File Structure
Code:

[root_folder]
[Libs]
[AceAddon-3.0]
[AceConfig-3.0]
[AceConsole-3.0]
[AceDB-3.0]
[AceEvent-3.0]
[AceGUI-3.0]
[AceHook-3.0]
[AceTimer-3.0]
[CallbackHandler-1.0]
[LibStub]
Ace3.lua
Ace3.toc
load_libraries.xml
core.lua
SuperCrits.toc

load_llibraries.xml
xml Code:
  1. <Ui xmlns="http://www.blizzard.com/wow/ui/">
  2.     <Script file="LibStub\LibStub.lua"/>
  3.     <Include file="CallbackHandler-1.0\CallbackHandler-1.0.xml"/>
  4.     <Include file="AceAddon-3.0\AceAddon-3.0.xml"/>
  5.     <Include file="AceEvent-3.0\AceEvent-3.0.xml"/>
  6.     <Include file="AceConsole-3.0\AceConsole-3.0.xml"/>
  7.     <Include file="AceDB-3.0\AceDB-3.0.xml"/>
  8.     <Include file="AceTimer-3.0\AceTimer-3.0.xml"/>
  9.     <Include file="AceHook-3.0\AceHook-3.0.xml"/>
  10.     <Include file="AceConfig-3.0\AceConfig-3.0.xml"/>
  11.     <Script file="LibDataBroker\LibDataBroker-1.1.lua"/>
  12. </Ui>

TOC File
Code:

## Interface: 70300
## Title: Super Crits
## Notes: Super Crits Description
## Author: Sweetsour
## Version: r01-beta
## SavedVariables: SCritsDB

## OptionalDeps: Ace3, LibAboutPanel

Libs\load_libraries.xml

core.lua

core.lua
Lua Code:
  1. local FOLDER_NAME, SC = ...
  2.  
  3. local SCrits = LibStub('AceAddon-3.0'):NewAddon("SuperCrits", 'AceConsole-3.0','AceEvent-3.0','AceHook-3.0','AceTimer-3.0')
  4.  
  5. local defaults = {
  6.     char = {
  7.         damaging = {
  8.             pet = true,
  9.             dots = true,
  10.             damage = true,
  11.             threshold = {
  12.                 enabled = false,
  13.                 value = 2000000,
  14.             },
  15.         },
  16.     },
  17. }
  18.    
  19. function SCrits:OnInitialize()
  20.     self.db = LibStub("AceDB-3.0"):New("SCritsDB",defaults)
  21. end
  22.  
  23. function SCrits:OnEnable()
  24.     self:RegisterEvent("PLAYER_REGEN_DISABLED")
  25. end
  26.  
  27. function SCrits:PLAYER_REGEN_DISABLED()
  28.     self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
  29.     self:RegisterEvent("PLAYER_REGEN_ENABLED")
  30. end
  31.  
  32. function SCrits:PLAYER_REGEN_ENABLED()
  33.     self:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
  34.     self:UnregisterEvent("PLAYER_REGEN_ENABLED")
  35. end
  36.  
  37. function SCrits:COMBAT_LOG_EVENT_UNFILTERED(event,...)
  38.  
  39. end

Fizzlemizz 12-09-17 09:08 AM

I don't know Ace at all so I might be missing something but I see nowhere that defaults gets written (copied) to the SavedVariables table.

Sweetsour 12-09-17 11:20 AM

Line 20 in core.lua should be doing it. According to the official AceDB docs, it's correct. Just not sure why the table isn't showing up :(

Seerah 12-09-17 03:19 PM

iirc, the only time something gets written to the saved variables with Ace3-DB is when a profile has changed a setting from the defaults.

Rilgamon 12-10-17 09:04 AM

Not sure, you create defaults for char but you only define the global db?

myrroddin 12-10-17 10:08 AM

What Seerah said. AceDB does not write anything to the SV file except for the profile keys, unless something has been changed by the user. If the value in the defaults table is the same as the user settings, there is no change, therefore nothing is written into the saved variables file.

Rilgamon, what Sweetsour wrote in his .toc is correct for AceDB, although you can use saved variables per character as well if you wanted. However, I always felt that was unnecessary since AceDB can use any combination of global, profile, char, faction, and a few other variants.

I do have one suggestion to make about line 20. Change it to include the true argument at the end. This will create a profile called Default when loaded into the game.
Lua Code:
  1. self.db = LibStub("AceDB-3.0"):New("SCritsDB", defaults, true)

myrroddin 12-10-17 10:13 AM

Oh, I just noticed that your OptionalDeps line in your .toc is missing LibStub and CallbackHandler-1.0, which should be listed before Ace3.

... And double check the order of your listed Ace3 components in load_libraries.xml. The listed order should exactly match the order listed in Ace3.toc. You do not need to list all the components if you aren't using them, but whichever ones you are using will depend on the load order of other components.


All times are GMT -6. The time now is 06:45 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI