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
- Only register for events that your frame actually needs to handle
- Unregister from events when they are no longer needed using
Frame:UnregisterEvent(eventName)
- Keep event handlers lightweight to prevent UI lag
- Use descriptive function names for event handlers to improve code readability