I've been playing ESO on and off for a while. I've finally got around to looking into making my own addons. So I fillowed the
Writing your first addon tutorial. Though Instead of doing incombat, i'm using zone change. I believe I have it set up correctly but when I change zones the label in the UI won't update nor will the new location be added to the chat.
my lua file
Code:
-- First, we create a namespace for our addon by declaring a top-level table that will hold everything else.
TCDInfoPanel = {}
-- This isn't strictly necessary, but we'll use this string later when registering events.
-- Better to define it in a single place rather than retyping the same string.
TCDInfoPanel.name = "TCDInfoPanel"
function TCDInfoPanel:RestorePosition()
local left = self.savedVariables.left
local top = self.savedVariables.top
TCDInfoPanelUI:ClearAnchors()
TCDInfoPanelUI:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, left, top)
end
-- Then we create an event handler function which will be called when the "addon loaded" event
-- occurs. We'll use this to initialize our addon after all of its resources are fully loaded.
function TCDInfoPanel.OnAddOnLoaded(event, addonName)
-- The event fires each time *any* addon loads - but we only care about when our own addon loads.
if addonName == TCDInfoPanel.name then
TCDInfoPanel:Initialize()
end
end
function TCDInfoPanel.OnIndicatorMoveStop()
TCDInfoPanel.savedVariables.left = TCDInfoPanelUI:GetLeft()
TCDInfoPanel.savedVariables.top = TCDInfoPanelUI:GetTop()
end
function TCDInfoPanel.ZoneChanged(eventCode, zoneName, subZoneName, newSubzone, zoneId, subZoneID)
local zoneText
-- Get the location of player
zoneText=zoneName
-- Debug testing post in chat.
d("zone changed to: " )
d(zoneText)
-- Update the label of the location.
TCDInfoPanelUILocationLabel:SetText("Location Updated")
end
-- Initialize the addon
function TCDInfoPanel:Initialize()
-- Create saved variables.
self.savedVariables = ZO_SavedVars:New("TCDInfoPanelAddonSavedVariables", 1, nil, {})
-- Set up event changes to update location on info bar.
EVENT_MANAGER:RegisterForEvent(self.name, EVENT_ZONE_CHANGED, self.ZoneChanged)
-- Restore the previous location of the Addon.
self:RestorePosition()
end
-- Finally, we'll register our event handler function to be called when the proper event occurs.
EVENT_MANAGER:RegisterForEvent(TCDInfoPanel.name, EVENT_ADD_ON_LOADED, TCDInfoPanel.OnAddOnLoaded)
my xml file
Code:
<GuiXml>
<Controls>
<TopLevelControl name="TCDInfoPanelUI" mouseEnabled="true" movable="true" clampedToScreen="true">
<Dimensions x="500" y="35" />
<Anchor point="BOTTOM" relativeTo="GuiRoot" relativePoint="CENTER" />
<OnMoveStop>
TCDInfoPanel.OnIndicatorMoveStop()
</OnMoveStop>
<Controls>
<Backdrop name="$(parent)BG" inherits="ZO_DefaultBackdrop" excludeFromResizeToFitExtents="true">
<AnchorFill />
</Backdrop>
<Control name="$(parent)Location">
<Dimensions x="80" y="35" />
<Anchor point="RIGHT" relativeTo="$(parent)" relativePoint="CENTER" />
<Controls>
<Label name="$(parent)LocationLabel" font="ZoFontGameMedium" inheritAlpha="true" color="ffffff"
wrapMode="TRUNCATE" verticalAlignment="CENTER" horizontalAlignment="CENTER" text="Location:">
<AnchorFill />
</Label>
</Controls>
</Control>
</Controls>
</TopLevelControl>
</Controls>
</GuiXml>
Im a Python developer who is new to Lua. I'm sure I'm just over looking something very simple. Any points in the right direction would be awesome. This is all a base for a WoW UI mod I really enjoyed back when I played wow and havent found something similiar in ESO yet. SO I figured I'd bring it over.