mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
Add game event start/stop hooks https://github.com/ElunaLuaEngine/Eluna/issues/143
This commit is contained in:
@@ -568,9 +568,9 @@ namespace LuaGlobalFunctions
|
|||||||
* SERVER_EVENT_ON_NETWORK_STOP = 2, // Not Implemented
|
* SERVER_EVENT_ON_NETWORK_STOP = 2, // Not Implemented
|
||||||
* SERVER_EVENT_ON_SOCKET_OPEN = 3, // Not Implemented
|
* SERVER_EVENT_ON_SOCKET_OPEN = 3, // Not Implemented
|
||||||
* SERVER_EVENT_ON_SOCKET_CLOSE = 4, // Not Implemented
|
* SERVER_EVENT_ON_SOCKET_CLOSE = 4, // Not Implemented
|
||||||
* SERVER_EVENT_ON_PACKET_RECEIVE = 5, // (event, packet, player) - Player only if accessible. Can return false or a new packet
|
* SERVER_EVENT_ON_PACKET_RECEIVE = 5, // (event, packet, player) - Player only if accessible. Can return false, newPacket
|
||||||
* SERVER_EVENT_ON_PACKET_RECEIVE_UNKNOWN = 6, // Not Implemented
|
* SERVER_EVENT_ON_PACKET_RECEIVE_UNKNOWN = 6, // Not Implemented
|
||||||
* SERVER_EVENT_ON_PACKET_SEND = 7, // (event, packet, player) - Player only if accessible. Can return false or a new packet
|
* SERVER_EVENT_ON_PACKET_SEND = 7, // (event, packet, player) - Player only if accessible. Can return false, newPacket
|
||||||
*
|
*
|
||||||
* // World
|
* // World
|
||||||
* WORLD_EVENT_ON_OPEN_STATE_CHANGE = 8, // (event, open) - Needs core support on Mangos
|
* WORLD_EVENT_ON_OPEN_STATE_CHANGE = 8, // (event, open) - Needs core support on Mangos
|
||||||
@@ -584,7 +584,6 @@ namespace LuaGlobalFunctions
|
|||||||
*
|
*
|
||||||
* // Eluna
|
* // Eluna
|
||||||
* ELUNA_EVENT_ON_LUA_STATE_CLOSE = 16, // (event) - triggers just before shutting down eluna (on shutdown and restart)
|
* ELUNA_EVENT_ON_LUA_STATE_CLOSE = 16, // (event) - triggers just before shutting down eluna (on shutdown and restart)
|
||||||
* ELUNA_EVENT_ON_LUA_STATE_OPEN = 33, // (event) - triggers after all scripts are loaded
|
|
||||||
*
|
*
|
||||||
* // Map
|
* // Map
|
||||||
* MAP_EVENT_ON_CREATE = 17, // (event, map)
|
* MAP_EVENT_ON_CREATE = 17, // (event, map)
|
||||||
@@ -596,24 +595,28 @@ namespace LuaGlobalFunctions
|
|||||||
* MAP_EVENT_ON_UPDATE = 23, // (event, map, diff)
|
* MAP_EVENT_ON_UPDATE = 23, // (event, map, diff)
|
||||||
*
|
*
|
||||||
* // Area trigger
|
* // Area trigger
|
||||||
* TRIGGER_EVENT_ON_TRIGGER = 24, // (event, player, triggerId)
|
* TRIGGER_EVENT_ON_TRIGGER = 24, // (event, player, triggerId) - Can return true
|
||||||
*
|
*
|
||||||
* // Weather
|
* // Weather
|
||||||
* WEATHER_EVENT_ON_CHANGE = 25, // (event, weather, state, grade)
|
* WEATHER_EVENT_ON_CHANGE = 25, // (event, zoneId, state, grade)
|
||||||
*
|
*
|
||||||
* // Auction house
|
* // Auction house
|
||||||
* AUCTION_EVENT_ON_ADD = 26, // (event, AHObject)
|
* AUCTION_EVENT_ON_ADD = 26, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow)
|
||||||
* AUCTION_EVENT_ON_REMOVE = 27, // (event, AHObject)
|
* AUCTION_EVENT_ON_REMOVE = 27, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow)
|
||||||
* AUCTION_EVENT_ON_SUCCESSFUL = 28, // (event, AHObject) // Not Implemented
|
* AUCTION_EVENT_ON_SUCCESSFUL = 28, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow)
|
||||||
* AUCTION_EVENT_ON_EXPIRE = 29, // (event, AHObject) // Not Implemented
|
* AUCTION_EVENT_ON_EXPIRE = 29, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow)
|
||||||
*
|
*
|
||||||
* // AddOns
|
* // AddOns
|
||||||
* ADDON_EVENT_ON_MESSAGE = 30, // (event, sender, type, prefix, msg, target) - target can be nil/whisper_target/guild/group/channel
|
* ADDON_EVENT_ON_MESSAGE = 30, // (event, sender, type, prefix, msg, target) - target can be nil/whisper_target/guild/group/channel. Can return false
|
||||||
*
|
*
|
||||||
* WORLD_EVENT_ON_DELETE_CREATURE = 31, // (event, creature)
|
* WORLD_EVENT_ON_DELETE_CREATURE = 31, // (event, creature)
|
||||||
* WORLD_EVENT_ON_DELETE_GAMEOBJECT = 32, // (event, gameobject)
|
* WORLD_EVENT_ON_DELETE_GAMEOBJECT = 32, // (event, gameobject)
|
||||||
*
|
*
|
||||||
* SERVER_EVENT_COUNT
|
* // Eluna
|
||||||
|
* ELUNA_EVENT_ON_LUA_STATE_OPEN = 33, // (event) - triggers after all scripts are loaded
|
||||||
|
*
|
||||||
|
* GAME_EVENT_START = 34, // (event, gameeventid)
|
||||||
|
* GAME_EVENT_STOP = 35, // (event, gameeventid)
|
||||||
* };
|
* };
|
||||||
*
|
*
|
||||||
* @proto cancel = (event, function)
|
* @proto cancel = (event, function)
|
||||||
|
|||||||
3
Hooks.h
3
Hooks.h
@@ -152,6 +152,9 @@ namespace Hooks
|
|||||||
// Eluna
|
// Eluna
|
||||||
ELUNA_EVENT_ON_LUA_STATE_OPEN = 33, // (event) - triggers after all scripts are loaded
|
ELUNA_EVENT_ON_LUA_STATE_OPEN = 33, // (event) - triggers after all scripts are loaded
|
||||||
|
|
||||||
|
GAME_EVENT_START = 34, // (event, gameeventid)
|
||||||
|
GAME_EVENT_STOP = 35, // (event, gameeventid)
|
||||||
|
|
||||||
SERVER_EVENT_COUNT
|
SERVER_EVENT_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -523,6 +523,8 @@ public:
|
|||||||
void OnShutdownCancel();
|
void OnShutdownCancel();
|
||||||
void OnStartup();
|
void OnStartup();
|
||||||
void OnShutdown();
|
void OnShutdown();
|
||||||
|
void OnGameEventStart(uint32 eventid);
|
||||||
|
void OnGameEventStop(uint32 eventid);
|
||||||
|
|
||||||
/* Battle Ground */
|
/* Battle Ground */
|
||||||
void OnBGStart(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId);
|
void OnBGStart(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId);
|
||||||
|
|||||||
@@ -85,6 +85,20 @@ void Eluna::OnTimedEvent(int funcRef, uint32 delay, uint32 calls, WorldObject* o
|
|||||||
InvalidateObjects();
|
InvalidateObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Eluna::OnGameEventStart(uint32 eventid)
|
||||||
|
{
|
||||||
|
START_HOOK(GAME_EVENT_START);
|
||||||
|
Push(eventid);
|
||||||
|
CallAllFunctions(ServerEventBindings, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Eluna::OnGameEventStop(uint32 eventid)
|
||||||
|
{
|
||||||
|
START_HOOK(GAME_EVENT_STOP);
|
||||||
|
Push(eventid);
|
||||||
|
CallAllFunctions(ServerEventBindings, key);
|
||||||
|
}
|
||||||
|
|
||||||
void Eluna::OnLuaStateClose()
|
void Eluna::OnLuaStateClose()
|
||||||
{
|
{
|
||||||
START_HOOK(ELUNA_EVENT_ON_LUA_STATE_CLOSE);
|
START_HOOK(ELUNA_EVENT_ON_LUA_STATE_CLOSE);
|
||||||
|
|||||||
Reference in New Issue
Block a user