diff options
author | Blaymoira <none@none> | 2008-12-27 00:24:48 +0100 |
---|---|---|
committer | Blaymoira <none@none> | 2008-12-27 00:24:48 +0100 |
commit | 4d86f8e6796548f1b76cc19c7f9e5f5c58c7e0fa (patch) | |
tree | d7d8148c1b790f28d76b3fc8987f99c5767e6e09 /src/game/Level2.cpp | |
parent | 9bd4507f920a1d6c4790107a34dcd8b983a934c0 (diff) |
*Improvements to .kick command with new conf setting - by Machiavelli
--HG--
branch : trunk
Diffstat (limited to 'src/game/Level2.cpp')
-rw-r--r-- | src/game/Level2.cpp | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index 2b75b9324c1..ac82b8177c6 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -1680,6 +1680,8 @@ bool ChatHandler::HandleNpcFactionIdCommand(const char* args) bool ChatHandler::HandleKickPlayerCommand(const char *args) { char* kickName = strtok((char*)args, " "); + char* kickReason = strtok(NULL, "\n"); + if (!kickName) { Player* player = getSelectedPlayer(); @@ -1697,12 +1699,23 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) SetSentErrorMessage(true); return false; } + + if(player->GetSession()->GetSecurity() > m_session->GetSecurity()) + { + SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on + SetSentErrorMessage(true); + return false; + } player->GetSession()->KickPlayer(); } else { std::string name = kickName; + std::string reason = "No Reason"; + if(kickReason) + reason = kickReason; + if(!normalizePlayerName(name)) { SendSysMessage(LANG_PLAYER_NOT_FOUND); @@ -1716,13 +1729,27 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) SetSentErrorMessage(true); return false; } - + + if(objmgr.GetPlayer(kickName)->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)) { - PSendSysMessage(LANG_COMMAND_KICKMESSAGE,name.c_str()); + if(sWorld.getConfig(CONFIG_SHOW_KICK_IN_WORLD) == 1) + { + sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, name.c_str(), m_session->GetPlayer()->GetName(), reason.c_str()); + } + else + { + PSendSysMessage(LANG_COMMAND_KICKMESSAGE, name.c_str(), m_session->GetPlayer()->GetName(), reason.c_str()); + } } else - PSendSysMessage(LANG_COMMAND_KICKNOTFOUNDPLAYER,name.c_str()); + PSendSysMessage(LANG_COMMAND_KICKNOTFOUNDPLAYER, name.c_str()); } return true; |