Skip to content

Commit d0583ed

Browse files
committed
Fix hooks
1 parent e97ea26 commit d0583ed

11 files changed

+106
-93
lines changed

CMakeLists.txt

Lines changed: 73 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -4,77 +4,85 @@
44
# Please see the included DOCS/LICENSE.md for more information
55
#
66

7-
if( ${CMAKE_PROJECT_NAME} STREQUAL "MaNGOS" )
7+
if ( USE_COREPCH )
8+
include_directories(${CMAKE_CURRENT_BINARY_DIR})
9+
include_directories(${CMAKE_SOURCE_DIR})
10+
endif ()
811

9-
if ( USE_COREPCH )
10-
include_directories(${CMAKE_CURRENT_BINARY_DIR})
11-
include_directories(${CMAKE_SOURCE_DIR})
12-
endif ()
12+
# Iterates through all the source files and adds them to the solution
13+
file(GLOB sources_localdir *.cpp *.h)
1314

14-
# Iterates through all the source files and adds them to the solution
15-
file(GLOB sources_localdir *.cpp *.h)
15+
# Adds all the method headers to its own source group
16+
file(GLOB method_headers *Methods.h)
17+
source_group("Methods" FILES ${method_headers})
1618

17-
# Adds all the method headers to its own source group
18-
file(GLOB method_headers *Methods.h)
19-
source_group("Methods" FILES ${method_headers})
19+
set(LuaEngine_STAT_SRCS
20+
${LuaEngine_STAT_SRCS}
21+
${sources_localdir}
22+
)
2023

21-
set(LuaEngine_STAT_SRCS
22-
${LuaEngine_STAT_SRCS}
23-
${sources_localdir}
24-
)
24+
include_directories(
25+
${CMAKE_SOURCE_DIR}/dep/zlib
26+
${CMAKE_SOURCE_DIR}/dep/lualib
27+
${CMAKE_BINARY_DIR}
28+
${ACE_INCLUDE_DIR}
29+
${MYSQL_INCLUDE_DIR}
30+
${OPENSSL_INCLUDE_DIR}
31+
)
2532

26-
include_directories(
27-
${CMAKE_SOURCE_DIR}/dep/zlib
28-
${CMAKE_SOURCE_DIR}/dep/lualib
29-
${CMAKE_BINARY_DIR}
30-
${ACE_INCLUDE_DIR}
31-
${MYSQL_INCLUDE_DIR}
32-
${OPENSSL_INCLUDE_DIR}
33-
)
33+
add_library(LuaEngine STATIC
34+
${LuaEngine_STAT_SRCS}
35+
${game_STAT_SRCS}
36+
${game_STAT_PCH_SRC}
37+
)
3438

35-
add_library(LuaEngine STATIC
36-
${LuaEngine_STAT_SRCS}
37-
${game_STAT_SRCS}
38-
${game_STAT_PCH_SRC}
39-
)
39+
include_directories(
40+
${CMAKE_SOURCE_DIR}/dep/g3dlite
41+
${CMAKE_SOURCE_DIR}/src/tools
42+
${CMAKE_SOURCE_DIR}/src/Common
43+
${CMAKE_SOURCE_DIR}/src/Common/Threading
44+
${CMAKE_SOURCE_DIR}/src/Common/Logging
45+
${CMAKE_SOURCE_DIR}/src/Common/Utilities
46+
${CMAKE_SOURCE_DIR}/src/shared
47+
${CMAKE_SOURCE_DIR}/src/shared/DataStores
48+
${CMAKE_SOURCE_DIR}/src/server
49+
${CMAKE_SOURCE_DIR}/src/server/game
50+
${CMAKE_SOURCE_DIR}/src/server/game/BattleGrounds
51+
${CMAKE_SOURCE_DIR}/src/server/game/Maps
52+
${CMAKE_SOURCE_DIR}/src/server/game/Handlers
53+
${CMAKE_SOURCE_DIR}/src/server/game/Entities
54+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/AreaTrigger
55+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Conversation
56+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Corpse
57+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature
58+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/DynamicObject
59+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject
60+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item
61+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object
62+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates
63+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Pet
64+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Player
65+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Taxi
66+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Totem
67+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Transport
68+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit
69+
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Vehicle
70+
)
4071

41-
include_directories(
42-
${CMAKE_SOURCE_DIR}/dep/g3dlite
43-
${CMAKE_SOURCE_DIR}/src/shared
44-
${CMAKE_SOURCE_DIR}/src/shared/Common
45-
${CMAKE_SOURCE_DIR}/src/shared/Utilities
46-
${CMAKE_SOURCE_DIR}/src/shared/Log
47-
${CMAKE_SOURCE_DIR}/src/shared/DataStores
48-
${CMAKE_SOURCE_DIR}/src/shared/Threading
49-
${CMAKE_SOURCE_DIR}/src/framework
50-
${CMAKE_SOURCE_DIR}/src/framework/Platform
51-
${CMAKE_SOURCE_DIR}/src/game/BattleGround
52-
${CMAKE_SOURCE_DIR}/src/game/Server
53-
${CMAKE_SOURCE_DIR}/src/game/vmap
54-
${CMAKE_SOURCE_DIR}/src/game/Maps
55-
${CMAKE_SOURCE_DIR}/src/game/MotionGenerators
56-
${CMAKE_SOURCE_DIR}/src/game/Tools
57-
${CMAKE_SOURCE_DIR}/src/game/References
58-
${CMAKE_SOURCE_DIR}/src/game/WorldHandlers
59-
${CMAKE_SOURCE_DIR}/src/game/Object
60-
)
61-
62-
if( WIN32 )
63-
if ( MSVC )
64-
add_custom_command(TARGET LuaEngine
65-
POST_BUILD
66-
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/lua_scripts/extensions/"
67-
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/extensions" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/lua_scripts/extensions/"
68-
)
69-
elseif ( MINGW )
70-
add_custom_command(TARGET LuaEngine
71-
POST_BUILD
72-
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/lua_scripts/extensions/"
73-
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/extensions" "${CMAKE_BINARY_DIR}/bin/ua_scripts/extensions/"
74-
)
75-
endif()
72+
if( WIN32 )
73+
if ( MSVC )
74+
add_custom_command(TARGET LuaEngine
75+
POST_BUILD
76+
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/lua_scripts/extensions/"
77+
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/extensions" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/lua_scripts/extensions/"
78+
)
79+
elseif ( MINGW )
80+
add_custom_command(TARGET LuaEngine
81+
POST_BUILD
82+
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/lua_scripts/extensions/"
83+
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/extensions" "${CMAKE_BINARY_DIR}/bin/ua_scripts/extensions/"
84+
)
7685
endif()
77-
78-
install(DIRECTORY extensions DESTINATION "${BIN_DIR}/lua_scripts/")
79-
8086
endif()
87+
88+
install(DIRECTORY extensions DESTINATION "${BIN_DIR}/lua_scripts/")

CreatureHooks.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,6 @@ bool Eluna::SpellHitTarget(Creature* me, Unit* target, SpellInfo const* spell)
301301
return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key);
302302
}
303303

304-
#ifdef TRINITY || AZEROTHCORE
305-
306304
bool Eluna::SummonedCreatureDies(Creature* me, Creature* summon, Unit* killer)
307305
{
308306
START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED, me, false);
@@ -329,5 +327,3 @@ bool Eluna::OwnerAttacked(Creature* me, Unit* target)
329327
Push(target);
330328
return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key);
331329
}
332-
333-
#endif // TRINITY

ElunaIncludes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "Mail.h"
2929
#include "MapManager.h"
3030
#include "ObjectAccessor.h"
31+
#include "ObjectGuid.h"
3132
#include "ObjectMgr.h"
3233
#include "Opcodes.h"
3334
#include "Player.h"

GameObjectHooks.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex ef
4242

4343
void Eluna::UpdateAI(GameObject* pGameObject, uint32 diff)
4444
{
45-
// pGameObject->elunaEvents->Update(diff); ///< Find replacement
45+
pGameObject->ElunaEvents->Update(diff);
4646
START_HOOK(GAMEOBJECT_EVENT_ON_AIUPDATE, pGameObject->GetEntry());
4747
Push(pGameObject);
4848
Push(diff);

GossipHooks.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void Eluna::HandleGossipSelectOption(Player* pPlayer, uint32 menuId, uint32 send
7878
CallAllFunctions(PlayerGossipBindings, key);
7979
}
8080

81-
bool Eluna::OnItemGossip(Player* pPlayer, Item* pItem, SpellCastTargets const& /*targets*/)
81+
bool Eluna::OnItemGossip(Player* pPlayer, Item* pItem, SpellCastTargets const& /*targets*/, ObjectGuid casterId)
8282
{
8383
START_HOOK_WITH_RETVAL(ItemGossipBindings, GOSSIP_EVENT_ON_HELLO, pItem->GetEntry(), true);
8484
pPlayer->PlayerTalkClass->ClearMenus();

GuildHooks.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ void Eluna::OnAddMember(Guild* guild, Player* player, uint32 plRank)
2929
CallAllFunctions(GuildEventBindings, key);
3030
}
3131

32-
void Eluna::OnRemoveMember(Guild* guild, Player* player, bool isDisbanding)
32+
void Eluna::OnRemoveMember(Guild* guild, ObjectGuid guid, bool isDisbanding, bool isKicked)
3333
{
3434
START_HOOK(GUILD_EVENT_ON_REMOVE_MEMBER);
3535
Push(guild);
36-
Push(player);
36+
Push(&guid);
3737
Push(isDisbanding);
38+
Push(isKicked);
3839
CallAllFunctions(GuildEventBindings, key);
3940
}
4041

@@ -70,7 +71,7 @@ void Eluna::OnDisband(Guild* guild)
7071
CallAllFunctions(GuildEventBindings, key);
7172
}
7273

73-
void Eluna::OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, bool isRepair)
74+
void Eluna::OnMemberWitdrawMoney(Guild* guild, Player* player, uint64& amount, bool isRepair)
7475
{
7576
START_HOOK(GUILD_EVENT_ON_MONEY_WITHDRAW);
7677
Push(guild);
@@ -86,7 +87,7 @@ void Eluna::OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, b
8687

8788
if (lua_isnumber(L, r))
8889
{
89-
amount = CHECKVAL<uint32>(L, r);
90+
amount = CHECKVAL<uint64>(L, r);
9091
// Update the stack for subsequent calls.
9192
ReplaceArgument(amount, amountIndex);
9293
}
@@ -97,7 +98,7 @@ void Eluna::OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, b
9798
CleanUpStack(4);
9899
}
99100

100-
void Eluna::OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount)
101+
void Eluna::OnMemberDepositMoney(Guild* guild, Player* player, uint64& amount)
101102
{
102103
START_HOOK(GUILD_EVENT_ON_MONEY_DEPOSIT);
103104
Push(guild);
@@ -112,7 +113,7 @@ void Eluna::OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount)
112113

113114
if (lua_isnumber(L, r))
114115
{
115-
amount = CHECKVAL<uint32>(L, r);
116+
amount = CHECKVAL<uint64>(L, r);
116117
// Update the stack for subsequent calls.
117118
ReplaceArgument(amount, amountIndex);
118119
}

ItemHooks.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,18 @@ bool Eluna::OnQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest)
4848
return CallAllFunctionsBool(ItemEventBindings, key);
4949
}
5050

51-
bool Eluna::OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets)
51+
bool Eluna::OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets, ObjectGuid castId)
5252
{
5353
ObjectGuid guid = pItem->GET_GUID();
5454
bool castSpell = true;
5555

56-
if (!OnItemUse(pPlayer, pItem, targets))
56+
if (!OnItemUse(pPlayer, pItem, targets, castId))
5757
castSpell = false;
5858

5959
pItem = pPlayer->GetItemByGuid(guid);
6060
if (pItem)
6161
{
62-
if (!OnItemGossip(pPlayer, pItem, targets))
62+
if (!OnItemGossip(pPlayer, pItem, targets, castId))
6363
castSpell = false;
6464
pItem = pPlayer->GetItemByGuid(guid);
6565
}
@@ -73,7 +73,7 @@ bool Eluna::OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets)
7373
return false;
7474
}
7575

76-
bool Eluna::OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets)
76+
bool Eluna::OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets, ObjectGuid castId)
7777
{
7878
START_HOOK_WITH_RETVAL(ITEM_EVENT_ON_USE, pItem->GetEntry(), true);
7979
Push(pPlayer);
@@ -92,6 +92,8 @@ bool Eluna::OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targ
9292
else
9393
Push();
9494

95+
Push(&castId);
96+
9597
return CallAllFunctionsBool(ItemEventBindings, key, true);
9698
}
9799

LuaEngine.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,10 @@ template<> unsigned long Eluna::CHECKVAL<unsigned long>(lua_State* luastate, int
766766
{
767767
return static_cast<unsigned long>(CHECKVAL<unsigned long long>(luastate, narg));
768768
}
769+
template<> ObjectGuid Eluna::CHECKVAL<ObjectGuid>(lua_State* luastate, int narg)
770+
{
771+
return ObjectGuid::Empty;
772+
}
769773

770774
template<> Object* Eluna::CHECKOBJ<Object>(lua_State* luastate, int narg, bool error)
771775
{

LuaEngine.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -318,12 +318,12 @@ class TC_GAME_API Eluna
318318
/* Item */
319319
void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget);
320320
bool OnQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest);
321-
bool OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets);
322-
bool OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets);
323-
bool OnItemGossip(Player* pPlayer, Item* pItem, SpellCastTargets const& targets);
321+
bool OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets, ObjectGuid castId);
322+
bool OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets, ObjectGuid castId);
323+
bool OnItemGossip(Player* pPlayer, Item* pItem, SpellCastTargets const& targets, ObjectGuid castId);
324324
bool OnExpire(Player* pPlayer, ItemTemplate const* pProto);
325325
bool OnRemove(Player* pPlayer, Item* item);
326-
void HandleGossipSelectOption(Player* pPlayer, Item* item, uint32 sender, uint32 action, const std::string& code);
326+
void HandleGossipSelectOption(Player* pPlayer, Item* item, uint32 sender, uint32 action, const std::string& code = "");
327327

328328
/* Creature */
329329
void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget);
@@ -390,7 +390,7 @@ class TC_GAME_API Eluna
390390
void OnLevelChanged(Player* pPlayer, uint8 oldLevel);
391391
void OnFreeTalentPointsChanged(Player* pPlayer, uint32 newPoints);
392392
void OnTalentsReset(Player* pPlayer, bool noCost);
393-
void OnMoneyChanged(Player* pPlayer, int32& amount);
393+
void OnMoneyChanged(Player* pPlayer, int64& amount);
394394
void OnGiveXP(Player* pPlayer, uint32& amount, Unit* pVictim);
395395
void OnReputationChange(Player* pPlayer, uint32 factionID, int32& standing, bool incremental);
396396
void OnDuelRequest(Player* pTarget, Player* pChallenger);
@@ -422,7 +422,7 @@ class TC_GAME_API Eluna
422422
void OnRemovePassenger(Vehicle* vehicle, Unit* passenger);
423423

424424
/* AreaTrigger */
425-
bool OnAreaTrigger(Player* pPlayer, AreaTriggerEntry const* pTrigger);
425+
bool OnAreaTrigger(Player* pPlayer, AreaTriggerEntry const* pTrigger, bool entered);
426426

427427
/* Weather */
428428
void OnChange(Weather* weather, uint32 zone, WeatherState state, float grade);
@@ -435,13 +435,13 @@ class TC_GAME_API Eluna
435435

436436
/* Guild */
437437
void OnAddMember(Guild* guild, Player* player, uint32 plRank);
438-
void OnRemoveMember(Guild* guild, Player* player, bool isDisbanding);
438+
void OnRemoveMember(Guild* guild, ObjectGuid guid, bool isDisbanding, bool isKicked);
439439
void OnMOTDChanged(Guild* guild, const std::string& newMotd);
440440
void OnInfoChanged(Guild* guild, const std::string& newInfo);
441441
void OnCreate(Guild* guild, Player* leader, const std::string& name);
442442
void OnDisband(Guild* guild);
443-
void OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, bool isRepair);
444-
void OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount);
443+
void OnMemberWitdrawMoney(Guild* guild, Player* player, uint64& amount, bool isRepair);
444+
void OnMemberDepositMoney(Guild* guild, Player* player, uint64& amount);
445445
void OnItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId, bool isDestBank, uint8 destContainer, uint8 destSlotId);
446446
void OnEvent(Guild* guild, uint8 eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank);
447447
void OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId);

PlayerHooks.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ void Eluna::OnTalentsReset(Player* pPlayer, bool noCost)
200200
CallAllFunctions(PlayerEventBindings, key);
201201
}
202202

203-
void Eluna::OnMoneyChanged(Player* pPlayer, int32& amount)
203+
void Eluna::OnMoneyChanged(Player* pPlayer, int64& amount)
204204
{
205205
START_HOOK(PLAYER_EVENT_ON_MONEY_CHANGE);
206206
Push(pPlayer);
@@ -214,7 +214,7 @@ void Eluna::OnMoneyChanged(Player* pPlayer, int32& amount)
214214

215215
if (lua_isnumber(L, r))
216216
{
217-
amount = CHECKVAL<int32>(L, r);
217+
amount = CHECKVAL<int64>(L, r);
218218
// Update the stack for subsequent calls.
219219
ReplaceArgument(amount, amountIndex);
220220
}

ServerHooks.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,12 @@ void Eluna::OnLuaStateOpen()
112112
}
113113

114114
// AreaTrigger
115-
bool Eluna::OnAreaTrigger(Player* pPlayer, AreaTriggerEntry const* pTrigger)
115+
bool Eluna::OnAreaTrigger(Player* pPlayer, AreaTriggerEntry const* pTrigger, bool entered)
116116
{
117117
START_HOOK_WITH_RETVAL(TRIGGER_EVENT_ON_TRIGGER, false);
118118
Push(pPlayer);
119119
Push(pTrigger->ID);
120+
Push(entered);
120121
return CallAllFunctionsBool(ServerEventBindings, key);
121122
}
122123

0 commit comments

Comments
 (0)