View Single Post
03/14/24, 08:51 AM   #1
Saint-Ange
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 10
Need help with an addon writting

Hi, sorry I know everyone is very busy atm but I'm getting crazy over here. Yesterday I finished testing an addon and all was fine and published it: ToggleGroupFrame. Today I log in and catastrophe I got this error:
Code:
:1: function expected instead of nil
stack traceback:
:1: in function '(main chunk)'
	<Locals> keybind = "TOGGLE_GROUP_FRAME" </Locals>
and I'm unable to solve the problem. I'm a beginner, I try to follow guides, I've spent alone more time on this than I'd like to admit, my energy is depleted and my capacities aren't what they were. I need help to sort this out, especially now that I've clearly made the mistake to upload too early.

Here's the lua:
Code:
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")

local function OnAddOnLoaded(event, addonName)
   if addonName ~= addon.name then return end
   Initialize()
end

function 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
      UpdateGroupFrameVisibility()
   end
   SLASH_COMMANDS['/tgfc'] = SLASH_COMMANDS['/togglegroupframeincombat']
   SLASH_COMMANDS['/tgfic'] = SLASH_COMMANDS['/togglegroupframeincombat']

   em:RegisterForEvent(addon.name, EVENT_PLAYER_COMBAT_STATE, OnCombatStateChanged)
   em:UnregisterForEvent(addon.name, EVENT_ADD_ON_LOADED)
end

function 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 OnCombatStateChanged(event, inCombat)
   if not groupFrameHidden then
      return
   end

   UpdateGroupFrameVisibility()
end

em:RegisterForEvent(addon.name, EVENT_ADD_ON_LOADED, OnAddOnLoaded)
and the xml just to be sure:
Code:
<Bindings>
  <Layer name="SI_KEYBINDINGS_LAYER_GENERAL">
    <Category name="ToggleGroupFrame">
      <Action name="TOGGLE_GROUP_FRAME">
        <Down>SLASH_COMMANDS["/togglegroupframe"]()</Down>
      </Action>
      <Action name="TOGGLE_GROUP_FRAME_IN_COMBAT">
        <Down>SLASH_COMMANDS["/togglegroupframeincombat"]()</Down>
      </Action>
    </Category>
  </Layer>
</Bindings>
Any help would be much much much appreciated.
  Reply With Quote