aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDJScias <djscias@gmail.com>2015-03-09 22:57:49 +0100
committerDJScias <djscias@gmail.com>2015-03-09 22:57:49 +0100
commita47d57d1dbd7bc944972d7ef1773739e5019adde (patch)
tree962461010188bff18112b2223a035e0424883ae8 /src
parent7754d4d23e27c3c5a4344e5f67e2df22a3b32e6e (diff)
Core/Packets: update & enabled CMSG_SHOWING_CLOAK, CMSG_SHOWING_HELM
Documentation Used: - Thanks @rocverde for providing sniffs through TC IRC. - Thank you very much @MitchesD, @DDuarte, @Carbenium and @Vincent-Michael (+ Trinity as a whole) for the help with my very first opcode structure update.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp18
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h20
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h4
-rw-r--r--src/server/game/Server/WorldSession.h6
6 files changed, 48 insertions, 14 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index eef42a23c06..ba6b064d2f3 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1177,18 +1177,20 @@ void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket& recvData)
_player->GetReputationMgr().SetInactive(replistid, inactive != 0);
}
-void WorldSession::HandleShowingHelmOpcode(WorldPacket& recvData)
+void WorldSession::HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet)
{
- TC_LOG_DEBUG("network", "CMSG_SHOWING_HELM for %s", _player->GetName().c_str());
- recvData.read_skip<uint8>(); // unknown, bool?
- _player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM);
+ if (packet.ShowHelm)
+ _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM);
+ else
+ _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM);
}
-void WorldSession::HandleShowingCloakOpcode(WorldPacket& recvData)
+void WorldSession::HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet)
{
- TC_LOG_DEBUG("network", "CMSG_SHOWING_CLOAK for %s", _player->GetName().c_str());
- recvData.read_skip<uint8>(); // unknown, bool?
- _player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK);
+ if (packet.ShowCloak)
+ _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK);
+ else
+ _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK);
}
void WorldSession::HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request)
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index e5a415e6f7f..69ffb8a7502 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -416,3 +416,13 @@ WorldPacket const* WorldPackets::Character::PlayedTime::Write()
return &_worldPacket;
}
+
+void WorldPackets::Character::ShowingCloak::Read()
+{
+ ShowCloak = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Character::ShowingHelm::Read()
+{
+ ShowHelm = _worldPacket.ReadBit();
+}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index d281aa4b7ba..b185fc3301e 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -560,6 +560,26 @@ namespace WorldPackets
int32 LevelTime = 0;
bool TriggerEvent = false;
};
+
+ class ShowingCloak final : public ClientPacket
+ {
+ public:
+ ShowingCloak(WorldPacket&& packet) : ClientPacket(CMSG_SHOWING_CLOAK, std::move(packet)) { }
+
+ void Read() override;
+
+ bool ShowCloak = false;
+ };
+
+ class ShowingHelm final : public ClientPacket
+ {
+ public:
+ ShowingHelm(WorldPacket&& packet) : ClientPacket(CMSG_SHOWING_HELM, std::move(packet)) { }
+
+ void Read() override;
+
+ bool ShowHelm = false;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 41dd7ce4115..93a37d3d628 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -785,8 +785,8 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TRADE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeItemOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_VEHICLE_REC_ID_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_WATCHED_FACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetWatchedFactionOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOWING_CLOAK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingCloakOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOWING_HELM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingHelmOpcode );
+ DEFINE_HANDLER(CMSG_SHOWING_CLOAK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::ShowingCloak, &WorldSession::HandleShowingCloakOpcode);
+ DEFINE_HANDLER(CMSG_SHOWING_HELM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::ShowingHelm, &WorldSession::HandleShowingHelmOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOW_TRADE_SKILL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_SIGN_PETITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Petition::SignPetition, &WorldSession::HandleSignPetition);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SILENCE_PARTY_TALKER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index fa99fc08a10..911dea94f8c 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -693,8 +693,8 @@ enum OpcodeClient : uint32
CMSG_SET_TRADE_ITEM = 0xBADD,
CMSG_SET_VEHICLE_REC_ID_ACK = 0xBADD,
CMSG_SET_WATCHED_FACTION = 0x154B,
- CMSG_SHOWING_CLOAK = 0xBADD,
- CMSG_SHOWING_HELM = 0xBADD,
+ CMSG_SHOWING_CLOAK = 0x1199,
+ CMSG_SHOWING_HELM = 0x05A3,
CMSG_SHOW_TRADE_SKILL = 0xBADD,
CMSG_SIGN_PETITION = 0xBADD,
CMSG_SILENCE_PARTY_TALKER = 0xBADD,
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index b3103ce7b14..91dfbebcf6a 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -119,6 +119,8 @@ namespace WorldPackets
class LoadingScreenNotify;
class SetActionBarToggles;
class PlayedTimeClient;
+ class ShowingCloak;
+ class ShowingHelm;
enum class LoginFailureReason : uint8;
}
@@ -812,8 +814,8 @@ class WorldSession
void HandleMountSpecialAnimOpcode(WorldPacket& recvdata);
// character view
- void HandleShowingHelmOpcode(WorldPacket& recvData);
- void HandleShowingCloakOpcode(WorldPacket& recvData);
+ void HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet);
+ void HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet);
// repair
void HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet);