|
|
|
minetest.register_privilege("arena", {
|
|
|
|
description = "Player is involved in an arena battle.",
|
|
|
|
give_to_singleplayer= false,
|
|
|
|
})
|
|
|
|
|
|
|
|
local drop = function(pos, itemstack)
|
|
|
|
local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
|
|
|
|
if obj then
|
|
|
|
obj:set_velocity({
|
|
|
|
x = math.random(-10, 10) / 9,
|
|
|
|
y = 5,
|
|
|
|
z = math.random(-10, 10) / 9,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function creative_regions.drop_everything(player, drop_bones)
|
|
|
|
local player_inventory_lists = { "main", "craft" }
|
|
|
|
local player_inv = player:get_inventory()
|
|
|
|
local pos = player:get_pos()
|
|
|
|
|
|
|
|
--minetest.find_node_near(pos, radius, nodenames)
|
|
|
|
|
|
|
|
for _, list_name in ipairs(player_inventory_lists) do
|
|
|
|
for i = 1, player_inv:get_size(list_name) do
|
|
|
|
drop(pos, player_inv:get_stack(list_name, i))
|
|
|
|
end
|
|
|
|
player_inv:set_list(list_name, {})
|
|
|
|
end
|
|
|
|
if drop_bones then
|
|
|
|
drop(pos, ItemStack("bones:bones"))
|
|
|
|
-- minetest.item_drop(itemstack, player, pos)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
minetest.register_on_dieplayer(function(player)
|
|
|
|
-- minetest.chat_send_all(player:get_player_name().." lost.")
|
|
|
|
local player_name = player:get_player_name()
|
|
|
|
if minetest.check_player_privs(player_name, {arena=true}) then
|
|
|
|
creative_regions.drop_everything(player, true)
|
|
|
|
local privs = minetest.get_player_privs(player_name)
|
|
|
|
privs["arena"] = nil
|
|
|
|
minetest.set_player_privs(player_name, privs)
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
|
|
|
|
minetest.register_on_leaveplayer(function(player)
|
|
|
|
-- minetest.chat_send_all(player:get_player_name().." has left this awesome game.")
|
|
|
|
local player_name = player:get_player_name()
|
|
|
|
if minetest.check_player_privs(player_name, {arena=true}) then
|
|
|
|
creative_regions.drop_everything(player, true)
|
|
|
|
local privs = minetest.get_player_privs(player_name)
|
|
|
|
privs["arena"] = nil
|
|
|
|
minetest.set_player_privs(player_name, privs)
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
|
|
|
|
if minetest.get_modpath("areas") then
|
|
|
|
|
|
|
|
minetest.register_node("creative_regions:protector_arena", {
|
|
|
|
description = "Arena protector",
|
|
|
|
tiles = {"creative_regions_protector_arena.png"},
|
|
|
|
tiles = {"default_cobble.png^default_tool_diamondsword.png"},
|
|
|
|
is_ground_content = true,
|
|
|
|
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1},
|
|
|
|
light_source = 1,
|
|
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
|
|
return creative_regions.protector_set_area_privs(pos, placer, itemstack, pointed_thing, "-creative, -fast, -fly, -teleport, +arena", "Arena Protector")
|
|
|
|
end,
|
|
|
|
can_dig = creative_regions.protector_can_dig,
|
|
|
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|
|
|
return creative_regions.protector_remove_area_privs(pos, oldnode, oldmetadata, digger, "Arena protector")
|
|
|
|
end
|
|
|
|
})
|
|
|
|
|
|
|
|
end
|