mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/PacketIO: Updated CMSG_COMPLAINT
This commit is contained in:
@@ -724,46 +724,6 @@ void WorldSession::HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest& packet)
|
||||
SendPacket(response.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleComplainOpcode(WorldPacket& recvData)
|
||||
{
|
||||
uint8 spam_type; // 0 - mail, 1 - chat
|
||||
ObjectGuid spammer_guid;
|
||||
uint32 unk1 = 0;
|
||||
uint32 unk2 = 0;
|
||||
uint32 unk3 = 0;
|
||||
uint32 unk4 = 0;
|
||||
std::string description = "";
|
||||
recvData >> spam_type; // unk 0x01 const, may be spam type (mail/chat)
|
||||
recvData >> spammer_guid; // player guid
|
||||
switch (spam_type)
|
||||
{
|
||||
case 0:
|
||||
recvData >> unk1; // const 0
|
||||
recvData >> unk2; // probably mail id
|
||||
recvData >> unk3; // const 0
|
||||
break;
|
||||
case 1:
|
||||
recvData >> unk1; // probably language
|
||||
recvData >> unk2; // message type?
|
||||
recvData >> unk3; // probably channel id
|
||||
recvData >> unk4; // time
|
||||
recvData >> description; // spam description string (messagetype, channel name, player name, message)
|
||||
break;
|
||||
}
|
||||
|
||||
// NOTE: all chat messages from this spammer automatically ignored by spam reporter until logout in case chat spam.
|
||||
// if it's mail spam - ALL mails from this spammer automatically removed by client
|
||||
|
||||
// Complaint Received message
|
||||
WorldPacket data(SMSG_COMPLAINT_RESULT, 2);
|
||||
data << uint8(0); // value 1 resets CGChat::m_complaintsSystemStatus in client. (unused?)
|
||||
data << uint8(0); // value 0xC generates a "CalendarError" in client.
|
||||
SendPacket(&data);
|
||||
|
||||
TC_LOG_DEBUG("network", "REPORT SPAM: type %u, %s, unk1 %u, unk2 %u, unk3 %u, unk4 %u, message %s",
|
||||
spam_type, spammer_guid.ToString().c_str(), unk1, unk2, unk3, unk4, description.c_str());
|
||||
}
|
||||
|
||||
void WorldSession::HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet)
|
||||
{
|
||||
if (packet.Enable)
|
||||
|
||||
@@ -95,3 +95,13 @@ void WorldSession::HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugRep
|
||||
stmt->setString(1, bugReport.DiagInfo);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
void WorldSession::HandleComplaint(WorldPackets::Ticket::Complaint& packet)
|
||||
{ // NOTE: all chat messages from this spammer are automatically ignored by the spam reporter until logout in case of chat spam.
|
||||
// if it's mail spam - ALL mails from this spammer are automatically removed by client
|
||||
|
||||
WorldPackets::Ticket::ComplaintResult result;
|
||||
result.ComplaintType = packet.ComplaintType;
|
||||
result.Result = 0;
|
||||
SendPacket(result.Write());
|
||||
}
|
||||
|
||||
@@ -849,8 +849,8 @@ namespace WorldPackets
|
||||
ObjectGuid Guid;
|
||||
uint16 MoveMsgID = 0;
|
||||
int32 SpellID = 0;
|
||||
float Pitch = 0.0;
|
||||
float Speed = 0.0;
|
||||
float Pitch = 0.0f;
|
||||
float Speed = 0.0f;
|
||||
G3D::Vector3 FirePos;
|
||||
G3D::Vector3 ImpactPos;
|
||||
Optional<MovementInfo> Status;
|
||||
|
||||
@@ -223,6 +223,45 @@ void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read()
|
||||
_worldPacket >> LFGListApplicant;
|
||||
}
|
||||
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Ticket::Complaint::ComplaintOffender& complaintOffender)
|
||||
{
|
||||
data >> complaintOffender.PlayerGuid;
|
||||
data >> complaintOffender.RealmAddress;
|
||||
data >> complaintOffender.TimeSinceOffence;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Ticket::Complaint::ComplaintChat& chat)
|
||||
{
|
||||
data >> chat.Command;
|
||||
data >> chat.ChannelID;
|
||||
chat.MessageLog = data.ReadString(data.ReadBits(12));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void WorldPackets::Ticket::Complaint::Read()
|
||||
{
|
||||
_worldPacket >> ComplaintType;
|
||||
_worldPacket >> Offender;
|
||||
|
||||
switch (ComplaintType)
|
||||
{
|
||||
case 0:
|
||||
_worldPacket >> MailID;
|
||||
break;
|
||||
case 1:
|
||||
_worldPacket >> Chat;
|
||||
break;
|
||||
case 2:
|
||||
_worldPacket >> EventGuid;
|
||||
_worldPacket >> InviteGuid;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Ticket::ComplaintResult::Write()
|
||||
{
|
||||
_worldPacket << uint32(ComplaintType);
|
||||
|
||||
@@ -193,6 +193,36 @@ namespace WorldPackets
|
||||
|
||||
};
|
||||
|
||||
class Complaint final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
struct ComplaintOffender
|
||||
{
|
||||
ObjectGuid PlayerGuid;
|
||||
uint32 RealmAddress = 0;
|
||||
uint32 TimeSinceOffence = 0;
|
||||
};
|
||||
|
||||
struct ComplaintChat
|
||||
{
|
||||
uint32 Command = 0;
|
||||
uint32 ChannelID = 0;
|
||||
std::string MessageLog;
|
||||
};
|
||||
|
||||
Complaint(WorldPacket&& packet) : ClientPacket(CMSG_COMPLAINT, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
uint8 ComplaintType = 0;
|
||||
ComplaintOffender Offender;
|
||||
uint32 MailID = 0;
|
||||
ComplaintChat Chat;
|
||||
ObjectGuid EventGuid;
|
||||
ObjectGuid InviteGuid;
|
||||
|
||||
};
|
||||
|
||||
class ComplaintResult final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -291,7 +291,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_COMMENTATOR_GET_MAP_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_COMMENTATOR_GET_PLAYER_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_COMMENTATOR_START_WARGAME, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_COMPLAINT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleComplainOpcode );
|
||||
DEFINE_HANDLER(CMSG_COMPLAINT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::Complaint, &WorldSession::HandleComplaint);
|
||||
DEFINE_HANDLER(CMSG_COMPLETE_CINEMATIC, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::CompleteCinematic, &WorldSession::HandleCompleteCinematic);
|
||||
DEFINE_HANDLER(CMSG_COMPLETE_MOVIE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_CONFIRM_RESPEC_WIPE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::ConfirmRespecWipe, &WorldSession::HandleConfirmRespecWipeOpcode);
|
||||
@@ -990,7 +990,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_MAP_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_STATE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLAINT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLAINT_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLETE_SHIPMENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPRESSED_PACKET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONNECT_TO, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -623,6 +623,7 @@ namespace WorldPackets
|
||||
class SupportTicketSubmitSuggestion;
|
||||
class SupportTicketSubmitComplaint;
|
||||
class BugReport;
|
||||
class Complaint;
|
||||
}
|
||||
|
||||
namespace Token
|
||||
@@ -1157,6 +1158,7 @@ class WorldSession
|
||||
void HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::SupportTicketSubmitSuggestion& packet);
|
||||
void HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet);
|
||||
void HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugReport);
|
||||
void HandleComplaint(WorldPackets::Ticket::Complaint& packet);
|
||||
|
||||
void HandleTogglePvP(WorldPackets::Misc::TogglePvP& packet);
|
||||
void HandleSetPvP(WorldPackets::Misc::SetPvP& packet);
|
||||
@@ -1549,7 +1551,6 @@ class WorldSession
|
||||
void SendLfgTeleportError(uint8 err);
|
||||
|
||||
void HandleSelfResOpcode(WorldPackets::Spells::SelfRes& packet);
|
||||
void HandleComplainOpcode(WorldPacket& recvData);
|
||||
void HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& packet);
|
||||
|
||||
// Socket gem
|
||||
|
||||
Reference in New Issue
Block a user