mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-28 16:16:27 +00:00
feat(Core/Opcodes): Implement CMSG_CHANNEL_MODERATE (#4021)
* Core/Opcodes: Implement CMSG_CHANNEL_MODERATE * Cleanup, prettify * fix build * whitespaces
This commit is contained in:
@@ -1258,3 +1258,54 @@ void Channel::RemoveWatching(Player* p)
|
||||
if (itr != playersWatchingStore.end())
|
||||
playersWatchingStore.erase(itr);
|
||||
}
|
||||
|
||||
void Channel::ToggleModeration(Player* player)
|
||||
{
|
||||
uint64 guid = player->GetGUIDLow();
|
||||
|
||||
if (!IsOn(guid))
|
||||
{
|
||||
WorldPacket data;
|
||||
MakeNotMember(&data);
|
||||
SendToOne(&data, guid);
|
||||
return;
|
||||
}
|
||||
|
||||
const uint32 level = sWorld->getIntConfig(CONFIG_GM_LEVEL_CHANNEL_MODERATION);
|
||||
const bool gm = (level && player->GetSession()->GetSecurity() >= level);
|
||||
|
||||
if (!playersStore[guid].IsModerator() && !gm)
|
||||
{
|
||||
WorldPacket data;
|
||||
MakeNotModerator(&data);
|
||||
SendToOne(&data, guid);
|
||||
return;
|
||||
}
|
||||
|
||||
// toggle channel moderation
|
||||
_moderation = !_moderation;
|
||||
|
||||
WorldPacket data;
|
||||
if (_moderation)
|
||||
{
|
||||
MakeModerationOn(&data, guid);
|
||||
}
|
||||
else
|
||||
{
|
||||
MakeModerationOff(&data, guid);
|
||||
}
|
||||
|
||||
SendToAll(&data);
|
||||
}
|
||||
|
||||
void Channel::MakeModerationOn(WorldPacket* data, uint64 guid)
|
||||
{
|
||||
MakeNotifyPacket(data, CHAT_MODERATION_ON_NOTICE);
|
||||
*data << uint64(guid);
|
||||
}
|
||||
|
||||
void Channel::MakeModerationOff(WorldPacket* data, uint64 guid)
|
||||
{
|
||||
MakeNotifyPacket(data, CHAT_MODERATION_OFF_NOTICE);
|
||||
*data << uint64(guid);
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@ enum ChatNotify
|
||||
CHAT_MODE_CHANGE_NOTICE = 0x0C, //?
|
||||
CHAT_ANNOUNCEMENTS_ON_NOTICE = 0x0D, //+ "[%s] Channel announcements enabled by %s.";
|
||||
CHAT_ANNOUNCEMENTS_OFF_NOTICE = 0x0E, //+ "[%s] Channel announcements disabled by %s.";
|
||||
// CHAT_MODERATION_ON_NOTICE = 0x0F, //+ "[%s] Channel moderation enabled by %s.";
|
||||
// CHAT_MODERATION_OFF_NOTICE = 0x10, //+ "[%s] Channel moderation disabled by %s.";
|
||||
CHAT_MODERATION_ON_NOTICE = 0x0F, //+ "[%s] Channel moderation enabled by %s.";
|
||||
CHAT_MODERATION_OFF_NOTICE = 0x10, //+ "[%s] Channel moderation disabled by %s.";
|
||||
CHAT_MUTED_NOTICE = 0x11, //+ "[%s] You do not have permission to speak.";
|
||||
CHAT_PLAYER_KICKED_NOTICE = 0x12, //? "[%s] Player %s kicked by %s.";
|
||||
CHAT_BANNED_NOTICE = 0x13, //+ "[%s] You are bannedStore from that channel.";
|
||||
@@ -219,6 +219,7 @@ public:
|
||||
void LeaveNotify(Player* p);
|
||||
void FlagsNotify(Player* p);
|
||||
static void CleanOldChannelsInDB();
|
||||
void ToggleModeration(Player* p);
|
||||
|
||||
// pussywizard:
|
||||
void AddWatching(Player* p);
|
||||
@@ -262,6 +263,8 @@ private:
|
||||
void MakeNotInLfg(WorldPacket* data); //? 0x21
|
||||
void MakeVoiceOn(WorldPacket* data, uint64 guid); //+ 0x22
|
||||
void MakeVoiceOff(WorldPacket* data, uint64 guid); //+ 0x23
|
||||
void MakeModerationOn(WorldPacket* data, uint64 guid);
|
||||
void MakeModerationOff(WorldPacket* data, uint64 guid);
|
||||
|
||||
void SendToAll(WorldPacket* data, uint64 guid = 0);
|
||||
void SendToAllButOne(WorldPacket* data, uint64 who);
|
||||
@@ -317,6 +320,7 @@ private:
|
||||
typedef std::unordered_set<Player*> PlayersWatchingContainer;
|
||||
|
||||
bool _announce;
|
||||
bool _moderation;
|
||||
bool _ownership;
|
||||
bool _IsSaved;
|
||||
bool _isOwnerGM;
|
||||
|
||||
Reference in New Issue
Block a user