SLOKnightfall / BetterWardrobe

31 stars 15 forks source link

cant save or make new save to outfits #473

Open Mrmayhem29 opened 1 month ago

Mrmayhem29 commented 1 month ago

cant see my saved or change my saved outfits ot make new ones

Faulkal commented 1 month ago

same. the save button is locked and the drop down menu to change outfits is empty

elvandarxp commented 1 month ago

Same! I turned off all other addons just in case and the problem persisted. Thanks!

edit: I did notice that it does work most of my characters. The one that fails always is the one with the most amount of saved mogs.

nearlysober80 commented 1 month ago

Experiencing the same issue on some of my characters. When I disable the addon I am able to see my previously saved mogs. BugSack captured the following error:

4x BetterWardrobe/Modules/Wardrobe.lua:7261: bad argument #1 to 'ipairs' (table expected, got nil) [string "=[C]"]: in function ipairs' [string "@BetterWardrobe/Modules/Wardrobe.lua"]:7261: in functionLoadSet' [string "@BetterWardrobe/Modules/BlizzardAPI.lua"]:93: in function LoadOutfit' [string "@BetterWardrobe/Modules/Wardrobe.lua"]:624: in functionLoadOutfit' [string "@BetterWardrobe/Modules/SavedOutfits.lua"]:191: in function SelectOutfit' [string "@BetterWardrobe/Modules/SavedOutfits.lua"]:185: in function <...rfaceBetterWardrobe/Modules/SavedOutfits.lua:181> [string "=[C]"]: in functionShow' [string "@Blizzard_UIParentPanelManager/Mainline/UIParentPanelManager.lua"]:493: in function SetUIPanel' [string "@Blizzard_UIParentPanelManager/Mainline/UIParentPanelManager.lua"]:336: in functionShowUIPanel' [string "@Blizzard_UIParentPanelManager/Mainline/UIParentPanelManager.lua"]:174: in function <...ParentPanelManager/Mainline/UIParentPanelManager.lua:169> [string "=[C]"]: in function SetAttribute' [string "@Blizzard_UIParentPanelManager/Mainline/UIParentPanelManager.lua"]:888: in functionShowUIPanel' [string "@Blizzard_UIPanels_Game/Shared/PlayerInteractionFrameManager.lua"]:205: in function ShowFrame' [string "@Blizzard_UIPanels_Game/Shared/PlayerInteractionFrameManager.lua"]:240: in function <...Panels_Game/Shared/PlayerInteractionFrameManager.lua:237> [string "=[C]"]: in functionCameraOrSelectOrMoveStop'

Locals: (temporary) = nil (temporary) = "table expected, got nil"

zaphon commented 1 month ago

I was having this issue. I'm not sure why, but it seems to have to do with the data in your saved file under OutfitDB. Specifically the lastTransmogOutfitIDSpec which "CAN" cause both issues people are seeing.

  1. It can sometimes not have an entry for your current spec which causes an error when it tries to access it.
  2. It can have an entry that isn't a valid setId which causes the ipairs error. Specifically the following call returns nil which isn't checked for:

local primaryAppearances = C_TransmogSets.GetSetPrimaryAppearances(setID);

And from what I can tell, the piece of code that updates these lists isn't even called right now. I ended up writing a piece of code to delete all the lastTransmogOutfidIDSpec's from my saved file which has solved the issue for me (though I have to hit the dropdown and select a set each time, it doesn't remember what I had selected last). I did this in code simply due to the fact that I have over 300 characters, and doing this by hand would have been a nightmare. You can technically search the save file for lastTransmogOutfitIDSpec and find the character you're having an issue with and delete it (at your own risk).

Here's an example of what I'm talking about in the save file.

["CharacterName - ServerName"] = {
["lastTransmogOutfitIDSpec"] = {
4,
4,
4,
},
},

This one is possibly ok.

A broken one for sure was this (as it's what started me looking at it). This one has several issues (empty entries, and the setID is stored as a STRING).

["Broken - Server"] = {
["lastTransmogOutfitIDSpec"] = {
[3] = "2",
},
},

Another broken one was a character that only had 1 saved set, but the saved file looked like this. I believe it was trying to select a set that didn't exist at all (I believe 5000 would have been the proper setID).

["BrokenTwo - Server"] = {
["lastTransmogOutfitIDSpec"] = {
5002,
5002,
5002,
},
},

What I found was lots of oddities in my file. I found entries where it was '', entries where it was all 0's, etc. Lots of inconsistencies.

SLOKnightfall commented 1 month ago

Thanks for the info.

SLOKnightfall commented 3 weeks ago

@zaphon The next version will clear out any stored lastTransmogOutfitIDSpec values and not set them until I can rework things.