mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Packets: update & enable CMSG_RANDOM_ROLL, SMSG_RANDOM_ROLL, CMSG_EMOTE, CMSG_TEXT_EMOTE and SMSG_TEXT_EMOTE
Documentation used: - Enabled CMSG_TEXT_EMOTE and SMSG_TEXT_EMOTE to 6.1 - Changed CMSG_EMOTE from "0x0B2B" to "0x0B2C". It sends an empty packet but it's meant to stop the current emote as per @Zedron's sniffs. - Updated structure and enabled CMSG_RANDOM_ROLL and SMSG_RANDOM_ROLL. Thanks @rocverde for providing sniffs. Cleaning up last commit
This commit is contained in:
@@ -524,13 +524,13 @@ void WorldSession::HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND
|
||||
sScriptMgr->OnPlayerChat(sender, CHAT_MSG_DND, LANG_UNIVERSAL, packet.Text);
|
||||
}
|
||||
|
||||
void WorldSession::HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet)
|
||||
void WorldSession::HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& /* packet */)
|
||||
{
|
||||
if (!GetPlayer()->IsAlive() || GetPlayer()->HasUnitState(UNIT_STATE_DIED))
|
||||
return;
|
||||
|
||||
sScriptMgr->OnPlayerEmote(GetPlayer(), packet.EmoteID);
|
||||
GetPlayer()->HandleEmoteCommand(packet.EmoteID);
|
||||
sScriptMgr->OnPlayerEmote(GetPlayer(), 0);
|
||||
GetPlayer()->HandleEmoteCommand(0);
|
||||
}
|
||||
|
||||
void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSession.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "MiscPackets.h"
|
||||
|
||||
class Aura;
|
||||
|
||||
@@ -648,13 +649,13 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData)
|
||||
GetPlayer()->GetGroup()->BroadcastPacket(&data, true, -1, GetPlayer()->GetGUID());
|
||||
}
|
||||
|
||||
void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData)
|
||||
void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: Received CMSG_RANDOM_ROLL");
|
||||
|
||||
uint32 minimum, maximum, roll;
|
||||
recvData >> minimum;
|
||||
recvData >> maximum;
|
||||
minimum = packet.Min;
|
||||
maximum = packet.Max;
|
||||
|
||||
/** error handling **/
|
||||
if (minimum > maximum || maximum > 10000) // < 32768 for urand call
|
||||
@@ -666,15 +667,16 @@ void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData)
|
||||
|
||||
//TC_LOG_DEBUG("misc", "ROLL: MIN: %u, MAX: %u, ROLL: %u", minimum, maximum, roll);
|
||||
|
||||
WorldPacket data(SMSG_RANDOM_ROLL, 4+4+4+8);
|
||||
data << uint32(minimum);
|
||||
data << uint32(maximum);
|
||||
data << uint32(roll);
|
||||
data << GetPlayer()->GetGUID();
|
||||
WorldPackets::Misc::RandomRoll randomRoll;
|
||||
randomRoll.Min = minimum;
|
||||
randomRoll.Max = maximum;
|
||||
randomRoll.Result = roll;
|
||||
randomRoll.Roller = GetPlayer()->GetGUID();
|
||||
randomRoll.RollerWowAccount = GetAccountGUID();
|
||||
if (GetPlayer()->GetGroup())
|
||||
GetPlayer()->GetGroup()->BroadcastPacket(&data, false);
|
||||
GetPlayer()->GetGroup()->BroadcastPacket(randomRoll.Write(), false);
|
||||
else
|
||||
SendPacket(&data);
|
||||
SendPacket(randomRoll.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket& recvData)
|
||||
|
||||
@@ -196,8 +196,3 @@ WorldPacket const* WorldPackets::Chat::PrintNotification::Write()
|
||||
_worldPacket.WriteString(NotifyText);
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Chat::EmoteClient::Read()
|
||||
{
|
||||
_worldPacket >> EmoteID;
|
||||
}
|
||||
|
||||
@@ -213,9 +213,7 @@ namespace WorldPackets
|
||||
public:
|
||||
EmoteClient(WorldPacket&& packet) : ClientPacket(CMSG_EMOTE, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
uint32 EmoteID = 0;
|
||||
void Read() override { }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,3 +361,21 @@ WorldPacket const* WorldPackets::Misc::PlayMusic::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Misc::RandomRollClient::Read()
|
||||
{
|
||||
_worldPacket >> Min;
|
||||
_worldPacket >> Max;
|
||||
_worldPacket >> PartyIndex;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::RandomRoll::Write()
|
||||
{
|
||||
_worldPacket << Roller;
|
||||
_worldPacket << RollerWowAccount;
|
||||
_worldPacket << int32(Min);
|
||||
_worldPacket << int32(Max);
|
||||
_worldPacket << int32(Result);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -504,6 +504,32 @@ namespace WorldPackets
|
||||
|
||||
uint32 SoundKitID = 0;
|
||||
};
|
||||
|
||||
class RandomRollClient final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
RandomRollClient(WorldPacket&& packet) : ClientPacket(CMSG_RANDOM_ROLL, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
int32 Min = 0;
|
||||
int32 Max = 0;
|
||||
uint8 PartyIndex = 0;
|
||||
};
|
||||
|
||||
class RandomRoll final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
RandomRoll() : ServerPacket(SMSG_RANDOM_ROLL, 16 + 16 + 4 + 4 + 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Roller;
|
||||
ObjectGuid RollerWowAccount;
|
||||
int32 Min = 0;
|
||||
int32 Max = 0;
|
||||
int32 Result = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -679,7 +679,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_QUEST_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QueryQuestInfo, &WorldSession::HandleQuestQueryOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEUED_MESSAGES_END, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_HANDLER(CMSG_RANDOMIZE_CHAR_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GenerateRandomCharacterName, &WorldSession::HandleRandomizeCharNameOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_RANDOM_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode );
|
||||
DEFINE_HANDLER(CMSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::RandomRollClient, &WorldSession::HandleRandomRollOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_READY_CHECK_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_READ_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReadItem );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_REAGENT_BANK_BUY_TAB, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -818,7 +818,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXI_NODE_STATUS_QUERY, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiNodeStatusQueryOpcode );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXI_QUERY_AVAILABLE_NODES, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_TELEPORT_TO_UNIT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_HANDLER(CMSG_TEXT_EMOTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Chat::CTextEmote, &WorldSession::HandleTextEmoteOpcode);
|
||||
DEFINE_HANDLER(CMSG_TEXT_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::CTextEmote, &WorldSession::HandleTextEmoteOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_TIME_ADJUSTMENT_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_HANDLER(CMSG_TIME_SYNC_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::TimeSyncResponse, &WorldSession::HandleTimeSyncResponse);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_TIME_SYNC_RESPONSE_DROPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -1654,7 +1654,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_MARKERS_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOMIZE_CHAR_NAME, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOM_ROLL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOM_ROLL, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RATED_BG_RATING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RATED_BG_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
@@ -1814,7 +1814,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INVOLUNTARILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TAXINODE_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEST_DROP_RATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_CLEAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_REMOVE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
|
||||
@@ -247,7 +247,7 @@ enum OpcodeClient : uint32
|
||||
CMSG_DO_READY_CHECK = 0xBADD,
|
||||
CMSG_DUEL_RESPONSE = 0x01A1,
|
||||
CMSG_EJECT_PASSENGER = 0xBADD,
|
||||
CMSG_EMOTE = 0x0B2B,
|
||||
CMSG_EMOTE = 0x0B2C,
|
||||
CMSG_ENABLE_NAGLE = 0xBADD,
|
||||
CMSG_ENABLE_TAXI_NODE = 0xBADD,
|
||||
CMSG_EQUIPMENT_SET_SAVE = 0x0A7C,
|
||||
@@ -588,7 +588,7 @@ enum OpcodeClient : uint32
|
||||
CMSG_QUEST_QUERY = 0xBADD,
|
||||
CMSG_QUEUED_MESSAGES_END = 0x147B,
|
||||
CMSG_RANDOMIZE_CHAR_NAME = 0x17FA,
|
||||
CMSG_RANDOM_ROLL = 0xBADD,
|
||||
CMSG_RANDOM_ROLL = 0x1BE2,
|
||||
CMSG_READY_CHECK_RESPONSE = 0xBADD,
|
||||
CMSG_READ_ITEM = 0xBADD,
|
||||
CMSG_REAGENT_BANK_BUY_TAB = 0xBADD,
|
||||
@@ -727,7 +727,7 @@ enum OpcodeClient : uint32
|
||||
CMSG_TAXI_NODE_STATUS_QUERY = 0xBADD,
|
||||
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0xBADD,
|
||||
CMSG_TELEPORT_TO_UNIT = 0xBADD,
|
||||
CMSG_TEXT_EMOTE = 0xBADD,
|
||||
CMSG_TEXT_EMOTE = 0x0B2B,
|
||||
CMSG_TIME_ADJUSTMENT_RESPONSE = 0xBADD,
|
||||
CMSG_TIME_SYNC_RESPONSE = 0x0B8C,
|
||||
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0xBADD,
|
||||
@@ -1599,7 +1599,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_RAID_INSTANCE_MESSAGE = 0xBADD,
|
||||
SMSG_RAID_MARKERS_CHANGED = 0xBADD,
|
||||
SMSG_RANDOMIZE_CHAR_NAME = 0x195B,
|
||||
SMSG_RANDOM_ROLL = 0xBADD,
|
||||
SMSG_RANDOM_ROLL = 0x04C1,
|
||||
SMSG_RATED_BG_RATING = 0xBADD,
|
||||
SMSG_RATED_BG_STATS = 0xBADD,
|
||||
SMSG_READY_CHECK_COMPLETED = 0xBADD,
|
||||
@@ -1767,7 +1767,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_TALENTS_INVOLUNTARILY_RESET = 0xBADD,
|
||||
SMSG_TAXINODE_STATUS = 0xBADD,
|
||||
SMSG_TEST_DROP_RATE_RESULT = 0xBADD,
|
||||
SMSG_TEXT_EMOTE = 0xBADD,
|
||||
SMSG_TEXT_EMOTE = 0x158A,
|
||||
SMSG_THREAT_CLEAR = 0xBADD,
|
||||
SMSG_THREAT_REMOVE = 0xBADD,
|
||||
SMSG_THREAT_UPDATE = 0xBADD,
|
||||
|
||||
@@ -278,6 +278,7 @@ namespace WorldPackets
|
||||
class ResurrectResponse;
|
||||
class StandStateChange;
|
||||
class UITimeRequest;
|
||||
class RandomRollClient;
|
||||
}
|
||||
|
||||
namespace Movement
|
||||
@@ -1196,7 +1197,7 @@ class WorldSession
|
||||
void HandleWardenDataOpcode(WorldPacket& recvData);
|
||||
void HandleWorldTeleportOpcode(WorldPacket& recvData);
|
||||
void HandleMinimapPingOpcode(WorldPacket& recvData);
|
||||
void HandleRandomRollOpcode(WorldPacket& recvData);
|
||||
void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet);
|
||||
void HandleFarSightOpcode(WorldPacket& recvData);
|
||||
void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty& setDungeonDifficulty);
|
||||
void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty& setRaidDifficulty);
|
||||
|
||||
Reference in New Issue
Block a user