ACMD(do_ban)
{
char arg1[256], arg2[256];
const char* name;
const char* reason;
if (!ch || ch->GetGMLevel() != GM_IMPLEMENTOR)
{
sys_log(0, "do_ban without rights %s[%d]", ch->GetName(), ch->GetPlayerID());
return;
}
two_arguments(argument, arg1, sizeof (arg1), arg2, sizeof(arg2));
if (!*arg1 || !*arg2)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Correct command form: /ban <player name> <reason>");
return;
}
name = arg1;
reason = arg2;
LPDESC LDESC = DESC_MANAGER::instance().FindByCharacterName(name);
LPCHARACTER LCHARACTER = LDESC ? LDESC->GetCharacter() : NULL;
if (!LCHARACTER)
{
ch->ChatPacket(CHAT_TYPE_INFO, "%s not found.", name);
return;
}
if (LCHARACTER == ch)
{
ch->ChatPacket(CHAT_TYPE_INFO, "You cant ban yourself!");
return;
}
if (LCHARACTER->GetGMLevel() >= GM_LOW_WIZARD)
{
ch->ChatPacket(CHAT_TYPE_INFO, "You cant do that.");
return;
}
LCHARACTER = CHARACTER_MANAGER::instance().FindPC(name);
DBManager::instance().DirectQuery("UPDATE account.account SET status = 'BLOCK' WHERE id = %d", LCHARACTER->GetAID());
DBManager::instance().DirectQuery("UPDATE player.player SET reason = %s WHERE id = %d", reason, LCHARACTER->GetAID());
LDESC->DelayedDisconnect(5);
sys_log(0, "%s[%d] banned %s with reason: %s", ch->GetName(), ch->GetPlayerID(), name, reason);
ch->ChatPacket(CHAT_TYPE_INFO, "%s was banned with reason: %s", name, reason);
}