diff options
-rwxr-xr-x | src/server/game/Chat/Commands/Level2.cpp | 93 |
1 files changed, 17 insertions, 76 deletions
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 45e83c370c5..f1bc40d77bf 100755 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -206,87 +206,28 @@ bool ChatHandler::HandleDeMorphCommand(const char* /*args*/) bool ChatHandler::HandleKickPlayerCommand(const char *args) { const char* kickName = strtok((char*)args, " "); - char* kickReason = strtok(NULL, "\n"); - std::string reason = "No reason given"; - std::string kicker = "CONSOLE"; - if (kickReason) - reason = kickReason; - if (m_session) - kicker = m_session->GetPlayer()->GetName(); - - if (!kickName) - { - Player* target; - if (!extractPlayerTarget((char*)args,&target)) - return false; - - if (!target) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - if (m_session && target == m_session->GetPlayer()) - { - SendSysMessage(LANG_COMMAND_KICKSELF); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(target, 0)) - return false; - - if (sWorld.getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD)) - sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, target->GetName(), kicker.c_str(), reason.c_str()); - else - PSendSysMessage(LANG_COMMAND_KICKMESSAGE, target->GetName(), kicker.c_str(), reason.c_str()); + Player* target = NULL; + std::string playerName; + if (!extractPlayerTarget((char*)args, &target, NULL, &playerName)) + return false; - target->GetSession()->KickPlayer(); - } - else + if (m_session && target == m_session->GetPlayer()) { - std::string name = extractPlayerNameFromLink((char*)kickName); - if (name.empty()) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - if (m_session && name == m_session->GetPlayer()->GetName()) - { - SendSysMessage(LANG_COMMAND_KICKSELF); - SetSentErrorMessage(true); - return false; - } - - Player* player = sObjectMgr.GetPlayer(kickName); - if (!player) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - if (HasLowerSecurity(player, 0)) - { - SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on - SetSentErrorMessage(true); - return false; - } - - std::string nameLink = playerLink(name); + SendSysMessage(LANG_COMMAND_KICKSELF); + SetSentErrorMessage(true); + return false; + } - if (sWorld.getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD)) - sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, nameLink.c_str(), kicker.c_str(), reason.c_str()); - else - PSendSysMessage(LANG_COMMAND_KICKMESSAGE,nameLink.c_str()); + // check online security + if (HasLowerSecurity(target, 0)) + return false; - player->GetSession()->KickPlayer(); - } + if (sWorld.getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD)) + sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, playerName.c_str()); + else + PSendSysMessage(LANG_COMMAND_KICKMESSAGE, playerName.c_str()); + target->GetSession()->KickPlayer(); return true; } |