Compare commits
12 Commits
3316abda62
...
1ada61ec15
Author | SHA1 | Date |
---|---|---|
Elias Fleckenstein | 1ada61ec15 | |
Elias Fleckenstein | 89ea11bf18 | |
HimbeerserverDE | 13629ea939 | |
Elias Fleckenstein | f63cec28d1 | |
Elias Fleckenstein | 78c11ee4f9 | |
HimbeerserverDE | 1c81893933 | |
HimbeerserverDE | 7804033d92 | |
HimbeerserverDE | 5ab42008f5 | |
HimbeerserverDE | 62d142a897 | |
HimbeerserverDE | cb88534fed | |
Emojigit | ab7e81de7f | |
HimbeerserverDE | ca57da96a8 |
|
@ -26,7 +26,7 @@ minetest.register_chatcommand("message", {
|
|||
})
|
||||
minetest.register_chatcommand("colormsg", {
|
||||
params = "[[<player>-]color>-]<message>",
|
||||
description = "Send a message as the server. [deprecated, replaced my the message command]",
|
||||
description = "Send a message as the server. [deprecated, replaced by the message command]",
|
||||
privs = {server = true},
|
||||
func = function(name, param)
|
||||
elidragon.message(param)
|
||||
|
|
40
ranks.lua
40
ranks.lua
|
@ -43,6 +43,8 @@ elidragon.ranks = {
|
|||
},
|
||||
}
|
||||
|
||||
local s = minetest.get_mod_storage()
|
||||
local deferred = minetest.deserialize(s:get_string("deferred_rank_changes"))
|
||||
|
||||
function elidragon.get_rank(player)
|
||||
local rank = player:get_meta():get_string("elidragon:rank")
|
||||
|
@ -104,16 +106,7 @@ minetest.register_chatcommand("rank", {
|
|||
description = "Set a player's rank (admin|developer|moderator|helper|builder|vip|player)",
|
||||
privs = {privs = true},
|
||||
func = function(name, param)
|
||||
local target = param:split(" ")[1] or ""
|
||||
local rank = param:split(" ")[2] or ""
|
||||
local target_ref = minetest.get_player_by_name(target)
|
||||
local rank_ref = elidragon.get_rank_by_name(rank)
|
||||
if not rank_ref then
|
||||
return false, "Invalid Rank: " .. rank
|
||||
elseif not target_ref then
|
||||
return false, "Player not found"
|
||||
else
|
||||
target_ref:get_meta():set_string("elidragon:rank", rank)
|
||||
local set_rank = function()
|
||||
local privs = {}
|
||||
for _, r in pairs(elidragon.ranks) do
|
||||
for k, v in pairs(r.privs) do
|
||||
|
@ -125,7 +118,34 @@ minetest.register_chatcommand("rank", {
|
|||
end
|
||||
minetest.set_player_privs(target, privs)
|
||||
minetest.chat_send_all(target .. " is now a " .. minetest.colorize(rank_ref.color, rank_ref.name))
|
||||
end
|
||||
|
||||
local target = param:split(" ")[1] or ""
|
||||
local rank = param:split(" ")[2] or ""
|
||||
local target_ref = minetest.get_player_by_name(target)
|
||||
local rank_ref = elidragon.get_rank_by_name(rank)
|
||||
if not rank_ref then
|
||||
return false, "Invalid Rank: " .. rank
|
||||
elseif not target_ref then
|
||||
deferred[target] = rank
|
||||
set_rank()
|
||||
else
|
||||
target_ref:get_meta():set_string("elidragon:rank", rank)
|
||||
set_rank()
|
||||
elidragon.update_nametag(target_ref)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local name = player:get_player_name()
|
||||
if deferred[name] then
|
||||
player:get_meta():set_string("elidragon:rank", deferred[name])
|
||||
elidragon.update_nametag(player)
|
||||
deferred[name] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_shutdown(function()
|
||||
s:set_string("deferred_rank_changes", minetest.serialize(deferred))
|
||||
end)
|
||||
|
|
19
skyblock.lua
19
skyblock.lua
|
@ -308,6 +308,8 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
-- commands
|
||||
|
||||
minetest.register_chatcommand("island", {
|
||||
params = "",
|
||||
description = "Teleport to your Island",
|
||||
|
@ -317,3 +319,20 @@ minetest.register_chatcommand("island", {
|
|||
elidragon.skyblock.spawn_player(player)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("set_skyblock_spawn", {
|
||||
params = "<name> <x> <y> <z>",
|
||||
description = "Set new skyblock spawn for <name>",
|
||||
privs = {server = true},
|
||||
func = function(sender, param)
|
||||
local name = param:split(" ")[1]
|
||||
local x = tonumber(param:split(" ")[2])
|
||||
local y = tonumber(param:split(" ")[3])
|
||||
local z = tonumber(param:split(" ")[4])
|
||||
if name and x and y and z and minetest.get_player_by_name(name) then
|
||||
elidragon.skyblock.set_spawn(minetest.get_player_by_name(name), {x = x, y = y, z = z})
|
||||
else
|
||||
minetest.chat_send_player(sender, "Invalid usage or player not online")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
|
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