Here's my permaban command:
Code:
bool ChatHandler::HandleBanCharacterCommand(const char* args, WorldSession *m_session)
{
if(!*args)
return false;
char * pCharacter = (char*)args;
char * pBanReason = strchr(pCharacter, ' ');
Player * pPlayer = objmgr.GetPlayer(pCharacter, false);
if(pPlayer == NULL)
{
string sCharacter = string(pCharacter);
pInfo = objmgr.GetPlayerInfoByName(sCharacter);
if(pInfo == NULL)
{
SystemMessage(m_session, "Player not found.");
return true;
}
SystemMessage(m_session, "Banning player '%s' in database for '%s'.", pCharacter, pReason);
string escaped_reason = CharacterDatabase.EscapeString(string(pReason));
CharacterDatabase.Execute("UPDATE characters SET banned = 1, banReason = '%s' WHERE guid = %u", escaped_reason.c_str(), pInfo->guid);
}
else
{
SystemMessage(m_session, "Banning player '%s' ingame for '%s'.", pCharacter, pReason);
string sReason = string(pReason);
uint32 uBanTime = 1;
pPlayer->SetBanned(uBanTime, sReason);
pInfo = pPlayer->m_playerInfo;
}
if(pPlayer)
{
SystemMessage(m_session, "Kicking %s.", pPlayer->GetName());
pPlayer->Kick();
}
sGMLog.writefromsession(m_session, "used ban character on %s reason %s", pCharacter, pReason);
return true;
}