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
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(name).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
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)
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)