mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 04:37:00 +00:00
[10972] Implement mass mail gm commands.
* New comamnds mirror related normal sedn commands: - send mass items - send mass mail - send mass money * Instead player name it expect or numeric racemask or textual race/team name or 'all'.
This commit is contained in:
parent
f347f4bc00
commit
da228b707d
10 changed files with 261 additions and 32 deletions
|
|
@ -546,8 +546,18 @@ ChatCommand * ChatHandler::getCommandTable()
|
|||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
|
||||
static ChatCommand sendMassCommandTable[] =
|
||||
{
|
||||
{ "items", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendMassItemsCommand, "", NULL },
|
||||
{ "mail", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendMassMailCommand, "", NULL },
|
||||
{ "money", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendMassMoneyCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
|
||||
static ChatCommand sendCommandTable[] =
|
||||
{
|
||||
{ "mass", SEC_ADMINISTRATOR, true, NULL, "", sendMassCommandTable },
|
||||
|
||||
{ "items", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendItemsCommand, "", NULL },
|
||||
{ "mail", SEC_MODERATOR, true, &ChatHandler::HandleSendMailCommand, "", NULL },
|
||||
{ "message", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendMessageCommand, "", NULL },
|
||||
|
|
@ -3264,6 +3274,63 @@ uint32 ChatHandler::ExtractAccountId(char** args, std::string* accountName /*= N
|
|||
return account_id;
|
||||
}
|
||||
|
||||
struct RaceMaskName
|
||||
{
|
||||
char const* literal;
|
||||
uint32 raceMask;
|
||||
};
|
||||
|
||||
static RaceMaskName const raceMaskNames[] =
|
||||
{
|
||||
// races
|
||||
{ "human", (1<<(RACE_HUMAN-1)) },
|
||||
{ "orc", (1<<(RACE_ORC-1)) },
|
||||
{ "dwarf", (1<<(RACE_DWARF-1)) },
|
||||
{ "nightelf", (1<<(RACE_NIGHTELF-1))},
|
||||
{ "undead", (1<<(RACE_UNDEAD-1)) },
|
||||
{ "tauren", (1<<(RACE_TAUREN-1)) },
|
||||
{ "gnome", (1<<(RACE_GNOME-1)) },
|
||||
{ "troll", (1<<(RACE_TROLL-1)) },
|
||||
{ "bloodelf", (1<<(RACE_BLOODELF-1))},
|
||||
{ "draenei", (1<<(RACE_DRAENEI-1)) },
|
||||
|
||||
// masks
|
||||
{ "alliance", RACEMASK_ALLIANCE },
|
||||
{ "horde", RACEMASK_HORDE },
|
||||
{ "all", RACEMASK_ALL_PLAYABLE },
|
||||
|
||||
// terminator
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
bool ChatHandler::ExtractRaceMask(char** text, uint32& raceMask, char const** maskName /*=NULL*/)
|
||||
{
|
||||
if (ExtractUInt32(text, raceMask))
|
||||
{
|
||||
if (maskName)
|
||||
*maskName = "custom mask";
|
||||
}
|
||||
else
|
||||
{
|
||||
for (RaceMaskName const* itr = raceMaskNames; itr->literal; ++itr)
|
||||
{
|
||||
if (ExtractLiteralArg(text, itr->literal))
|
||||
{
|
||||
raceMask = itr->raceMask;
|
||||
|
||||
if (maskName)
|
||||
*maskName = itr->literal;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!raceMask)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string ChatHandler::GetNameLink(Player* chr) const
|
||||
{
|
||||
return playerLink(chr->GetName());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue