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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
-- CommandHandlers.lua
-- Defines the individual command handlers
function InitializeCommandHandlers()
local PlgMgr = cRoot:Get():GetPluginManager();
for idx, Cmd in ipairs(CommandReg()) do
PlgMgr:BindCommand(Cmd[2], Cmd[3], Cmd[1], Cmd[4]);
end
end
--- Handles the ProtAdd command
function HandleAddArea(a_Split, a_Player)
-- Command syntax: ProtAdd username1 [username2] [username3] ...
if (#a_Split < 2) then
a_Player:SendMessage("Not enough parameters. Expected a list of usernames.");
return true;
end
-- Get the cuboid that the player had selected
local CmdState = GetCommandStateForPlayer(a_Player);
if (CmdState == nil) then
a_Player:SendMessage("Cannot add area, internal plugin error (CmdState == nil)");
return true;
end
local Cuboid = CmdState:GetCurrentCuboid();
if (Cuboid == nil) then
a_Player:SendMessage("Cannot add area, internal plugin error (Cuboid == nil)");
return true;
end
-- If the cuboid hasn't been assigned, give the player an error message and bail out
if (
(Cuboid.p1.x == 0) and (Cuboid.p1.y == 0) and (Cuboid.p1.z == 0) and
(Cuboid.p1.x == 0) and (Cuboid.p1.y == 0) and (Cuboid.p1.z == 0)
) then
a_Player:SendMessage("Cannot add area, no area has been selected. Use a ProtWand lclk / rclk to select area first");
return true;
end
-- Put all allowed players into a table:
AllowedNames = {};
for i = 2, #a_Split do
table.insert(AllowedNames, a_Split[i]);
end
-- Add the area to the storage
g_Storage:AddArea(Cuboid, a_Player:GetName(), AllowedNames);
a_Player:SendMessage("Area added");
-- TODO: Reload all currently logged in players
return true;
end
function HandleAddAreaCoords(a_Split, a_Player)
-- TODO
end
function HandleAddAreaUser(a_Split, a_Player)
-- TODO
end
function HandleDelArea(a_Split, a_Player)
-- TODO
end
function HandleGiveWand(a_Split, a_Player)
local NumGiven = a_Player:GetInventory():AddItem(cConfig:GetWandItem());
if (NumGiven == 1) then
a_Player:SendMessage("Wand given");
else
a_Player:SendMessage("Cannot give wand, no space in your inventory");
end
return true;
end
function HandleListAreas(a_Split, a_Player)
-- TODO
end
function HandleRemoveUser(a_Split, a_Player)
-- TODO
end
function HandleRemoveUserAll(a_Split, a_Player)
-- TODO
end
|