aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBlaymoira <none@none>2008-12-27 00:24:48 +0100
committerBlaymoira <none@none>2008-12-27 00:24:48 +0100
commit4d86f8e6796548f1b76cc19c7f9e5f5c58c7e0fa (patch)
treed7d8148c1b790f28d76b3fc8987f99c5767e6e09 /src
parent9bd4507f920a1d6c4790107a34dcd8b983a934c0 (diff)
*Improvements to .kick command with new conf setting - by Machiavelli
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Level2.cpp33
-rw-r--r--src/game/World.cpp1
-rw-r--r--src/game/World.h1
-rw-r--r--src/trinitycore/trinitycore.conf.dist8
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