From de293999872346271cdfb5dbecbad7f77362b83b Mon Sep 17 00:00:00 2001 From: faketruth Date: Fri, 27 Jan 2012 23:47:32 +0000 Subject: Converted entire Core plugin including WebAdmin interface to new plugin method/system/thingy and sexyfied it. Made some changes to WebAdmin to make the new plugins work Old plugins still work like they're supposed to Not all hooks have been programmed for the new plugins yet, this still needs to be done git-svn-id: http://mc-server.googlecode.com/svn/trunk@182 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- Plugins/Core/ban.lua | 30 +++++++++ Plugins/Core/gamemode.lua | 10 +++ Plugins/Core/gotoworld.lua | 15 +++++ Plugins/Core/help.lua | 54 +++++++++++++++ Plugins/Core/item.lua | 65 ++++++++++++++++++ Plugins/Core/kick.lua | 27 ++++++++ Plugins/Core/main.lua | 138 +++++++++++++++++++++++++++++++++++++++ Plugins/Core/motd.lua | 10 +++ Plugins/Core/onblockplace.lua | 60 +++++++++++++++++ Plugins/Core/onkilled.lua | 24 +++++++ Plugins/Core/onlogin.lua | 20 ++++++ Plugins/Core/onplayerjoin.lua | 4 ++ Plugins/Core/playerlist.lua | 16 +++++ Plugins/Core/pluginlist.lua | 13 ++++ Plugins/Core/reload.lua | 6 ++ Plugins/Core/spawn.lua | 6 ++ Plugins/Core/teleport.lua | 18 +++++ Plugins/Core/time.lua | 18 +++++ Plugins/Core/top.lua | 11 ++++ Plugins/Core/unban.lua | 20 ++++++ Plugins/Core/web_playerlist.lua | 32 +++++++++ Plugins/Core/web_reload.lua | 15 +++++ Plugins/Core/web_whitelist.lua | 79 ++++++++++++++++++++++ Plugins/NewTest/ban.lua | 30 --------- Plugins/NewTest/gamemode.lua | 10 --- Plugins/NewTest/gotoworld.lua | 15 ----- Plugins/NewTest/help.lua | 54 --------------- Plugins/NewTest/item.lua | 65 ------------------ Plugins/NewTest/kick.lua | 27 -------- Plugins/NewTest/main.lua | 132 ------------------------------------- Plugins/NewTest/motd.lua | 10 --- Plugins/NewTest/onblockplace.lua | 60 ----------------- Plugins/NewTest/onkilled.lua | 24 ------- Plugins/NewTest/onlogin.lua | 20 ------ Plugins/NewTest/onplayerjoin.lua | 4 -- Plugins/NewTest/playerlist.lua | 16 ----- Plugins/NewTest/pluginlist.lua | 13 ---- Plugins/NewTest/reload.lua | 6 -- Plugins/NewTest/spawn.lua | 6 -- Plugins/NewTest/teleport.lua | 18 ----- Plugins/NewTest/time.lua | 18 ----- Plugins/NewTest/top.lua | 11 ---- Plugins/NewTest/unban.lua | 20 ------ 43 files changed, 691 insertions(+), 559 deletions(-) create mode 100644 Plugins/Core/ban.lua create mode 100644 Plugins/Core/gamemode.lua create mode 100644 Plugins/Core/gotoworld.lua create mode 100644 Plugins/Core/help.lua create mode 100644 Plugins/Core/item.lua create mode 100644 Plugins/Core/kick.lua create mode 100644 Plugins/Core/main.lua create mode 100644 Plugins/Core/motd.lua create mode 100644 Plugins/Core/onblockplace.lua create mode 100644 Plugins/Core/onkilled.lua create mode 100644 Plugins/Core/onlogin.lua create mode 100644 Plugins/Core/onplayerjoin.lua create mode 100644 Plugins/Core/playerlist.lua create mode 100644 Plugins/Core/pluginlist.lua create mode 100644 Plugins/Core/reload.lua create mode 100644 Plugins/Core/spawn.lua create mode 100644 Plugins/Core/teleport.lua create mode 100644 Plugins/Core/time.lua create mode 100644 Plugins/Core/top.lua create mode 100644 Plugins/Core/unban.lua create mode 100644 Plugins/Core/web_playerlist.lua create mode 100644 Plugins/Core/web_reload.lua create mode 100644 Plugins/Core/web_whitelist.lua delete mode 100644 Plugins/NewTest/ban.lua delete mode 100644 Plugins/NewTest/gamemode.lua delete mode 100644 Plugins/NewTest/gotoworld.lua delete mode 100644 Plugins/NewTest/help.lua delete mode 100644 Plugins/NewTest/item.lua delete mode 100644 Plugins/NewTest/kick.lua delete mode 100644 Plugins/NewTest/main.lua delete mode 100644 Plugins/NewTest/motd.lua delete mode 100644 Plugins/NewTest/onblockplace.lua delete mode 100644 Plugins/NewTest/onkilled.lua delete mode 100644 Plugins/NewTest/onlogin.lua delete mode 100644 Plugins/NewTest/onplayerjoin.lua delete mode 100644 Plugins/NewTest/playerlist.lua delete mode 100644 Plugins/NewTest/pluginlist.lua delete mode 100644 Plugins/NewTest/reload.lua delete mode 100644 Plugins/NewTest/spawn.lua delete mode 100644 Plugins/NewTest/teleport.lua delete mode 100644 Plugins/NewTest/time.lua delete mode 100644 Plugins/NewTest/top.lua delete mode 100644 Plugins/NewTest/unban.lua (limited to 'Plugins') diff --git a/Plugins/Core/ban.lua b/Plugins/Core/ban.lua new file mode 100644 index 000000000..a6a662c3c --- /dev/null +++ b/Plugins/Core/ban.lua @@ -0,0 +1,30 @@ +function HandleBanCommand( Split, Player ) + if( #Split < 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /ban [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 + + local Server = cRoot:Get():GetServer() + LOGINFO( Player:GetName() .. " is banning " .. OtherPlayer:GetName() .. " ( "..Reason..") " ) + Server:SendMessage( "Banning " .. OtherPlayer:GetName() ) + + local ClientHandle = OtherPlayer:GetClientHandle() + ClientHandle:Kick( Reason ) + + BannedPlayersIni:SetValueB("Banned", OtherPlayer:GetName(), true) + BannedPlayersIni:WriteFile() + + return true +end \ No newline at end of file diff --git a/Plugins/Core/gamemode.lua b/Plugins/Core/gamemode.lua new file mode 100644 index 000000000..1e73b46fd --- /dev/null +++ b/Plugins/Core/gamemode.lua @@ -0,0 +1,10 @@ +function HandleChangeGMCommand( Split, Player ) + if( #Split ~= 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /gm [GameMode (0|1)]" ) + return true + end + + Player:SetGameMode(Split[2]) + + return true +end \ No newline at end of file diff --git a/Plugins/Core/gotoworld.lua b/Plugins/Core/gotoworld.lua new file mode 100644 index 000000000..d5113b667 --- /dev/null +++ b/Plugins/Core/gotoworld.lua @@ -0,0 +1,15 @@ +function HandleGotoWorldCommand( Split, Player ) + if( #Split ~= 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /gotoworld [WorldName]" ) + return true + end + + if( Player:MoveToWorld(Split[2]) == false ) then + Player:SendMessage( cChatColor.Green .. "Could not move to world '" .. Split[2] .. "'!" ) + return true + end + + + Player:SendMessage( cChatColor.Green .. "Moved successfully to '" .. Split[2] .. "'! :D" ) + return true +end \ No newline at end of file diff --git a/Plugins/Core/help.lua b/Plugins/Core/help.lua new file mode 100644 index 000000000..02ef25ebd --- /dev/null +++ b/Plugins/Core/help.lua @@ -0,0 +1,54 @@ +function HandleHelpCommand( Split, Player ) + local PluginManager = cRoot:Get():GetPluginManager() + + local LinesPerPage = 9 + local CurrentPage = 1 + local CurrentLine = 0 + + if( #Split == 2 ) then + CurrentPage = tonumber(Split[2]) + end + + local Pages = {} + + local PluginList = PluginManager:GetAllPlugins() + for i, Plugin in ipairs( PluginList ) do + local Commands = Plugin:GetCommands() + for i, v in ipairs( Commands ) do + if( Player:HasPermission( v.Permission ) ) then + local PageNum = math.floor( CurrentLine/LinesPerPage )+1 + if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page + + if( Pages[ PageNum ].ShownName ~= Plugin:GetName() and SHOW_PLUGIN_NAMES == true ) then + if( CurrentLine == LinesPerPage * PageNum -1 ) then -- Don't add if it's the last line of the page, it looks silly + -- Add it to the next page instead + CurrentLine = CurrentLine+1 + PageNum = math.floor( CurrentLine/LinesPerPage )+1 + + if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page + table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() ) + else + Pages[ PageNum ].ShownName = Plugin:GetName() + table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() ) + end + CurrentLine = CurrentLine+1 + PageNum = math.floor( CurrentLine/LinesPerPage )+1 + if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page + end + local Message = cChatColor.Blue .. v.Command .. v.Description; + table.insert( Pages[ PageNum ], Message ) + CurrentLine = CurrentLine+1 + end + end + end + + Player:SendMessage( cChatColor.Purple .. "- All commands - " .. cChatColor.Gold .. "[Page " .. (CurrentPage) .."/"..#Pages.."]" ) + + if( Pages[CurrentPage] ~= nil ) then + for i, v in ipairs(Pages[CurrentPage]) do + Player:SendMessage( v ) + end + end + + return true +end \ No newline at end of file diff --git a/Plugins/Core/item.lua b/Plugins/Core/item.lua new file mode 100644 index 000000000..942fa8ce6 --- /dev/null +++ b/Plugins/Core/item.lua @@ -0,0 +1,65 @@ +function HandleItemCommand( Split, Player ) + if( #Split ~= 2 and #Split ~=3 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /item [ItemID/Name:Dmg] " ) + return true + end + + local FoundItem = false + + local ItemSyntax = Split[2] -- Contains item string with optional metadata + local ItemData = StringSplit( Split[2], ":" ) + + -- Default item values + local ItemID = 0 + local ItemMeta = 0 + local ItemAmount = 1 + + if( #ItemData > 0 ) then + ItemID = ItemData[1] + end + + if( tonumber(ItemID) ~= nil ) then -- Definitely a number + ItemID = tonumber(ItemID) + if( IsValidItem( ItemID ) ) then + FoundItem = true + end + end + + if( FoundItem == false ) then + if ( HAVE_ITEM_NAMES == true ) then + local Item = ItemsTable[ ItemID ] + if( Item ~= nil ) then + ItemID = Item.m_ItemID + ItemMeta = Item.m_ItemHealth + FoundItem = true + end + end + end + + -- Override metadata from item in list, if metadata was given + if( #ItemData > 1 and tonumber( ItemData[2] ) ~= nil ) then -- Metadata is given, and is a number + ItemMeta = tonumber( ItemData[2] ) + end + + if( FoundItem == false ) then + Player:SendMessage( cChatColor.Green .. "Invalid Item ID / Name !" ) + return true + end + + if( #Split == 3 ) then + ItemAmount = tonumber( Split[3] ) + if( ItemAmount == nil or ItemAmount < 1 or ItemAmount > 512 ) then + Player:SendMessage( cChatColor.Green .. "Invalid Amount !" ) + return true + end + end + + local NewItem = cItem( ItemID, ItemAmount, ItemMeta ) + if( Player:GetInventory():AddItem( NewItem ) == true ) then + Player:SendMessage( cChatColor.Green .. "There you go !" ) + LOG("Gave " .. Player:GetName() .. " " .. ItemAmount .. " times " .. ItemID .. ":" .. ItemMeta) + else + Player:SendMessage( cChatColor.Green .. "Not enough space in inventory !" ) + end + return true +end \ No newline at end of file diff --git a/Plugins/Core/kick.lua b/Plugins/Core/kick.lua new file mode 100644 index 000000000..ff4f8a705 --- /dev/null +++ b/Plugins/Core/kick.lua @@ -0,0 +1,27 @@ +function HandleKickCommand( Split, Player ) + if( #Split < 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /kick [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 kicked" + if( #Split > 2 ) then + Reason = table.concat(Split, " ", 3) + 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/Plugins/Core/main.lua b/Plugins/Core/main.lua new file mode 100644 index 000000000..90f86938f --- /dev/null +++ b/Plugins/Core/main.lua @@ -0,0 +1,138 @@ +---- Some settings ----- +SHOW_PLUGIN_NAMES = true -- If true, plugin name will be shown before commands + -- This is overwritten in the Initialize() function +------------------------ + +-- Global variables +PLUGIN = {} -- Reference to own plugin object +BannedPlayersIni = {} +WhiteListIni = {} +ItemsTable = {} + +function Initialize( Plugin ) + PLUGIN = Plugin + + Plugin:SetName( "Core" ) + Plugin:SetVersion( 8 ) + + PluginManager = cRoot:Get():GetPluginManager() + PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_PLAYER_JOIN ) + PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_LOGIN ) + PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_BLOCK_PLACE ) + PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_KILLED ) + + Plugin:AddCommand("/help", " - [Page] Show this message", "core.help") + Plugin:AddCommand("/pluginlist", " - Show list of plugins", "core.pluginlist") + Plugin:AddCommand("/tp", " - [Player] - Teleport yourself to a player", "core.teleport") + Plugin:AddCommand("/item", " - [ItemID/Name] - Spawn an item for yourself", "core.item") + Plugin:AddCommand("/list", " - Shows list of connected players", "core.playerlist") + Plugin:AddCommand("/motd", " - Show message of the day", "core.motd") + Plugin:AddCommand("/reload", " - Reload all plugins", "core.reload") + Plugin:AddCommand("/time", " - [Day/Night] - Sets the time of day", "core.time") + Plugin:AddCommand("/spawn", " - Return to the spawn", "core.spawn") + Plugin:AddCommand("/kick", " - [Player] - Kick a player", "core.kick") + Plugin:AddCommand("/ban", " - [Player] - Ban a player", "core.ban") + Plugin:AddCommand("/unban", " - [Player] - Unban a player", "core.unban") + Plugin:AddCommand("/top", " - Teleport yourself to the top most block", "core.top") + Plugin:AddCommand("/gm", " - [Gamemode (0|1)] - Change your gamemode", "core.changegm") + Plugin:AddCommand("/gotoworld", " - Move to a different world!", "core.gotoworld") + + Plugin:BindCommand( "/help", "core.help", HandleHelpCommand ) + Plugin:BindCommand( "/pluginlist", "core.pluginlist", HandlePluginListCommand ) + Plugin:BindCommand( "/tp", "core.teleport", HandleTPCommand ) + Plugin:BindCommand( "/item", "core.item", HandleItemCommand ) + Plugin:BindCommand( "/i", "core.item", HandleItemCommand ) + Plugin:BindCommand( "/list", "core.playerlist", HandlePlayerListCommand ) + Plugin:BindCommand( "/who", "core.playerlist", HandlePlayerListCommand ) + Plugin:BindCommand( "/playerlist", "core.playerlist", HandlePlayerListCommand ) + Plugin:BindCommand( "/motd", "core.motd", HandleMOTDCommand ) + Plugin:BindCommand( "/reload", "core.reload", HandleReloadCommand ) + Plugin:BindCommand( "/time", "core.time", HandleTimeCommand ) + Plugin:BindCommand( "/spawn", "core.spawn", HandleSpawnCommand ) + Plugin:BindCommand( "/home", "core.spawn", HandleSpawnCommand ) + Plugin:BindCommand( "/kick", "core.kick", HandleKickCommand ) + Plugin:BindCommand( "/ban", "core.ban", HandleBanCommand ) + Plugin:BindCommand( "/unban", "core.unban", HandleUnbanCommand ) + Plugin:BindCommand( "/top", "core.top", HandleTopCommand ) + Plugin:BindCommand( "/gm", "core.changegm", HandleChangeGMCommand ) + Plugin:BindCommand( "/gotoworld", "core.gotoworld", HandleGotoWorldCommand ) + + + local IniFile = cIniFile("settings.ini") + if ( IniFile:ReadFile() == true ) then + SHOW_PLUGIN_NAMES = IniFile:GetValueB("HelpPlugin", "ShowPluginNames", true ) + end + + local itemsINI = cIniFile("items.ini") + if ( itemsINI:ReadFile() == true ) then + local KeyID = itemsINI:FindKey('Items') + + LOGINFO("Core: loaded " .. itemsINI:GetNumValues( KeyID ) .. " item names.") + + for i = 0, itemsINI:GetNumValues('Items') do + local ItemName = itemsINI:GetValueName( KeyID, i ) + local ItemSyntax = itemsINI:GetValue(KeyID, i, "0") + + local ItemData = StringSplit(ItemSyntax, ":") -- [1] = ID, [2] = perhaps meta/dmg + --LOGINFO( "#ItemData: " .. #ItemData ) + if( #ItemData > 0 ) then + --LOGINFO("ItemData[0]: "..ItemData[1]) + local ItemID = tonumber( ItemData[1] ) + if( ItemID > 0 ) then + local ItemMeta = 0 + if( #ItemData > 1 ) then + ItemMeta = tonumber( ItemData[2] ) + end + ItemsTable[ ItemName ] = cItem( ItemID, 1, ItemMeta ) + LOGINFO("Got item: " .. ItemName .. "-> " .. ItemsTable[ ItemName ].m_ItemID ..":" .. ItemsTable[ ItemName ].m_ItemHealth ) + end + end + end + + HAVE_ITEM_NAMES = true + end + + -- Load whitelist, and add default values and stuff + WhiteListIni = cIniFile("whitelist.ini") + if ( WhiteListIni:ReadFile() == true ) then + if( WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false) == true ) then + if( WhiteListIni:GetNumValues("WhiteList") > 0 ) then + LOGINFO("Core: loaded " .. WhiteListIni:GetNumValues('WhiteList') .. " whitelisted players.") + else + LOGWARN("WARNING: WhiteList is on, but there are no people in the whitelist!") + end + end + else + WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", false ) + WhiteListIni:SetValue("WhiteList", "", "") -- So it adds an empty header + WhiteListIni:DeleteValue("WhiteList", "") -- And remove the value + WhiteListIni:KeyComment("WhiteList", "PlayerName=1") + if( WhiteListIni:WriteFile() == false ) then + LOGWARN("WARNING: Could not write to whitelist.ini") + end + end + + -- Load banned players, and add default values and stuff + BannedPlayersIni = cIniFile("banned.ini") + if ( BannedPlayersIni:ReadFile() == true ) then + if( BannedPlayersIni:GetNumValues("Banned") > 0 ) then + LOGINFO("Core: loaded " .. BannedPlayersIni:GetNumValues("Banned") .. " banned players.") + end + else + BannedPlayersIni:SetValue("Banned", "", "") -- So it adds an empty header + BannedPlayersIni:DeleteValue("Banned", "") -- And remove the value + BannedPlayersIni:KeyComment("Banned", "PlayerName=1") + if( BannedPlayersIni:WriteFile() == false ) then + LOGWARN("WARNING: Could not write to banned.ini") + end + end + + local WebPlugin = Plugin:CreateWebPlugin() + WebPlugin:SetName( Plugin:GetName() ) + WebPlugin:AddTab( "Whitelist", HandleRequest_WhiteList ) + WebPlugin:AddTab( "Reload", HandleRequest_Reload ) + WebPlugin:AddTab( "Playerlist", HandleRequest_PlayerList ) + + LOG( "Initialized " .. Plugin:GetName() .. " v." .. Plugin:GetVersion() ) + return true +end \ No newline at end of file diff --git a/Plugins/Core/motd.lua b/Plugins/Core/motd.lua new file mode 100644 index 000000000..49cdcecad --- /dev/null +++ b/Plugins/Core/motd.lua @@ -0,0 +1,10 @@ +function HandleMOTDCommand( Split, Player ) + ShowMOTDTo( Player ) + return true +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 .. "Type /help for all commands" ); +end \ No newline at end of file diff --git a/Plugins/Core/onblockplace.lua b/Plugins/Core/onblockplace.lua new file mode 100644 index 000000000..ba75bf5c2 --- /dev/null +++ b/Plugins/Core/onblockplace.lua @@ -0,0 +1,60 @@ +function OnBlockPlace( Block, Player ) + + -- dont check if the direction is in the air + if Block.m_Direction ~= -1 then + + local X = Block.m_PosX + local Y = Block.m_PosY + local Z = Block.m_PosZ + X, Y, Z = AddDirection( X, Y, Z, Block.m_Direction ) + if( Y >= 128 or Y < 0 ) then + return true + end + + local collision = false + local World = Player:GetWorld() + local PlayerList = World:GetAllPlayers() + + -- check if a player occupies the placement location + for i, Player in ipairs( PlayerList ) do + + -- drop the decimals, we only care about the full block X,Y,Z + local PlayerX = math.floor(Player:GetPosX(), 0) + local PlayerY = math.floor(Player:GetPosY(), 0) + local PlayerZ = math.floor(Player:GetPosZ(), 0) + + local BlockX = Block.m_PosX + local BlockY = Block.m_PosY + local BlockZ = Block.m_PosZ + + -- player height is 2 blocks, so we check the position and then offset it up one + -- so they can't place a block on there face + + if Block.m_Direction == 0 then if PlayerY == BlockY-2 and PlayerX == BlockX and PlayerZ == BlockZ then collision = true end end + if Block.m_Direction == 1 then if PlayerY == BlockY+1 and PlayerX == BlockX and PlayerZ == BlockZ then collision = true end end + + if Block.m_Direction == 2 then if PlayerY == BlockY and PlayerX == BlockX and PlayerZ == BlockZ-1 then collision = true end end + if Block.m_Direction == 2 then if PlayerY+1 == BlockY and PlayerX == BlockX and PlayerZ == BlockZ-1 then collision = true end end + + if Block.m_Direction == 3 then if PlayerY == BlockY and PlayerX == BlockX and PlayerZ == BlockZ+1 then collision = true end end + if Block.m_Direction == 3 then if PlayerY+1 == BlockY and PlayerX == BlockX and PlayerZ == BlockZ+1 then collision = true end end + + if Block.m_Direction == 4 then if PlayerY == BlockY and PlayerX == BlockX-1 and PlayerZ == BlockZ then collision = true end end + if Block.m_Direction == 4 then if PlayerY+1 == BlockY and PlayerX == BlockX-1 and PlayerZ == BlockZ then collision = true end end + + if Block.m_Direction == 5 then if PlayerY == BlockY and PlayerX == BlockX+1 and PlayerZ == BlockZ then collision = true end end + if Block.m_Direction == 5 then if PlayerY+1 == BlockY and PlayerX == BlockX+1 and PlayerZ == BlockZ then collision = true end end + + end + + if collision then + return true + else + return false + end + + end + + return false + +end \ No newline at end of file diff --git a/Plugins/Core/onkilled.lua b/Plugins/Core/onkilled.lua new file mode 100644 index 000000000..a8a92f667 --- /dev/null +++ b/Plugins/Core/onkilled.lua @@ -0,0 +1,24 @@ +function OnKilled( Killed, Killer ) + if( Killer == nil ) then + local KilledPlayer = tolua.cast( Killed, "cPlayer") + if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then + return false + end + + local Server = cRoot:Get():GetServer() + Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " died" ) + else + local KilledPlayer = tolua.cast( Killed, "cPlayer") + if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then + return false + end + local KillerPlayer = tolua.cast( Killer, "cPlayer") + if( not KillerPlayer:IsA("cPlayer") or KillerPlayer == nil ) then + return false + end + + local Server = cRoot:Get():GetServer() + Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " was killed by " .. KillerPlayer:GetName() .. "!" ) + end + return false +end \ No newline at end of file diff --git a/Plugins/Core/onlogin.lua b/Plugins/Core/onlogin.lua new file mode 100644 index 000000000..a706f8024 --- /dev/null +++ b/Plugins/Core/onlogin.lua @@ -0,0 +1,20 @@ +function OnLogin( PacketData ) + if( PacketData.m_Username ~= "" ) then + if( BannedPlayersIni:GetValueB("Banned", PacketData.m_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!") + 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 + 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." ) + return true -- Deny access to the server + end + end + end + + return false +end \ No newline at end of file diff --git a/Plugins/Core/onplayerjoin.lua b/Plugins/Core/onplayerjoin.lua new file mode 100644 index 000000000..e8263f608 --- /dev/null +++ b/Plugins/Core/onplayerjoin.lua @@ -0,0 +1,4 @@ +function OnPlayerJoin( Player ) + ShowMOTDTo( Player ) + return false +end \ No newline at end of file diff --git a/Plugins/Core/playerlist.lua b/Plugins/Core/playerlist.lua new file mode 100644 index 000000000..c120f068f --- /dev/null +++ b/Plugins/Core/playerlist.lua @@ -0,0 +1,16 @@ +function HandlePlayerListCommand( Split, Player ) + local World = Player:GetWorld() + local PlayerList = World:GetAllPlayers() + + local Message = cChatColor.Green .. "Connected players: (".. cChatColor.White.. #PlayerList .. cChatColor.Green .. ")" + Player:SendMessage( Message ) + + local PlayerTable = {} + for i, TempPlayer in ipairs( PlayerList ) do + local PlayerName = TempPlayer:GetName() + table.insert(PlayerTable, PlayerName ) + end + + Player:SendMessage( table.concat(PlayerTable, " ") ) + return true +end \ No newline at end of file diff --git a/Plugins/Core/pluginlist.lua b/Plugins/Core/pluginlist.lua new file mode 100644 index 000000000..6cb767868 --- /dev/null +++ b/Plugins/Core/pluginlist.lua @@ -0,0 +1,13 @@ +function HandlePluginListCommand( Split, Player ) + local PluginManager = cRoot:Get():GetPluginManager() + local PluginList = PluginManager:GetAllPlugins() + + local PluginTable = {} + for i, Plugin in ipairs( PluginList ) do + table.insert(PluginTable, Plugin:GetName() ) + end + + Player:SendMessage( cChatColor.Green .. "Loaded plugins:" ) + Player:SendMessage( cChatColor.Gold .. table.concat(PluginTable, cChatColor.Gold.." ") ) + return true +end \ No newline at end of file diff --git a/Plugins/Core/reload.lua b/Plugins/Core/reload.lua new file mode 100644 index 000000000..e2b338ba1 --- /dev/null +++ b/Plugins/Core/reload.lua @@ -0,0 +1,6 @@ +function HandleReloadCommand( Split, Player ) + Server = cRoot:Get():GetServer() + Server:SendMessage( cChatColor.Green .. "Reloading all plugins." ) + cRoot:Get():GetPluginManager():ReloadPlugins() + return true +end \ No newline at end of file diff --git a/Plugins/Core/spawn.lua b/Plugins/Core/spawn.lua new file mode 100644 index 000000000..73034d9cf --- /dev/null +++ b/Plugins/Core/spawn.lua @@ -0,0 +1,6 @@ +function HandleSpawnCommand( Split, Player ) + World = Player:GetWorld() + Player:TeleportTo( World:GetSpawnX(), World:GetSpawnY(), World:GetSpawnZ() ) + LOGINFO( Player:GetName() .. " returned to spawn." ) + return true +end \ No newline at end of file diff --git a/Plugins/Core/teleport.lua b/Plugins/Core/teleport.lua new file mode 100644 index 000000000..9fffec9a2 --- /dev/null +++ b/Plugins/Core/teleport.lua @@ -0,0 +1,18 @@ +function HandleTPCommand( Split, Player ) + if( #Split ~= 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" ) + return true + end + local World = Player:GetWorld() + local OtherPlayer = World:GetPlayer( Split[2] ) + if( OtherPlayer == nil ) then + Player:SendMessage( cChatColor.Green .. "Can't find player " .. Split[2] ) + elseif( OtherPlayer == Player ) then + Player:SendMessage( cChatColor.Green .. "Already there :)" ) + else + Player:TeleportTo( OtherPlayer ) + Player:SendMessage( cChatColor.Green .. "You teleported to "..OtherPlayer:GetName().."!" ) + OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" ) + end + return true +end \ No newline at end of file diff --git a/Plugins/Core/time.lua b/Plugins/Core/time.lua new file mode 100644 index 000000000..425d69e6a --- /dev/null +++ b/Plugins/Core/time.lua @@ -0,0 +1,18 @@ +function HandleTimeCommand( Split, Player ) + if( #Split ~= 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /time [Day/Night]" ) + return true; + end + + local Server = cRoot:Get():GetServer() + if( string.upper( Split[2] ) == "DAY") then + Player:GetWorld():SetWorldTime( 0 ) + Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Day.") + elseif( string.upper( Split[2] ) == "NIGHT") then + Player:GetWorld():SetWorldTime( 12000 + 1000 ) + Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Night.") + else + Player:SendMessage( cChatColor.Green .. "Usage: /time [Day/Night]" ) + end + return true +end \ No newline at end of file diff --git a/Plugins/Core/top.lua b/Plugins/Core/top.lua new file mode 100644 index 000000000..0f7a8f95f --- /dev/null +++ b/Plugins/Core/top.lua @@ -0,0 +1,11 @@ +function HandleTopCommand( Split, Player ) + local World = Player:GetWorld() + + local PlayerPos = Player:GetPosition() + local Height = World:GetHeight( math.floor(PlayerPos.x), math.floor(PlayerPos.z) ) + + Player:TeleportTo( PlayerPos.x, Height+1, PlayerPos.z ) + Player:SendMessage("Teleported to the top block") + + return true +end \ No newline at end of file diff --git a/Plugins/Core/unban.lua b/Plugins/Core/unban.lua new file mode 100644 index 000000000..9defbe323 --- /dev/null +++ b/Plugins/Core/unban.lua @@ -0,0 +1,20 @@ +function HandleUnbanCommand( Split, Player ) + if( #Split < 2 ) then + Player:SendMessage( cChatColor.Green .. "Usage: /unban [Player]" ) + return true + end + + if( BannedPlayersIni:GetValueB("Banned", Split[2], false) == false ) then + Player:SendMessage( cChatColor.Green .. Split[2] .. " is not banned!" ) + return true + end + + BannedPlayersIni:SetValueB("Banned", Split[2], false, false) + BannedPlayersIni:WriteFile() + + local Server = cRoot:Get():GetServer() + LOGINFO( Player:GetName() .. " is unbanning " .. Split[2] ) + Server:SendMessage( "Unbanning " .. Split[2] ) + + return true +end \ No newline at end of file diff --git a/Plugins/Core/web_playerlist.lua b/Plugins/Core/web_playerlist.lua new file mode 100644 index 000000000..eeb9369c1 --- /dev/null +++ b/Plugins/Core/web_playerlist.lua @@ -0,0 +1,32 @@ +function HandleRequest_PlayerList( Request ) + local World = cRoot:Get():GetWorld() + local Content = "" + + if( Request.Params:get("playerlist-kick") ~= "" ) then + local KickPlayerName = Request.Params:get("playerlist-kick") + local Player = World:GetPlayer( KickPlayerName ) + if( Player == nil ) 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 + + Content = Content .. "

Connected Players: " .. World:GetNumPlayers() .. "

" + Content = Content .. "" + + + local PlayerList = World:GetAllPlayers() + for i, Player in ipairs( PlayerList ) do + Content = Content .. "" + Content = Content .. "" + Content = Content .. "" + Content = Content .. "" + Content = Content .. "" + end + + Content = Content .. "
" .. i .. "." .. Player:GetName() .. "Kick
" + Content = Content .. "
" + return Content +end \ No newline at end of file diff --git a/Plugins/Core/web_reload.lua b/Plugins/Core/web_reload.lua new file mode 100644 index 000000000..f78297fcb --- /dev/null +++ b/Plugins/Core/web_reload.lua @@ -0,0 +1,15 @@ +function HandleRequest_Reload( Request ) + local Content = "" + + if( Request.Params:get("reload") ~= "" ) then + Content = Content .. "" + Content = Content .. "

Reloading plugins... This can take a while depending on the plugins you're using.

" + cRoot:Get():GetPluginManager():ReloadPlugins() + else + Content = Content .. "
" + Content = Content .. "

Click the reload button to reload all plugins!
" + Content = Content .. "

" + Content = Content .. "
" + end + return Content +end \ No newline at end of file diff --git a/Plugins/Core/web_whitelist.lua b/Plugins/Core/web_whitelist.lua new file mode 100644 index 000000000..b7a220515 --- /dev/null +++ b/Plugins/Core/web_whitelist.lua @@ -0,0 +1,79 @@ +local function HTMLDeleteButton( name ) + return "
" +end + +function HandleRequest_WhiteList( Request ) + local UpdateMessage = "" + if( Request.Params:get("whitelist-add") ~= "" ) then + local PlayerName = Request.Params:get("whitelist-add") + + if( WhiteListIni:GetValueB("WhiteList", PlayerName, false) == true ) then + UpdateMessage = "".. PlayerName.." is already on the whitelist" + else + WhiteListIni:SetValueB("WhiteList", PlayerName, true ) + UpdateMessage = "Added " .. PlayerName .. " to whitelist." + WhiteListIni:WriteFile() + end + elseif( Request.Params:get("whitelist-delete") ~= "" ) then + local PlayerName = Request.Params:get("whitelist-delete") + WhiteListIni:DeleteValue( "WhiteList", PlayerName ) + UpdateMessage = "Removed " .. PlayerName .. " from whitelist." + WhiteListIni:WriteFile() + elseif( Request.Params:get("whitelist-reload") ~= "" ) then + WhiteListIni:Erase() -- Empty entire loaded ini first, otherwise weird shit goes down + WhiteListIni:ReadFile() + UpdateMessage = "Loaded from disk" + elseif( Request.Params:get("whitelist-setenable") ~= "" ) then + local Enabled = Request.Params:get("whitelist-setenable"); + local CreateNewValue = false; + if( WhiteListIni:FindValue( WhiteListIni:FindKey("WhiteListSettings"), "WhiteListOn" ) == cIniFile.noID ) then -- Find out whether the value is in the ini + CreateNewValue = true + end + + if( Enabled == "1" ) then + WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", true, CreateNewValue ) + else + WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", false, CreateNewValue ) + end + WhiteListIni:WriteFile() + end + + + local Content = "" + + local WhiteListEnabled = WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false) + if( WhiteListEnabled == false ) then + Content = Content .. "

Whitelist is currently disabled! Click here to enable.

" + end + + + Content = Content .. "

Whitelisted players

" + Content = Content .. "" + local KeyNum = WhiteListIni:FindKey("WhiteList") + local NumValues = WhiteListIni:GetNumValues(KeyNum) + if( NumValues > 0 ) then + for Num = 0, NumValues-1 do + if( WhiteListIni:GetValue(KeyNum, Num, "0") == "1" ) then + local PlayerName = WhiteListIni:GetValueName(KeyNum, Num ) + Content = Content .. "" + end + end + else + Content = Content .. "" + end + Content = Content .. "
" .. PlayerName .. "" .. HTMLDeleteButton( PlayerName ) .. "
None
" + Content = Content .. "

Add player to whitelist

" + Content = Content .. "
" + Content = Content .. "" + Content = Content .. "
" + Content = Content .. "
" + Content = Content .. "" + Content = Content .. "
" + Content = Content .. "
"..UpdateMessage + + if( WhiteListEnabled == true ) then + Content = Content .. "

Whitelist is currently enabled, click here to disable.

" + end + + return Content +end \ No newline at end of file diff --git a/Plugins/NewTest/ban.lua b/Plugins/NewTest/ban.lua deleted file mode 100644 index a6a662c3c..000000000 --- a/Plugins/NewTest/ban.lua +++ /dev/null @@ -1,30 +0,0 @@ -function HandleBanCommand( Split, Player ) - if( #Split < 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /ban [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 - - local Server = cRoot:Get():GetServer() - LOGINFO( Player:GetName() .. " is banning " .. OtherPlayer:GetName() .. " ( "..Reason..") " ) - Server:SendMessage( "Banning " .. OtherPlayer:GetName() ) - - local ClientHandle = OtherPlayer:GetClientHandle() - ClientHandle:Kick( Reason ) - - BannedPlayersIni:SetValueB("Banned", OtherPlayer:GetName(), true) - BannedPlayersIni:WriteFile() - - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/gamemode.lua b/Plugins/NewTest/gamemode.lua deleted file mode 100644 index 1e73b46fd..000000000 --- a/Plugins/NewTest/gamemode.lua +++ /dev/null @@ -1,10 +0,0 @@ -function HandleChangeGMCommand( Split, Player ) - if( #Split ~= 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /gm [GameMode (0|1)]" ) - return true - end - - Player:SetGameMode(Split[2]) - - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/gotoworld.lua b/Plugins/NewTest/gotoworld.lua deleted file mode 100644 index d5113b667..000000000 --- a/Plugins/NewTest/gotoworld.lua +++ /dev/null @@ -1,15 +0,0 @@ -function HandleGotoWorldCommand( Split, Player ) - if( #Split ~= 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /gotoworld [WorldName]" ) - return true - end - - if( Player:MoveToWorld(Split[2]) == false ) then - Player:SendMessage( cChatColor.Green .. "Could not move to world '" .. Split[2] .. "'!" ) - return true - end - - - Player:SendMessage( cChatColor.Green .. "Moved successfully to '" .. Split[2] .. "'! :D" ) - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/help.lua b/Plugins/NewTest/help.lua deleted file mode 100644 index 02ef25ebd..000000000 --- a/Plugins/NewTest/help.lua +++ /dev/null @@ -1,54 +0,0 @@ -function HandleHelpCommand( Split, Player ) - local PluginManager = cRoot:Get():GetPluginManager() - - local LinesPerPage = 9 - local CurrentPage = 1 - local CurrentLine = 0 - - if( #Split == 2 ) then - CurrentPage = tonumber(Split[2]) - end - - local Pages = {} - - local PluginList = PluginManager:GetAllPlugins() - for i, Plugin in ipairs( PluginList ) do - local Commands = Plugin:GetCommands() - for i, v in ipairs( Commands ) do - if( Player:HasPermission( v.Permission ) ) then - local PageNum = math.floor( CurrentLine/LinesPerPage )+1 - if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page - - if( Pages[ PageNum ].ShownName ~= Plugin:GetName() and SHOW_PLUGIN_NAMES == true ) then - if( CurrentLine == LinesPerPage * PageNum -1 ) then -- Don't add if it's the last line of the page, it looks silly - -- Add it to the next page instead - CurrentLine = CurrentLine+1 - PageNum = math.floor( CurrentLine/LinesPerPage )+1 - - if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page - table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() ) - else - Pages[ PageNum ].ShownName = Plugin:GetName() - table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() ) - end - CurrentLine = CurrentLine+1 - PageNum = math.floor( CurrentLine/LinesPerPage )+1 - if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page - end - local Message = cChatColor.Blue .. v.Command .. v.Description; - table.insert( Pages[ PageNum ], Message ) - CurrentLine = CurrentLine+1 - end - end - end - - Player:SendMessage( cChatColor.Purple .. "- All commands - " .. cChatColor.Gold .. "[Page " .. (CurrentPage) .."/"..#Pages.."]" ) - - if( Pages[CurrentPage] ~= nil ) then - for i, v in ipairs(Pages[CurrentPage]) do - Player:SendMessage( v ) - end - end - - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/item.lua b/Plugins/NewTest/item.lua deleted file mode 100644 index 942fa8ce6..000000000 --- a/Plugins/NewTest/item.lua +++ /dev/null @@ -1,65 +0,0 @@ -function HandleItemCommand( Split, Player ) - if( #Split ~= 2 and #Split ~=3 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /item [ItemID/Name:Dmg] " ) - return true - end - - local FoundItem = false - - local ItemSyntax = Split[2] -- Contains item string with optional metadata - local ItemData = StringSplit( Split[2], ":" ) - - -- Default item values - local ItemID = 0 - local ItemMeta = 0 - local ItemAmount = 1 - - if( #ItemData > 0 ) then - ItemID = ItemData[1] - end - - if( tonumber(ItemID) ~= nil ) then -- Definitely a number - ItemID = tonumber(ItemID) - if( IsValidItem( ItemID ) ) then - FoundItem = true - end - end - - if( FoundItem == false ) then - if ( HAVE_ITEM_NAMES == true ) then - local Item = ItemsTable[ ItemID ] - if( Item ~= nil ) then - ItemID = Item.m_ItemID - ItemMeta = Item.m_ItemHealth - FoundItem = true - end - end - end - - -- Override metadata from item in list, if metadata was given - if( #ItemData > 1 and tonumber( ItemData[2] ) ~= nil ) then -- Metadata is given, and is a number - ItemMeta = tonumber( ItemData[2] ) - end - - if( FoundItem == false ) then - Player:SendMessage( cChatColor.Green .. "Invalid Item ID / Name !" ) - return true - end - - if( #Split == 3 ) then - ItemAmount = tonumber( Split[3] ) - if( ItemAmount == nil or ItemAmount < 1 or ItemAmount > 512 ) then - Player:SendMessage( cChatColor.Green .. "Invalid Amount !" ) - return true - end - end - - local NewItem = cItem( ItemID, ItemAmount, ItemMeta ) - if( Player:GetInventory():AddItem( NewItem ) == true ) then - Player:SendMessage( cChatColor.Green .. "There you go !" ) - LOG("Gave " .. Player:GetName() .. " " .. ItemAmount .. " times " .. ItemID .. ":" .. ItemMeta) - else - Player:SendMessage( cChatColor.Green .. "Not enough space in inventory !" ) - end - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/kick.lua b/Plugins/NewTest/kick.lua deleted file mode 100644 index ff4f8a705..000000000 --- a/Plugins/NewTest/kick.lua +++ /dev/null @@ -1,27 +0,0 @@ -function HandleKickCommand( Split, Player ) - if( #Split < 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /kick [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 kicked" - if( #Split > 2 ) then - Reason = table.concat(Split, " ", 3) - 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/Plugins/NewTest/main.lua b/Plugins/NewTest/main.lua deleted file mode 100644 index 3dfa3f2f1..000000000 --- a/Plugins/NewTest/main.lua +++ /dev/null @@ -1,132 +0,0 @@ ----- Some settings ----- -SHOW_PLUGIN_NAMES = true -- If true, plugin name will be shown before commands - -- This is overwritten in the Initialize() function ------------------------- - --- Global variables -PLUGIN = {} -- Reference to own plugin object -BannedPlayersIni = {} -WhiteListIni = {} -ItemsTable = {} - -function Initialize( Plugin ) - PLUGIN = Plugin - - Plugin:SetName( "NewCore" ) - Plugin:SetVersion( 8 ) - - PluginManager = cRoot:Get():GetPluginManager() - PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_PLAYER_JOIN ) - PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_LOGIN ) - PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_BLOCK_PLACE ) - PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_KILLED ) - - Plugin:AddCommand("/help", " - [Page] Show this message", "core.help") - Plugin:AddCommand("/pluginlist", " - Show list of plugins", "core.pluginlist") - Plugin:AddCommand("/tp", " - [Player] - Teleport yourself to a player", "core.teleport") - Plugin:AddCommand("/item", " - [ItemID/Name] - Spawn an item for yourself", "core.item") - Plugin:AddCommand("/list", " - Shows list of connected players", "core.playerlist") - Plugin:AddCommand("/motd", " - Show message of the day", "core.motd") - Plugin:AddCommand("/reload", " - Reload all plugins", "core.reload") - Plugin:AddCommand("/time", " - [Day/Night] - Sets the time of day", "core.time") - Plugin:AddCommand("/spawn", " - Return to the spawn", "core.spawn") - Plugin:AddCommand("/kick", " - [Player] - Kick a player", "core.kick") - Plugin:AddCommand("/ban", " - [Player] - Ban a player", "core.ban") - Plugin:AddCommand("/unban", " - [Player] - Unban a player", "core.unban") - Plugin:AddCommand("/top", " - Teleport yourself to the top most block", "core.top") - Plugin:AddCommand("/gm", " - [Gamemode (0|1)] - Change your gamemode", "core.changegm") - Plugin:AddCommand("/gotoworld", " - Move to a different world!", "core.gotoworld") - - Plugin:BindCommand( "/help", "core.help", HandleHelpCommand ) - Plugin:BindCommand( "/pluginlist", "core.pluginlist", HandlePluginListCommand ) - Plugin:BindCommand( "/tp", "core.teleport", HandleTPCommand ) - Plugin:BindCommand( "/item", "core.item", HandleItemCommand ) - Plugin:BindCommand( "/i", "core.item", HandleItemCommand ) - Plugin:BindCommand( "/list", "core.playerlist", HandlePlayerListCommand ) - Plugin:BindCommand( "/who", "core.playerlist", HandlePlayerListCommand ) - Plugin:BindCommand( "/playerlist", "core.playerlist", HandlePlayerListCommand ) - Plugin:BindCommand( "/motd", "core.motd", HandleMOTDCommand ) - Plugin:BindCommand( "/reload", "core.reload", HandleReloadCommand ) - Plugin:BindCommand( "/time", "core.time", HandleTimeCommand ) - Plugin:BindCommand( "/spawn", "core.spawn", HandleSpawnCommand ) - Plugin:BindCommand( "/home", "core.spawn", HandleSpawnCommand ) - Plugin:BindCommand( "/kick", "core.kick", HandleKickCommand ) - Plugin:BindCommand( "/ban", "core.ban", HandleBanCommand ) - Plugin:BindCommand( "/unban", "core.unban", HandleUnbanCommand ) - Plugin:BindCommand( "/top", "core.top", HandleTopCommand ) - Plugin:BindCommand( "/gm", "core.changegm", HandleChangeGMCommand ) - Plugin:BindCommand( "/gotoworld", "core.gotoworld", HandleGotoWorldCommand ) - - - local IniFile = cIniFile("settings.ini") - if ( IniFile:ReadFile() == true ) then - SHOW_PLUGIN_NAMES = IniFile:GetValueB("HelpPlugin", "ShowPluginNames", true ) - end - - local itemsINI = cIniFile("items.ini") - if ( itemsINI:ReadFile() == true ) then - local KeyID = itemsINI:FindKey('Items') - - LOGINFO("Core: loaded " .. itemsINI:GetNumValues( KeyID ) .. " item names.") - - for i = 0, itemsINI:GetNumValues('Items') do - local ItemName = itemsINI:GetValueName( KeyID, i ) - local ItemSyntax = itemsINI:GetValue(KeyID, i, "0") - - local ItemData = StringSplit(ItemSyntax, ":") -- [1] = ID, [2] = perhaps meta/dmg - --LOGINFO( "#ItemData: " .. #ItemData ) - if( #ItemData > 0 ) then - --LOGINFO("ItemData[0]: "..ItemData[1]) - local ItemID = tonumber( ItemData[1] ) - if( ItemID > 0 ) then - local ItemMeta = 0 - if( #ItemData > 1 ) then - ItemMeta = tonumber( ItemData[2] ) - end - ItemsTable[ ItemName ] = cItem( ItemID, 1, ItemMeta ) - LOGINFO("Got item: " .. ItemName .. "-> " .. ItemsTable[ ItemName ].m_ItemID ..":" .. ItemsTable[ ItemName ].m_ItemHealth ) - end - end - end - - HAVE_ITEM_NAMES = true - end - - -- Load whitelist, and add default values and stuff - WhiteListIni = cIniFile("whitelist.ini") - if ( WhiteListIni:ReadFile() == true ) then - if( WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false) == true ) then - if( WhiteListIni:GetNumValues("WhiteList") > 0 ) then - LOGINFO("Core: loaded " .. WhiteListIni:GetNumValues('WhiteList') .. " whitelisted players.") - else - LOGWARN("WARNING: WhiteList is on, but there are no people in the whitelist!") - end - end - else - WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", false ) - WhiteListIni:SetValue("WhiteList", "", "") -- So it adds an empty header - WhiteListIni:DeleteValue("WhiteList", "") -- And remove the value - WhiteListIni:KeyComment("WhiteList", "PlayerName=1") - if( WhiteListIni:WriteFile() == false ) then - LOGWARN("WARNING: Could not write to whitelist.ini") - end - end - - -- Load banned players, and add default values and stuff - BannedPlayersIni = cIniFile("banned.ini") - if ( BannedPlayersIni:ReadFile() == true ) then - if( BannedPlayersIni:GetNumValues("Banned") > 0 ) then - LOGINFO("Core: loaded " .. BannedPlayersIni:GetNumValues("Banned") .. " banned players.") - end - else - BannedPlayersIni:SetValue("Banned", "", "") -- So it adds an empty header - BannedPlayersIni:DeleteValue("Banned", "") -- And remove the value - BannedPlayersIni:KeyComment("Banned", "PlayerName=1") - if( BannedPlayersIni:WriteFile() == false ) then - LOGWARN("WARNING: Could not write to banned.ini") - end - end - - LOG( "Initialized " .. Plugin:GetName() .. " v." .. Plugin:GetVersion() ) - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/motd.lua b/Plugins/NewTest/motd.lua deleted file mode 100644 index 49cdcecad..000000000 --- a/Plugins/NewTest/motd.lua +++ /dev/null @@ -1,10 +0,0 @@ -function HandleMOTDCommand( Split, Player ) - ShowMOTDTo( Player ) - return true -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 .. "Type /help for all commands" ); -end \ No newline at end of file diff --git a/Plugins/NewTest/onblockplace.lua b/Plugins/NewTest/onblockplace.lua deleted file mode 100644 index ba75bf5c2..000000000 --- a/Plugins/NewTest/onblockplace.lua +++ /dev/null @@ -1,60 +0,0 @@ -function OnBlockPlace( Block, Player ) - - -- dont check if the direction is in the air - if Block.m_Direction ~= -1 then - - local X = Block.m_PosX - local Y = Block.m_PosY - local Z = Block.m_PosZ - X, Y, Z = AddDirection( X, Y, Z, Block.m_Direction ) - if( Y >= 128 or Y < 0 ) then - return true - end - - local collision = false - local World = Player:GetWorld() - local PlayerList = World:GetAllPlayers() - - -- check if a player occupies the placement location - for i, Player in ipairs( PlayerList ) do - - -- drop the decimals, we only care about the full block X,Y,Z - local PlayerX = math.floor(Player:GetPosX(), 0) - local PlayerY = math.floor(Player:GetPosY(), 0) - local PlayerZ = math.floor(Player:GetPosZ(), 0) - - local BlockX = Block.m_PosX - local BlockY = Block.m_PosY - local BlockZ = Block.m_PosZ - - -- player height is 2 blocks, so we check the position and then offset it up one - -- so they can't place a block on there face - - if Block.m_Direction == 0 then if PlayerY == BlockY-2 and PlayerX == BlockX and PlayerZ == BlockZ then collision = true end end - if Block.m_Direction == 1 then if PlayerY == BlockY+1 and PlayerX == BlockX and PlayerZ == BlockZ then collision = true end end - - if Block.m_Direction == 2 then if PlayerY == BlockY and PlayerX == BlockX and PlayerZ == BlockZ-1 then collision = true end end - if Block.m_Direction == 2 then if PlayerY+1 == BlockY and PlayerX == BlockX and PlayerZ == BlockZ-1 then collision = true end end - - if Block.m_Direction == 3 then if PlayerY == BlockY and PlayerX == BlockX and PlayerZ == BlockZ+1 then collision = true end end - if Block.m_Direction == 3 then if PlayerY+1 == BlockY and PlayerX == BlockX and PlayerZ == BlockZ+1 then collision = true end end - - if Block.m_Direction == 4 then if PlayerY == BlockY and PlayerX == BlockX-1 and PlayerZ == BlockZ then collision = true end end - if Block.m_Direction == 4 then if PlayerY+1 == BlockY and PlayerX == BlockX-1 and PlayerZ == BlockZ then collision = true end end - - if Block.m_Direction == 5 then if PlayerY == BlockY and PlayerX == BlockX+1 and PlayerZ == BlockZ then collision = true end end - if Block.m_Direction == 5 then if PlayerY+1 == BlockY and PlayerX == BlockX+1 and PlayerZ == BlockZ then collision = true end end - - end - - if collision then - return true - else - return false - end - - end - - return false - -end \ No newline at end of file diff --git a/Plugins/NewTest/onkilled.lua b/Plugins/NewTest/onkilled.lua deleted file mode 100644 index a8a92f667..000000000 --- a/Plugins/NewTest/onkilled.lua +++ /dev/null @@ -1,24 +0,0 @@ -function OnKilled( Killed, Killer ) - if( Killer == nil ) then - local KilledPlayer = tolua.cast( Killed, "cPlayer") - if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then - return false - end - - local Server = cRoot:Get():GetServer() - Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " died" ) - else - local KilledPlayer = tolua.cast( Killed, "cPlayer") - if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then - return false - end - local KillerPlayer = tolua.cast( Killer, "cPlayer") - if( not KillerPlayer:IsA("cPlayer") or KillerPlayer == nil ) then - return false - end - - local Server = cRoot:Get():GetServer() - Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " was killed by " .. KillerPlayer:GetName() .. "!" ) - end - return false -end \ No newline at end of file diff --git a/Plugins/NewTest/onlogin.lua b/Plugins/NewTest/onlogin.lua deleted file mode 100644 index a706f8024..000000000 --- a/Plugins/NewTest/onlogin.lua +++ /dev/null @@ -1,20 +0,0 @@ -function OnLogin( PacketData ) - if( PacketData.m_Username ~= "" ) then - if( BannedPlayersIni:GetValueB("Banned", PacketData.m_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!") - 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 - 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." ) - return true -- Deny access to the server - end - end - end - - return false -end \ No newline at end of file diff --git a/Plugins/NewTest/onplayerjoin.lua b/Plugins/NewTest/onplayerjoin.lua deleted file mode 100644 index e8263f608..000000000 --- a/Plugins/NewTest/onplayerjoin.lua +++ /dev/null @@ -1,4 +0,0 @@ -function OnPlayerJoin( Player ) - ShowMOTDTo( Player ) - return false -end \ No newline at end of file diff --git a/Plugins/NewTest/playerlist.lua b/Plugins/NewTest/playerlist.lua deleted file mode 100644 index c120f068f..000000000 --- a/Plugins/NewTest/playerlist.lua +++ /dev/null @@ -1,16 +0,0 @@ -function HandlePlayerListCommand( Split, Player ) - local World = Player:GetWorld() - local PlayerList = World:GetAllPlayers() - - local Message = cChatColor.Green .. "Connected players: (".. cChatColor.White.. #PlayerList .. cChatColor.Green .. ")" - Player:SendMessage( Message ) - - local PlayerTable = {} - for i, TempPlayer in ipairs( PlayerList ) do - local PlayerName = TempPlayer:GetName() - table.insert(PlayerTable, PlayerName ) - end - - Player:SendMessage( table.concat(PlayerTable, " ") ) - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/pluginlist.lua b/Plugins/NewTest/pluginlist.lua deleted file mode 100644 index 6cb767868..000000000 --- a/Plugins/NewTest/pluginlist.lua +++ /dev/null @@ -1,13 +0,0 @@ -function HandlePluginListCommand( Split, Player ) - local PluginManager = cRoot:Get():GetPluginManager() - local PluginList = PluginManager:GetAllPlugins() - - local PluginTable = {} - for i, Plugin in ipairs( PluginList ) do - table.insert(PluginTable, Plugin:GetName() ) - end - - Player:SendMessage( cChatColor.Green .. "Loaded plugins:" ) - Player:SendMessage( cChatColor.Gold .. table.concat(PluginTable, cChatColor.Gold.." ") ) - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/reload.lua b/Plugins/NewTest/reload.lua deleted file mode 100644 index e2b338ba1..000000000 --- a/Plugins/NewTest/reload.lua +++ /dev/null @@ -1,6 +0,0 @@ -function HandleReloadCommand( Split, Player ) - Server = cRoot:Get():GetServer() - Server:SendMessage( cChatColor.Green .. "Reloading all plugins." ) - cRoot:Get():GetPluginManager():ReloadPlugins() - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/spawn.lua b/Plugins/NewTest/spawn.lua deleted file mode 100644 index 73034d9cf..000000000 --- a/Plugins/NewTest/spawn.lua +++ /dev/null @@ -1,6 +0,0 @@ -function HandleSpawnCommand( Split, Player ) - World = Player:GetWorld() - Player:TeleportTo( World:GetSpawnX(), World:GetSpawnY(), World:GetSpawnZ() ) - LOGINFO( Player:GetName() .. " returned to spawn." ) - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/teleport.lua b/Plugins/NewTest/teleport.lua deleted file mode 100644 index 9fffec9a2..000000000 --- a/Plugins/NewTest/teleport.lua +++ /dev/null @@ -1,18 +0,0 @@ -function HandleTPCommand( Split, Player ) - if( #Split ~= 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" ) - return true - end - local World = Player:GetWorld() - local OtherPlayer = World:GetPlayer( Split[2] ) - if( OtherPlayer == nil ) then - Player:SendMessage( cChatColor.Green .. "Can't find player " .. Split[2] ) - elseif( OtherPlayer == Player ) then - Player:SendMessage( cChatColor.Green .. "Already there :)" ) - else - Player:TeleportTo( OtherPlayer ) - Player:SendMessage( cChatColor.Green .. "You teleported to "..OtherPlayer:GetName().."!" ) - OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" ) - end - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/time.lua b/Plugins/NewTest/time.lua deleted file mode 100644 index 425d69e6a..000000000 --- a/Plugins/NewTest/time.lua +++ /dev/null @@ -1,18 +0,0 @@ -function HandleTimeCommand( Split, Player ) - if( #Split ~= 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /time [Day/Night]" ) - return true; - end - - local Server = cRoot:Get():GetServer() - if( string.upper( Split[2] ) == "DAY") then - Player:GetWorld():SetWorldTime( 0 ) - Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Day.") - elseif( string.upper( Split[2] ) == "NIGHT") then - Player:GetWorld():SetWorldTime( 12000 + 1000 ) - Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Night.") - else - Player:SendMessage( cChatColor.Green .. "Usage: /time [Day/Night]" ) - end - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/top.lua b/Plugins/NewTest/top.lua deleted file mode 100644 index 0f7a8f95f..000000000 --- a/Plugins/NewTest/top.lua +++ /dev/null @@ -1,11 +0,0 @@ -function HandleTopCommand( Split, Player ) - local World = Player:GetWorld() - - local PlayerPos = Player:GetPosition() - local Height = World:GetHeight( math.floor(PlayerPos.x), math.floor(PlayerPos.z) ) - - Player:TeleportTo( PlayerPos.x, Height+1, PlayerPos.z ) - Player:SendMessage("Teleported to the top block") - - return true -end \ No newline at end of file diff --git a/Plugins/NewTest/unban.lua b/Plugins/NewTest/unban.lua deleted file mode 100644 index 9defbe323..000000000 --- a/Plugins/NewTest/unban.lua +++ /dev/null @@ -1,20 +0,0 @@ -function HandleUnbanCommand( Split, Player ) - if( #Split < 2 ) then - Player:SendMessage( cChatColor.Green .. "Usage: /unban [Player]" ) - return true - end - - if( BannedPlayersIni:GetValueB("Banned", Split[2], false) == false ) then - Player:SendMessage( cChatColor.Green .. Split[2] .. " is not banned!" ) - return true - end - - BannedPlayersIni:SetValueB("Banned", Split[2], false, false) - BannedPlayersIni:WriteFile() - - local Server = cRoot:Get():GetServer() - LOGINFO( Player:GetName() .. " is unbanning " .. Split[2] ) - Server:SendMessage( "Unbanning " .. Split[2] ) - - return true -end \ No newline at end of file -- cgit v1.2.3