]> git.lizzy.rs Git - elidragon.git/blobdiff - tags.lua
Merge pull request #4 from HimbeerserverDE/master
[elidragon.git] / tags.lua
index 19db90d8ba5ef23aa704b0fed9e26edd8503faae..384fee1ba64bd27da0f05f924354dd940ab05c33 100755 (executable)
--- a/tags.lua
+++ b/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(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
@@ -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)