Core/Packets: Update and enable CMSG_GOSSIP_SELECT_OPTION, SMSG_BINDER_CONFIRM, SMSG_GOSSIP_COMPLETE and SMSG_PLAYER_BOUND
Fixes #14115
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "Formulas.h"
|
||||
#include "QuestPackets.h"
|
||||
#include "NPCPackets.h"
|
||||
#include "WorldPacket.h"
|
||||
|
||||
GossipMenu::GossipMenu()
|
||||
{
|
||||
@@ -196,6 +197,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID)
|
||||
|
||||
WorldPackets::NPC::GossipMessage packet;
|
||||
packet.GossipGUID = objectGUID;
|
||||
packet.GossipID = _gossipMenu.GetMenuId();
|
||||
packet.TextID = titleTextId;
|
||||
|
||||
packet.GossipOptions.resize(_gossipMenu.GetMenuItems().size());
|
||||
@@ -256,8 +258,8 @@ void PlayerMenu::SendCloseGossip()
|
||||
{
|
||||
_gossipMenu.SetSenderGUID(ObjectGuid::Empty);
|
||||
|
||||
WorldPacket data(SMSG_GOSSIP_COMPLETE, 0);
|
||||
_session->SendPacket(&data);
|
||||
WorldPackets::NPC::GossipComplete packet;
|
||||
_session->SendPacket(packet.Write());
|
||||
}
|
||||
|
||||
void PlayerMenu::SendPointOfInterest(uint32 poiId) const
|
||||
|
||||
@@ -9566,9 +9566,8 @@ uint32 Player::GetXPRestBonus(uint32 xp)
|
||||
|
||||
void Player::SetBindPoint(ObjectGuid guid)
|
||||
{
|
||||
WorldPacket data(SMSG_BINDER_CONFIRM, 8);
|
||||
data << guid;
|
||||
GetSession()->SendPacket(&data);
|
||||
WorldPackets::Misc::BinderConfirm packet(guid);
|
||||
GetSession()->SendPacket(packet.Write());
|
||||
}
|
||||
|
||||
void Player::SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost)
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#include "CharacterPackets.h"
|
||||
#include "ClientConfigPackets.h"
|
||||
#include "MiscPackets.h"
|
||||
#include "NPCPackets.h"
|
||||
#include "AchievementPackets.h"
|
||||
#include "WhoPackets.h"
|
||||
|
||||
@@ -90,53 +91,40 @@ void WorldSession::HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet)
|
||||
GetPlayer()->RepopAtGraveyard();
|
||||
}
|
||||
|
||||
void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData)
|
||||
void WorldSession::HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: CMSG_GOSSIP_SELECT_OPTION");
|
||||
|
||||
uint32 gossipListId;
|
||||
uint32 menuId;
|
||||
ObjectGuid guid;
|
||||
std::string code = "";
|
||||
|
||||
recvData >> guid >> menuId >> gossipListId;
|
||||
|
||||
if (!_player->PlayerTalkClass->GetGossipMenu().GetItem(gossipListId))
|
||||
{
|
||||
recvData.rfinish();
|
||||
if (!_player->PlayerTalkClass->GetGossipMenu().GetItem(packet.GossipIndex))
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player->PlayerTalkClass->IsGossipOptionCoded(gossipListId))
|
||||
recvData >> code;
|
||||
|
||||
// Prevent cheating on C++ scripted menus
|
||||
if (_player->PlayerTalkClass->GetGossipMenu().GetSenderGUID() != guid)
|
||||
if (_player->PlayerTalkClass->GetGossipMenu().GetSenderGUID() != packet.GossipUnit)
|
||||
return;
|
||||
|
||||
Creature* unit = NULL;
|
||||
GameObject* go = NULL;
|
||||
if (guid.IsCreatureOrVehicle())
|
||||
Creature* unit = nullptr;
|
||||
GameObject* go = nullptr;
|
||||
if (packet.GossipUnit.IsCreatureOrVehicle())
|
||||
{
|
||||
unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE);
|
||||
unit = GetPlayer()->GetNPCIfCanInteractWith(packet.GossipUnit, UNIT_NPC_FLAG_NONE);
|
||||
if (!unit)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found or you can't interact with him.", guid.ToString().c_str());
|
||||
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found or you can't interact with him.", packet.GossipUnit.ToString().c_str());
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (guid.IsGameObject())
|
||||
else if (packet.GossipUnit.IsGameObject())
|
||||
{
|
||||
go = _player->GetMap()->GetGameObject(guid);
|
||||
go = _player->GetMap()->GetGameObject(packet.GossipUnit);
|
||||
if (!go)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found.", guid.ToString().c_str());
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found.", packet.GossipUnit.ToString().c_str());
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - unsupported %s.", guid.ToString().c_str());
|
||||
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - unsupported %s.", packet.GossipUnit.ToString().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -149,39 +137,41 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData)
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - Script reloaded while in use, ignoring and set new scipt id");
|
||||
if (unit)
|
||||
unit->LastUsedScriptID = unit->GetCreatureTemplate()->ScriptID;
|
||||
|
||||
if (go)
|
||||
go->LastUsedScriptID = go->GetGOInfo()->ScriptId;
|
||||
_player->PlayerTalkClass->SendCloseGossip();
|
||||
return;
|
||||
}
|
||||
if (!code.empty())
|
||||
|
||||
if (!packet.PromotionCode.empty())
|
||||
{
|
||||
if (unit)
|
||||
{
|
||||
unit->AI()->sGossipSelectCode(_player, menuId, gossipListId, code.c_str());
|
||||
if (!sScriptMgr->OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId), code.c_str()))
|
||||
_player->OnGossipSelect(unit, gossipListId, menuId);
|
||||
unit->AI()->sGossipSelectCode(_player, packet.GossipID, packet.GossipIndex, packet.PromotionCode.c_str());
|
||||
if (!sScriptMgr->OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex), packet.PromotionCode.c_str()))
|
||||
_player->OnGossipSelect(unit, packet.GossipIndex, packet.GossipID);
|
||||
}
|
||||
else
|
||||
{
|
||||
go->AI()->GossipSelectCode(_player, menuId, gossipListId, code.c_str());
|
||||
if (!sScriptMgr->OnGossipSelectCode(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId), code.c_str()))
|
||||
_player->OnGossipSelect(go, gossipListId, menuId);
|
||||
go->AI()->GossipSelectCode(_player, packet.GossipID, packet.GossipIndex, packet.PromotionCode.c_str());
|
||||
if (!sScriptMgr->OnGossipSelectCode(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex), packet.PromotionCode.c_str()))
|
||||
_player->OnGossipSelect(go, packet.GossipIndex, packet.GossipID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (unit)
|
||||
{
|
||||
unit->AI()->sGossipSelect(_player, menuId, gossipListId);
|
||||
if (!sScriptMgr->OnGossipSelect(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId)))
|
||||
_player->OnGossipSelect(unit, gossipListId, menuId);
|
||||
unit->AI()->sGossipSelect(_player, packet.GossipID, packet.GossipIndex);
|
||||
if (!sScriptMgr->OnGossipSelect(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex)))
|
||||
_player->OnGossipSelect(unit, packet.GossipIndex, packet.GossipID);
|
||||
}
|
||||
else
|
||||
{
|
||||
go->AI()->GossipSelect(_player, menuId, gossipListId);
|
||||
if (!sScriptMgr->OnGossipSelect(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId)))
|
||||
_player->OnGossipSelect(go, gossipListId, menuId);
|
||||
go->AI()->GossipSelect(_player, packet.GossipID, packet.GossipIndex);
|
||||
if (!sScriptMgr->OnGossipSelect(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex)))
|
||||
_player->OnGossipSelect(go, packet.GossipIndex, packet.GossipID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,3 +286,18 @@ WorldPacket const* WorldPackets::Misc::StandStateUpdate::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::PlayerBound::Write()
|
||||
{
|
||||
_worldPacket << BinderID;
|
||||
_worldPacket << uint32(AreaID);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::BinderConfirm::Write()
|
||||
{
|
||||
_worldPacket << Unit;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,29 @@ namespace WorldPackets
|
||||
uint32 BindAreaID = 0;
|
||||
};
|
||||
|
||||
class PlayerBound final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
PlayerBound() : ServerPacket(SMSG_PLAYER_BOUND, 16 + 4) { }
|
||||
PlayerBound(ObjectGuid binderId, uint32 areaId) : ServerPacket(SMSG_PLAYER_BOUND, 16 + 4), BinderID(binderId), AreaID(areaId) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid BinderID;
|
||||
uint32 AreaID = 0;
|
||||
};
|
||||
|
||||
class BinderConfirm final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
BinderConfirm() : ServerPacket(SMSG_BINDER_CONFIRM, 16) { }
|
||||
BinderConfirm(ObjectGuid unit) : ServerPacket(SMSG_BINDER_CONFIRM, 16), Unit(unit) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Unit;
|
||||
};
|
||||
|
||||
class InvalidatePlayer final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -125,3 +125,13 @@ WorldPacket const* WorldPackets::NPC::ShowBank::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::NPC::GossipSelectOption::Read()
|
||||
{
|
||||
_worldPacket >> GossipUnit;
|
||||
_worldPacket >> GossipID;
|
||||
_worldPacket >> GossipIndex;
|
||||
|
||||
uint32 length = _worldPacket.ReadBits(8);
|
||||
PromotionCode = _worldPacket.ReadString(length);
|
||||
}
|
||||
|
||||
@@ -77,6 +77,27 @@ namespace WorldPackets
|
||||
int32 GossipID = 0;
|
||||
};
|
||||
|
||||
class GossipSelectOption final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
GossipSelectOption(WorldPacket&& packet) : ClientPacket(CMSG_GOSSIP_SELECT_OPTION, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid GossipUnit;
|
||||
int32 GossipIndex;
|
||||
int32 GossipID;
|
||||
std::string PromotionCode;
|
||||
};
|
||||
|
||||
class GossipComplete final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GossipComplete() : ServerPacket(SMSG_GOSSIP_COMPLETE, 0) { }
|
||||
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
struct VendorItem
|
||||
{
|
||||
int32 MuID = 0;
|
||||
|
||||
@@ -397,7 +397,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_RESPONSE_RESOLVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMResponseResolve );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_UPDATE_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketUpdateOpcode );
|
||||
DEFINE_HANDLER(CMSG_GOSSIP_HELLO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleGossipHelloOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GOSSIP_SELECT_OPTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGossipSelectOptionOpcode );
|
||||
DEFINE_HANDLER(CMSG_GOSSIP_SELECT_OPTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::GossipSelectOption, &WorldSession::HandleGossipSelectOptionOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GRANT_LEVEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGrantLevel );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_ASSISTANT_LEADER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupAssistantLeaderOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_CANCEL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -1046,9 +1046,8 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_REVOKED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_TRAP_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_UPDATES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDPOINTUPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDZONEREPLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_OPEN_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_OUTBID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
@@ -1288,7 +1287,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_SYSTEM_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOD_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
@@ -1660,8 +1659,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_TAME_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UPDATE_COMBO_POINTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYERBINDERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_VEHICLE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_DANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -949,7 +949,6 @@ enum OpcodeServer : uint32
|
||||
SMSG_BATTLE_PET_UPDATES = 0x0354,
|
||||
SMSG_BINDER_CONFIRM = 0x0B11,
|
||||
SMSG_BINDPOINTUPDATE = 0x0A30,
|
||||
SMSG_BINDZONEREPLY = 0xBADD,
|
||||
SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x0825,
|
||||
SMSG_BLACK_MARKET_OPEN_RESULT = 0x0A05,
|
||||
SMSG_BLACK_MARKET_OUTBID = 0x0B1D,
|
||||
@@ -1561,7 +1560,6 @@ enum OpcodeServer : uint32
|
||||
SMSG_PET_TAME_FAILURE = 0x0025,
|
||||
SMSG_PET_UPDATE_COMBO_POINTS = 0xBADD,
|
||||
SMSG_PLAYED_TIME = 0x038B,
|
||||
SMSG_PLAYERBINDERROR = 0xBADD,
|
||||
SMSG_PLAYER_BOUND = 0x078E,
|
||||
SMSG_PLAYER_SKINNED = 0x00D2,
|
||||
SMSG_PLAYER_VEHICLE_DATA = 0xBADD,
|
||||
|
||||
@@ -239,6 +239,7 @@ namespace WorldPackets
|
||||
namespace NPC
|
||||
{
|
||||
class Hello;
|
||||
class GossipSelectOption;
|
||||
}
|
||||
|
||||
namespace Query
|
||||
@@ -922,7 +923,7 @@ class WorldSession
|
||||
void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
|
||||
void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
|
||||
void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
|
||||
void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket);
|
||||
void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
|
||||
void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
|
||||
void HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText& packet);
|
||||
void HandleBinderActivateOpcode(WorldPackets::NPC::Hello& packet);
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
#include "GuildMgr.h"
|
||||
#include "ReputationMgr.h"
|
||||
#include "AreaTrigger.h"
|
||||
#include "MiscPackets.h"
|
||||
|
||||
pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
|
||||
{
|
||||
@@ -5690,10 +5691,8 @@ void Spell::EffectBind(SpellEffIndex /*effIndex*/)
|
||||
homeLoc.GetPositionX(), homeLoc.GetPositionY(), homeLoc.GetPositionZ(), homeLoc.GetMapId(), areaId);
|
||||
|
||||
// zone update
|
||||
WorldPacket data(SMSG_PLAYER_BOUND, 8 + 4);
|
||||
data << m_caster->GetGUID();
|
||||
data << uint32(areaId);
|
||||
player->SendDirectMessage(&data);
|
||||
WorldPackets::Misc::PlayerBound packet(m_caster->GetGUID(), areaId);
|
||||
player->SendDirectMessage(packet.Write());
|
||||
}
|
||||
|
||||
void Spell::EffectSummonRaFFriend(SpellEffIndex /*effIndex*/)
|
||||
|
||||
Reference in New Issue
Block a user