]> git.lizzy.rs Git - skycraft.git/blob - request.lua
More ajustments...
[skycraft.git] / request.lua
1 function skycraft.register_request_system(sysname, action, progressive, preposition, func)
2         local action_capital = (action:sub(1, 1)):upper() .. action:sub(2)
3
4         local request_list = {}
5
6         minetest.register_on_leaveplayer(function(name)
7                 request_list[name] = nil
8         end)
9
10         minetest.register_chatcommand(sysname, {
11                 description = "Request to " .. action .. " " .. preposition .. " another player",
12                 params = "<player>",
13                 privs = {skycraft = true},
14                 func = function(name, param)
15                         if param == "" then
16                                 return false, "Usage: /" .. sysname .. " <player>"
17                         end
18                         if not minetest.get_player_by_name(param) then
19                                 return false, "There is no player by that name. Keep in mind this is case-sensitive, and the player must be online"
20                         end
21                         request_list[param] = name
22                         minetest.after(60, function()
23                                 if request_list[param] then
24                                         minetest.chat_send_player(name, "Request timed-out.")
25                                         minetest.chat_send_player(param, "Request timed-out.")
26                                         request_list[param] = nil
27                                 end
28                         end)
29                         minetest.chat_send_player(param, name .. " is requesting to " .. action .. " " .. preposition .. " you. /" .. sysname .. "accept to accept")
30                         return true, action_capital .. " request sent! It will timeout in 60 seconds."
31                 end
32         })
33
34         minetest.register_chatcommand(sysname .. "accept", {
35                 description = "Accept " .. action .. " request from another player",
36                 privs = {skycraft = true},
37                 func = function(name)
38                         if not minetest.get_player_by_name(name) then return false, "You have to be online to use this command" end
39                         local other = request_list[name]
40                         if not other then return false, "Usage: /" .. sysname .. "accept allows you to accept " .. action .. " requests sent to you by other players" end
41                         if not minetest.get_player_by_name(other) then return false, other .. " doesn't exist, or just disconnected/left (by timeout)." end
42                         minetest.chat_send_player(other, action_capital .. " request accepted!")
43                         func(name, other)
44                         request_list[name] = nil
45                         return true, other .. " is " .. progressive .. " " .. preposition .. " you."
46                 end
47         })
48
49         minetest.register_chatcommand(sysname .. "deny", {
50                 description = "Deny " .. action .." request from another player",
51                 privs = {skycraft = true},
52                 func = function(name)
53                         local other = request_list[name]
54                         if not other then return false, "Usage: /" .. sysname .. "deny allows you to deny " .. action .. " requests sent to you by other players." end
55                         minetest.chat_send_player(other, action_capital .. " request denied.")
56                         request_list[name] = nil
57                         return false, "You denied the " .. action .. " request " .. other .. " sent you."
58                 end
59         })
60  
61 end