80 lines
2.2 KiB
Lua
80 lines
2.2 KiB
Lua
subgames_spectate = {}
|
|
subgames_spectate={time=0,armor=minetest.get_modpath("3d_armor")}
|
|
|
|
-- Add the spectator mode.
|
|
function subgames.disappear(player) -- As ObjectRef
|
|
local name = player:get_player_name()
|
|
if not subgames_spectate[name] then
|
|
player:set_nametag_attributes({color = {a = 0, r = 255, g = 255, b = 255}})
|
|
subgames_spectate[name]=true
|
|
player:set_properties({
|
|
visual_size = {x=0, y=0},
|
|
makes_footstep_sound = false,
|
|
pointable = false
|
|
})
|
|
end
|
|
end
|
|
|
|
function subgames.undisappear(player) -- As ObjectRef
|
|
local name = player:get_player_name()
|
|
if subgames_spectate[name] then
|
|
player:set_nametag_attributes({color = {a = 255, r = 255, g = 255, b = 255}})
|
|
player:set_properties({
|
|
visual_size = {x=1, y=1},
|
|
makes_footstep_sound = true,
|
|
pointable = true
|
|
})
|
|
subgames_spectate[name]=nil
|
|
end
|
|
end
|
|
|
|
function subgames.spectate(player)
|
|
local name = player:get_player_name()
|
|
if not subgames_spectate[name] then
|
|
subgames.disappear(player)
|
|
local privs = minetest.get_player_privs(name)
|
|
privs.interact = nil
|
|
privs.fly = true
|
|
privs.fast = true
|
|
privs.noclip = true
|
|
minetest.set_player_privs(name, privs)
|
|
end
|
|
end
|
|
|
|
function subgames.unspectate(player)
|
|
local name = player:get_player_name()
|
|
if subgames_spectate[name] then
|
|
subgames.undisappear(player)
|
|
local privs = minetest.get_player_privs(name)
|
|
privs.interact = true
|
|
privs.fly = nil
|
|
privs.fast = nil
|
|
privs.noclip = nil
|
|
minetest.set_player_privs(name, privs)
|
|
end
|
|
end
|
|
|
|
function subgames.add_armor(player, stack1, stack2, stack3, stack4, stack5)
|
|
if stack1 then
|
|
armor:set_inventory_stack(player, 1, stack1)
|
|
armor:run_callbacks("on_equip", player, 1, stack1)
|
|
end
|
|
if stack2 then
|
|
armor:set_inventory_stack(player, 2, stack2)
|
|
armor:run_callbacks("on_equip", player, 2, stack2)
|
|
end
|
|
if stack3 then
|
|
armor:set_inventory_stack(player, 3, stack3)
|
|
armor:run_callbacks("on_equip", player, 3, stack3)
|
|
end
|
|
if stack4 then
|
|
armor:set_inventory_stack(player, 4, stack4)
|
|
armor:run_callbacks("on_equip", player, 4, stack4)
|
|
end
|
|
if stack5 then
|
|
armor:set_inventory_stack(player, 5, stack5)
|
|
armor:run_callbacks("on_equip", player, 5, stack5)
|
|
end
|
|
armor:set_player_armor(player)
|
|
end
|