summaryrefslogtreecommitdiffstats
path: root/Plugins/MagicCarpet/plugin.lua
blob: 22604c9d963a3fb414192cb3b86d559e4dfa1d34 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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