Unequip lava boots in movement protected zones
parent
3316abda62
commit
78c11ee4f9
128
tags.lua
128
tags.lua
|
@ -12,11 +12,11 @@ function elidragon.get_area_with_tag(name, tag)
|
|||
end
|
||||
end
|
||||
minetest.register_chatcommand("add_tag", {
|
||||
description = "Add tag to area",
|
||||
param = "<area> <tag> <param>",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
if not param then
|
||||
description = "Add tag to area",
|
||||
param = "<area> <tag> <param>",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
if not param then
|
||||
minetest.chat_send_player(name, "Invalid Usage")
|
||||
return
|
||||
end
|
||||
|
@ -25,61 +25,86 @@ minetest.register_chatcommand("add_tag", {
|
|||
tag = param:split(" ")[2],
|
||||
param = param:split(" ")[3],
|
||||
}
|
||||
if not area.name or not area.tag then
|
||||
minetest.chat_send_player(name, "Invalid Usage")
|
||||
return
|
||||
end
|
||||
if not area.param then
|
||||
if not area.name or not area.tag then
|
||||
minetest.chat_send_player(name, "Invalid Usage")
|
||||
return
|
||||
end
|
||||
if not area.param then
|
||||
area.param = ""
|
||||
end
|
||||
elidragon.savedata.areas[#elidragon.savedata.areas + 1] = area
|
||||
minetest.chat_send_player(name, "tag added. ")
|
||||
end
|
||||
elidragon.savedata.areas[#elidragon.savedata.areas + 1] = area
|
||||
minetest.chat_send_player(name, "tag added. ")
|
||||
end
|
||||
})
|
||||
minetest.register_chatcommand("remove_tag", {
|
||||
description = "Remove tag from area",
|
||||
param = "<area> <tag>",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
param = param or ""
|
||||
description = "Remove tag from area",
|
||||
param = "<area> <tag>",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
param = param or ""
|
||||
for i, area in pairs(elidragon.savedata.areas) do
|
||||
if area.name == param:split(" ")[1] and (area.tag == param:split(" ")[2] or not param:split(" ")[2]) then
|
||||
table.remove(elidragon.savedata.areas, i)
|
||||
minetest.chat_send_player(name, "Tag removed.")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
minetest.register_chatcommand("print_tags", {
|
||||
description = "Print area tags",
|
||||
param = "[<area>]",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
description = "Print area tags",
|
||||
param = "[<area>]",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
for _, area in pairs(elidragon.savedata.areas) do
|
||||
if param == "" or param == area.name then
|
||||
minetest.chat_send_player(name, area.name .. " | " .. area.tag .. " | " .. area.param)
|
||||
end
|
||||
if param == "" or param == area.name then
|
||||
minetest.chat_send_player(name, area.name .. " | " .. area.tag .. " | " .. area.param)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
function elidragon.limit_tick()
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
local name = player:get_player_name()
|
||||
local rank = elidragon.get_rank(player).name
|
||||
local privs = minetest.get_player_privs(name)
|
||||
local has_fly = rank ~= "player"
|
||||
if rank ~= "admin" then
|
||||
if rank ~= "admin" then
|
||||
privs.tp_tpc = nil
|
||||
end
|
||||
local teleport_area = elidragon.get_area_with_tag(name, "teleport")
|
||||
if teleport_area then
|
||||
local teleport_area = elidragon.get_area_with_tag(name, "teleport")
|
||||
if teleport_area then
|
||||
elidragon.teleport(name, teleport_area.param)
|
||||
end
|
||||
end
|
||||
if elidragon.get_area_with_tag(name, "movement") and rank ~= "admin" and rank ~= "moderator" and rank ~= "dev" and rank ~= "helper" then
|
||||
privs.fly = nil
|
||||
privs.fast = nil
|
||||
privs.home = nil
|
||||
privs.tp = nil
|
||||
privs.home = nil
|
||||
privs.tp = nil
|
||||
|
||||
if rawget(_G, "armor") then
|
||||
local inv = player:get_inventory()
|
||||
local _, armor_inv = armor:get_valid_player(player, "[elidragon.limit_tick]")
|
||||
for i, stack in pairs(armor_inv:get_list("armor")) do
|
||||
if stack:get_name() == "lavastuff:boots" then
|
||||
local left = inv:add_item("main", stack)
|
||||
inv:set_stack("armor", i, left)
|
||||
armor_inv:set_stack("armor", i, left)
|
||||
armor:set_player_armor(player)
|
||||
|
||||
local is_emtpy = left:is_empty()
|
||||
minetest.chat_send_player(name, minetest.colorize("#FF002C", is_emtpy
|
||||
and "Uneqipping your lava boots automatically"
|
||||
or "Please take off your lava boots in this zone!"
|
||||
))
|
||||
|
||||
if not is_emtpy then
|
||||
elidragon.skyblock.spawn_player(player)
|
||||
end
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
privs.home = true
|
||||
privs.tp = true
|
||||
|
@ -87,19 +112,18 @@ function elidragon.limit_tick()
|
|||
privs.fly = true
|
||||
privs.fast = true
|
||||
end
|
||||
end
|
||||
local kill_area = elidragon.get_area_with_tag(name, "kill")
|
||||
if elidragon.get_area_with_tag(name, "kill") then
|
||||
player:set_pos({x = 0, y = -1000, z = 0})
|
||||
player:set_hp(0)
|
||||
if kill_area.param ~= "" then
|
||||
elidragon.message(kill_area.param:gsub("%%", " "):gsub("@player", name))
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
local kill_area = elidragon.get_area_with_tag(name, "kill")
|
||||
if kill_area then
|
||||
player:set_pos({x = 0, y = -1000, z = 0})
|
||||
player:set_hp(0)
|
||||
if kill_area.param ~= "" then
|
||||
elidragon.message(kill_area.param:gsub("%%", " "):gsub("@player", name))
|
||||
end
|
||||
end
|
||||
minetest.set_player_privs(name, privs)
|
||||
end
|
||||
minetest.after(0.5, elidragon.limit_tick)
|
||||
end
|
||||
minetest.after(0.5, elidragon.limit_tick)
|
||||
end
|
||||
minetest.after(0, elidragon.limit_tick)
|
||||
minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
|
||||
|
@ -109,18 +133,18 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch,
|
|||
end
|
||||
end)
|
||||
minetest.register_on_player_hpchange(function(player, hp_change)
|
||||
local name = player:get_player_name()
|
||||
local name = player:get_player_name()
|
||||
if elidragon.get_area_with_tag(name, "no_damage") and hp_change < 0 then
|
||||
return 0
|
||||
return 0
|
||||
end
|
||||
return hp_change
|
||||
return hp_change
|
||||
end, true)
|
||||
minetest.register_on_player_hpchange(function(player, hp_change)
|
||||
local name = player:get_player_name()
|
||||
local teleport_area = elidragon.get_area_with_tag(name, "teleport_on_damage")
|
||||
local teleport_area = elidragon.get_area_with_tag(name, "teleport_on_damage")
|
||||
if teleport_area and hp_change < 0 then
|
||||
elidragon.teleport(name, teleport_area.param)
|
||||
return 0
|
||||
return 0
|
||||
end
|
||||
return hp_change
|
||||
return hp_change
|
||||
end, true)
|
||||
|
|
81
warps.lua
81
warps.lua
|
@ -1,44 +1,43 @@
|
|||
elidragon.warps = {
|
||||
{
|
||||
name = "shop",
|
||||
desc = "Shop",
|
||||
pos = {x = 0, y = 1000.5, z = 0}
|
||||
},
|
||||
{
|
||||
name = "hub",
|
||||
desc = "Hub",
|
||||
pos = {x = 10071, y = 10003, z = 9951},
|
||||
},
|
||||
{
|
||||
name = "pvp",
|
||||
desc = "Pvp Area",
|
||||
shop = {
|
||||
desc = "Shop",
|
||||
pos = {x = 0, y = 1000.5, z = 0}
|
||||
},
|
||||
hub = {
|
||||
desc = "Hub",
|
||||
pos = {x = 10071, y = 10003, z = 9951},
|
||||
},
|
||||
pvp = {
|
||||
desc = "PvP Area",
|
||||
pos = {x = 20025, y = 1003, z = 1025},
|
||||
},
|
||||
{
|
||||
name = "spawn",
|
||||
desc = "Spawn",
|
||||
pos = {x = -21, y = 10202.5, z = -5},
|
||||
restricted = true
|
||||
},
|
||||
{
|
||||
name = "jump",
|
||||
desc = "Jumping area",
|
||||
pos = {x = 12286, y = 12347, z = 12556},
|
||||
},
|
||||
}
|
||||
for _, warp in pairs(elidragon.warps) do
|
||||
local desc = "Warp to " .. warp.desc
|
||||
if warp.restricted then
|
||||
desc = desc .. " [only for staff members]"
|
||||
end
|
||||
minetest.register_chatcommand(warp.name, {
|
||||
description = desc,
|
||||
privs = {teleport = warp.restricted},
|
||||
func = function(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:set_pos(warp.pos)
|
||||
end
|
||||
end
|
||||
})
|
||||
},
|
||||
spawn = {
|
||||
desc = "Spawn",
|
||||
pos = {x = -21, y = 10202.5, z = -5},
|
||||
restricted = true
|
||||
},
|
||||
jump = {
|
||||
desc = "Jumping area",
|
||||
pos = {x = 12286, y = 12347, z = 12556},
|
||||
},
|
||||
}
|
||||
|
||||
for warp_name, warp in pairs(elidragon.warps) do
|
||||
local desc = "Warp to " .. warp.desc
|
||||
|
||||
if warp.restricted then
|
||||
desc = desc .. " [only for staff members]"
|
||||
end
|
||||
|
||||
minetest.register_chatcommand(warp_name, {
|
||||
description = desc,
|
||||
privs = {teleport = warp.restricted},
|
||||
func = function(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
|
||||
if player then
|
||||
player:set_pos(warp.pos)
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue