From 28ff03fcfe727f827c00078c4fa0319cb3c03421 Mon Sep 17 00:00:00 2001 From: faketruth Date: Wed, 1 Feb 2012 19:19:51 +0000 Subject: Added all current hooks to the new plugin structure. Converted MagicCarpet to the new plugin structure When you fall of the MagicCarpet you teleport back up :D git-svn-id: http://mc-server.googlecode.com/svn/trunk@220 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- Plugins/MagicCarpet/plugin.lua | 65 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Plugins/MagicCarpet/plugin.lua (limited to 'Plugins/MagicCarpet/plugin.lua') diff --git a/Plugins/MagicCarpet/plugin.lua b/Plugins/MagicCarpet/plugin.lua new file mode 100644 index 000000000..22604c9d9 --- /dev/null +++ b/Plugins/MagicCarpet/plugin.lua @@ -0,0 +1,65 @@ +local PLUGIN = {} +local Carpets = {} + +function Initialize( Plugin ) + PLUGIN = Plugin + + Plugin:SetName( "MagicCarpet" ) + Plugin:SetVersion( 1 ) + + PluginManager = cRoot:Get():GetPluginManager() + PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_PLAYER_MOVE) + PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_DISCONNECT) + + Plugin:AddCommand("/mc", " - Spawns a magical carpet!", "magiccarpet") + Plugin:BindCommand( "/mc", "magiccarpet", HandleCarpetCommand ) + + Log( "Initialized " .. Plugin:GetName() .. " v." .. Plugin:GetVersion() ) + return true +end + +function OnDisable() + Log( PLUGIN:GetName() .. " v." .. PLUGIN:GetVersion() .. " is shutting down..." ) + for i, Carpet in pairs( Carpets ) do + Carpet:remove() + end +end + +function HandleCarpetCommand( Split, Player ) + Carpet = Carpets[ Player ] + if( Carpet == nil ) then + Carpets[ Player ] = cCarpet:new() + Player:SendMessage("You're on a magic carpet!" ) + else + Carpet:remove() + Carpets[ Player ] = nil + Player:SendMessage("The carpet vanished!" ) + end + + return true +end + +function OnDisconnect( Reason, Player ) + local Carpet = Carpets[ Player ] + if( Carpet ~= nil ) then + Carpet:remove() + end + Carpets[ Player ] = nil +end + +function OnPlayerMove( Player ) + local Carpet = Carpets[ Player ] + if( Carpet == nil ) then + return + end + + if( Player:GetPitch() == 90 ) then + Carpet:moveTo( cLocation:new( Player:GetPosX(), Player:GetPosY()-1, Player:GetPosZ() ) ) + else + if( Player:GetPosY() < Carpet:getY() ) then + LOGINFO("Fell tru mc!") + Player:TeleportTo( Player:GetPosX(), Carpet:getY(), Player:GetPosZ() ) + end + Carpet:moveTo( cLocation:new( Player:GetPosX(), Player:GetPosY(), Player:GetPosZ() ) ) + end +end \ No newline at end of file -- cgit v1.2.3