98 lines
2.0 KiB
Lua
98 lines
2.0 KiB
Lua
local timer = 0
|
|
|
|
local function add_priv_wear(player)
|
|
local inv = player:get_inventory()
|
|
if inv then
|
|
local list = inv:get_list("armor")
|
|
for index, stack in pairs(list) do
|
|
local name = stack:get_name()
|
|
local wear = minetest.get_item_group(name, "privkit_use")
|
|
if wear > 0 then
|
|
armor:damage(player, index, stack, wear)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
minetest.register_tool("testaxi:boots", {
|
|
description = ('Flying Boots'),
|
|
inventory_image = "boots_inv.png",
|
|
groups = {armor_feet=1, privkit_use=8000},
|
|
armor_groups = {fleshy=5},
|
|
on_equip = function(itemstack, user)
|
|
|
|
local pos = user:get_pos()
|
|
local name = user:get_player_name()
|
|
|
|
-- are we already invisible?
|
|
if invisibility[name] then
|
|
|
|
minetest.chat_send_player(name,
|
|
">>> You are already invisible!")
|
|
|
|
return itemstack
|
|
end
|
|
|
|
|
|
-- make player invisible
|
|
invisible(user, true)
|
|
|
|
|
|
|
|
-- display 10 second warning
|
|
minetest.after(effect_time - 10, function()
|
|
|
|
if invisibility[name]
|
|
and user:get_pos() then
|
|
|
|
minetest.chat_send_player(name,
|
|
">>> You have 10 seconds before invisibility wears off!")
|
|
end
|
|
end)
|
|
|
|
-- make player visible 5 minutes later
|
|
minetest.after(effect_time, function()
|
|
|
|
if invisibility[name]
|
|
and user:get_pos() then
|
|
|
|
-- show aready hidden player
|
|
invisible(user, nil)
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- minetest.register_privilege("privkit", {
|
|
-- description = "Player privileges determined by privkit armor",
|
|
-- give_to_singleplayer = false,
|
|
--})
|
|
|
|
minetest.register_on_joinplayer(function(player)
|
|
local name = player:get_player_name()
|
|
local privs = minetest.get_player_privs(name)
|
|
if privs.privkit then
|
|
privs.fly = nil
|
|
if not minetest.check_player_privs(player:get_player_name(),{ban = true})
|
|
then
|
|
minetest.set_player_privs(name, privs)
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- apply wear once every 8 seconds
|
|
minetest.register_globalstep(function(dtime)
|
|
timer = timer + dtime
|
|
if timer > 8 then
|
|
local players = minetest.get_connected_players()
|
|
for _, player in pairs(players) do
|
|
add_priv_wear(player)
|
|
end
|
|
timer = 0
|
|
end
|
|
end)
|