From 476cd25ade814a25a0afbc5d6c5a3b5ae9060b8f Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sat, 2 Mar 2013 14:43:46 +0000 Subject: [PATCH] Core: Updated with new features (contributed by STR_Warrior) http://forum.mc-server.org/showthread.php?tid=4&pid=6634#pid6634 git-svn-id: http://mc-server.googlecode.com/svn/trunk@1235 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- MCServer/Plugins/Core/back.lua | 9 +++++++++ MCServer/Plugins/Core/main.lua | 5 +++++ MCServer/Plugins/Core/onplayerjoined.lua | 1 + MCServer/Plugins/Core/saveall.lua | 5 +++++ MCServer/Plugins/Core/spawn.lua | 3 +++ MCServer/Plugins/Core/teleport.lua | 23 +++++++++++++---------- MCServer/Plugins/Core/top.lua | 4 +++- MCServer/Plugins/Core/web_chat.lua | 17 +++++++++++++++++ 8 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 MCServer/Plugins/Core/back.lua create mode 100644 MCServer/Plugins/Core/saveall.lua diff --git a/MCServer/Plugins/Core/back.lua b/MCServer/Plugins/Core/back.lua new file mode 100644 index 000000000..e57f224f2 --- /dev/null +++ b/MCServer/Plugins/Core/back.lua @@ -0,0 +1,9 @@ +function HandleBackCommand( Split, Player ) + if (X[Player:GetName()] == nil) or (Y[Player:GetName()] == nil) or (Z[Player:GetName()] == nil) then + Player:SendMessage(cChatColor.Green .. "There is no last position known") + else + Player:TeleportTo(X[Player:GetName()], Y[Player:GetName()], Z[Player:GetName()]) + Player:SendMessage(cChatColor.Green .. "You teleported back to your last known position") + end + return true +end \ No newline at end of file diff --git a/MCServer/Plugins/Core/main.lua b/MCServer/Plugins/Core/main.lua index d9049bfda..579ee4df3 100644 --- a/MCServer/Plugins/Core/main.lua +++ b/MCServer/Plugins/Core/main.lua @@ -7,6 +7,9 @@ SHOW_PLUGIN_NAMES = true -- If true, plugin name will be shown before commands PLUGIN = {} -- Reference to own plugin object BannedPlayersIni = {} WhiteListIni = {} +X = {} +Y = {} +Z = {} @@ -27,6 +30,8 @@ function Initialize(Plugin) PluginManager:AddHook(Plugin, cPluginManager.HOOK_CRAFTING_NO_RECIPE) PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHAT) -- used in web_chat.lua + PluginManager:BindCommand("/back", "core.back", HandleBackCommand, " - Return to your last position"); + PluginManager:BindCommand("/save-all", "core.save-all", HandleSaveAllCommand, " - Saves all your worlds"); PluginManager:BindCommand("/help", "core.help", HandleHelpCommand, " [Page] - Show available commands"); PluginManager:BindCommand("/pluginlist", "core.pluginlist", HandlePluginListCommand, " - Show list of plugins"); PluginManager:BindCommand("/tp", "core.teleport", HandleTPCommand, " [Player] - Teleport yourself to a player"); diff --git a/MCServer/Plugins/Core/onplayerjoined.lua b/MCServer/Plugins/Core/onplayerjoined.lua index 8aa067a0c..334307000 100644 --- a/MCServer/Plugins/Core/onplayerjoined.lua +++ b/MCServer/Plugins/Core/onplayerjoined.lua @@ -1,4 +1,5 @@ function OnPlayerJoined(Player) ShowMOTDTo( Player ) + AddMessage( Player:GetName() .. " has joined the game", " " ) return false end \ No newline at end of file diff --git a/MCServer/Plugins/Core/saveall.lua b/MCServer/Plugins/Core/saveall.lua new file mode 100644 index 000000000..1dd12335b --- /dev/null +++ b/MCServer/Plugins/Core/saveall.lua @@ -0,0 +1,5 @@ +function HandleSaveAllCommand( Split, Player ) + cRoot:Get():SaveAllChunks(); + Player:SendMessage(cChatColor.Green .. "All the worlds are saved") + return true; +end \ No newline at end of file diff --git a/MCServer/Plugins/Core/spawn.lua b/MCServer/Plugins/Core/spawn.lua index 73034d9cf..2938318b2 100644 --- a/MCServer/Plugins/Core/spawn.lua +++ b/MCServer/Plugins/Core/spawn.lua @@ -1,5 +1,8 @@ function HandleSpawnCommand( Split, Player ) World = Player:GetWorld() + X[Player:GetName()] = Player:GetPosX() + Y[Player:GetName()] = Player:GetPosY() + Z[Player:GetName()] = Player:GetPosZ() Player:TeleportTo( World:GetSpawnX(), World:GetSpawnY(), World:GetSpawnZ() ) LOGINFO( Player:GetName() .. " returned to spawn." ) return true diff --git a/MCServer/Plugins/Core/teleport.lua b/MCServer/Plugins/Core/teleport.lua index 90eb3529a..b991b6185 100644 --- a/MCServer/Plugins/Core/teleport.lua +++ b/MCServer/Plugins/Core/teleport.lua @@ -1,23 +1,26 @@ function HandleTPCommand( Split, Player ) - if( #Split ~= 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" ) + if( Split[2] == nil ) then + Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName] (-h)" ) return true end - World = Player:GetWorld() - local TeleportDestination = function(OtherPlayer) if( OtherPlayer == Player ) then Player:SendMessage( cChatColor.Green .. "Already there :)" ) else + X[Player:GetName()] = Player:GetPosX() + Y[Player:GetName()] = Player:GetPosY() + Z[Player:GetName()] = Player:GetPosZ() Player:TeleportToEntity( OtherPlayer ) Player:SendMessage( cChatColor.Green .. "You teleported to "..OtherPlayer:GetName().."!" ) - OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" ) + if Split[3] ~= "-h" then + OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" ) + end end - end - - if (not(World:DoWithPlayer(Split[2], TeleportDestination))) then + end + World = Player:GetWorld() + if (not(World:DoWithPlayer(Split[2], TeleportDestination))) then Player:SendMessage( cChatColor.Green .. "Can't find player " .. Split[2] ) - end + end return true -end \ No newline at end of file +end diff --git a/MCServer/Plugins/Core/top.lua b/MCServer/Plugins/Core/top.lua index 0f7a8f95f..91f9aa297 100644 --- a/MCServer/Plugins/Core/top.lua +++ b/MCServer/Plugins/Core/top.lua @@ -3,7 +3,9 @@ function HandleTopCommand( Split, Player ) local PlayerPos = Player:GetPosition() local Height = World:GetHeight( math.floor(PlayerPos.x), math.floor(PlayerPos.z) ) - + X[Player:GetName()] = Player:GetPosX() + Y[Player:GetName()] = Player:GetPosY() + Z[Player:GetName()] = Player:GetPosZ() Player:TeleportTo( PlayerPos.x, Height+1, PlayerPos.z ) Player:SendMessage("Teleported to the top block") diff --git a/MCServer/Plugins/Core/web_chat.lua b/MCServer/Plugins/Core/web_chat.lua index 4ee679729..dd03203bd 100644 --- a/MCServer/Plugins/Core/web_chat.lua +++ b/MCServer/Plugins/Core/web_chat.lua @@ -125,6 +125,23 @@ function HandleRequest_Chat( Request ) end if( Request.PostParams["ChatMessage"] ~= nil ) then + if( Request.PostParams["ChatMessage"] == "/help" ) then + Commands = "Available commands" + AddMessage(Commands, "
" .. "/help, /reload" ) + return Commands + elseif( Request.PostParams["ChatMessage"] == "/reload" ) then + Server = cRoot:Get():GetServer() + Server:SendMessage( cChatColor.Green .. "Reloading all plugins." ) + AddMessage("Reloading all plugins", "") + cRoot:Get():GetPluginManager():ReloadPlugins() + return "" + else + cmd = Request.PostParams["ChatMessage"] + if string.sub(cmd,1,string.len("/")) == "/" then + AddMessage('Unknown Command "' .. Request.PostParams["ChatMessage"] .. '"', "") + return "" + end + end local Message = "[WebAdmin]: " .. Request.PostParams["ChatMessage"] cRoot:Get():GetServer():SendMessage( Message ) AddMessage("WebAdmin", Request.PostParams["ChatMessage"] )