guns4d-cd2025/infinite_ammo.lua
2024-03-27 20:08:33 -07:00

61 lines
2.3 KiB
Lua

--register the infinite ammo privelage.
minetest.register_privilege(Guns4d.config.infinite_ammo_priv, {
description = "allows player to have infinite ammo.",
give_to_singleplayer = false,
on_grant = function(name, granter_name)
local handler = Guns4d.players[name]
handler.infinite_ammo = true
minetest.chat_send_player(name, "infinite ammo enabled by "..(granter_name or "unknown"))
if handler.gun then
handler.gun:update_image_and_text_meta()
end
end,
on_revoke = function(name, revoker_name)
local handler = Guns4d.players[name]
handler.infinite_ammo = false
minetest.chat_send_player(name, "infinite ammo disabled by "..(revoker_name or "unknown"))
if handler.gun then
handler.gun:update_image_and_text_meta()
end
end,
})
minetest.register_chatcommand("ammoinf", {
parameters = "player",
description = "quick toggle infinite ammo",
privs = {privs=true},
func = function(caller, arg)
local trgt
local args = string.split(arg, " ")
local set_arg
if #args > 1 then
trgt = args[1]
set_arg = args[2]
else
set_arg = args[1]
trgt = caller
end
local handler = Guns4d.players[trgt]
local set_to
if set_arg then
if set_arg == "true" then
set_to = true
elseif set_arg ~= "false" then --if it's false we leave it as nil
minetest.chat_send_player(caller, "cannot toggle ammoinf, invalid value:"..set_arg)
return
end
else
set_to = not handler.infinite_ammo --if it's false set it to nil, otherwise set it to true.
if set_to == false then set_to = nil end
end
local privs = minetest.get_player_privs(trgt)
privs[Guns4d.config.infinite_ammo_priv] = set_to
minetest.set_player_privs(trgt, privs)
minetest.chat_send_player(caller, "infinite ammo "..((set_to and "granted to") or "revoked from") .." user '"..trgt.."'")
handler.infinite_ammo = set_to or false
if handler.gun then
handler.gun:update_image_and_text_meta()
handler.player:set_wielded_item(handler.gun.itemstack)
end
end
})