aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-11-15 16:22:32 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2014-11-15 16:22:32 +0100
commit96fa1eb5ecb6667b4150b1d9bffa7efed79fedd8 (patch)
tree9485396a939f556900700e1da43f8c0b5e7b80e8
parentc375748b7636fe88f1daf37197dc9da3d4a674a1 (diff)
Core/Packets: added few channel packet structs
-rw-r--r--src/server/game/Handlers/AuctionHouseHandler.cpp2
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.cpp78
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.h90
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp6
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp15
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h52
6 files changed, 212 insertions, 31 deletions
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index d52e218e66d..fcd96ec9370 100644
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -728,7 +728,7 @@ void WorldSession::HandleAuctionListItems(WorldPacket& recvData)
TC_LOG_DEBUG("auctionHouse", "Auctionhouse search (%s) list from: %u, searchedname: %s, levelmin: %u, levelmax: %u, auctionSlotID: %u, auctionMainCategory: %u, auctionSubCategory: %u, quality: %u, usable: %u",
guid.ToString().c_str(), listfrom, searchedname.c_str(), levelmin, levelmax, auctionSlotID, auctionMainCategory, auctionSubCategory, quality, usable);
- WorldPacket data(SMSG_AUCTION_LIST_RESULT, (4+4+4));
+ WorldPacket data(SMSG_AUCTION_LIST_ITEMS_RESULT, (4+4+4));
uint32 count = 0;
uint32 totalcount = 0;
data << uint32(0);
diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp
new file mode 100644
index 00000000000..8aa4ac51d42
--- /dev/null
+++ b/src/server/game/Server/Packets/ChannelPackets.cpp
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ChannelPackets.h"
+#include "Channel.h"
+
+WorldPacket const* WorldPackets::Channel::ChannelNotify::Write()
+{
+ _worldPacket.WriteBits(Type, 6);
+ _worldPacket.WriteBits(Channel.length(), 7);
+ _worldPacket.WriteBits(Sender.length(), 6);
+
+ _worldPacket << SenderGuid;
+ _worldPacket << SenderBnetAccountID;
+ _worldPacket << uint32(SenderVirtualRealm);
+ _worldPacket << TargetGuid;
+ _worldPacket << uint32(TargetVirtualRealm);
+ _worldPacket << int32(ChatChannelID);
+
+ if (Type == CHAT_MODE_CHANGE_NOTICE)
+ {
+ _worldPacket << uint8(OldFlags);
+ _worldPacket << uint8(NewFlags);
+ }
+
+ _worldPacket.WriteString(Channel);
+ _worldPacket.WriteString(Sender);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Channel::ChannelNotifyJoined::Write()
+{
+ _worldPacket.WriteBits(Channel.length(), 7);
+ _worldPacket.WriteBits(ChannelWelcomeMsg.length(), 10);
+ _worldPacket << uint8(ChannelFlags);
+ _worldPacket << int32(ChatChannelID);
+ _worldPacket << uint64(InstanceID);
+ _worldPacket.WriteString(Channel);
+ _worldPacket.WriteString(ChannelWelcomeMsg);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Channel::ChannelNotifyLeft::Write()
+{
+ _worldPacket.WriteBits(Channel.length(), 7);
+ _worldPacket.WriteBit(Suspended);
+ _worldPacket << int32(ChatChannelID);
+ _worldPacket.WriteString(Channel);
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Channel::JoinChannel::Read()
+{
+ _worldPacket >> ChatChannelId;
+ CreateVoiceSession = _worldPacket.ReadBit();
+ Internal = _worldPacket.ReadBit();
+ uint32 channelLength = _worldPacket.ReadBits(7);
+ uint32 passwordLength = _worldPacket.ReadBits(7);
+ ChannelName = _worldPacket.ReadString(channelLength);
+ Password = _worldPacket.ReadString(passwordLength);
+}
diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h
new file mode 100644
index 00000000000..d3984e18f57
--- /dev/null
+++ b/src/server/game/Server/Packets/ChannelPackets.h
@@ -0,0 +1,90 @@
+/*
+* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License as published by the
+* Free Software Foundation; either version 2 of the License, or (at your
+* option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along
+* with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef ChannelPackets_h__
+#define ChannelPackets_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+
+namespace WorldPackets
+{
+ namespace Channel
+ {
+ class ChannelNotify final : public ServerPacket
+ {
+ public:
+ ChannelNotify() : ServerPacket(SMSG_CHANNEL_NOTIFY, 80) { }
+
+ WorldPacket const* Write() override;
+
+ std::string Sender;
+ ObjectGuid SenderGuid;
+ ObjectGuid SenderBnetAccountID;
+ uint8 Type = 0;
+ uint8 OldFlags = 0;
+ uint8 NewFlags = 0;
+ std::string Channel;
+ uint32 SenderVirtualRealm = 0;
+ ObjectGuid TargetGuid;
+ uint32 TargetVirtualRealm = 0;
+ int32 ChatChannelID = 0;
+ };
+
+ class ChannelNotifyJoined final : public ServerPacket
+ {
+ public:
+ ChannelNotifyJoined() : ServerPacket(SMSG_CHANNEL_NOTIFY_JOINED, 50) { }
+
+ WorldPacket const* Write() override;
+
+ std::string ChannelWelcomeMsg;
+ int32 ChatChannelID = 0;
+ int32 InstanceID = 0;
+ uint8 ChannelFlags = 0;
+ std::string Channel;
+ };
+
+ class ChannelNotifyLeft final : public ServerPacket
+ {
+ public:
+ ChannelNotifyLeft() : ServerPacket(SMSG_CHANNEL_NOTIFY_LEFT, 30) { }
+
+ WorldPacket const* Write() override;
+
+ std::string Channel;
+ int32 ChatChannelID = 0;
+ bool Suspended = false;
+ };
+
+ class JoinChannel final : public ClientPacket
+ {
+ public:
+ JoinChannel(WorldPacket&& packet) : ClientPacket(CMSG_JOIN_CHANNEL, std::move(packet)) { }
+
+ void Read() override;
+
+ std::string Password;
+ std::string ChannelName;
+ bool CreateVoiceSession = false;
+ int32 ChatChannelId = 0;
+ bool Internal = false;
+ };
+ }
+}
+
+#endif // ChannelPackets_h__
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 487e230a4a1..45d5b86e3fd 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -44,7 +44,7 @@ void WorldPackets::Movement::ClientPlayerMovement::Read()
movementInfo.flags = _worldPacket.ReadBits(30);
movementInfo.flags2 = _worldPacket.ReadBits(15);
-
+
bool hasTransport = _worldPacket.ReadBit();
bool hasFall = _worldPacket.ReadBit();
@@ -170,8 +170,8 @@ WorldPacket const* WorldPackets::Movement::ServerPlayerMovement::Write()
_worldPacket << movementInfo.jump.xyspeed;
}
}
-
+
_worldPacket.FlushBits();
return &_worldPacket;
-} \ No newline at end of file
+}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 118df977cd8..c5cff72df4e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -20,10 +20,10 @@
#include "WorldSession.h"
#include "Packets/CharacterPackets.h"
#include "Packets/GuildPackets.h"
-#include "Packets/TradePackets.h"
#include "Packets/MiscPackets.h"
-#include "Packets/QueryPackets.h"
#include "Packets/MovementPackets.h"
+#include "Packets/QueryPackets.h"
+#include "Packets/TradePackets.h"
template<class PacketClass, void(WorldSession::*HandlerFunction)(PacketClass&)>
class PacketHandler : public OpcodeHandler
@@ -167,7 +167,10 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEMASTER_JOIN_RATED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLE_PAY_GET_PRODUCT_LIST_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLE_PAY_GET_PURCHASE_LIST_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLE_PET_DELETE_PET, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLE_PET_MODIFY_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLE_PET_NAME_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLE_PET_SET_BATTLE_SLOT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BEGIN_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBeginTradeOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BINDER_ACTIVATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBinderActivateOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BUG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBugOpcode );
@@ -228,7 +231,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAR_CREATE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateChar, &WorldSession::HandleCharCreateOpcode);
DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode);
DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::DeleteChar, &WorldSession::HandleCharDeleteOpcode);
- DEFINE_HANDLER(CMSG_CHAR_ENUM, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::EnumCharacters, &WorldSession::HandleCharEnumOpcode );
+ DEFINE_HANDLER(CMSG_CHAR_ENUM, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::EnumCharacters, &WorldSession::HandleCharEnumOpcode);
DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode);
DEFINE_HANDLER(CMSG_CHAR_RENAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterRenameRequest, &WorldSession::HandleCharRenameOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_UNDELETE_ENUM, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteEnumOpcode );
@@ -531,6 +534,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_REALM_NAME_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REALM_SPLIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRealmSplitOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_RECLAIM_CORPSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReclaimCorpseOpcode );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_RECRUIT_A_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REFORGE_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleReforgeItemOpcode );
DEFINE_HANDLER(CMSG_REORDER_CHARACTERS, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::ReorderCharacters, &WorldSession::HandleReorderCharacters);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REPAIR_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRepairItemOpcode );
@@ -721,7 +725,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMAND_RESULT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_HELLO, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_PENDING_SALES, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_RESULT, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_ITEMS_RESULT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_OWNER_LIST_RESULT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_OWNER_NOTIFICATION, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_REMOVED_NOTIFICATION, STATUS_UNHANDLED);
@@ -795,6 +799,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_LIST, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_MEMBER_COUNT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_JOINED, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_LEFT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_START, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_UPDATE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_UNHANDLED);
@@ -820,6 +826,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLIENTCACHE_VERSION, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLIENT_CONTROL_UPDATE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_COIN_REMOVED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMBAT_EVENT_FAILED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_MAP_INFO, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_PARTY_INFO, STATUS_UNHANDLED);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 65c33537ec6..55171515bd2 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -78,35 +78,38 @@ enum OpcodeClient : uint32
CMSG_AUCTION_SELL_ITEM = 0xBADD,
CMSG_AUTH_CONTINUED_SESSION = 0x0485,
CMSG_AUTH_SESSION = 0x0487,
- CMSG_AUTOBANK_ITEM = 0xBADD,
+ CMSG_AUTOBANK_ITEM = 0x0751,
CMSG_AUTOEQUIP_GROUND_ITEM = 0xBADD,
- CMSG_AUTOEQUIP_ITEM = 0xBADD,
+ CMSG_AUTOEQUIP_ITEM = 0x0F35,
CMSG_AUTOEQUIP_ITEM_SLOT = 0xBADD,
- CMSG_AUTOSTORE_BAG_ITEM = 0xBADD,
- CMSG_AUTOSTORE_BANK_ITEM = 0xBADD,
+ CMSG_AUTOSTORE_BAG_ITEM = 0x0F18,
+ CMSG_AUTOSTORE_BANK_ITEM = 0x0732,
CMSG_AUTOSTORE_GROUND_ITEM = 0xBADD,
- CMSG_AUTOSTORE_LOOT_ITEM = 0xBADD,
+ CMSG_AUTOSTORE_LOOT_ITEM = 0x0609,
CMSG_AUTO_DECLINE_GUILD_INVITE = 0xBADD,
CMSG_AUTO_DECLINE_GUILD_INVITES = 0xBADD,
CMSG_BANKER_ACTIVATE = 0x1B24,
CMSG_BATTLEFIELD_JOIN = 0xBADD,
CMSG_BATTLEFIELD_LEAVE = 0xBADD,
CMSG_BATTLEFIELD_LIST = 0x03B1,
- CMSG_BATTLEFIELD_MGR_ENTRY_INVITE_RESPONSE = 0xBADD,
- CMSG_BATTLEFIELD_MGR_EXIT_REQUEST = 0xBADD,
- CMSG_BATTLEFIELD_MGR_QUEUE_INVITE_RESPONSE = 0xBADD,
+ CMSG_BATTLEFIELD_MGR_ENTRY_INVITE_RESPONSE = 0x059A,
+ CMSG_BATTLEFIELD_MGR_EXIT_REQUEST = 0x1381,
+ CMSG_BATTLEFIELD_MGR_QUEUE_INVITE_RESPONSE = 0x122A,
CMSG_BATTLEFIELD_MGR_QUEUE_REQUEST = 0xBADD,
- CMSG_BATTLEFIELD_PORT = 0xBADD,
+ CMSG_BATTLEFIELD_PORT = 0x11EB,
CMSG_BATTLEFIELD_REQUEST_SCORE_DATA = 0xBADD,
CMSG_BATTLEFIELD_STATUS = 0xBADD,
CMSG_BATTLEGROUND_PLAYER_POSITIONS = 0xBADD,
- CMSG_BATTLEMASTER_JOIN = 0xBADD,
- CMSG_BATTLEMASTER_JOIN_ARENA = 0xBADD,
+ CMSG_BATTLEMASTER_JOIN = 0x0D2E,
+ CMSG_BATTLEMASTER_JOIN_ARENA = 0x0DAE,
CMSG_BATTLEMASTER_JOIN_RATED = 0xBADD,
CMSG_BATTLEMASTER_HELLO = 0xBADD,
CMSG_BATTLE_PAY_GET_PRODUCT_LIST_QUERY = 0x1389,
CMSG_BATTLE_PAY_GET_PURCHASE_LIST_QUERY = 0x120C,
+ CMSG_BATTLE_PET_DELETE_PET = 0x07B9,
+ CMSG_BATTLE_PET_MODIFY_NAME = 0x03A9,
CMSG_BATTLE_PET_NAME_QUERY = 0x041C,
+ CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x120B,
CMSG_BEGIN_TRADE = 0xBADD,
CMSG_BINDER_ACTIVATE = 0x02F3,
CMSG_BOT_DETECTED2 = 0xBADD,
@@ -277,7 +280,7 @@ enum OpcodeClient : uint32
CMSG_GUILD_EVENT_LOG_QUERY = 0xBADD,
CMSG_GUILD_INFO = 0xBADD,
CMSG_GUILD_INFO_TEXT = 0xBADD,
- CMSG_GUILD_INVITE = 0xBADD,
+ CMSG_GUILD_INVITE = 0x19A4,
CMSG_GUILD_LEAVE = 0xBADD,
CMSG_GUILD_MEMBER_SEND_SOR_REQUEST = 0xBADD,
CMSG_GUILD_MOTD = 0xBADD,
@@ -344,8 +347,8 @@ enum OpcodeClient : uint32
CMSG_LOOT_MONEY = 0xBADD,
CMSG_LOOT_RELEASE = 0xBADD,
CMSG_LOOT_ROLL = 0xBADD,
- CMSG_MAIL_CREATE_TEXT_ITEM = 0xBADD,
- CMSG_MAIL_DELETE = 0xBADD,
+ CMSG_MAIL_CREATE_TEXT_ITEM = 0x13D1,
+ CMSG_MAIL_DELETE = 0x068C,
CMSG_MAIL_MARK_AS_READ = 0xBADD,
CMSG_MAIL_RETURN_TO_SENDER = 0xBADD,
CMSG_MAIL_TAKE_ITEM = 0xBADD,
@@ -497,6 +500,7 @@ enum OpcodeClient : uint32
CMSG_REALM_NAME_QUERY = 0x1189,
CMSG_REALM_SPLIT = 0xBADD,
CMSG_RECLAIM_CORPSE = 0xBADD,
+ CMSG_RECRUIT_A_FRIEND = 0x07BA,
CMSG_REFORGE_ITEM = 0xBADD,
CMSG_REORDER_CHARACTERS = 0x0DAA,
CMSG_REPAIR_ITEM = 0x0B54,
@@ -718,7 +722,7 @@ enum OpcodeServer : uint32
SMSG_AUCTION_COMMAND_RESULT = 0x0B2D,
SMSG_AUCTION_HELLO = 0x011F,
SMSG_AUCTION_LIST_PENDING_SALES = 0xBADD,
- SMSG_AUCTION_LIST_RESULT = 0x19D2,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x0BA4,
SMSG_AUCTION_OWNER_LIST_RESULT = 0xBADD,
SMSG_AUCTION_OWNER_NOTIFICATION = 0xBADD,
SMSG_AUCTION_REMOVED_NOTIFICATION = 0xBADD,
@@ -796,6 +800,7 @@ enum OpcodeServer : uint32
SMSG_CHANNEL_MEMBER_COUNT = 0xBADD,
SMSG_CHANNEL_NOTIFY = 0x0643,
SMSG_CHANNEL_NOTIFY_JOINED = 0x1602,
+ SMSG_CHANNEL_NOTIFY_LEFT = 0x1452,
SMSG_CHANNEL_START = 0x016C,
SMSG_CHANNEL_UPDATE = 0x19DB,
SMSG_CHARACTER_LOGIN_FAILED = 0xBADD,
@@ -823,6 +828,7 @@ enum OpcodeServer : uint32
SMSG_CLEAR_TARGET = 0xBADD,
SMSG_CLIENTCACHE_VERSION = 0x080D,
SMSG_CLIENT_CONTROL_UPDATE = 0xBADD,
+ SMSG_COIN_REMOVED = 0x0D30,
SMSG_COMBAT_EVENT_FAILED = 0xBADD,
SMSG_COMBAT_LOG_MULTIPLE = 0xBADD,
SMSG_COMMENTATOR_MAP_INFO = 0xBADD,
@@ -837,7 +843,7 @@ enum OpcodeServer : uint32
SMSG_COMSAT_CONNECT_FAIL = 0xBADD,
SMSG_COMSAT_DISCONNECT = 0xBADD,
SMSG_COMSAT_RECONNECT_TRY = 0xBADD,
- SMSG_CONTACT_LIST = 0xBADD,
+ SMSG_CONTACT_LIST = 0x0210,
SMSG_CONTACT_STATUS = 0x1BEA,
SMSG_CONVERT_RUNE = 0xBADD,
SMSG_COOLDOWN_CHEAT = 0xBADD,
@@ -1163,7 +1169,7 @@ enum OpcodeServer : uint32
SMSG_PAGE_TEXT_QUERY_RESPONSE = 0x05A0,
SMSG_PARTYKILLLOG = 0xBADD,
SMSG_PARTY_COMMAND_RESULT = 0xBADD,
- SMSG_PARTY_MEMBER_STATS = 0xBADD,
+ SMSG_PARTY_MEMBER_STATS = 0x1729,
SMSG_PARTY_MEMBER_STATS_FULL = 0xBADD,
SMSG_PAUSE_MIRROR_TIMER = 0xBADD,
SMSG_PERIODICAURALOG = 0x0B1B,
@@ -1202,7 +1208,7 @@ enum OpcodeServer : uint32
SMSG_PLAY_OBJECT_SOUND = 0xBADD,
SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0xBADD,
SMSG_PLAY_SOUND = 0x02D2,
- SMSG_PLAY_SPELL_VISUAL = 0xBADD,
+ SMSG_PLAY_SPELL_VISUAL = 0x1A84,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x0171,
SMSG_PLAY_TIME_WARNING = 0xBADD,
SMSG_PONG = 0x17CA,
@@ -1217,7 +1223,7 @@ enum OpcodeServer : uint32
SMSG_PVP_SEASON = 0x09E3,
SMSG_QUERY_QUESTS_COMPLETED_RESPONSE = 0xBADD,
SMSG_QUERY_TIME_RESPONSE = 0x1DB0,
- SMSG_QUESTGIVER_OFFER_REWARD = 0xBADD,
+ SMSG_QUESTGIVER_OFFER_REWARD = 0x17B2,
SMSG_QUESTGIVER_QUEST_COMPLETE = 0x1773,
SMSG_QUESTGIVER_QUEST_DETAILS = 0x15B3,
SMSG_QUESTGIVER_QUEST_FAILED = 0xBADD,
@@ -1228,7 +1234,7 @@ enum OpcodeServer : uint32
SMSG_QUESTGIVER_STATUS_MULTIPLE = 0x17C6,
SMSG_QUESTLOG_FULL = 0xBADD,
SMSG_QUESTUPDATE_ADD_ITEM = 0xBADD,
- SMSG_QUESTUPDATE_ADD_KILL = 0xBADD,
+ SMSG_QUESTUPDATE_ADD_KILL = 0x1515,
SMSG_QUESTUPDATE_ADD_PVP_KILL = 0xBADD,
SMSG_QUESTUPDATE_COMPLETE = 0xBADD,
SMSG_QUESTUPDATE_FAILED = 0xBADD,
@@ -1387,7 +1393,7 @@ enum OpcodeServer : uint32
SMSG_TRAINER_BUY_FAILED = 0xBADD,
SMSG_TRAINER_BUY_SUCCEEDED = 0xBADD,
SMSG_TRAINER_LIST = 0x0BA9,
- SMSG_TRANSFER_ABORTED = 0xBADD,
+ SMSG_TRANSFER_ABORTED = 0x03C2,
SMSG_TRANSFER_PENDING = 0x172A,
SMSG_TRIGGER_CINEMATIC = 0xBADD,
SMSG_TRIGGER_MOVIE = 0xBADD,
@@ -1423,8 +1429,8 @@ enum OpcodeServer : uint32
SMSG_VOID_STORAGE_FAILED = 0xBADD,
SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x0321,
SMSG_VOID_TRANSFER_RESULT = 0x0539,
- SMSG_WAIT_QUEUE_FINISH = 0xBADD,
- SMSG_WAIT_QUEUE_UPDATE = 0xBADD,
+ SMSG_WAIT_QUEUE_FINISH = 0x198A,
+ SMSG_WAIT_QUEUE_UPDATE = 0x00D4,
SMSG_WARDEN_DATA = 0x0BEC,
SMSG_WARGAME_CHECK_ENTRY = 0xBADD,
SMSG_WARGAME_REQUEST_SENT = 0xBADD,