mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Packets: updated AccountData packets
This commit is contained in:
@@ -57,6 +57,7 @@
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "DB2Stores.h"
|
||||
#include "CharacterPackets.h"
|
||||
#include "ClientConfigPackets.h"
|
||||
#include "MiscPackets.h"
|
||||
|
||||
void WorldSession::HandleRepopRequestOpcode(WorldPacket& recvData)
|
||||
@@ -967,97 +968,70 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket& recvData)
|
||||
player->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, at->target_Orientation, TELE_TO_NOT_LEAVE_TRANSPORT);
|
||||
}
|
||||
|
||||
void WorldSession::HandleUpdateAccountData(WorldPacket& recvData)
|
||||
void WorldSession::HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: Received CMSG_UPDATE_ACCOUNT_DATA");
|
||||
TC_LOG_DEBUG("network", "WORLD: Received CMSG_UPDATE_ACCOUNT_DATA: type %u, time %u, decompressedSize %u",
|
||||
packet.DataType, packet.Time, packet.Size);
|
||||
|
||||
uint32 type, timestamp, decompressedSize;
|
||||
recvData >> type >> timestamp >> decompressedSize;
|
||||
|
||||
TC_LOG_DEBUG("network", "UAD: type %u, time %u, decompressedSize %u", type, timestamp, decompressedSize);
|
||||
|
||||
if (type > NUM_ACCOUNT_DATA_TYPES)
|
||||
if (packet.DataType > NUM_ACCOUNT_DATA_TYPES)
|
||||
return;
|
||||
|
||||
if (decompressedSize == 0) // erase
|
||||
if (packet.Size == 0) // erase
|
||||
{
|
||||
SetAccountData(AccountDataType(type), 0, "");
|
||||
|
||||
WorldPacket data(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, 4+4);
|
||||
data << uint32(type);
|
||||
data << uint32(0);
|
||||
SendPacket(&data);
|
||||
|
||||
SetAccountData(AccountDataType(packet.DataType), 0, "");
|
||||
return;
|
||||
}
|
||||
|
||||
if (decompressedSize > 0xFFFF)
|
||||
if (packet.Size > 0xFFFF)
|
||||
{
|
||||
recvData.rfinish(); // unnneded warning spam in this case
|
||||
TC_LOG_ERROR("network", "UAD: Account data packet too big, size %u", decompressedSize);
|
||||
TC_LOG_ERROR("network", "UAD: Account data packet too big, size %u", packet.Size);
|
||||
return;
|
||||
}
|
||||
|
||||
ByteBuffer dest;
|
||||
dest.resize(decompressedSize);
|
||||
dest.resize(packet.Size);
|
||||
|
||||
uLongf realSize = decompressedSize;
|
||||
if (uncompress(dest.contents(), &realSize, recvData.contents() + recvData.rpos(), recvData.size() - recvData.rpos()) != Z_OK)
|
||||
uLongf realSize = packet.Size;
|
||||
if (uncompress(dest.contents(), &realSize, packet.CompressedData.contents(), packet.CompressedData.size()) != Z_OK)
|
||||
{
|
||||
recvData.rfinish(); // unnneded warning spam in this case
|
||||
TC_LOG_ERROR("network", "UAD: Failed to decompress account data");
|
||||
return;
|
||||
}
|
||||
|
||||
recvData.rfinish(); // uncompress read (recvData.size() - recvData.rpos())
|
||||
|
||||
std::string adata;
|
||||
dest >> adata;
|
||||
|
||||
SetAccountData(AccountDataType(type), timestamp, adata);
|
||||
|
||||
WorldPacket data(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, 4+4);
|
||||
data << uint32(type);
|
||||
data << uint32(0);
|
||||
SendPacket(&data);
|
||||
SetAccountData(AccountDataType(packet.DataType), packet.Time, adata);
|
||||
}
|
||||
|
||||
void WorldSession::HandleRequestAccountData(WorldPacket& recvData)
|
||||
void WorldSession::HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: Received CMSG_REQUEST_ACCOUNT_DATA");
|
||||
TC_LOG_DEBUG("network", "WORLD: Received CMSG_REQUEST_ACCOUNT_DATA: type %u", request.DataType);
|
||||
|
||||
uint32 type;
|
||||
recvData >> type;
|
||||
|
||||
TC_LOG_DEBUG("network", "RAD: type %u", type);
|
||||
|
||||
if (type >= NUM_ACCOUNT_DATA_TYPES)
|
||||
if (request.DataType >= NUM_ACCOUNT_DATA_TYPES)
|
||||
return;
|
||||
|
||||
AccountData* adata = GetAccountData(AccountDataType(type));
|
||||
AccountData const* adata = GetAccountData(AccountDataType(request.DataType));
|
||||
|
||||
uint32 size = adata->Data.size();
|
||||
WorldPackets::ClientConfig::UpdateAccountData data;
|
||||
data.Player = _player ? _player->GetGUID() : ObjectGuid::Empty;
|
||||
data.Time = adata->Time;
|
||||
data.Size = adata->Data.size();
|
||||
data.DataType = request.DataType;
|
||||
|
||||
uLongf destSize = compressBound(size);
|
||||
uLongf destSize = compressBound(data.Size);
|
||||
|
||||
ByteBuffer dest;
|
||||
dest.resize(destSize);
|
||||
data.CompressedData.resize(destSize);
|
||||
|
||||
if (size && compress(dest.contents(), &destSize, (uint8 const*)adata->Data.c_str(), size) != Z_OK)
|
||||
if (data.Size && compress(data.CompressedData.contents(), &destSize, (uint8 const*)adata->Data.c_str(), data.Size) != Z_OK)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "RAD: Failed to compress account data");
|
||||
TC_LOG_ERROR("network", "RAD: Failed to compress account data");
|
||||
return;
|
||||
}
|
||||
|
||||
dest.resize(destSize);
|
||||
data.CompressedData.resize(destSize);
|
||||
|
||||
WorldPacket data(SMSG_UPDATE_ACCOUNT_DATA, 8+4+4+4+destSize);
|
||||
data << (_player ? _player->GetGUID() : ObjectGuid::Empty);
|
||||
data << uint32(type); // type (0-7)
|
||||
data << uint32(adata->Time); // unix time
|
||||
data << uint32(size); // decompressed length
|
||||
data.append(dest); // compressed data
|
||||
SendPacket(&data);
|
||||
SendPacket(data.Write());
|
||||
}
|
||||
|
||||
int32 WorldSession::HandleEnableNagleAlgorithm()
|
||||
@@ -1752,7 +1726,7 @@ void WorldSession::HandleWorldStateUITimerUpdate(WorldPacket& /*recvData*/)
|
||||
{
|
||||
// empty opcode
|
||||
TC_LOG_DEBUG("network", "WORLD: CMSG_WORLD_STATE_UI_TIMER_UPDATE");
|
||||
|
||||
|
||||
WorldPackets::Misc::UITime response;
|
||||
response.Time = time(NULL);
|
||||
SendPacket(response.Write());
|
||||
|
||||
@@ -35,9 +35,9 @@ namespace WorldPackets
|
||||
std::string Sender;
|
||||
ObjectGuid SenderGuid;
|
||||
ObjectGuid SenderBnetAccountID;
|
||||
uint8 Type = 0;
|
||||
uint8 OldFlags = 0;
|
||||
uint8 NewFlags = 0;
|
||||
uint8 Type = 0; ///< @see enum ChatNotify
|
||||
uint8 OldFlags = 0; ///< @see enum ChannelMemberFlags
|
||||
uint8 NewFlags = 0; ///< @see enum ChannelMemberFlags
|
||||
std::string Channel;
|
||||
uint32 SenderVirtualRealm = 0;
|
||||
ObjectGuid TargetGuid;
|
||||
@@ -55,7 +55,7 @@ namespace WorldPackets
|
||||
std::string ChannelWelcomeMsg;
|
||||
int32 ChatChannelID = 0;
|
||||
int32 InstanceID = 0;
|
||||
uint8 ChannelFlags = 0;
|
||||
uint8 ChannelFlags = 0; ///< @see enum ChannelFlags
|
||||
std::string Channel;
|
||||
};
|
||||
|
||||
|
||||
@@ -94,3 +94,36 @@ WorldPacket const* WorldPackets::ClientConfig::ClientCacheVersion::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::ClientConfig::RequestAccountData::Read()
|
||||
{
|
||||
_worldPacket >> PlayerGuid;
|
||||
DataType = _worldPacket.ReadBits(3);
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::ClientConfig::UpdateAccountData::Write()
|
||||
{
|
||||
_worldPacket << Player;
|
||||
_worldPacket << uint32(Time);
|
||||
_worldPacket << uint32(Size);
|
||||
_worldPacket.WriteBits(DataType, 3);
|
||||
_worldPacket << uint32(CompressedData.size());
|
||||
_worldPacket.append(CompressedData);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::ClientConfig::UserClientUpdateAccountData::Read()
|
||||
{
|
||||
_worldPacket >> PlayerGuid;
|
||||
_worldPacket >> Time;
|
||||
_worldPacket >> Size;
|
||||
DataType = _worldPacket.ReadBits(3);
|
||||
|
||||
uint32 compressedSize = _worldPacket.read<uint32>();
|
||||
if (compressedSize)
|
||||
{
|
||||
CompressedData.resize(compressedSize);
|
||||
_worldPacket.read(CompressedData.contents(), compressedSize);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,45 @@ namespace WorldPackets
|
||||
|
||||
uint32 CacheVersion = 0;
|
||||
};
|
||||
|
||||
class RequestAccountData final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
RequestAccountData(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_ACCOUNT_DATA, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid PlayerGuid;
|
||||
uint8 DataType = 0; ///< @see enum AccountDataType
|
||||
};
|
||||
|
||||
class UpdateAccountData final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
UpdateAccountData() : ServerPacket(SMSG_UPDATE_ACCOUNT_DATA) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Player;
|
||||
uint32 Time = 0; ///< UnixTime
|
||||
uint32 Size = 0; ///< decompressed size
|
||||
uint8 DataType = 0; ///< @see enum AccountDataType
|
||||
ByteBuffer CompressedData;
|
||||
};
|
||||
|
||||
class UserClientUpdateAccountData final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
UserClientUpdateAccountData(WorldPacket&& packet) : ClientPacket(CMSG_UPDATE_ACCOUNT_DATA, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid PlayerGuid;
|
||||
uint32 Time = 0; ///< UnixTime
|
||||
uint32 Size = 0; ///< decompressed size
|
||||
uint8 DataType = 0; ///< @see enum AccountDataType
|
||||
ByteBuffer CompressedData;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write()
|
||||
_worldPacket << Result;
|
||||
_worldPacket << Player;
|
||||
|
||||
if (Result == 0)
|
||||
if (Result == RESPONSE_SUCCESS)
|
||||
{
|
||||
_worldPacket.WriteBits(Data.Name.length(), 7);
|
||||
|
||||
@@ -142,7 +142,7 @@ WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write()
|
||||
{
|
||||
_worldPacket << PageTextID;
|
||||
_worldPacket.WriteBit(Allow);
|
||||
|
||||
|
||||
if (Allow)
|
||||
{
|
||||
_worldPacket << Info.ID;
|
||||
|
||||
@@ -58,8 +58,8 @@ WorldPacket const* WorldPackets::Spell::UpdateActionButtons::Write()
|
||||
WorldPacket const* WorldPackets::Spell::SendUnlearnSpells::Write()
|
||||
{
|
||||
_worldPacket << uint32(Spells.size());
|
||||
for (uint32 i = 0; i < Spells.size(); ++i)
|
||||
_worldPacket << Spells[0];
|
||||
for (uint32 spellId : Spells)
|
||||
_worldPacket << uint32(spellId);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
|
||||
#include "Packet.h"
|
||||
#include "Player.h"
|
||||
#include <vector>
|
||||
|
||||
namespace WorldPackets
|
||||
{
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "Opcodes.h"
|
||||
#include "WorldSession.h"
|
||||
#include "Packets/CharacterPackets.h"
|
||||
#include "Packets/ClientConfigpackets.h"
|
||||
#include "Packets/CombatPackets.h"
|
||||
#include "Packets/GuildPackets.h"
|
||||
#include "Packets/MiscPackets.h"
|
||||
@@ -542,7 +543,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REPAIR_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRepairItemOpcode );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REPOP_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRepopRequestOpcode );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REPORT_PVP_AFK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_ACCOUNT_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestAccountData );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::RequestAccountData, &WorldSession::HandleRequestAccountData);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestCategoryCooldowns );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_CEMETERY_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestCemeteryList );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_HOTFIX, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestHotfix );
|
||||
@@ -639,7 +640,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UNLEARN_SKILL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UNLEARN_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_ACCOUNT_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData );
|
||||
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::UserClientUpdateAccountData, &WorldSession::HandleUpdateAccountData );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_PROJECTILE_POSITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_USED_FOLLOW, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -872,6 +873,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNTRESULT, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPEL_FAILED, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_GAME_ERROR, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_PROMOTION, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DROP_NEW_CONNECTION, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COMPLETE, STATUS_UNHANDLED);
|
||||
@@ -916,6 +918,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMETIME_UPDATE, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_EVENT_DEBUG_LOG, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GMRESPONSE_DB_ERROR, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GMRESPONSE_RECEIVED, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GMRESPONSE_STATUS_UPDATE, STATUS_UNHANDLED);
|
||||
@@ -1372,8 +1375,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNIT_HEALTH_FREQUENT, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNIT_SPELLCAST_START, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_COMBO_POINTS, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY_WEEK_LIMIT, STATUS_UNHANDLED);
|
||||
|
||||
@@ -795,8 +795,8 @@ enum OpcodeServer : uint32
|
||||
SMSG_CAMERA_SHAKE = 0xBADD,
|
||||
SMSG_CANCEL_AUTO_REPEAT = 0xBADD,
|
||||
SMSG_CANCEL_COMBAT = 0xBADD,
|
||||
SMSG_CAST_FAILED = 0xBADD,
|
||||
SMSG_CHANNEL_LIST = 0xBADD,
|
||||
SMSG_CAST_FAILED = 0x1A89,
|
||||
SMSG_CHANNEL_LIST = 0x1411,
|
||||
SMSG_CHANNEL_MEMBER_COUNT = 0xBADD,
|
||||
SMSG_CHANNEL_NOTIFY = 0x0643,
|
||||
SMSG_CHANNEL_NOTIFY_JOINED = 0x1602,
|
||||
@@ -877,6 +877,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_DISMOUNTRESULT = 0xBADD,
|
||||
SMSG_DISPEL_FAILED = 0xBADD,
|
||||
SMSG_DISPLAY_GAME_ERROR = 0xBADD,
|
||||
SMSG_DISPLAY_PROMOTION = 0x151D,
|
||||
SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0xBADD,
|
||||
SMSG_DROP_NEW_CONNECTION = 0xBADD,
|
||||
SMSG_DUEL_COMPLETE = 0xBADD,
|
||||
@@ -912,7 +913,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_FORCE_SET_VEHICLE_REC_ID = 0xBADD,
|
||||
SMSG_FORGE_MASTER_SET = 0xBADD,
|
||||
SMSG_FRIEND_STATUS = 0xBADD,
|
||||
SMSG_GAMEOBJECT_CUSTOM_ANIM = 0xBADD,
|
||||
SMSG_GAMEOBJECT_CUSTOM_ANIM = 0x03EB,
|
||||
SMSG_GAMEOBJECT_DESPAWN_ANIM = 0xBADD,
|
||||
SMSG_GAMEOBJECT_PAGETEXT = 0xBADD,
|
||||
SMSG_GAMEOBJECT_QUERY_RESPONSE = 0xBADD,
|
||||
@@ -922,6 +923,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_GAMETIME_UPDATE = 0xBADD,
|
||||
SMSG_GAME_EVENT_DEBUG_LOG = 0xBADD,
|
||||
SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0xBADD,
|
||||
SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x0952,
|
||||
SMSG_GMRESPONSE_DB_ERROR = 0xBADD,
|
||||
SMSG_GMRESPONSE_RECEIVED = 0xBADD,
|
||||
SMSG_GMRESPONSE_STATUS_UPDATE = 0xBADD,
|
||||
@@ -941,7 +943,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_GROUP_CANCEL = 0xBADD,
|
||||
SMSG_GROUP_DECLINE = 0xBADD,
|
||||
SMSG_GROUP_DESTROYED = 0xBADD,
|
||||
SMSG_GROUP_INVITE = 0xBADD,
|
||||
SMSG_GROUP_INVITE = 0x0920,
|
||||
SMSG_GROUP_LIST = 0x15BE,
|
||||
SMSG_GROUP_SET_LEADER = 0xBADD,
|
||||
SMSG_GROUP_SET_ROLE = 0xBADD,
|
||||
@@ -1287,12 +1289,12 @@ enum OpcodeServer : uint32
|
||||
SMSG_SERVER_INFO_RESPONSE = 0xBADD,
|
||||
SMSG_SERVER_MESSAGE = 0x0683,
|
||||
SMSG_SERVER_PERF = 0xBADD,
|
||||
SMSG_SET_AI_ANIM_KIT = 0xBADD,
|
||||
SMSG_SET_AI_ANIM_KIT = 0x0335,
|
||||
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0xBADD,
|
||||
SMSG_SET_FACTION_ATWAR = 0xBADD,
|
||||
SMSG_SET_FACTION_NOT_VISIBLE = 0xBADD,
|
||||
SMSG_SET_FACTION_STANDING = 0xBADD,
|
||||
SMSG_SET_FACTION_VISIBLE = 0xBADD,
|
||||
SMSG_SET_FACTION_VISIBLE = 0x138B,
|
||||
SMSG_SET_FLAT_SPELL_MODIFIER = 0x1884,
|
||||
SMSG_SET_FORCED_REACTIONS = 0x09A9,
|
||||
SMSG_SET_MELEE_ANIM_KIT = 0xBADD,
|
||||
@@ -1326,8 +1328,8 @@ enum OpcodeServer : uint32
|
||||
SMSG_SPELL_CATEGORY_COOLDOWN = 0x082A,
|
||||
SMSG_SPELL_COOLDOWN = 0xBADD,
|
||||
SMSG_SPELL_DELAYED = 0xBADD,
|
||||
SMSG_SPELL_FAILED_OTHER = 0xBADD,
|
||||
SMSG_SPELL_FAILURE = 0xBADD,
|
||||
SMSG_SPELL_FAILED_OTHER = 0x1A03,
|
||||
SMSG_SPELL_FAILURE = 0x11DB,
|
||||
SMSG_SPELL_GO = 0x1161,
|
||||
SMSG_SPELL_START = 0x0803,
|
||||
SMSG_SPELL_UPDATE_CHAIN_TARGETS = 0x0374,
|
||||
@@ -1404,7 +1406,6 @@ enum OpcodeServer : uint32
|
||||
SMSG_UNIT_HEALTH_FREQUENT = 0xBADD,
|
||||
SMSG_UNIT_SPELLCAST_START = 0xBADD,
|
||||
SMSG_UPDATE_ACCOUNT_DATA = 0x1520,
|
||||
SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0xBADD,
|
||||
SMSG_UPDATE_COMBO_POINTS = 0xBADD,
|
||||
SMSG_UPDATE_CURRENCY = 0xBADD,
|
||||
SMSG_UPDATE_CURRENCY_WEEK_LIMIT = 0xBADD,
|
||||
|
||||
@@ -96,6 +96,12 @@ namespace WorldPackets
|
||||
class LoadingScreenNotify;
|
||||
}
|
||||
|
||||
namespace ClientConfig
|
||||
{
|
||||
class RequestAccountData;
|
||||
class UserClientUpdateAccountData;
|
||||
}
|
||||
|
||||
namespace Combat
|
||||
{
|
||||
class AttackSwing;
|
||||
@@ -157,9 +163,7 @@ enum AccountDataType
|
||||
|
||||
struct AccountData
|
||||
{
|
||||
AccountData() : Time(0), Data("") { }
|
||||
|
||||
time_t Time;
|
||||
time_t Time = 0;
|
||||
std::string Data;
|
||||
};
|
||||
|
||||
@@ -373,7 +377,7 @@ class WorldSession
|
||||
bool CheckStableMaster(ObjectGuid guid);
|
||||
|
||||
// Account Data
|
||||
AccountData* GetAccountData(AccountDataType type) { return &m_accountData[type]; }
|
||||
AccountData const* GetAccountData(AccountDataType type) const { return &m_accountData[type]; }
|
||||
void SetAccountData(AccountDataType type, time_t tm, std::string const& data);
|
||||
void LoadGlobalAccountData();
|
||||
void LoadAccountData(PreparedQueryResult result, uint32 mask);
|
||||
@@ -591,8 +595,8 @@ class WorldSession
|
||||
void HandleSetWatchedFactionOpcode(WorldPacket& recvData);
|
||||
void HandleSetFactionInactiveOpcode(WorldPacket& recvData);
|
||||
|
||||
void HandleUpdateAccountData(WorldPacket& recvPacket);
|
||||
void HandleRequestAccountData(WorldPacket& recvPacket);
|
||||
void HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet);
|
||||
void HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request);
|
||||
void HandleSetActionButtonOpcode(WorldPacket& recvPacket);
|
||||
|
||||
void HandleGameObjectUseOpcode(WorldPacket& recPacket);
|
||||
|
||||
@@ -440,7 +440,6 @@ uint32 WorldSocket::CompressPacket(uint8* buffer, WorldPacket const& packet)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
return bufferSize - _compressionStream->avail_out;
|
||||
}
|
||||
|
||||
|
||||
@@ -675,12 +675,8 @@ public:
|
||||
if (objectType < 4)
|
||||
object->SetByteValue(GAMEOBJECT_BYTES_1, objectType, objectState);
|
||||
else if (objectType == 4)
|
||||
{
|
||||
WorldPacket data(SMSG_GAMEOBJECT_CUSTOM_ANIM, 8+4);
|
||||
data << object->GetGUID();
|
||||
data << (uint32)(objectState);
|
||||
object->SendMessageToSet(&data, true);
|
||||
}
|
||||
object->SendCustomAnim(objectState);
|
||||
|
||||
handler->PSendSysMessage("Set gobject type %d state %d", objectType, objectState);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -204,9 +204,10 @@ public:
|
||||
Player* target;
|
||||
ObjectGuid targetGuid;
|
||||
std::string targetName;
|
||||
/* TODO: 6.x remove/update pet talents
|
||||
|
||||
if (!handler->extractPlayerTarget((char*)args, &target, &targetGuid, &targetName))
|
||||
{
|
||||
/* TODO: 6.x remove/update pet talents
|
||||
// Try reset talents as Hunter Pet
|
||||
Creature* creature = handler->getSelectedCreature();
|
||||
if (!*args && creature && creature->IsPet())
|
||||
@@ -223,12 +224,12 @@ public:
|
||||
}
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
if (target)
|
||||
{
|
||||
|
||||
@@ -303,7 +303,7 @@ class ByteBuffer
|
||||
{
|
||||
if (size_t len = value.length())
|
||||
append((uint8 const*)value.c_str(), len);
|
||||
append((uint8)0);
|
||||
append<uint8>(0);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ class ByteBuffer
|
||||
{
|
||||
if (size_t len = (str ? strlen(str) : 0))
|
||||
append((uint8 const*)str, len);
|
||||
append((uint8)0);
|
||||
append<uint8>(0);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -475,7 +475,7 @@ class ByteBuffer
|
||||
|
||||
void read(uint8 *dest, size_t len)
|
||||
{
|
||||
if (_rpos + len > size())
|
||||
if (_rpos + len > size())
|
||||
throw ByteBufferPositionException(false, _rpos, len, size());
|
||||
|
||||
ResetBitPos();
|
||||
|
||||
Reference in New Issue
Block a user