New hooks OnEquip, OnPlayerJoinBG, OnPlayerJoinArena

This commit is contained in:
Matteo Emili
2016-11-22 20:11:40 +01:00
parent 19e3492372
commit bb429b22cf
4 changed files with 55 additions and 1 deletions
+1
View File
@@ -12657,6 +12657,7 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update)
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry()); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry());
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM, pItem->GetEntry(), slot); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM, pItem->GetEntry(), slot);
sScriptMgr->OnEquip(this, pItem, bag, slot, update);
return pItem; return pItem;
} }
+15
View File
@@ -22,6 +22,7 @@
#include "Opcodes.h" #include "Opcodes.h"
#include "DisableMgr.h" #include "DisableMgr.h"
#include "Group.h" #include "Group.h"
#include "ScriptMgr.h"
void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket & recvData) void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket & recvData)
{ {
@@ -167,6 +168,11 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recvData)
WorldPacket data; WorldPacket data;
sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bgt, queueSlot, STATUS_WAIT_QUEUE, avgWaitTime, 0, 0, TEAM_NEUTRAL); sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bgt, queueSlot, STATUS_WAIT_QUEUE, avgWaitTime, 0, 0, TEAM_NEUTRAL);
SendPacket(&data); SendPacket(&data);
//#define sScriptMgr ACE_Singleton<ScriptMgr, ACE_Null_Mutex>::instance()
ScriptMgr* sScriptMgr;
sScriptMgr->OnPlayerJoinBG(_player, sBattlegroundMgr->GetBattlegroundTemplate(ginfo->BgTypeId));
} }
// check if group can queue: // check if group can queue:
else else
@@ -244,6 +250,9 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recvData)
sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err);
member->GetSession()->SendPacket(&data); member->GetSession()->SendPacket(&data);
ScriptMgr* sScriptMgr;
sScriptMgr->OnPlayerJoinBG(member, sBattlegroundMgr->GetBattlegroundTemplate(member->GetBattlegroundTypeId()));
} }
} }
} }
@@ -652,6 +661,9 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recvData)
WorldPacket data; WorldPacket data;
sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bgt, queueSlot, STATUS_WAIT_QUEUE, avgWaitTime, 0, arenatype, TEAM_NEUTRAL); sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bgt, queueSlot, STATUS_WAIT_QUEUE, avgWaitTime, 0, arenatype, TEAM_NEUTRAL);
SendPacket(&data); SendPacket(&data);
ScriptMgr* sScriptMgr;
sScriptMgr->OnPlayerJoinArena(_player, sBattlegroundMgr->GetBattlegroundTemplate(ginfo->BgTypeId));
} }
// check if group can queue: // check if group can queue:
else else
@@ -746,6 +758,9 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recvData)
sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err);
member->GetSession()->SendPacket(&data); member->GetSession()->SendPacket(&data);
ScriptMgr* sScriptMgr;
sScriptMgr->OnPlayerJoinArena(member, sBattlegroundMgr->GetBattlegroundTemplate(member->GetBattlegroundTypeId()));
} }
// pussywizard: schedule update for rated arena // pussywizard: schedule update for rated arena
+22
View File
@@ -1333,6 +1333,22 @@ void ScriptMgr::OnAfterPlayerMoveItemFromInventory(Player* player, Item* it, uin
FOREACH_SCRIPT(PlayerScript)->OnAfterMoveItemFromInventory(player, it, bag, slot, update); FOREACH_SCRIPT(PlayerScript)->OnAfterMoveItemFromInventory(player, it, bag, slot, update);
} }
void ScriptMgr::OnEquip(Player* player, Item* it, uint8 bag, uint8 slot, bool update)
{
FOREACH_SCRIPT(PlayerScript)->OnEquip(player, it, bag, slot, update);
}
void ScriptMgr::OnPlayerJoinBG(Player* player, Battleground* bg)
{
FOREACH_SCRIPT(PlayerScript)->OnPlayerJoinBG(player, bg);
}
void ScriptMgr::OnPlayerJoinArena(Player* player, Battleground* bg)
{
FOREACH_SCRIPT(PlayerScript)->OnPlayerJoinArena(player, bg);
}
// Guild // Guild
void ScriptMgr::OnGuildAddMember(Guild* guild, Player* player, uint8& plRank) void ScriptMgr::OnGuildAddMember(Guild* guild, Player* player, uint8& plRank)
{ {
@@ -1421,6 +1437,12 @@ void ScriptMgr::OnGroupDisband(Group* group)
FOREACH_SCRIPT(GroupScript)->OnDisband(group); FOREACH_SCRIPT(GroupScript)->OnDisband(group);
} }
/*void ScriptMgr::OnGroupJoinBG(Group* group, Battleground* bg)
{
ASSERT(group);
FOREACH_SCRIPT(GroupScript)->OnGroupJoinBG(group, bg);
}*/
void ScriptMgr::OnGlobalItemDelFromDB(SQLTransaction& trans, uint32 itemGuid) void ScriptMgr::OnGlobalItemDelFromDB(SQLTransaction& trans, uint32 itemGuid)
{ {
ASSERT(trans); ASSERT(trans);
+17 -1
View File
@@ -790,7 +790,16 @@ class PlayerScript : public ScriptObject
virtual void OnAfterSetVisibleItemSlot(Player* /*player*/, uint8 /*slot*/, Item* /*item*/) { } virtual void OnAfterSetVisibleItemSlot(Player* /*player*/, uint8 /*slot*/, Item* /*item*/) { }
// After an item has been moved from inventory // After an item has been moved from inventory
virtual void OnAfterMoveItemFromInventory(Player* /*player*/, Item* /*it*/,uint8 /*bag*/, uint8 /*slot*/, bool /*update*/) { } virtual void OnAfterMoveItemFromInventory(Player* /*player*/, Item* /*it*/, uint8 /*bag*/, uint8 /*slot*/, bool /*update*/) { }
// After an item has been equipped
virtual void OnEquip(Player* /*player*/, Item* /*it*/, uint8 /*bag*/, uint8 /*slot*/, bool /*update*/) { }
// After player enters queue for BG
virtual void OnPlayerJoinBG(Player* player, Battleground* bg) { }
// After player enters queue for Arena
virtual void OnPlayerJoinArena(Player* player, Battleground* bg) { }
}; };
class GuildScript : public ScriptObject class GuildScript : public ScriptObject
@@ -860,6 +869,9 @@ class GroupScript : public ScriptObject
// Called when a group is disbanded. // Called when a group is disbanded.
virtual void OnDisband(Group* /*group*/) { } virtual void OnDisband(Group* /*group*/) { }
// After group enters queue for BG or Arena
//virtual void OnGroupJoinBG(Group* group, Battleground* bg) { }
}; };
// following hooks can be used anywhere and are not db bounded // following hooks can be used anywhere and are not db bounded
@@ -1089,6 +1101,9 @@ class ScriptMgr
void OnPlayerBeingCharmed(Player* player, Unit* charmer, uint32 oldFactionId, uint32 newFactionId); void OnPlayerBeingCharmed(Player* player, Unit* charmer, uint32 oldFactionId, uint32 newFactionId);
void OnAfterPlayerSetVisibleItemSlot(Player* player, uint8 slot, Item *item); void OnAfterPlayerSetVisibleItemSlot(Player* player, uint8 slot, Item *item);
void OnAfterPlayerMoveItemFromInventory(Player* player, Item* it, uint8 bag, uint8 slot, bool update); void OnAfterPlayerMoveItemFromInventory(Player* player, Item* it, uint8 bag, uint8 slot, bool update);
void OnEquip(Player* player, Item* it, uint8 bag, uint8 slot, bool update);
void OnPlayerJoinBG(Player* player, Battleground* bg);
void OnPlayerJoinArena(Player* player, Battleground* bg);
public: /* GuildScript */ public: /* GuildScript */
@@ -1112,6 +1127,7 @@ class ScriptMgr
void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method, uint64 kicker, const char* reason); void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method, uint64 kicker, const char* reason);
void OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid); void OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid);
void OnGroupDisband(Group* group); void OnGroupDisband(Group* group);
//void OnGroupJoinBG(Group* group, Battleground* bg);
public: /* GlobalScript */ public: /* GlobalScript */
void OnGlobalItemDelFromDB(SQLTransaction& trans, uint32 itemGuid); void OnGlobalItemDelFromDB(SQLTransaction& trans, uint32 itemGuid);