Originally Posted by Baertram
Not sure why but if I dowload your currently uploaded addon file Windows Defender pops in and says your file is a virus.
Maybe a false positive but are you sure you had uploaded the actual addon and nothing else?
And yes, please, as Dolgubon already said:
Always put a local in front of your function names! Or if you define a table local addon, add the functions to that table
function addon.OnCombatStateChanged(param)
function addon.Initialize(param)
function addon.UpdateGroupFrameVisibility(param)
and call them the same addon.OnCombatStateChanged(...) or addon.Initialize, or addon.UpdateGroupFrameVisibility
-> Keep in mind that local functions and code cannot be accessed from XML files of your addon, so see below how to fix this.
Else you might overwrite other addons/ZOs lua code, or some other addon might do that at your addon.
Everything not explicitly defined local is global and must use a very unique name, which in your case could be
function ToggleGroupFrame_OnCombatStateChanged e.g. but actually that's not needed. Keep it local.
Or create 1 global table ToggleGroupFrame = {} and add all functions and variables to that, so you can call it from XML code.
Else it may overwrite, or get overwritten!
|
Ok, for the virus I recon it was a bit too much but it's good to live on the edge
![Stick Out Tongue](//cdn-eso.mmoui.com/images/style_esoui/smilies/tongue.gif)
Now, I've followed your indications and came up with this, it works though my saved variables .. aren't saved anymore so more work needed.
Code:
ToggleGroupFrame = {}
local addon = { name = "ToggleGroupFrame" }
local em = GetEventManager()
local groupFrameHidden = true
local showInCombat = true
ZO_CreateStringId("SI_BINDING_NAME_TOGGLE_GROUP_FRAME", "Show/Hide group frame")
ZO_CreateStringId("SI_BINDING_NAME_TOGGLE_GROUP_FRAME_IN_COMBAT", "Show/Hide in combat")
function addon.OnAddOnLoaded(event, addonName)
if addonName ~= addon.name then return end
addon.Initialize()
end
function addon.Initialize()
ZO_UnitFramesGroups:SetHidden(true)
local savedVariables = ZO_SavedVars:New("ToggleGroupFrameSavedVariables", 1, nil, {}, GetWorldName())
SLASH_COMMANDS['/togglegroupframe'] = function()
groupFrameHidden = not groupFrameHidden
ZO_UnitFramesGroups:SetHidden(groupFrameHidden)
savedVariables.groupFrameHidden = groupFrameHidden
end
SLASH_COMMANDS['/tgf'] = SLASH_COMMANDS['/togglegroupframe']
SLASH_COMMANDS['/togglegroupframeincombat'] = function()
showInCombat = not showInCombat
savedVariables.showInCombat = showInCombat
addon.UpdateGroupFrameVisibility()
end
SLASH_COMMANDS['/tgfc'] = SLASH_COMMANDS['/togglegroupframeincombat']
SLASH_COMMANDS['/tgfic'] = SLASH_COMMANDS['/togglegroupframeincombat']
em:RegisterForEvent(addon.name, EVENT_PLAYER_COMBAT_STATE, addon.OnCombatStateChanged)
em:UnregisterForEvent(addon.name, EVENT_ADD_ON_LOADED)
end
function addon.UpdateGroupFrameVisibility()
if IsUnitInCombat("player") then
if showInCombat then
ZO_UnitFramesGroups:SetHidden(false)
else
ZO_UnitFramesGroups:SetHidden(true)
end
else
ZO_UnitFramesGroups:SetHidden(groupFrameHidden)
end
end
function addon.OnCombatStateChanged(event, inCombat)
if not groupFrameHidden then
return
end
addon.UpdateGroupFrameVisibility()
end
em:RegisterForEvent(addon.name, EVENT_ADD_ON_LOADED, addon.OnAddOnLoaded)
Thank you very much lads! You know how it is when you .. just can't anymore. It's a lot to learn.