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
Array = function(m, v)
	if not v then v = 0 end
	local t = {}
	for i = 1, m do
		t[i] = v
	end
	return t
end
MagicMenu = {
	[1] = {
		Name = "Spear",
		Action = function(id)
			msg2(id, "You used Spear!")
		end,
		WaitTime = 15
	},
}
MagicMenuData = Array(32, Array(#MagicMenu, 0))
ConstructMenu = function(id)
	local S = "Magic,"
	for i = 1, #MagicMenu do
		S = S..(MagicMenuData[id][i] <= 0 and MagicMenu[i].Name.."|every "..MagicMenu[i].WaitTime or "("..MagicMenu[i].Name.."|every "..MagicMenu[i].WaitTime..")")..","
	end
	return menu(id, S:sub(1,#S - 1))
end
addhook("menu", "HookMenu")
HookMenu = function(id, title, b)
	if title == "Magic" then
		if b ~= "x" and b ~= 0 then
			MagicMenu[b].Action(id)
			MagicMenuData[id][b] = MagicMenu[b].WaitTime
		end
	end
end
addhook("serveraction", "HookServerAction")
HookServerAction = function(id, a)
	if a == 3 then ConstructMenu(id) end
end
addhook("second", "HookSecond")
HookSecond = function()
	for _, id in pairs(player(0, "tableliving")) do
		local t = MagicMenuData[id]
		for i = 1, #t do
			if t[i] > 0 then
				MagicMenuData[id][i] = MagicMenuData[id][i] - 1
				if MagicMenuData[id][i] == 0 then
					msg2(id, MagicMenu[i].Name.." is now available!")
				end
			end
		end
	end
end