43 lines
1000 B
Lua
43 lines
1000 B
Lua
local api = {}
|
|
local MODNAME = minetest.get_current_modname()
|
|
rawset(_G, MODNAME, api)
|
|
|
|
local files = {
|
|
"bullet.lua",
|
|
"ammo.lua"
|
|
}
|
|
|
|
for _, file in ipairs(files) do
|
|
dofile(minetest.get_modpath(MODNAME).."/"..file)
|
|
end
|
|
|
|
local checking = {}
|
|
-- Returns false if the automatic timer is currently running, returns true otherwise
|
|
function api.enable_automatic(fire_interval, itemstack, user)
|
|
local pname = user:get_player_name()
|
|
|
|
if checking[pname] then return false end
|
|
|
|
checking[pname] = minetest.after(fire_interval, function()
|
|
checking[pname] = nil
|
|
|
|
if user and user:get_player_control().LMB then
|
|
local wielded = user:get_wielded_item()
|
|
|
|
if wielded:get_name() == itemstack:get_name() then
|
|
user:set_wielded_item(itemstack:get_definition().on_use(wielded, user, {type = "nothing"}) or wielded)
|
|
end
|
|
end
|
|
end)
|
|
|
|
return true
|
|
end
|
|
|
|
minetest.register_on_leaveplayer(function(player)
|
|
local pname = player:get_player_name()
|
|
|
|
if checking[pname] then
|
|
checking[pname]:cancel()
|
|
end
|
|
end)
|