Skip to content

Instantly share code, notes, and snippets.

@irancore
Created June 10, 2019 10:11
Show Gist options
  • Save irancore/881c5e782b1a78e63c9e6c42c1ed2e97 to your computer and use it in GitHub Desktop.
Save irancore/881c5e782b1a78e63c9e6c42c1ed2e97 to your computer and use it in GitHub Desktop.
chat cmd with mute spammers
#include "ScriptPCH.h"
#include "Chat.h"
#include "InstanceSaveMgr.h"
class world_chat : public CommandScript
{
public:
world_chat() : CommandScript("world_chat"){}
ChatCommand * GetCommands() const
{
static ChatCommand WorldCommandTable[] =
{
{"chat", rbac::RBAC_PERM_COMMAND_WORLD_CHAT, false, &HandleWorldChatCommand, "", NULL},
{NULL, 0, false, NULL, "", NULL}
};
return WorldCommandTable;
}
static bool HandleWorldChatCommand(ChatHandler * handler, const char * args)
{
if (!handler->GetSession()->GetPlayer()->CanSpeak())
return false;
std::string temp = args;
if (!args || temp.find_first_not_of(' ') == std::string::npos)
return false;
std::string msg = "";
Player * player = handler->GetSession()->GetPlayer();
switch(player->GetSession()->GetSecurity())
{
case SEC_PLAYER: // PLAYER
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
break;
case SEC_MODERATOR: // MODERATOR
if(player->HasFlag(PLAYER_FIELD_PLAYER_FLAGS, PLAYER_FLAGS_GM))
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
else
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
break;
case SEC_GAMEMASTER: // GAMEMASTER
if(player->HasFlag(PLAYER_FIELD_PLAYER_FLAGS, PLAYER_FLAGS_GM))
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
else
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
break;
case SEC_ADMINISTRATOR: // ADMINISTARDOR
if(player->HasFlag(PLAYER_FIELD_PLAYER_FLAGS, PLAYER_FLAGS_GM))
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
else
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
break;
case SEC_CONSOLE: // Console
if(player->HasFlag(PLAYER_FIELD_PLAYER_FLAGS, PLAYER_FLAGS_GM))
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|TInterface\\ChatFrame\\UI-ChatIcon-Blizz.blp:0:2:0:-3|t|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
else
{
if (player->GetTeam() == ALLIANCE)
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cff14c7c2:";
}
else
{
msg += "|cff57c606[World]|r|cffe8e4e0|r";
msg += handler->GetNameLink(player);
msg += "|cffe8e4e0|r|cffea66a6:";
}
}
break;
}
msg += args;
sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0);
PreparedStatement * mt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
int64 muteTime = time(NULL) + 3;
player->GetSession()->m_muteTime = muteTime;
mt->setInt64(0, muteTime);
return true;
}
};
void AddSC_world_chat()
{
new world_chat();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment