diff options
author | Blaymoira <none@none> | 2008-12-28 22:58:52 +0100 |
---|---|---|
committer | Blaymoira <none@none> | 2008-12-28 22:58:52 +0100 |
commit | ac00498f884b596d0ba8940a61ace9b9bacc39a5 (patch) | |
tree | 65b039cdffa95a030b278fd7e9048f412c9ce432 /src | |
parent | 057d490710ffe389e20e0c63e58590a7fd41e9aa (diff) |
*Kick command CLI support - by Machiavelli
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Level2.cpp | 132 |
1 files changed, 78 insertions, 54 deletions
diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index 821ea1696d9..932ea2352ce 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -1679,71 +1679,95 @@ bool ChatHandler::HandleNpcFactionIdCommand(const char* args) //kick player bool ChatHandler::HandleKickPlayerCommand(const char *args) { - if(!*args) - return false; - const char* kickName = strtok((char*)args, " "); - if(!kickName) - { - - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - std::string name = kickName; + char* kickReason = strtok(NULL, "\n"); + std::string reason = "No Reason"; + std::string kicker = "Console"; + if(kickReason) + reason = kickReason; + if(m_session) + kicker = m_session->GetPlayer()->GetName(); - if(!normalizePlayerName(name)) + if(!kickName) { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } + Player* player = getSelectedPlayer(); + if(!player) + { + SendSysMessage(LANG_NO_CHAR_SELECTED); + SetSentErrorMessage(true); + return false; + } - if(m_session && name==m_session->GetPlayer()->GetName()) - { - SendSysMessage(LANG_COMMAND_KICKSELF); - SetSentErrorMessage(true); - return false; - } + if(player==m_session->GetPlayer()) + { + SendSysMessage(LANG_COMMAND_KICKSELF); + SetSentErrorMessage(true); + return false; + } + + if(sWorld.getConfig(CONFIG_SHOW_KICK_IN_WORLD) == 1) + { - Player* player = objmgr.GetPlayer(kickName); - if(!player) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - if(player->GetSession()->GetSecurity() > m_session->GetSecurity()) + sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, player->GetName(), kicker.c_str(), reason.c_str()); + } + else + { + + PSendSysMessage(LANG_COMMAND_KICKMESSAGE, player->GetName(), kicker.c_str(), reason.c_str()); + } + + player->GetSession()->KickPlayer(); + } + else { - SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on - SetSentErrorMessage(true); - return false; - } - - char* kickReason = strtok(NULL, "\n"); - std::string reason = "No Reason"; - if(kickReason) - {reason = kickReason;} + std::string name = kickName; + if(!normalizePlayerName(name)) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } - if(sWorld.KickPlayer(name.c_str())) - { - if(sWorld.getConfig(CONFIG_SHOW_KICK_IN_WORLD) == 1) + if(m_session && name==m_session->GetPlayer()->GetName()) { - sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, name.c_str(), m_session->GetPlayer()->GetName(), reason.c_str()); + SendSysMessage(LANG_COMMAND_KICKSELF); + SetSentErrorMessage(true); + return false; } - else + + Player* player = objmgr.GetPlayer(kickName); + if(!player) { - PSendSysMessage(LANG_COMMAND_KICKMESSAGE, name.c_str(), m_session->GetPlayer()->GetName(), reason.c_str()); + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; } - } - else - { - PSendSysMessage(LANG_COMMAND_KICKNOTFOUNDPLAYER, name.c_str()); - return false; - } - + + if(m_session && player->GetSession()->GetSecurity() > m_session->GetSecurity()) + { + SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on + SetSentErrorMessage(true); + return false; + } + + if(sWorld.KickPlayer(name.c_str())) + { + if(sWorld.getConfig(CONFIG_SHOW_KICK_IN_WORLD) == 1) + { + + sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, name.c_str(), kicker.c_str(), reason.c_str()); + } + else + { + PSendSysMessage(LANG_COMMAND_KICKMESSAGE, name.c_str(), kicker.c_str(), reason.c_str()); + } + } + else + { + PSendSysMessage(LANG_COMMAND_KICKNOTFOUNDPLAYER, name.c_str()); + return false; + } + } return true; } |