Client FrameUI Events - Kyoril/mmo GitHub Wiki

MMO Client Frame Events Reference

This document provides a comprehensive reference for all frame events triggered by the MMO client that can be consumed in the UI's Lua scripts. The frame events allow the C++ backend to communicate with the Lua UI layer when events occur in the game.

Overview

Frame events are triggered using FrameManager::Get().TriggerLuaEvent() from the C++ code. In Lua, frame scripts can register to handle these events using Frame:RegisterEvent(eventName, handlerFunction).

Player Events

Event Name Arguments Triggered When
PLAYER_ENTER_WORLD None Player enters the game world after successfully connecting
PLAYER_DEAD None Player character dies
PLAYER_HEALTH_CHANGED None Player's health changes
PLAYER_POWER_CHANGED None Player's power (mana, energy, rage, etc.) changes
PLAYER_XP_CHANGED None Player's experience points change
PLAYER_LEVEL_CHANGED None Player's level changes
PLAYER_ATTRIBUTES_CHANGED None Player's attributes (strength, stamina, etc.) change
PLAYER_MODEL_CHANGED None Player's visual model changes
MONEY_CHANGED None Player's money amount changes
COMBAT_MODE_CHANGED bool inCombat Player enters or leaves combat
ZONE_CHANGED None Player moves to another zone

Guild System Events

Event Name Arguments Triggered When
GUILD_COMMAND_RESULT int32 resultCode, string playerName Response received for a guild command
GUILD_INVITE_SENT string playerName Guild invitation has been sent to a player
GUILD_LEFT None Player leaves their guild
GUILD_INVITE_REQUEST string playerName, string guildName Player receives a guild invitation
GUILD_INVITE_DECLINED string playerName Player declines a guild invitation
GUILD_REMOVED string playerName Player is removed from a guild
GUILD_EVENT string eventType, string arg1, string arg2, string arg3 Various guild events (join, leave, promote, etc.)

Login and Character Management Events

Event Name Arguments Triggered When
LOGIN_CONNECT None Client is attempting to connect to login server
AUTH_FAILED int32 resultCode Authentication attempt failed
AUTH_SUCCESS None Authentication successful
CHAR_LIST None Character list received from server
CHAR_CREATION_FAILED uint8 resultCode Character creation failed
REALM_DISCONNECTED None Connection to realm server lost
CONNECTING_TO_REALM None Client is connecting to realm server
REALM_LIST None List of realms received from server
REALM_AUTH_FAILED int32 resultCode Realm authentication failed
ENTER_WORLD_FAILED string reason Failed to enter the game world

Action Bar Events

Event Name Arguments Triggered When
ACTION_BAR_CHANGED None Action bar configuration changes

Unit Events

Event Name Arguments Triggered When
UNIT_HEALTH_UPDATED string unitId Unit's health changes (referenced in Lua code)
UNIT_POWER_UPDATED string unitId Unit's power changes (referenced in Lua code)
UNIT_LEVEL_UPDATED string unitId Unit's level changes (referenced in Lua code)
UNIT_NAME_UPDATE string unitId Unit's name changes (referenced in Lua code)

Party Events

Event Name Arguments Triggered When
PARTY_MEMBERS_CHANGED None Party composition changes
PARTY_LEADER_CHANGED None Party leadership changes
PARTY_MEMBER_ENABLE None Party member becomes active
PARTY_MEMBER_DISABLE None Party member becomes inactive
PARTY_LOOT_METHOD_CHANGED None Party loot method changes
PARTY_INVITE_DECLINED None Party invitation declined
PARTY_COMMAND_RESULT None Result of party command
PARTY_INVITE_SENT None Party invitation sent
PARTY_LEFT None Player left a party

Quest Events

Event Name Arguments Triggered When
QUEST_DETAIL None Quest details are displayed to player
QUEST_REQUEST_ITEMS None NPC requests items for quest
QUEST_OFFER_REWARDS None NPC offers quest rewards
QUEST_FINISHED None Quest interaction finished

Trainer Events

Event Name Arguments Triggered When
TRAINER_SHOW None Trainer window is shown
TRAINER_UPDATE None Trainer information is updated
TRAINER_CLOSED None Trainer interaction ended
SPELL_LEARNED None Player learns a new spell

Using Frame Events in Lua

To register a frame to listen for events in Lua:

-- In a frame's OnLoad function
function MyFrame_OnLoad(self)
    self:RegisterEvent("PLAYER_ENTER_WORLD", MyFrame_OnEnterWorld)
    self:RegisterEvent("MONEY_CHANGED", MyFrame_OnMoneyChanged)
end

function MyFrame_OnEnterWorld(self)
    print("Player has entered the world!")
end

function MyFrame_OnMoneyChanged(self)
    print("Your money amount has changed!")
end

Events with parameters can be handled as follows:

function MyFrame_OnLoad(self)
    self:RegisterEvent("COMBAT_MODE_CHANGED", MyFrame_OnCombatModeChanged)
end

function MyFrame_OnCombatModeChanged(self, inCombat)
    if inCombat then
        print("You have entered combat!")
    else
        print("You have left combat!")
    end
end

Best Practices

  1. Only register for events that your frame actually needs to handle
  2. Unregister from events when they are no longer needed using Frame:UnregisterEvent(eventName)
  3. Keep event handlers lightweight to prevent UI lag
  4. Use descriptive function names for event handlers to improve code readability