diff options
Diffstat (limited to '')
-rw-r--r-- | MCServer/Plugins/Core/kick.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/MCServer/Plugins/Core/kick.lua b/MCServer/Plugins/Core/kick.lua new file mode 100644 index 000000000..be6215df4 --- /dev/null +++ b/MCServer/Plugins/Core/kick.lua @@ -0,0 +1,42 @@ +function HandleKickCommand( Split, Player ) + if( #Split < 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /kick [Player] <Reason>" ) + return true + end + + local Reason = "You have been kicked" + if( #Split > 2 ) then + Reason = table.concat(Split, " ", 3) + end + + if( KickPlayer( Split[2], Reason ) == false ) then + Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) + end + + return true +end + +--- Kicks a player by name, with the specified reason; returns bool whether found and player's real name +function KickPlayer(PlayerName, Reason) + local RealName = ""; + if (Reason == nil) then + Reason = "You have been kicked"; + end + + local FoundPlayerCallback = function(a_Player) + RealName = a_Player:GetName() + + local Server = cRoot:Get():GetServer() + LOGINFO( "'" .. RealName .. "' is being kicked for ( "..Reason..") " ) + Server:SendMessage("Kicking " .. RealName) + + a_Player:GetClientHandle():Kick(Reason); + end + + if (not(cRoot:Get():FindAndDoWithPlayer( PlayerName, FoundPlayerCallback))) then + -- Could not find player + return false; + end + + return true, RealName; -- Player has been kicked +end
\ No newline at end of file |