From 0433de9955d500c6ab8b6819e4f64c06a7317f98 Mon Sep 17 00:00:00 2001 From: faketruth Date: Thu, 11 Oct 2012 14:30:28 +0000 Subject: Core: made ban and kick functions accessible to other plugins Core: fixed banning and whitelisting in OnLogin git-svn-id: http://mc-server.googlecode.com/svn/trunk@947 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- MCServer/Plugins/Core/ban.lua | 38 ++++++++++++++++++++++++-------------- MCServer/Plugins/Core/kick.lua | 37 +++++++++++++++++++++++++------------ MCServer/Plugins/Core/onlogin.lua | 16 ++++++++-------- 3 files changed, 57 insertions(+), 34 deletions(-) diff --git a/MCServer/Plugins/Core/ban.lua b/MCServer/Plugins/Core/ban.lua index a6a662c3c..a4a4822bd 100644 --- a/MCServer/Plugins/Core/ban.lua +++ b/MCServer/Plugins/Core/ban.lua @@ -4,27 +4,37 @@ function HandleBanCommand( Split, Player ) return true end - local World = Player:GetWorld() - local OtherPlayer = World:GetPlayer( Split[2] ) - if( OtherPlayer == nil ) then - Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) - return true - end - local Reason = "You have been banned" if( #Split > 2 ) then Reason = table.concat(Split, " ", 3) end + + + if( BanPlayer(Split[2], Reason) == false ) then + Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) + return true + end - local Server = cRoot:Get():GetServer() - LOGINFO( Player:GetName() .. " is banning " .. OtherPlayer:GetName() .. " ( "..Reason..") " ) - Server:SendMessage( "Banning " .. OtherPlayer:GetName() ) + return true +end - local ClientHandle = OtherPlayer:GetClientHandle() - ClientHandle:Kick( Reason ) +function BanPlayer( PlayerName, Reason ) + if( Reason == nil ) then + Reason = "You have been banned" + end + + local Success, RealName = KickPlayer( PlayerName, Reason ) + if( Success == false ) then + return false + end + + LOGINFO( "'" .. RealName .. "' is being banned for ( "..Reason..") " ) - BannedPlayersIni:SetValueB("Banned", OtherPlayer:GetName(), true) + local Server = cRoot:Get():GetServer() + Server:SendMessage( "Banning " .. RealName ) + + BannedPlayersIni:SetValueB("Banned", RealName, true) BannedPlayersIni:WriteFile() - + return true end \ No newline at end of file diff --git a/MCServer/Plugins/Core/kick.lua b/MCServer/Plugins/Core/kick.lua index ce8bd7a31..5004c8c2f 100644 --- a/MCServer/Plugins/Core/kick.lua +++ b/MCServer/Plugins/Core/kick.lua @@ -4,26 +4,39 @@ function HandleKickCommand( Split, Player ) 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 + + +function KickPlayer( PlayerName, Reason ) + local RealName = "" local FoundPlayerCallback = function( OtherPlayer ) - local Reason = "You have been kicked" - if( #Split > 2 ) then - Reason = table.concat(Split, " ", 3) + if( Reason == nil ) then + Reason = "You have been kicked" end + + RealName = OtherPlayer:GetName() local Server = cRoot:Get():GetServer() - LOGINFO( Player:GetName() .. " is kicking " .. OtherPlayer:GetName() .. " ( "..Reason..") " ) - Server:SendMessage( "Kicking " .. OtherPlayer:GetName() ) + LOGINFO( "'" .. RealName .. "' is being kicked for ( "..Reason..") " ) + Server:SendMessage( "Kicking " .. RealName ) local ClientHandle = OtherPlayer:GetClientHandle() ClientHandle:Kick( Reason ) end - if( cRoot:Get():FindAndDoWithPlayer( Split[2], FoundPlayerCallback ) == false ) then - Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) - return true + if( cRoot:Get():FindAndDoWithPlayer( PlayerName, FoundPlayerCallback ) == false ) then + return false -- could not find player end - - - - return true + + return true, RealName -- player should be kicked now end \ No newline at end of file diff --git a/MCServer/Plugins/Core/onlogin.lua b/MCServer/Plugins/Core/onlogin.lua index a706f8024..07b8460ee 100644 --- a/MCServer/Plugins/Core/onlogin.lua +++ b/MCServer/Plugins/Core/onlogin.lua @@ -1,16 +1,16 @@ -function OnLogin( PacketData ) - if( PacketData.m_Username ~= "" ) then - if( BannedPlayersIni:GetValueB("Banned", PacketData.m_Username, false) == true ) then +function OnLogin(Client, ProtocolVersion, Username) + if( Username ~= "" ) then + if( BannedPlayersIni:GetValueB("Banned", Username, false) == true ) then local Server = cRoot:Get():GetServer() - Server:SendMessage( PacketData.m_Username .. " tried to join, but is banned!" ) - LOGINFO( PacketData.m_Username .. " tried to join, but is banned!") + Server:SendMessage( Username .. " tried to join, but is banned!" ) + LOGINFO( Username .. " tried to join, but is banned!") return true -- Player is banned, return true to deny access end if( WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false ) == true ) then - if( WhiteListIni:GetValueB("WhiteList", PacketData.m_Username, false ) == false ) then -- not on whitelist + if( WhiteListIni:GetValueB("WhiteList", Username, false ) == false ) then -- not on whitelist local Server = cRoot:Get():GetServer() - Server:SendMessage( PacketData.m_Username .. " tried to join, but is not on the whitelist." ) - LOGINFO( PacketData.m_Username .. " tried to join, but is not on the whitelist." ) + Server:SendMessage( Username .. " tried to join, but is not on the whitelist." ) + LOGINFO( Username .. " tried to join, but is not on the whitelist." ) return true -- Deny access to the server end end -- cgit v1.2.3