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 | |
parent | 9bd4507f920a1d6c4790107a34dcd8b983a934c0 (diff) |
*Improvements to .kick command with new conf setting - by Machiavelli
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Level2.cpp | 33 | ||||
-rw-r--r-- | src/game/World.cpp | 1 | ||||
-rw-r--r-- | src/game/World.h | 1 | ||||
-rw-r--r-- | src/trinitycore/trinitycore.conf.dist | 8 |
4 files changed, 39 insertions, 4 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; diff --git a/src/game/World.cpp b/src/game/World.cpp index 5b36e3d4d9c..7769c9a7942 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -988,6 +988,7 @@ void World::LoadConfigSettings(bool reload) if(m_configs[CONFIG_PVP_TOKEN_COUNT] < 1) m_configs[CONFIG_PVP_TOKEN_COUNT] = 1; m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false); + m_configs[CONFIG_SHOW_KICK_IN_WORLD] = sConfig.GetBoolDefault("ShowKickInWorld", false); std::string forbiddenmaps = sConfig.GetStringDefault("ForbiddenMaps", ""); char * forbiddenMaps = new char[forbiddenmaps.length() + 1]; diff --git a/src/game/World.h b/src/game/World.h index edf5e22850b..4dab7b97b88 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -196,6 +196,7 @@ enum WorldConfigs CONFIG_PVP_TOKEN_ID, CONFIG_PVP_TOKEN_COUNT, CONFIG_NO_RESET_TALENT_COST, + CONFIG_SHOW_KICK_IN_WORLD, CONFIG_VALUE_COUNT }; diff --git a/src/trinitycore/trinitycore.conf.dist b/src/trinitycore/trinitycore.conf.dist index ba5f2de372f..f4ea9c3a4cd 100644 --- a/src/trinitycore/trinitycore.conf.dist +++ b/src/trinitycore/trinitycore.conf.dist @@ -1251,6 +1251,12 @@ Ra.Secure = 1 # example: "538,90" # Note that it's HIGHLY DISCOURAGED to forbid starting maps (0, 1, 530)! # +# ShowKickInWorld +# determines wether a message is broadcasted to the entire server when a player gets kicked +# Default: 0 +# 1 = Enable +# 0 = Disable +# ################################################################################################################### PlayerStart.AllReputation = 0 @@ -1264,4 +1270,4 @@ PvPToken.MapAllowType = 4 PvPToken.ItemID = 29434 PvPToken.ItemCount = 1 NoResetTalentsCost = 0 - +ShowKickInWorld = 0
\ No newline at end of file |