12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- controls = {}
- controls.players = {}
- controls.registered_on_press = {}
- function controls.register_on_press(func)
- controls.registered_on_press[#controls.registered_on_press+1] = func
- end
- controls.registered_on_release = {}
- function controls.register_on_release(func)
- controls.registered_on_release[#controls.registered_on_release+1] = func
- end
- controls.registered_on_hold = {}
- function controls.register_on_hold(func)
- controls.registered_on_hold[#controls.registered_on_hold+1]=func
- end
- minetest.register_on_joinplayer(function(player)
- local name = player:get_player_name()
- controls.players[name] = {
- up={false},
- down={false},
- left={false},
- right={false},
- jump={false},
- aux1={false},
- sneak={false},
- dig={false},
- place={false},
- LMB={false},
- RMB={false},
- zoom = {false},
- }
- end)
- minetest.register_on_leaveplayer(function(player)
- local name = player:get_player_name()
- controls.players[name] = nil
- end)
- minetest.register_globalstep(function(dtime)
- for _, player in pairs(minetest.get_connected_players()) do
- local player_name = player:get_player_name()
- local player_controls = player:get_player_control()
- for cname, cbool in pairs(player_controls) do
- --Press a key
- if cbool==true and controls.players[player_name][cname][1]==false then
- for _, func in pairs(controls.registered_on_press) do
- func(player, cname)
- end
- controls.players[player_name][cname] = {true, os.clock()}
- elseif cbool==true and controls.players[player_name][cname][1]==true then
- for _, func in pairs(controls.registered_on_hold) do
- func(player, cname, os.clock()-controls.players[player_name][cname][2])
- end
- --Release a key
- elseif cbool==false and controls.players[player_name][cname][1]==true then
- for _, func in pairs(controls.registered_on_release) do
- func(player, cname, os.clock()-controls.players[player_name][cname][2])
- end
- controls.players[player_name][cname] = {false}
- end
- end
- end
- end)
|