diff options
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 84 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChannelPackets.h | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ClientConfigPackets.cpp | 33 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ClientConfigPackets.h | 39 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QueryPackets.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TalentPackets.h | 1 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 19 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 16 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 1 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_gobject.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_reset.cpp | 5 | ||||
-rw-r--r-- | src/server/shared/Packets/ByteBuffer.h | 6 |
14 files changed, 143 insertions, 95 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 49b593eb0a6..613f1e46d7b 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -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"); - - uint32 type; - recvData >> type; - - TC_LOG_DEBUG("network", "RAD: type %u", type); + TC_LOG_DEBUG("network", "WORLD: Received CMSG_REQUEST_ACCOUNT_DATA: type %u", request.DataType); - 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()); diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h index d3984e18f57..b6c8eb3b928 100644 --- a/src/server/game/Server/Packets/ChannelPackets.h +++ b/src/server/game/Server/Packets/ChannelPackets.h @@ -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; }; diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp index b46288f86cb..693f8e773df 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.cpp +++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp @@ -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); + } +} diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h index 0dbcfd7d577..8a29b1fb175 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.h +++ b/src/server/game/Server/Packets/ClientConfigPackets.h @@ -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; + }; } } diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index eec966e2cfb..0d1b861a9b5 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -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; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 601f1f3e5a8..09914b292bb 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -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; } diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h index 82d2e7985c4..21753e22c8d 100644 --- a/src/server/game/Server/Packets/TalentPackets.h +++ b/src/server/game/Server/Packets/TalentPackets.h @@ -20,7 +20,6 @@ #include "Packet.h" #include "Player.h" -#include <vector> namespace WorldPackets { diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d8ea1f3861d..802e577b259 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -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); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 6de5400b5ae..aeb5bada68c 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -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, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 59049d12107..b508acb604e 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -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); diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 5729cea131d..aa1426d5fd2 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -440,7 +440,6 @@ uint32 WorldSocket::CompressPacket(uint8* buffer, WorldPacket const& packet) return 0; } - return bufferSize - _compressionStream->avail_out; } diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 5a00267d6aa..20ce825ad5e 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -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; } diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 4a58a7f7e5d..01a0094bfc7 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -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) { diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 069b783a537..67e940e263c 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -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(); |