aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-11-16 06:08:46 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2014-11-16 06:08:46 +0100
commitd55c0cbf3a4bc8fe7851b49acc144058d598a40f (patch)
treeb033e6faaf427de09d4af3f68ea19fc85182dcfc /src/server/game/Server
parent55c61599b25da18fdd16fc22168cc9a18ae56350 (diff)
Core/Packets: updated AccountData packets
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.h8
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.cpp33
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.h39
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/TalentPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h19
-rw-r--r--src/server/game/Server/WorldSession.h16
-rw-r--r--src/server/game/Server/WorldSocket.cpp1
10 files changed, 106 insertions, 29 deletions
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;
}