4 controls
.registered_on_press
= {}
5 function controls
.register_on_press(func
)
6 controls
.registered_on_press
[#controls
.registered_on_press
+1] = func
9 controls
.registered_on_release
= {}
10 function controls
.register_on_release(func
)
11 controls
.registered_on_release
[#controls
.registered_on_release
+1] = func
14 controls
.registered_on_hold
= {}
15 function controls
.register_on_hold(func
)
16 controls
.registered_on_hold
[#controls
.registered_on_hold
+1]=func
19 minetest
.register_on_joinplayer(function(player
)
20 local name
= player
:get_player_name()
21 controls
.players
[name
] = {
34 minetest
.register_on_leaveplayer(function(player
)
35 local name
= player
:get_player_name()
36 controls
.players
[name
] = nil
39 minetest
.register_globalstep(function(dtime
)
40 for _
, player
in pairs(minetest
.get_connected_players()) do
41 local player_name
= player
:get_player_name()
42 local player_controls
= player
:get_player_control()
43 for cname
, cbool
in pairs(player_controls
) do
45 if cbool
==true and controls
.players
[player_name
][cname
][1]==false then
46 for _
, func
in pairs(controls
.registered_on_press
) do
49 controls
.players
[player_name
][cname
] = {true, os
.clock()}
50 elseif cbool
==true and controls
.players
[player_name
][cname
][1]==true then
51 for _
, func
in pairs(controls
.registered_on_hold
) do
52 func(player
, cname
, os
.clock()-controls
.players
[player_name
][cname
][2])
55 elseif cbool
==false and controls
.players
[player_name
][cname
][1]==true then
56 for _
, func
in pairs(controls
.registered_on_release
) do
57 func(player
, cname
, os
.clock()-controls
.players
[player_name
][cname
][2])
59 controls
.players
[player_name
][cname
] = {false}