Quantcast
Channel: ESOUI - AddOn Help/Support
Viewing all 1167 articles
Browse latest View live

Updating LibMenu version issue

$
0
0
Quote:

Originally Posted by votan (Post 30994)
You used rev 20, not rev 23.
If I copy rev 23 to your folder, the addon settings do work.

I found the problem. My intention was to update LibMenu and then remove the work 'skeleton' from the files, however one rename was done.

All is good now, thanks for the help.

Addons not showing up ingame

$
0
0
Quote:

Originally Posted by Anceane (Post 31001)
From memory the LiveEU folder have been renamed for all (NA+EU) and renamed to LIVE only.

So be sur that your folder is rightly named.


yes as i said it was because eso was looking in a different addons folder that was found in C:\ProgramData\Elder Scrolls Online\live and not where it should of been looking for addons, by doing a quick search for addons in your files

Attribute Bars Request

Guild rank permissions change via code only

$
0
0
After a lot of digging around, I came up with the following code which I feel should do what I wanted and although the code doesn't produce any LUA errors, doesnt appear to update the permissions as desired:

Code:

  tmpRank = ZO_Object.New(ZO_GuildRank_Shared)
  tmpRank.guildId = 5
  tmpRank.name = GetFinalGuildRankName(tmpRank.guildId, 2)
  tmpRank.iconIndex = GetGuildRankIconIndex(tmpRank.guildId, 2)
  tmpRank.permissionSet = {}
  for i = 1, GetNumGuildPermissions() do
    tmpRank.permissionSet[i] = DoesGuildRankHavePermission(guildId, 2, i)
  end
  --asign new permissions
  for i = 1, GetNumGuildPermissions() do
    if i == 16 then
      newPermissions = ComposeGuildRankPermissions(newPermissions, i, false)
    else
      local newPermissions = ComposeGuildRankPermissions(newPermissions, i, tmpRank.permissionSet[i])
    end
  end
  InitializePendingGuildRanks(2)
  AddPendingGuildRank(2, tmpRank.name, newPermissions, tmpRank.iconIndex)
  SavePendingGuildRanks()

If my guild (ID 5) rank 2, permission 16 (Guild bank removal) are set in the GUI to enabled (true) the code above doesn't update it to false but i'm at a loss as to why.

Any ideas anyone ? =) I'm still trying to scout through the base UI source to see if the guild rank is technically removed and re-added rather than overwritten.

Regards,

Kith

is this ZoS or an addon LUA error ?

$
0
0
From memory, it happened when at the same time, i leveled, captured a keep (so received, achievement), finished a daily with Kill x of, and got Revenge achievement, ALL at the same time, on a new character.

May be it was too fast that all those happened at the same time.

Thank you for your answers :)

how to know which id number = character name ?

$
0
0
I am asking this, as i realised that a lot of my characters settings addons are saved in savedvariables 2 times under different denomination.

First : number ID
second : character name

Is there a way to find which number ID = name character so i can purge some of the settings ?

Also, old characters deleted months ago still appear on some (not all) savedvariables, though those savedvariable have been deleted and started a new.

Any idea how to remove them definitily ?

Thank you

Minimal Chat -Request

$
0
0
Hello,

I'd like to request the following~


- Hide/Remove; chat art and background, Notifications/friends/mail buttons, Tabs (as i only need one)
^ Include tab configuration options in addon menu

- No unfade when opening and closing menu's

- Faster text fade after new message

- Play sound when new message in group chat and when receiving whisper

- Never fade group text whilst in group

- Command for clearing chat log of all text (helpful when filled with zone spamm)

- Unlock chat box width resizing

- Black background for text when chat window in focus


I know there are chat addons that have some of this functionality, but always come with other things that i do not want and some of which cant be turned off.

Hopefully not too demanding lol, Thanks for your time :banana:

Drink/Food bonus text

$
0
0
Quote:

Originally Posted by Dolgubon (Post 31091)
GetItemLinkFlavortext might be what you are looking for.

Nope that wasn't correct. Got "A dessert cocktail of jagga, rotmeth, and sweetbread puree. Definitely Green Pact compliant." for Dubious Camoran Throne :P

Minimap errors

AUI Interface LUA Error Buff frames

$
0
0
Hello everyone,
if just found a bug in the current release, when i try to move the AUI Buff Bars (Player or Target) im getting this Error:

user:/AddOns/AUI/modules/buffs/Buffs.lua:1: attempt to index a nil value
stack traceback:
user:/AddOns/AUI/modules/buffs/Buffs.lua:1: in function 'OnMouseUp'
user:/AddOns/AUI/modules/buffs/Buffs.lua:1: in function '(anonymous)'

And im not a able to move the buff frames while i can move the other AUI frames.
Anyone knows a workaround for this? Did i mess something up?

cheers for any help!

Edit: Error Message is gone in version 2.3.0a ,so nvm.

Developers Please

$
0
0
At least it's local, so we don't need to see it:D

Constant error

$
0
0
Quote:

Originally Posted by Dolgubon (Post 31270)
Looks like a ZOS error, but it could also be happening because an addon is playing with their code. Try disabling all other addons and see if it continues.

The error itself is coming from zo_callLater. Someone calls it with nil as the function to be called.
The problem is, that it is not reliable reproducable. Sounds like a timing problem.

Saved Variable error I am running into

$
0
0
That helped a ton thank you! Very helpful :D

Need code help with Joviex's Addon Settings Transfer

$
0
0
Hey there everyone!

So I have been attempting to "maintain" Joviex's Addon Settings Transfer and I have someone in the comments section that is having a bit of an issue. My knowledge with LUA is limited and I am learning a lot but I cant even fathom how to solve this problem right now.

Here is the post from the commenter:

Quote:

OK, so when trying to delete an old character I get this error:

Code:

2017-06-02T12:32:46.027+10:00 |cff0000Lua Error: user:/AddOns/jovAST/jovAST.lua:663: attempt to index a function value
stack traceback:
user:/AddOns/jovAST/jovAST.lua:663: in function 'JOV_AST:WipeValid'
user:/AddOns/jovAST/jovAST.lua:726: in function '(anonymous)'|r

However I can see in the Chat window where it gets upto with removing data, so it's crashing on trying to remove specific data. I discovered that I can just uncheck the offending mod, and it skips deleting data for that, continuing to output that it deleted data - until it crashes on the next one.

Here are a list of mods/folders that I unselected. I put in (parenthesis) after the folder the actual mod as it appears here on ESOUI, if it was a mod. The error was the same for every mod that I had to unselect - the same line number and stacktrace at least, but the reason was either "attempt to index a function value" or "attempt to index a number value".

Right, so here's what I had to unselect for JovAST settings delete to actually work:

BankManagerRules (Bank Manager Revived)
CHAT_MENU_GAMEPAD (??? No matches)
FRIENDS_LIST_MANAGER (??? No matches)
g_smallMapAnchor (??? No matches)
GAMEPAD_* (???)
GROUP_LIST_* (???)
GUILD_ROSTER_* (???)
HarvensTraitAndStyle_SavedVariables (Harven's Trait and Style)
HarvestAD (HarvestMap)
HOUSING_PREVIEW_DIALOG_GAMEPAD
IGNORE_LIST_MANAGER
LEADERBOARDS
lootStream (???)
LWF4
MMScrollList
PLAYER_PROGRESS_BAR_GAMEPAD_NAME_LOCATION_ANCHOR_FRA
VOTANS_MINIMAP
WORLD_MAP_LOCATIONS
WORLD_MAP_QUESTS
wykkyds* (All of those mods in the suite)
ZO_*

After all this, it *seemed* to work. A UI reload was triggered, anyway, but the character I just deleted still appears in the list.

I was mainly doing this to get rid of long-deleted alt characters from Trait And Style tooltips, but I had to unselect that due to errors. Not a big deal as I can just disable display of those characters that I deleted, but that's just one mod case.
I've poured over the LUA for the addon a bit and when it comes to deleting addon settings I am at a loss. Personally I have been able to delete my characters data without any issue, but I would really like to solve this or at least clean it up a bit for this user.

Here is the code for jovAST.lua
Code:

--[[
  * Joviex's Addon Settings Transfer Tool
  * Author: Joviex (amorano@gmail.com)
  * Special Thanks To:
        *        Wykkyd for the inspirational framework
        *        Seerah for the awesome LibAddonMenu wrapper
]]--

-- Get the global panel if it exists
local LAM = LibStub("LibAddonMenu-2.0")
local JUL = LibStub("LibUtil")
local JOV_AST = ZO_Object:Subclass()
--------------------------------------------------------------------------------
-- MODULE METHODS
--------------------------------------------------------------------------------
function ToggleWindow()
        JOV_AST:ToggleWindow()
end
--------------------------------------------------------------------------------
-- GLOBALS REGISTRATION
--------------------------------------------------------------------------------
JOV_AST.defaults = {
        Debug = true,
        AutoReload = true,
        AddonScrollSize = 12,
}

JOV_AST.commands = {
        ["toggle"] = ToggleWindow,
}
--------------------------------------------------------------------------------
-- REGISTRATION
--------------------------------------------------------------------------------
function JOV_AST.SlashCommandHelp()
        JUL:print("Addon Setting Transfer usage:")
        JUL:print("  /jovast toggle (toggle the window on/off)")
end

function JOV_AST.SlashCommand(argtext)
        --local args = {JUL:strsplit(" ", argtext)}
        --if next(args) == nil then
        --        self:SlashCommandHelp()
        --        return
        --end

        --local command = JOV_AST.commands[args[1]]
        --if not command then
        --        JUL:print("JOV_AST: unknown command '", args[1], "'.")
        --        self:SlashCommandHelp()
        --        return
        --end

        -- Call the selected function with everything except the original command
        --command(unpack(args, 2))
        JOV_AST:ToggleWindow()
end

function JOV_AST:WindowInit()

        if self.frame ~= nil then return end
        self:Refresh()

        local wm = WINDOW_MANAGER
        local win = "JOV_ASTWindow"
        local frame = JUL:CHAIN(wm:CreateTopLevelWindow(win))
                :SetAnchor(CENTER, GuiRoot, CENTER, 0, 0)
                :SetHidden(true)
                :SetMovable(true)
                :SetMouseEnabled(true)
                :SetClampedToScreen(true)
                :SetResizeToFitDescendents(true)
        .__END

        local fontFile = ZoFontGameBold:GetFontInfo()
        local headerFontSize = 24
        local headerFont = string.format("%s|%d|%s", fontFile, headerFontSize, "soft-shadow-thin")
        local headerText = "|cAD66D5Joviex's|r |cEEDDEEAddon Settings Transfer|r Tool"
        local headerTextRaw = "Joviex's Addon Settings Transfer Tool"
        local headerWidth = headerTextRaw:len() * headerFontSize * 0.45

        self.fmtLabel = {}
        self.fmtLabel.Size = 19
        self.fmtLabel.Font = string.format("%s|%d|%s", fontFile, self.fmtLabel.Size, "soft-shadow-thin")
        local labelWidth = 0
        for i=1, #self.charsSort do
                labelWidth = math.max(labelWidth, self.charsSort[i]:len())
        end
        labelWidth = labelWidth * self.fmtLabel.Size * 0.6
        if labelWidth > headerWidth * 0.5 then
                headerWidth = labelWidth * 2
        else
                labelWidth = headerWidth * 0.5
        end

        self.fmtButton = {}
        self.fmtButton.Size = 17
        self.fmtButton.Font = string.format("%s|%d|%s", fontFile, self.fmtButton.Size, "soft-shadow-thin")

        ----------------------------------------------------------------------------
        -- BACKGROUND
        ----------------------------------------------------------------------------
        local ii = 1
        local bg = JUL:CHAIN(wm:CreateControl(win.."_"..ii, frame, CT_BACKDROP))
                :SetAnchorFill(frame)
                :SetCenterColor(.15, .15, .2, .55)
                :SetEdgeColor(.3, .3, .4, 1)
                :SetEdgeTexture(nil, 2, 2, 2, 2)
                :SetDrawLayer(DL_BACKGROUND)
                :SetResizeToFitDescendents(true)
        .__END

        ii = ii + 1
        local aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, bg, CT_LABEL))
                :SetAnchor(TOPLEFT, bg, TOPLEFT, 0, 0)
                :SetDimensions(headerWidth, headerFontSize+4)
                :SetFont(headerFont)
                :SetColor(1, 1, 1, 1)
                :SetText(headerText)
                :SetHorizontalAlignment(1)
        .__END

        ii = ii + 1
        local cont = JUL:CHAIN(wm:CreateControl(win.."_"..ii, bg, CT_BACKDROP))
                :SetAnchorFill(bg)
                :SetAnchor(TOPLEFT, bg, TOPLEFT, 0, headerFontSize+4)
                :SetResizeToFitDescendents(true)
                :SetCenterColor(.15, .15, .2, .55)
                :SetEdgeColor(.3, .3, .4, 1)
                :SetEdgeTexture(nil, 2, 2, 2, 2)
                :SetDrawLayer(DL_BACKGROUND)
        .__END

        ----------------------------------------------------------------------------
        -- TOP LABELS
        ----------------------------------------------------------------------------
        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 5)
                :SetDimensions(labelWidth, self.fmtLabel.Size)
                :SetFont(self.fmtLabel.Font)
                :SetColor(1, 0.64, 0.1, 1)
                :SetText("TRANSFER FROM")
                :SetHorizontalAlignment(1)
        .__END

        ii = ii + 1
        local bb = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, TOPRIGHT, 0, 0)
                :SetDimensions(labelWidth, self.fmtLabel.Size)
                :SetFont(self.fmtLabel.Font)
                :SetColor(1, 0.64, 0.1, 1)
                :SetText("TRANSFER TO")
                :SetHorizontalAlignment(1)
        .__END

        ----------------------------------------------------------------------------
        -- CHARACTERS
        ----------------------------------------------------------------------------
        self.masterCtrls = {}
        self.targetCtrls = {}
        local player = GetUnitName("player")

        for ch=1, #self.charsSort do
                name = self.charsSort[ch]
                if name ~= "_" and tonumber(name) == nil then
                        local alpha = 0.6
                        if player == name then alpha = 1 end

                        ii = ii + 1
                        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_BUTTON))
                                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                                :SetDimensions(labelWidth, self.fmtButton.Size)
                                :SetFont(self.fmtButton.Font)
                                :SetText(name)
                                :EnableMouseButton(1, true)
                                :SetAlpha(alpha)
                                :SetMouseOverFontColor(0.95, 0.8, 0.1, 1)
                                :SetPressedFontColor(0.95, 0.8, 0.1, 1)
                                :SetHandler("OnClicked", function(self) JOV_AST:MasterClick(self) end)
                        .__END
                        if player == name then
                                aa:SetNormalFontColor(0.3, 0.9, 0.2, 1)
                        else
                                aa:SetNormalFontColor(0.9, 0.9, 0.9, 1)
                        end
                        aa.jName = name
                        self.masterCtrls[#self.masterCtrls+1] = aa

                        ii = ii + 1
                        bb = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_BUTTON))
                                :SetAnchor(TOPLEFT, aa, TOPRIGHT, 0, 0)
                                :SetDimensions(labelWidth, self.fmtButton.Size)
                                :SetFont(self.fmtButton.Font)
                                :SetText(name)
                                :EnableMouseButton(1, true)
                                :EnableMouseButton(2, true)
                                :SetAlpha(1)
                                :SetNormalFontColor(0.3, 0.9, 0.2, 1)
                                :SetMouseOverFontColor(0.95, 0.8, 0.1, 1)
                                :SetPressedFontColor(0.95, 0.8, 0.1, 1)
                                :SetHandler("OnClicked", function(self, index) JOV_AST:TargetClick(self, index) end)
                        .__END
                        self.targetCtrls[#self.targetCtrls+1] = bb
                        bb.jName = name
                end
        end

        ----------------------------------------------------------------------------
        -- ADDONS
        ----------------------------------------------------------------------------
        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, self.fmtLabel.Size / 2)
                :SetDimensions(headerWidth, self.fmtLabel.Size * 1.25)
                :SetFont(self.fmtLabel.Font)
                :SetColor(1, 0.64, 0.1, 1)
                :SetText("TRANSFER SELECTED ADD-ON SETTINGS")
                :SetHorizontalAlignment(1)
        .__END

        ----------------------------------------------------------------------------
        -- SCROLL FRAME
        ----------------------------------------------------------------------------
        self.addonCtrls = {}

        self.AddonScrollArea = JUL:CHAIN(wm:CreateControl(win.."_AddonScoll", cont, CT_CONTROL))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                :SetResizeToFitDescendents(true)
                :SetMouseEnabled(true)
                :SetHandler("OnMouseWheel",function(self, delta)
                        local value = self.offset - delta
                        if value < 0 then
                                value = 0
                        elseif value > #JOV_AST.addonsSort - self.max then
                                value = #JOV_AST.addonsSort - self.max
                        end
                        self.offset = value
                        JOV_AST.AddonScrollBar:SetValue(value)
                        JOV_AST:AddonScrollUpdate()
                end)
        .__END
        self.AddonScrollArea.offset = 0
        self.AddonScrollArea.max = self.config.AddonScrollSize

        -- This is what turns a simple slider into a scrollbar
        local tex = "/esoui/art/miscellaneous/scrollbox_elevator.dds"
        local back = "/esoui/art/chatwindow/chat_scrollbar_track.dds"
        self.AddonScrollBar = JUL:CHAIN(wm:CreateControl(win.."_AddonScollBar", self.AddonScrollArea, CT_SLIDER))
                :SetAnchor(TOPLEFT, aa, TOPRIGHT, -15, 0)
                :SetDimensions(13, self.fmtLabel.Size * self.AddonScrollArea.max)
                :SetMouseEnabled(true)
                :SetThumbTexture(tex, tex, tex, 18, 50, 0, 0, 1, 1)
                :SetBackgroundMiddleTexture(back, 0, 0, 1, 1)
                :SetValue(0)
                :SetValueStep(1)
                :SetHandler("OnValueChanged", function(self, value, eventReason)
                        JOV_AST.AddonScrollArea.offset = math.min(value, #JOV_AST.addonCtrls - JOV_AST.AddonScrollArea.max)
                        JOV_AST:AddonScrollUpdate()
                end)
        .__END

        local aIndex = 0
        for k=1, #self.addonsSort do
                aIndex = aIndex + 1
                name = self.addonsSort[k]
                local visible = k > self.AddonScrollArea.max
                aa = JUL:CHAIN(wm:CreateControl("AddonScoll"..aIndex, self.AddonScrollArea, CT_BUTTON))
                        :SetAnchor(TOPLEFT, self.AddonScrollArea, TOPLEFT, 0, (k-1)*self.fmtButton.Size+2)
                        :SetDimensions(headerWidth-15, self.fmtButton.Size)
                        :SetFont(self.fmtButton.Font)
                        :SetText(name)
                        :EnableMouseButton(1, true)
                        :EnableMouseButton(2, true)
                        :SetAlpha(1)
                        :SetNormalFontColor(0.3, 0.9, 0.2, 1)
                        :SetMouseOverFontColor(0.95, 0.8, 0.1, 1)
                        :SetPressedFontColor(0.95, 0.8, 0.1, 1)
                        :SetHandler("OnClicked", function(self, index) JOV_AST:AddonClick(self, index) end)
                        :SetHidden(visible)
                .__END
                self.addonCtrls[#self.addonCtrls+1] = aa
                aa.jName = name
        end

        ----------------------------------------------------------------------------
        -- TRANSFER BUTTON
        ----------------------------------------------------------------------------
        -- SPACER
        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_LABEL))
                :SetAnchor(TOPLEFT, self.AddonScrollArea, BOTTOMLEFT, 0, 0)
                :SetDimensions(headerWidth, 10)
                :SetFont(self.fmtLabel.Font)
                :SetText(" ")
        .__END

        -- TRANSFER BUTTON
        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_BUTTON))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                :SetDimensions(headerWidth, self.fmtLabel.Size)
                :SetFont(self.fmtLabel.Font)
                :SetText("TRANSFER SETTINGS")
                :EnableMouseButton(1, true)
                :SetAlpha(1)
                :SetNormalFontColor(1, 1, 1, 1)
                :SetMouseOverFontColor(0.95, 0.25, 0.35, 1)
                :SetPressedFontColor(0.95, 0.25, 0.35, 1)
                :SetHandler("OnClicked", function(self) JOV_AST:Transfer(self) end)
        .__END
       
        -- SPACER
        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, cont, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                :SetDimensions(headerWidth, 10)
                :SetFont(self.fmtLabel.Font)
                :SetText(" ")
        .__END

        self.frame = frame

        ----------------------------------------------------------------------------
        -- DIALOG BOX
        ----------------------------------------------------------------------------

        ii = 1
        win = "JOV_ASTPrompt"
        prompt = JUL:CHAIN(wm:CreateTopLevelWindow(win))
                :SetAnchor(CENTER, GuiRoot, CENTER, 0, 0)
                :SetHidden(true)
                :SetMovable(false)
                :SetMouseEnabled(true)
                :SetClampedToScreen(true)
                :SetDimensions(500, 500)
                :SetResizeToFitDescendents(false)
        .__END

        headerFont = string.format("%s|%d|%s", fontFile, 24, "soft-shadow-thin")

        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, prompt, CT_BACKDROP))
                :SetAnchorFill(prompt)
                :SetCenterColor(.3, .2, .4, .95)
                :SetEdgeColor(.6, .6, .8, 1)
                :SetEdgeTexture(nil, 1, 1, 1, 1)
                :SetDrawLayer(DL_BACKGROUND)
        .__END

        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, prompt, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, TOPLEFT, 0, 90)
                :SetDimensions(500, headerFontSize+90)
                :SetVerticalAlignment(2)
                :SetFont(headerFont)
                :SetColor(1, 1, 1, 1)
                :SetText("This |cEE4332removes ALL|r settings for")
                :SetHorizontalAlignment(1)
        .__END

        headerFont2 = string.format("%s|%d|%s", fontFile, headerFontSize+25, "soft-shadow-thin")
        aa = JUL:CHAIN(wm:CreateControl(win.."_MSG", prompt, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                :SetDimensions(500, headerFontSize+90)
                :SetVerticalAlignment(2)
                :SetFont(headerFont2)
                :SetColor(1, 1, 1, 1)
                :SetText("")
                :SetHorizontalAlignment(1)
        .__END

        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, prompt, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                :SetDimensions(500, headerFontSize+90)
                :SetVerticalAlignment(2)
                :SetFont(headerFont)
                :SetColor(1, 1, 1, 1)
                :SetText("using all the |c43EE32selected|r addons")
                :SetHorizontalAlignment(1)
        .__END
        ----------------------------------------------------------------------------

        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_"..ii, prompt, CT_BUTTON))
                :SetAnchor(TOPLEFT, aa, BOTTOMLEFT, 0, 0)
                :SetDimensions(250, self.fmtLabel.Size)
                :SetFont(self.fmtLabel.Font)
                :SetText("CANCEL")
                :EnableMouseButton(1, true)
                :SetAlpha(1)
                :SetNormalFontColor(0.9, 0.3, 0, 1)
                :SetMouseOverFontColor(0.9, 0.8, 0.1, 1)
                :SetPressedFontColor(0.9, 0.8, 0.1, 1)
                :SetHandler("OnClicked", function(self, index) JOV_AST.prompt:SetHidden(true) end)
        .__END

        ii = ii + 1
        aa = JUL:CHAIN(wm:CreateControl(win.."_CONFIRM", prompt, CT_BUTTON))
                :SetAnchor(TOPLEFT, aa, TOPRIGHT, 0, 0)
                :SetDimensions(250, self.fmtLabel.Size)
                :SetFont(self.fmtLabel.Font)
                :SetText("CONFIRM")
                :EnableMouseButton(1, true)
                :SetAlpha(1)
                :SetNormalFontColor(0.3, 0.9, 0, 1)
                :SetMouseOverFontColor(0.9, 0.8, 0.1, 1)
                :SetPressedFontColor(0.9, 0.8, 0.1, 1)
        .__END

        ii = ii + 1
        self.FrameBottom = JUL:CHAIN(wm:CreateControl(win.."_"..ii, prompt, CT_LABEL))
                :SetAnchor(TOPLEFT, aa, TOPLEFT, 0, 0)
                :SetDimensions(500, self.fmtLabel.Size)
                :SetFont(self.fmtLabel.Font)
                :SetColor(1, 1, 1, 1)
                :SetText(" ")
                :SetHorizontalAlignment(1)
        .__END
        self.prompt = prompt
end

function JOV_AST:SettingsPanelInit() -- Updated to LibAddonMenu-2.0 - Phinix
        local desc = ""
        -------------------------------------- WIDTH LIMIT IN SETTINGS PANEL --------------------------------------
        desc = desc.."There is a toggle command that can be |CEE3300bound to a key|r\n"
        desc = desc.."Check under |CEE3300Control->Settings|r tab to set a keybind for toggling\n"
        desc = desc.."Use the commandline |CEE3300/jovast|r to toggle the window on/off\n"
        desc = desc.."Right-click characters in the Transfer To section to remove from list."
        local panel = {
                type                                        = "panel",
                name                                        = "Joviex's Settings",
                displayName                                = "|cAD66D5Joviex's|r Settings",
                author                                        = "Joviex",
                version                                        = "14.07.03.1h",
                registerForRefresh                = true,
                registerForDefaults                = true
        }

        local optionsData = {
        {
                type                        = "header",
                name                        = "Add-On Settings Transfer",
                reference                = "Add-On Settings Transfer"
        },
        {
                type                        = "description",
                title                        = "Usage Help",
                text                        = desc,
                reference                = "Help"
        },
        {
                type                        = "checkbox",
                name                        = "Auto-Reload",
                tooltip                        = "Automatically reload when settings are transferred",
                getFunc                        = function() return self.config.AutoReload end,
                setFunc                        = function(val) self.config.AutoReload = val end,
                default                        = JOV_AST.defaults.AutoReload,
                reference                = "AutoReload"
        },
        {
                type                        = "checkbox",
                name                        = "Show All Output",
                tooltip                        = "Show all output/debug messages",
                getFunc                        = function() return self.config.Debug end,
                setFunc                        = function(val) self.config.Debug = val end,
                default                        = JOV_AST.defaults.Debug,
                reference                = "Debug"
        },
        {
                type                        = "slider",
                name                        = "Addon List Size",
                tooltip                        = "Adjust the number of addons in the addon area list",
                min                                = 5,
                max                                = 20,
                step                        = 1,
                getFunc                        = function() return self.config.AddonScrollSize end,
                setFunc                        = function(val)
                                                        self.config.AddonScrollSize = val
                                                        -- refresh the scroll list?
                                                        if self.AddonScrollArea then
                                                                self.AddonScrollArea.max = val
                                                                self.AddonScrollArea.offset = 0
                                                                self.AddonScrollBar:SetDimensions(13, self.fmtLabel.Size * val)
                                                                self.AddonScrollBar:SetValue(0)
                                                                self:AddonScrollUpdate()
                                                                self.frame:SetHeight(0)
                                                                self.frame:SetResizeToFitDescendents(false)
                                                                self.frame:SetResizeToFitDescendents(true)
                                                                -- move the window size
                                                                --local b = self.FrameBottom:GetBottom()
                                                        end
                                                end,
                default                        = JOV_AST.defaults.ScrollSize,
                reference                = "ScrollSize"
        }
        }

        LAM:RegisterAddonPanel("_jovAST", panel)
        LAM:RegisterOptionControls("_jovAST", optionsData)
end

function JOV_AST:Init(eventCode, addOnName)
        if(addOnName ~= "jovAST") then return end

        -- No need for any more checking about my addon being loaded!
        EVENT_MANAGER:UnregisterForEvent("jovAST", EVENT_ADD_ON_LOADED)

        self.config = ZO_SavedVars:NewAccountWide("jovAST", 1, nil, self.defaults)

        -- keybind strings
        ZO_CreateStringId("SI_BINDING_NAME_JOV_TOGGLE_AST_WINDOW", "Toggle Settings Transfer Window")

        -- ingame saved variable table def. addr/zgoo
        --ZIIGSV = tostring(_G["ZO_Ingame_SavedVariables"]):match(": ([%u%d]+)")
        --zo_callLater(function() d(ZIIGSV) end, 300)

        self.frame = nil
        self.chars = {}
        self.charsSort = {}
        self.addons = {}
        self.addonsSort = {}

        self:SettingsPanelInit()
       
        if self.config.Debug == true then -- Only show login message if debug mode is on. -Phinix
                zo_callLater(function() d(" |cFFD300Loaded|r |cAD66D5Joviex's|r |cEEDDEEAddon Settings Manager|r. |cEE4332/jovast|r |cEEDDEEto toggle|r") end, 300)
        end

end


--------------------------------------------------------------------------------
-- CLASS METHODS
--------------------------------------------------------------------------------
function JOV_AST:IsHidden()
        local ret = true
        if self.frame then
                ret = self.frame:IsHidden()
        end
        return ret
end

function JOV_AST:ToggleWindow()
        local i = self:IsHidden()
        if i == true then
                self:WindowInit()
        end
        SetGameCameraUIMode(self.frame:IsHidden())
        self.frame:SetHidden(not i)

        if self.frame:IsHidden() then
                self.prompt:SetHidden(true)
        else
                self.AddonScrollBar:SetValue(0)
                self:AddonScrollUpdate()
        end
end

function JOV_AST:MasterClick(but)
        for i=1, #self.masterCtrls do
                m = self.masterCtrls[i]
                if m:GetHeight() > 0 then
                        if but == m then
                                m:SetNormalFontColor(0.3, 0.9, 0.2, 1)
                                m:SetAlpha(1)
                                self.masterCtrlsSelected = m
                        else
                                m:SetNormalFontColor(0.9, 0.9, 0.9, 1)
                                m:SetAlpha(0.6)
                        end
                end
        end
end

function JOV_AST:TargetClick(but, index)
        if (index == 2) then
                ClearMenu()
                AddMenuItem("Remove Settings",
                        function() JOV_AST:Wipe(but) end
                )
                ShowMenu(but)
                return
        end

        s = but:GetAlpha()
        if s == 1 then
                but:SetNormalFontColor(0.9, 0.9, 0.9, 1)
                but:SetAlpha(0.6)
        else
                but:SetNormalFontColor(0.3, 0.9, 0.2, 1)
                but:SetAlpha(1)
        end
end

function JOV_AST:AddonClick(but, index)
        if (index == 2) then
                ClearMenu()
                AddMenuItem("Toggle Only Me",
                        function()
                                -- turn everything off....
                                for i=1, #self.addonCtrls do
                                        m = self.addonCtrls[i]
                                        m:SetNormalFontColor(0.9, 0.9, 0.9, 1)
                                        m:SetAlpha(0.6)
                                end
                                JOV_AST:AddonClick(but, 1)
                        end
                )
                ShowMenu(but)
                return
        end

        for i=1, #self.addonCtrls do
                m = self.addonCtrls[i]
                if but == m then
                        s = m:GetAlpha()
                        if s == 1 then
                                m:SetNormalFontColor(0.9, 0.9, 0.9, 1)
                                m:SetAlpha(0.6)
                        else
                                m:SetNormalFontColor(0.3, 0.9, 0.2, 1)
                                m:SetAlpha(1)
                        end
                        break
                end
        end
end


function JOV_AST:AddonScrollUpdate(...)
        local sb = self.AddonScrollArea
        sb.offset = sb.offset or 0

        if #self.addonsSort == 0 then return end
        if sb.offset < 0 then sb.offset = 0 end

        self.AddonScrollBar:SetMinMax(0, #self.addonsSort - sb.max)

        for k, ctrl in pairs(self.addonCtrls) do
                ctrl:ClearAnchors()
                ctrl:SetHidden(true)
        end
        local hgh = sb.offset + sb.max
        if hgh > #self.addonCtrls then hgh = #self.addonCtrls end

        local low = sb.offset + 1

        local k = 0
        for i = low, hgh do
                local ctrl = self.addonCtrls[i]
                ctrl:SetAnchor(TOPLEFT, self.AddonScrollArea, TOPLEFT, 0, k * self.fmtButton.Size)
                ctrl:SetHidden(false)
                k = k + 1
        end
end
function JOV_AST:WipeValid(who, but)
        local account = self.chars["_"]

        for a, b in pairs(self.addonCtrls) do
                if b:GetAlpha() == 1 then
                        for default, entry in pairs(_G[b.jName]) do
                                if entry ~= nil and entry[account] ~= nil then
                                        entry[account][who] = nil
                                        if self.config.Debug then
                                                d("|c33FF66"..who.."|r settings |c99BBFF["..b.jName.."]|r |cEE4332REMOVED|r")
                                        end
                                end
                        end
                end
        end

        -- find same player on master control side
        for k, v in pairs(self.masterCtrls) do
                if who == v.jName then
                        -- do we need to change the current selected char?
                        if v:GetAlpha(1) then
                                local n = -1
                                for k2, v2 in pairs(self.masterCtrls) do
                                        if k2 ~= k then
                                                if v2:GetAlpha() ~= 0 then
                                                        n = k2
                                                        break
                                                end
                                        end
                                end
                                if n ~= -1 then
                                        JOV_AST:MasterClick(self.masterCtrls[n])
                                end
                        end
                        v:SetAlpha(0)
                        v:SetHeight(0)
                        break
                end
        end

        -- hide the current labels? Is there a way to remove UI elements?
        but:SetAlpha(0)
        but:SetHeight(0)

        d("|cFFEEDDSettings Transfer|r |c33FF66Complete")
        if self.config.AutoReload then ReloadUI() end
end

function JOV_AST:Wipe(but)

        local who = but:GetLabelControl():GetText()
        local player = GetUnitName("player")
        if who == player then
                d("Removing settings from the logged in character is |cEE4332denied|r")
                return
        end

        ----------------------------------------------------------------------------
        -- DIALOG CONFIRM
        ----------------------------------------------------------------------------

        self.prompt:SetHidden(false)

        -- update the prompt!
        local msg = "|cEE4332"..who.."|r"
        local ctrl = self.prompt:GetNamedChild("_MSG")
        ctrl:SetText(msg)

        ctrl = self.prompt:GetNamedChild("_CONFIRM")
        ctrl:SetHandler("OnClicked", function(self, index) JOV_AST:WipeValid(who, but); JOV_AST.prompt:SetHidden(true) end)

        self.prompt:BringWindowToTop()
end

function JOV_AST:Transfer()
        local master = nil
        for k, v in pairs(self.masterCtrls) do
                if v:GetAlpha() == 1 then
                        master = v.jName
                        if self.chars[v.jName] == nil then
                                -- sanity check for characters with zero addon settings
                                d("failure to find character to transfer from")
                                return
                        end
                        break
                end
        end

        local account = self.chars["_"]

        for a, b in pairs(self.addonCtrls) do
                if b:GetAlpha() == 1 then
                        for default, entry in pairs(_G[b.jName]) do
                                if entry ~= nil and type(entry) == "table" then
                                        if entry[account] ~= nil then
                                                if entry[account][master] ~= nil then
                                                        for k, v in pairs(self.targetCtrls) do
                                                                if v:GetAlpha() == 1 then
                                                                        entry[account][v.jName] = entry[account][master]
                                                                        if self.config.Debug then
                                                                                d("|c33FF66"..master.."|r settings |c99BBFF["..b.jName.."]|r ==> |c33FF66"..v.jName.."|r")
                                                                        end
                                                                end
                                                        end
                                                else
                                                        if self.config.Debug then
                                                                d("|cFF5522"..master.."|r has no |c99BBFF["..b.jName.."]|r settings to transfer")
                                                        end
                                                end
                                        else
                                                -- will copy all "version" entries
                                                found = false
                                                for version, data in pairs(entry) do
                                                        if type(data) == "table" then
                                                                for char, _ in pairs(data) do
                                                                        if master == char then
                                                                                found = true
                                                                                for k, v in pairs(self.targetCtrls) do
                                                                                        if v:GetAlpha() == 1 then
                                                                                                entry[version][v.jName] = entry[version][master]
                                                                                                if self.config.Debug then
                                                                                                        d("|c33FF66"..master.."|r settings |c99BBFF["..b.jName.."]|r ==> |c33FF66"..v.jName.."|r")
                                                                                                end
                                                                                        end
                                                                                end
                                                                                break
                                                                        end
                                                                end
                                                        end
                                                end

                                                if found == false then
                                                        for char, _ in pairs(entry) do
                                                                if master == char then
                                                                        found = true
                                                                        for k, v in pairs(self.targetCtrls) do
                                                                                if v:GetAlpha() == 1 then
                                                                                        entry[v.jName] = entry[master]
                                                                                        if self.config.Debug then
                                                                                                d("|c33FF66"..master.."|r settings |c99BBFF["..b.jName.."]|r ==> |c33FF66"..v.jName.."|r")
                                                                                        end
                                                                                end
                                                                        end
                                                                        break
                                                                end
                                                        end
                                                end

                                                if not found and self.config.Debug then
                                                        d("|cFF5522"..master.."|r has no |c99BBFF["..b.jName.."]|r default settings")
                                                end
                                        end
                                end
                        end
                end
        end

        d("|cFFEEDDSettings Transfer|r |c33FF66Complete")
        if self.config.AutoReload then ReloadUI() end
end

function JOV_AST:Refresh()
        -- gather the characters and addons per character
        self.addons = {}
        self.chars = {}

        -- Normal way
        for k, v in JUL:safepairs(_G) do
                if type(v) == "table" and k ~= "_G" then
                        for kk, vv in pairs(v) do
                                if type(vv) == "table" then
                                        for k3, v3 in pairs(vv) do
                                                if type(v3) == "table" and type(k3) == "string" and (k3:sub(1,1) == "" or k3:sub(1,1) == "@") then
                                                        self.chars["_"] = k3
                                                        for char, data in pairs(v3) do
                                                                if char ~= "$AccountWide" then
                                                                        -- stash the addon data per character
                                                                        if self.chars[char] == nil then self.chars[char] = {} end
                                                                        self.chars[char][k] = k

                                                                        -- running list of characters with saved data per addon
                                                                        if self.addons[k] == nil then self.addons[k] = {} end
                                                                        self.addons[k][char] = true
                                                                end
                                                        end
                                                        break
                                                end
                                        end
                                end
                        end
                end
        end

        -- Wykkyd's way; requires gathering characters first
        for k, v in JUL:safepairs(_G) do
                if type(v) == "table" and k ~= "_G" then
                        for kk, vv in pairs(v) do
                                if type(vv) == "table" then
                                        for k3, v3 in pairs(vv) do
                                                if type(v3) == "table" and type(k3) == "string" then
                                                        for char, _ in pairs(self.chars) do
                                                                if k3 == char then
                                                                        -- stash the addon data per character
                                                                        self.chars[char][k] = k

                                                                        -- running list of characters with saved data per addon
                                                                        if self.addons[k] == nil then self.addons[k] = {} end
                                                                        self.addons[k][char] = true
                                                                        break
                                                                end
                                                        end
                                                end
                                        end
                                end
                        end
                end
        end

        -- Anyone else using a single level of "character name" for global entries
        for k, v in JUL:safepairs(_G) do
                if type(v) == "table" and k ~= "_G" then
                        for kk, vv in pairs(v) do
                                if type(vv) == "table" and type(kk) == "string" then
                                        for char, _ in pairs(self.chars) do
                                                if kk == char then
                                                        -- stash the addon data per character
                                                        self.chars[char][k] = k

                                                        -- running list of characters with saved data per addon
                                                        if self.addons[k] == nil then self.addons[k] = {} end
                                                        self.addons[k][char] = true
                                                        break
                                                end
                                        end
                                end
                        end
                end
        end

        -- sort by name for easier presentation later
        self.charsSort = {}
        for k, v in pairs(self.chars) do
                self.charsSort[#self.charsSort+1] = k
        end
        table.sort(self.charsSort)

        self.addonsSort = {}
        for k, v in pairs(self.addons) do
                self.addonsSort[#self.addonsSort+1] = k
        end
        table.sort(self.addonsSort)
end

--------------------------------------------------------------------------------
-- INITIALIZATION
--------------------------------------------------------------------------------
EVENT_MANAGER:RegisterForEvent("jovAST", EVENT_ADD_ON_LOADED, function(...) JOV_AST:Init(...) end)

if WF_SlashCommand ~= nil then
        -- Register with Wykkyd's framework for macros
        WF_SlashCommand("jovast", JOV_AST.SlashCommand)
else
        -- Default with no framework
        SLASH_COMMANDS["/jovast"] = JOV_AST.SlashCommand
end

Another person with an addon problem


Is there a problem with the use of DSS (DirectDraw Surface) files in add-ons

$
0
0
BTW: Reinstalling the TESO did not work either.

AddOns won't work

$
0
0
Quote:

Originally Posted by jgq85 (Post 24887)
Hi I just registered to sign in and post what fixed this issue for me.

Open your PC/main folder, then right-click on the "Document" folder (or library shortcut -- whatever it's called) and choose Properties.

Click the "Location" tab.
Notice the path there may be pointing elsewhere?
Mine was, due to wanting to save space from my SSD by defaulting the "Documents" folder to my bigger HDD (E-Drive).
I had to reset this location back to default, after I moved my data to another folder as to not overfill my C-Drive.

But yeah, now it works and I see my add-ons..!

Thank you, jgq85! I also moved my "Documents" library off my SSD. I made the location change with a registry modification, and then I used the Windows UI to change the library back to point at C: because... reasons. The Documents library was working properly as far as I could tell, but even though I had the files properly in BOTH locations, ESO refused to acknowledge them until I hit the "Restore Default" button.

GetBagUseableSize & ESO Plus

Am I allowed to upload Visual Enhancement mods?

$
0
0
Quote:

Originally Posted by Kyoma (Post 31529)
All this talk about graphic enhancements remind me of my friend that has a really shitty plebtop (that's like a.... devolved laptop) and he can often see through walls in IC sewers simply because they dont render properly. :p

ZOS did state in 2014 that the game was designed for computers 4 years old. Maybe that meant the game was actually designed for computers 4 years old, favoring them by providing wallhacks. :cool:

AGS/MM Question re: Search Inputs

$
0
0
Quote:

Originally Posted by sirinsidiator (Post 31537)
It's quite funny that you are requesting this. It's the exact opposite request of why I started making AwesomeGuildStore. :D
ZOS recently integrated the feature to retain the previous search into the base game, so it's currently not supported to have the request cleared when leaving a store. I'll consider adding an autoreset option for the future. :D

Haha, it figures right? I thought the behavior used to be different some time back but I just wrote it off like I had changed something. Anyway, thank you for the response and anything you might add in the future to automate this.
Viewing all 1167 articles
Browse latest View live