From 49a4613d94d8e500e5bd3c259693fb5ccec4612e Mon Sep 17 00:00:00 2001 From: faketruth Date: Wed, 22 Aug 2012 23:05:12 +0000 Subject: Added a RateCompareString function to StringUtils Created a preprocessor template (define) for DoWith* functions Exported cWorld::FindAndDoWithPlayer(), cRoot::FindAndDoWithPlayer() and cRoot::ForEachPlayer() to Lua Added a function FindAndDoWithPlayer to cRoot and cWorld. It takes a part of a player name and finds a single player based on that. Fixed Core's MOTD to contain the correct URL to the MCServer site Fixed Core /kick command Fixed Core's WebAdmin kick git-svn-id: http://mc-server.googlecode.com/svn/trunk@779 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- MCServer/Plugins/Core/kick.lua | 28 +++++++++++++++------------- MCServer/Plugins/Core/main.lua | 2 +- MCServer/Plugins/Core/motd.lua | 2 +- MCServer/Plugins/Core/web_playerlist.lua | 14 ++++++++------ 4 files changed, 25 insertions(+), 21 deletions(-) (limited to 'MCServer/Plugins/Core') diff --git a/MCServer/Plugins/Core/kick.lua b/MCServer/Plugins/Core/kick.lua index ff4f8a705..ce8bd7a31 100644 --- a/MCServer/Plugins/Core/kick.lua +++ b/MCServer/Plugins/Core/kick.lua @@ -3,25 +3,27 @@ function HandleKickCommand( Split, Player ) Player:SendMessage( cChatColor.Green .. "Usage: /kick [Player] " ) return true end + + local FoundPlayerCallback = function( OtherPlayer ) + local Reason = "You have been kicked" + if( #Split > 2 ) then + Reason = table.concat(Split, " ", 3) + 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 + local Server = cRoot:Get():GetServer() + LOGINFO( Player:GetName() .. " is kicking " .. OtherPlayer:GetName() .. " ( "..Reason..") " ) + Server:SendMessage( "Kicking " .. OtherPlayer:GetName() ) + + local ClientHandle = OtherPlayer:GetClientHandle() + ClientHandle:Kick( Reason ) end - local Reason = "You have been kicked" - if( #Split > 2 ) then - Reason = table.concat(Split, " ", 3) + if( cRoot:Get():FindAndDoWithPlayer( Split[2], FoundPlayerCallback ) == false ) then + Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) + return true end - local Server = cRoot:Get():GetServer() - LOGINFO( Player:GetName() .. " is kicking " .. OtherPlayer:GetName() .. " ( "..Reason..") " ) - Server:SendMessage( "Kicking " .. OtherPlayer:GetName() ) - local ClientHandle = OtherPlayer:GetClientHandle() - ClientHandle:Kick( Reason ) return true end \ No newline at end of file diff --git a/MCServer/Plugins/Core/main.lua b/MCServer/Plugins/Core/main.lua index c813f19f7..6b4af5533 100644 --- a/MCServer/Plugins/Core/main.lua +++ b/MCServer/Plugins/Core/main.lua @@ -22,7 +22,7 @@ function Initialize( Plugin ) PluginManager:AddHook(Plugin, cPluginManager.HOOK_BLOCK_DIG) PluginManager:AddHook(Plugin, cPluginManager.HOOK_KILLED) PluginManager:AddHook(Plugin, cPluginManager.HOOK_CRAFTING_NO_RECIPE) - PluginManager:AddHook(Plugin, cPluginManager.E_PLUGIN_CHAT) -- used in web_chat.lua + PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHAT) -- used in web_chat.lua Plugin:AddCommand("/help", " - [Page] Show this message", "core.help") Plugin:AddCommand("/pluginlist", " - Show list of plugins", "core.pluginlist") diff --git a/MCServer/Plugins/Core/motd.lua b/MCServer/Plugins/Core/motd.lua index 49cdcecad..69f3ee245 100644 --- a/MCServer/Plugins/Core/motd.lua +++ b/MCServer/Plugins/Core/motd.lua @@ -5,6 +5,6 @@ end function ShowMOTDTo( Player ) Player:SendMessage( cChatColor.Gold .. "Welcome to the MCServer test server!" ); - Player:SendMessage( cChatColor.Gold .. "http://mcserver.ae-c.net/" ); + Player:SendMessage( cChatColor.Gold .. "http://www.mcserver.org/" ); Player:SendMessage( cChatColor.Gold .. "Type /help for all commands" ); end \ No newline at end of file diff --git a/MCServer/Plugins/Core/web_playerlist.lua b/MCServer/Plugins/Core/web_playerlist.lua index b7e48cc3f..c042c0072 100644 --- a/MCServer/Plugins/Core/web_playerlist.lua +++ b/MCServer/Plugins/Core/web_playerlist.lua @@ -4,12 +4,14 @@ function HandleRequest_PlayerList( Request ) if( Request.Params["playerlist-kick"] ~= nil ) then local KickPlayerName = Request.Params["playerlist-kick"] - local Player = World:GetPlayer( KickPlayerName ) - if( Player == nil ) then + local FoundPlayerCallback = function( Player ) + if( Player:GetName() == KickPlayerName ) then + Player:GetClientHandle():Kick("You were kicked from the game!") + Content = Content .. "

" .. KickPlayerName .. " has been kicked from the game!

" + end + end + if( World:DoWithPlayer( KickPlayerName, FoundPlayerCallback ) == false ) then Content = Content .. "

Could not find player " .. KickPlayerName .. " !

" - elseif( Player:GetName() == KickPlayerName ) then - Player:GetClientHandle():Kick("You were kicked from the game!") - Content = Content .. "

" .. KickPlayerName .. " has been kicked from the game!

" end end @@ -25,7 +27,7 @@ function HandleRequest_PlayerList( Request ) Content = Content .. "Kick" Content = Content .. "" end - World:ForEachPlayer( AddPlayerToTable ) + cRoot:Get():ForEachPlayer( AddPlayerToTable ) if( PlayerNum == 0 ) then Content = Content .. "None" -- cgit v1.2.3