+ Build permission setting
+ Removing drops when resetting a map + removeitem and removetreasure hand cmds + clearmapstable debug cmd + Translations corrections and cmd messages improved + Code cleaningmaster
parent
6a17c99ca6
commit
15245337a2
31
SETTINGS.lua
31
SETTINGS.lua
|
@ -1,6 +1,6 @@
|
|||
--[[
|
||||
! WARNING !
|
||||
Don't change the variables' names if you don't know what you're doing
|
||||
Don't change the variables' names if you don't know what you're doing!
|
||||
|
||||
(skywars_settings.variable_name = value)
|
||||
]]
|
||||
|
@ -20,7 +20,8 @@ skywars_settings.hub_spawn_point = {x = -177, y = 8.5, z = 247}
|
|||
-- The time between the loading state and the start of the match.
|
||||
skywars_settings.loading_time = 10
|
||||
|
||||
-- The time to wait before the loading phase starts. It gets triggered when the minimium amount of players has been reached to start the queue.
|
||||
-- The time to wait before the loading phase starts.
|
||||
-- It gets triggered when the minimium amount of players has been reached to start the queue.
|
||||
skywars_settings.queue_waiting_time = 10
|
||||
|
||||
-- The time between the end of the match and the respawn at the hub.
|
||||
|
@ -29,15 +30,19 @@ skywars_settings.celebration_time = 5
|
|||
-- What's going to appear in most of the lines printed by murder.
|
||||
skywars_settings.prefix = "Skywars > "
|
||||
|
||||
-- The players walking speed when ther're playing a match
|
||||
-- The players walking speed when ther're playing a match.
|
||||
skywars_settings.player_speed = 1.5
|
||||
|
||||
-- The match duration in seconds
|
||||
-- The match duration in seconds.
|
||||
skywars_settings.timer = 600
|
||||
|
||||
-- true = on/false = off (case sensitive)
|
||||
-- true = on/false = off (case sensitive).
|
||||
skywars_settings.fall_damage_disabled = true
|
||||
|
||||
-- The name of the permission to allow players to break blocks
|
||||
-- (if there's none just set it to "").
|
||||
skywars_settings.build_permission = "build"
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -53,30 +58,30 @@ For X and Y, 0.0 and 1.0 represent opposite edges of the game window, for exampl
|
|||
|
||||
|
||||
|
||||
-- The texture background for the kit menu
|
||||
-- The texture background for the kit menu.
|
||||
skywars_settings.hud__kit_background = "Kits.png"
|
||||
|
||||
-- The x position of the first buttons row
|
||||
-- The x position of the first buttons row.
|
||||
skywars_settings.starting_x = 1.7
|
||||
|
||||
-- The y position of the first buttons row
|
||||
-- The y position of the first buttons row.
|
||||
skywars_settings.starting_y = 6.9
|
||||
|
||||
-- The horizontal distance betweek buttons in real coordinates
|
||||
-- The horizontal distance betweek buttons in real coordinates.
|
||||
skywars_settings.distance_x = 3.4
|
||||
|
||||
-- The vertical distance betweek buttons in real coordinates
|
||||
-- The vertical distance betweek buttons in real coordinates.
|
||||
skywars_settings.distance_y = 3
|
||||
|
||||
-- The amount of buttons in a row
|
||||
-- The amount of buttons in a row.
|
||||
skywars_settings.buttons_per_row = 3
|
||||
|
||||
-- The buttons width in real coordinates,
|
||||
-- a unit of measurement which is roughly around 64 pixels, but
|
||||
-- varies based on the screen density and scaling settings of the client
|
||||
-- varies based on the screen density and scaling settings of the client.
|
||||
skywars_settings.buttons_width = 2
|
||||
|
||||
-- The buttons height in real coordinates
|
||||
-- The buttons height in real coordinates.
|
||||
skywars_settings.buttons_height = 1.8
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,45 @@
|
|||
local function add_privs(pl_name)
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
-- preventing players with noclip to fall when placing blocks
|
||||
if privs.noclip then
|
||||
player:get_meta():set_int("noclip", 2)
|
||||
privs.noclip = nil
|
||||
else
|
||||
player:get_meta():set_int("noclip", 0)
|
||||
end
|
||||
|
||||
if skywars_settings.build_permission ~= "" then
|
||||
if privs[skywars_settings.build_permission] then
|
||||
player:get_meta():set_int("build", 2)
|
||||
else
|
||||
player:get_meta():set_int("build", 0)
|
||||
end
|
||||
privs[skywars_settings.build_permission] = true
|
||||
end
|
||||
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function remove_privs(pl_name)
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
privs.noclip = true
|
||||
end
|
||||
if player:get_meta():get_int("build") ~= 2 then
|
||||
privs[skywars_settings.build_permission] = nil
|
||||
end
|
||||
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
||||
|
||||
|
||||
arena_lib.on_load("skywars", function(arena)
|
||||
skywars.reset_map(arena)
|
||||
minetest.after(skywars_settings.loading_time, function()
|
||||
|
@ -12,14 +54,6 @@ arena_lib.on_load("skywars", function(arena)
|
|||
local player = minetest.get_player_by_name(pl_name)
|
||||
local pl_pos = player:get_pos()
|
||||
|
||||
-- preventing players with noclip to fall when placing blocks
|
||||
if minetest.check_player_privs(pl_name, {noclip=true}) then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
player:get_meta():set_int("noclip", 2)
|
||||
privs.noclip = nil
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
||||
local function set_glass(relative_pos)
|
||||
local node_pos = vector.round(vector.add(player:get_pos(), relative_pos))
|
||||
|
||||
|
@ -32,6 +66,8 @@ arena_lib.on_load("skywars", function(arena)
|
|||
end
|
||||
end
|
||||
|
||||
add_privs(pl_name)
|
||||
|
||||
skywars.show_kit_selector(pl_name, arena)
|
||||
minetest.after(0.1, function()
|
||||
player:set_physics_override({gravity=0, jump=0})
|
||||
|
@ -75,12 +111,7 @@ arena_lib.on_celebration("skywars", function(arena, winner_name)
|
|||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = true
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
||||
remove_privs(pl_name)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
skywars.remove_armor(player)
|
||||
end
|
||||
|
@ -92,12 +123,7 @@ arena_lib.on_end("skywars", function(arena, players)
|
|||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = true
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
||||
remove_privs(pl_name)
|
||||
skywars.remove_armor(player)
|
||||
-- restore player's original speed
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
|
@ -121,11 +147,7 @@ arena_lib.on_death("skywars", function(arena, pl_name, reason)
|
|||
end
|
||||
end
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = true
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
remove_privs(pl_name)
|
||||
|
||||
skywars.remove_armor(player)
|
||||
arena_lib.remove_player_from_arena(pl_name, 1)
|
||||
|
@ -137,11 +159,7 @@ end)
|
|||
arena_lib.on_quit("skywars", function(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = true
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
remove_privs(pl_name)
|
||||
|
||||
skywars.update_players_counter(arena, false)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
|
@ -154,11 +172,7 @@ end)
|
|||
arena_lib.on_disconnect("skywars", function(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = true
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
remove_privs(pl_name)
|
||||
|
||||
skywars.update_players_counter(arena, false)
|
||||
skywars.remove_armor(player)
|
||||
|
@ -169,11 +183,7 @@ end)
|
|||
arena_lib.on_kick("skywars", function(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
if player:get_meta():get_int("noclip") == 2 then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = true
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
remove_privs(pl_name)
|
||||
|
||||
skywars.update_players_counter(arena, false)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
|
|
|
@ -1,3 +1,31 @@
|
|||
-- reordering the corner's position so that pos1 is smaller than pos2
|
||||
local function reorder_positions(pos1, pos2)
|
||||
local temp
|
||||
|
||||
if pos1.z > pos2.z then
|
||||
temp = pos1.z
|
||||
pos1.z = pos2.z
|
||||
pos2.z = temp
|
||||
end
|
||||
|
||||
if pos1.y > pos2.y then
|
||||
temp = pos1.y
|
||||
pos1.y = pos2.y
|
||||
pos2.y = temp
|
||||
end
|
||||
|
||||
if pos1.x > pos2.x then
|
||||
temp = pos1.x
|
||||
pos1.x = pos2.x
|
||||
pos2.x = temp
|
||||
end
|
||||
|
||||
return pos1, pos2
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function get_arena_by_pos(pos)
|
||||
for i, arena in pairs(arena_lib.mods["skywars"].arenas) do
|
||||
if arena.pos1.x == nil or arena.pos2.x == nil then goto continue end
|
||||
|
@ -19,9 +47,14 @@ local function save_block(arena, pos, node)
|
|||
local maps = skywars.load_maps()
|
||||
local serialized_pos = minetest.serialize(pos)
|
||||
|
||||
-- if the arena exists and this block has not been changed yet
|
||||
if arena and maps[serialized_pos] == nil then
|
||||
maps[serialized_pos] = node
|
||||
if not arena then return end
|
||||
if not maps then maps = {} end
|
||||
if not maps[arena.name] then maps[arena.name] = {} end
|
||||
if not maps[arena.name].blocks then maps[arena.name].blocks = {} end
|
||||
|
||||
-- if this block has not been changed yet
|
||||
if maps[arena.name].blocks[serialized_pos] == nil then
|
||||
maps[arena.name].blocks[serialized_pos] = node
|
||||
skywars.overwrite_maps(maps)
|
||||
end
|
||||
end
|
||||
|
@ -30,13 +63,29 @@ end
|
|||
|
||||
function skywars.reset_map(arena)
|
||||
local maps = skywars.load_maps()
|
||||
local pos1, pos2 = reorder_positions(arena.pos1, arena.pos2)
|
||||
local distance_from_center = vector.distance(pos1, pos2) / 2
|
||||
local map_center = {x = (pos1.x+pos2.x)/2, y = (pos1.y+pos2.y)/2, z = (pos1.z+pos2.z)/2}
|
||||
|
||||
if not maps or maps == "" then return end
|
||||
for serialized_pos, node in pairs(maps) do
|
||||
-- deleting drops
|
||||
for i, obj in pairs(minetest.get_objects_inside_radius(map_center, distance_from_center)) do
|
||||
if not obj:is_player() then
|
||||
local prop = obj:get_properties()
|
||||
if prop.automatic_rotate > 0 and ItemStack(prop.textures[1]):is_known() then
|
||||
obj:remove()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not maps or maps == "" or not maps[arena.name] or not maps[arena.name].blocks then
|
||||
return
|
||||
end
|
||||
|
||||
for serialized_pos, node in pairs(maps[arena.name].blocks) do
|
||||
local pos = minetest.deserialize(serialized_pos)
|
||||
minetest.add_node(pos, node)
|
||||
end
|
||||
maps = {}
|
||||
maps[arena.name].blocks = {}
|
||||
skywars.overwrite_maps(maps)
|
||||
end
|
||||
|
||||
|
@ -96,7 +145,6 @@ function minetest.set_node(pos, node)
|
|||
end
|
||||
|
||||
|
||||
|
||||
function minetest.add_node(pos, node)
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
|
|
307
commands.lua
307
commands.lua
|
@ -1,3 +1,25 @@
|
|||
local function arena_valid(arena_name, sender, is_property_changing)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) and is_property_changing then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return false
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", arena_name))
|
||||
return false
|
||||
elseif arena.enabled == true and is_property_changing then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
ChatCmdBuilder.new("skywars",
|
||||
function(cmd)
|
||||
cmd:sub("tutorial",
|
||||
|
@ -176,18 +198,8 @@ function(cmd)
|
|||
function(sender, arena_name, treasure_name, count, rarity, preciousness )
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
elseif count <= 0 then
|
||||
skywars.print_error(sender, skywars.T("Count has to be greater than 0!"))
|
||||
return
|
||||
|
@ -228,20 +240,9 @@ function(cmd)
|
|||
local treasure_name = minetest.get_player_by_name(sender):get_wielded_item():get_name()
|
||||
local count = minetest.get_player_by_name(sender):get_wielded_item():get_count()
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
end
|
||||
if arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
if rarity < 1 then
|
||||
skywars.print_error(sender, skywars.T("Rarity has to be greater than 0!"))
|
||||
return
|
||||
|
@ -269,23 +270,45 @@ function(cmd)
|
|||
))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("removetreasure hand :arena", function(sender, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = {true, false} -- the first is used to repeat the for until nothing is found
|
||||
local treasure_name = minetest.get_player_by_name(sender):get_wielded_item():get_name()
|
||||
|
||||
if treasure_name == "" then
|
||||
skywars.print_error(sender, skywars.T("Your hand is empty!"))
|
||||
return
|
||||
elseif not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
end
|
||||
|
||||
while found[1] do
|
||||
found[1] = false
|
||||
for i, treasure in pairs(arena.treasures) do
|
||||
if treasure.name == treasure_name then
|
||||
table.remove(arena.treasures, i)
|
||||
i = i-1
|
||||
found[1] = true
|
||||
found[2] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
|
||||
|
||||
if found[2] then skywars.print_msg(sender, skywars.T("@1 removed from @2!", treasure_name, arena_name))
|
||||
else skywars.print_error(sender, skywars.T("Treasure not found!")) end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("removetreasure :arena :treasure", function(sender, arena_name, treasure_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = {true, false} -- the first is used to repeat the for until nothing is found
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
while found[1] do
|
||||
|
@ -311,18 +334,8 @@ function(cmd)
|
|||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local treasure_name = ""
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
for i=1, #arena.treasures do
|
||||
|
@ -345,22 +358,13 @@ function(cmd)
|
|||
local id2, to_arena = arena_lib.get_arena_by_name("skywars", to)
|
||||
local found = false
|
||||
|
||||
|
||||
if from_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("First arena not found!"))
|
||||
if not arena_valid(from, sender) then
|
||||
return
|
||||
elseif to_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Second arena not found!"))
|
||||
elseif not arena_valid(to_arena, sender, true) then
|
||||
return
|
||||
elseif from_arena == to_arena then
|
||||
skywars.print_error(sender, skywars.T("The arenas must be different!"))
|
||||
return
|
||||
elseif to_arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if to_arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", to))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
to_arena.treasures = {}
|
||||
|
@ -378,20 +382,15 @@ function(cmd)
|
|||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender) then
|
||||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Treasures list:"))
|
||||
for i=1, #arena.treasures do
|
||||
local treasure = arena.treasures[i]
|
||||
skywars.print_msg(sender, "ID: " .. arena.treasures[i].id .. ".\n" ..
|
||||
skywars.T(
|
||||
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
|
||||
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
|
||||
treasure.name, treasure.rarity, treasure.preciousness, treasure.count
|
||||
) .. "\n\n"
|
||||
)
|
||||
|
@ -403,11 +402,7 @@ function(cmd)
|
|||
cmd:sub("searchtreasure :arena :treasure", function(sender, arena_name, treasure_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender) then
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -445,20 +440,9 @@ function(cmd)
|
|||
id = chest_id
|
||||
}
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
end
|
||||
if arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
if t_min <= 0 or t_max <= 0 then
|
||||
skywars.print_error(sender, skywars.T("The minimum or maximum amount of treasures has to be greater than 0!"))
|
||||
return
|
||||
|
@ -474,7 +458,10 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Chest added!"))
|
||||
skywars.print_msg(sender,
|
||||
skywars.T("Chest added with @1-@2 preciousness and @3-@4 treasures amount!",
|
||||
min_preciousness, max_preciousness, min_treasures_amount, max_treasures_amount)
|
||||
)
|
||||
table.insert(arena.chests, chest)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false)
|
||||
end)
|
||||
|
@ -507,20 +494,9 @@ function(cmd)
|
|||
id = chest_id
|
||||
}
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
end
|
||||
if arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
if t_min <= 0 or t_max <= 0 then
|
||||
skywars.print_error(sender, skywars.T("The minimum or maximum amount of treasures has to be greater than 0!"))
|
||||
return
|
||||
|
@ -536,7 +512,10 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Chest added!"))
|
||||
skywars.print_msg(sender,
|
||||
skywars.T("Chest added with @1-@2 preciousness and @3-@4 treasures amount!",
|
||||
min_preciousness, max_preciousness, t_min, t_max)
|
||||
)
|
||||
table.insert(arena.chests, chest)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false)
|
||||
end)
|
||||
|
@ -547,18 +526,22 @@ function(cmd)
|
|||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender) then
|
||||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Chest list:"))
|
||||
for i=1, #arena.chests do
|
||||
local chest_pos = tostring(arena.chests[i].pos.x) .. " " .. tostring(arena.chests[i].pos.y) .. " " .. tostring(arena.chests[i].pos.z)
|
||||
skywars.print_msg(sender, skywars.T("ID: @1 - POSITION: @2", arena.chests[i].id, chest_pos))
|
||||
local chest = arena.chests[i]
|
||||
local chest_pos = minetest.pos_to_string(chest.pos, 0)
|
||||
|
||||
skywars.print_msg(sender,
|
||||
skywars.T(
|
||||
"ID: @1 - Position: @2 @npreciousness: @3-@4 @ntreasures amount: @5-@6",
|
||||
chest.id, chest_pos, chest.min_preciousness, chest.max_preciousness,
|
||||
chest.min_treasures, chest.max_treasures
|
||||
) .. "\n\n"
|
||||
)
|
||||
end
|
||||
end)
|
||||
|
||||
|
@ -577,18 +560,8 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
for i=1, #arena.chests do
|
||||
|
@ -613,18 +586,8 @@ function(cmd)
|
|||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
for i=1, #arena.chests do
|
||||
|
@ -739,6 +702,41 @@ function(cmd)
|
|||
|
||||
|
||||
|
||||
cmd:sub("removeitem hand :kit",
|
||||
function(sender, kit_name)
|
||||
local kits = skywars.load_kits()
|
||||
local item_name = minetest.get_player_by_name(sender):get_wielded_item():get_name()
|
||||
local found = false
|
||||
|
||||
if kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
elseif ItemStack(item_name):is_known() == false then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", item_name))
|
||||
return
|
||||
elseif item_name == "" then
|
||||
skywars.print_error(sender, skywars.T("Your hand is empty!"))
|
||||
return
|
||||
end
|
||||
|
||||
for i=1, #kits[kit_name].items do
|
||||
if kits[kit_name].items[i].name == item_name then
|
||||
table.remove(kits[kit_name].items, i)
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
skywars.overwrite_kits(kits)
|
||||
|
||||
if found then
|
||||
skywars.print_msg(sender, skywars.T("@1 removed from @2!", item_name, kit_name))
|
||||
else
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", item_name))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("removeitem :kit :item",
|
||||
function(sender, kit_name, item_name)
|
||||
local kits = skywars.load_kits()
|
||||
|
@ -822,20 +820,9 @@ function(cmd)
|
|||
local kits = skywars.load_kits()
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
end
|
||||
if arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
if kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
|
@ -855,21 +842,9 @@ function(cmd)
|
|||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
skywars.print_error(sender, skywars.T("Nobody must be in the editor!"))
|
||||
return
|
||||
elseif arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
if not arena_valid(arena_name, sender, true) then
|
||||
return
|
||||
end
|
||||
if arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
end
|
||||
if kits[kit_name] == nil then
|
||||
elseif kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
end
|
||||
|
@ -895,22 +870,13 @@ function(cmd)
|
|||
local found = false
|
||||
|
||||
|
||||
if from_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("First arena not found!"))
|
||||
if not arena_valid(from, sender) then
|
||||
return
|
||||
elseif to_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Second arena not found!"))
|
||||
elseif not arena_valid(to, sender, true) then
|
||||
return
|
||||
elseif from_arena == to_arena then
|
||||
skywars.print_error(sender, skywars.T("The arenas must be different!"))
|
||||
return
|
||||
elseif to_arena.enabled == true then
|
||||
arena_lib.disable_arena(sender, "skywars", arena_name)
|
||||
|
||||
if to_arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", to))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
to_arena.kits = {}
|
||||
|
@ -981,15 +947,20 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
skywars.reset_map(arena)
|
||||
|
||||
if arena.enabled then
|
||||
skywars.reset_map(arena)
|
||||
skywars.print_msg(sender, skywars.T("@1 reset!", arena.name))
|
||||
else
|
||||
skywars.print_error(sender, skywars.T("@1 must be enabled!", arena_name))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("clearmapstable", function(sender)
|
||||
skywars.overwrite_maps({})
|
||||
skywars.print_msg(sender, skywars.T("Maps table reset!"))
|
||||
end)
|
||||
end, {
|
||||
|
||||
description = [[
|
||||
|
@ -1005,13 +976,15 @@ end, {
|
|||
- disable <arena name>
|
||||
|
||||
|
||||
Skywars commands:
|
||||
Skywars:
|
||||
|
||||
- tutorial
|
||||
- addtreasure <arena name> <item> <count> <rarity (min 1.0, max 10.0)>
|
||||
<preciousness>
|
||||
- addtreasure hand <arena name> <rarity (min 1.0, max 10.0)>
|
||||
<preciousness>
|
||||
- removetreasure <arena name> <treasure name>: remove all treasures with than name
|
||||
- removetreasure hand <arena name>
|
||||
- removetreasure id <arena name> <treasure id>
|
||||
- gettreasures <arena name>
|
||||
- searchtreasure <arena name> <treasure name>: shows all the treasures with that name
|
||||
|
@ -1032,12 +1005,18 @@ end, {
|
|||
- additem <kit name> <item> <count>
|
||||
- additem hand <kit name>
|
||||
- removeitem <kit name> <item>
|
||||
- removeitem hand <kit name>
|
||||
- arenakit add <arena> <kit name>
|
||||
- arenakit remove <arena> <kit name>
|
||||
- getkits
|
||||
- resetkit <kit name>
|
||||
- getitems <kit name>
|
||||
- copykits <arena1> <arena2>
|
||||
|
||||
|
||||
Debug:
|
||||
|
||||
- clearmapstable: clears the changed blocks table of each map without resetting them
|
||||
]],
|
||||
privs = { skywars_admin = true }
|
||||
})
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
# author(s): Giov4
|
||||
# reviewer(s):
|
||||
# textdomain: skywars
|
||||
# @n means "newline"
|
||||
# @<number> (@1, @2, ecc) is a value that the mod will pass at runtime
|
||||
|
||||
Arena not found!=Arena non trovata!
|
||||
Count has to be greater than 0!=La quantità deve essere maggiore di 0
|
||||
Rarity has to be greater than 0!=La rarità deve essere maggiore di 0!
|
||||
Rarity has to be smaller than 11!=La rarità deve essere minore di 11!
|
||||
@1 doesn't exist!=@1 non esiste!
|
||||
Your hand is empty!=La tua mano è vuota
|
||||
Your hand is empty!=La tua mano è vuota!
|
||||
Treasure not found!=Tesoro non trovato!
|
||||
The minimum or maximum amount of treasures has to be greater than 0!=Il numero minimo o massimo di tesori deve essere maggiore di 0!
|
||||
Treasures list:=Lista dei tesori:
|
||||
|
@ -16,28 +17,26 @@ First arena not found!=Prima arena non trovata/o!
|
|||
Second arena not found!=Seconda arena non trovata/p!
|
||||
@1 treasures have been copied to @2!=I tesori di @1 sono stati copiati in @2!
|
||||
The arenas must be different!=Le arene devono essere diverse!
|
||||
# @n means "newline"
|
||||
name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=nome: @1 @nrarità: @2 @npreziosità: @3 @nquantità: @4
|
||||
Chest added!=Cassa aggiunta!
|
||||
Chest added with @1-@2 preciousness and @3-@4 treasures amount!=Cassa aggiunta con @1-@2 di preziosità e @3-@4 quantità di tesori
|
||||
Chest removed!=Cassa rimossa!
|
||||
Chest not found!=Cassa non trovata!
|
||||
The chest already exists!=La cassa già esiste!
|
||||
Chest list:=Lista delle casse:
|
||||
You're not looking at anything!=Non stai guardando nulla!
|
||||
ID: @1 - POSITION: @2=ID: @1 - POSIZIONE: @2
|
||||
ID: @1 - Position: @2 @npreciousness: @3-@4 @ntreasures amount: @5-@6=ID: @1 - Posizione: @2 @npreziosità: @3-@4 @nquantità dei tesori: @5-@6
|
||||
Position saved!=Posizione salvata
|
||||
You didn't set the treasures!=Non hai impostato i tesori!
|
||||
You didn't set the chests!=Non hai impostato le chest!
|
||||
You didn't set the map corners!=Non hai impostato gli angoli della mappa!
|
||||
@1 must be disabled!=@1 deve essere disabilitata!
|
||||
@1 must be enabled!=@1 deve essere abilitata!
|
||||
Pos1 or pos2 are not set!=Pos1 o pos2 non sono impostate
|
||||
Pos1 or pos2 are not set!=Pos1 o pos2 non sono impostate!
|
||||
@1 was killed by @2=@1 è stato ucciso da @2
|
||||
@1 already exists!=@1 esiste già!
|
||||
@1 added to @2!=@1 aggiunto a @2
|
||||
x@1 @2 added to @3 with @4 rarity and @5 preciousness!=x@1 @2 aggiunto a @3 con rarità @4 e preziosità @5
|
||||
@1 removed from @2!=@1 rimosso da @2!
|
||||
Choose a kit=Scegli un kit
|
||||
Kit @1 created!=Kit @1 creato!
|
||||
Kit @1 deleted!=Kit @1 eliminato!
|
||||
Kits list:=Lista dei kit:
|
||||
|
@ -48,4 +47,5 @@ x@1 @2 added to @3!=x@1 @2 aggiunto a @3!
|
|||
@1 kits have been copied to @2!=I kit di @1 sono stati copiati in @2!
|
||||
Time is out, the match is over!=Tempo terminato, la partita è finita!
|
||||
Nobody=Nessuno
|
||||
Nobody must be in the editor!=Nessuno deve essere nell'editor
|
||||
Nobody must be in the editor!=Nessuno deve essere nell'editor!
|
||||
Maps table reset!=Tabella mappe resettata!
|
|
@ -2,8 +2,9 @@
|
|||
# author(s):
|
||||
# reviewer(s):
|
||||
# textdomain: skywars
|
||||
# @n means "newline"
|
||||
# @<number> (@1, @2, ecc) is a value that the mod will pass at runtime
|
||||
|
||||
Arena not found!=
|
||||
Count has to be greater than 0!=
|
||||
Rarity has to be greater than 0!=
|
||||
Rarity has to be smaller than 11!=
|
||||
|
@ -19,14 +20,13 @@ First arena not found!=
|
|||
Second arena not found!=
|
||||
@1 treasures have been copied to @2!=
|
||||
The arenas must be different!=
|
||||
# @n means "newline"
|
||||
name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=
|
||||
Chest added!=
|
||||
name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=
|
||||
Chest added with @1-@2 preciousness and @3-@4 treasures amount!=
|
||||
Chest removed!=
|
||||
Chest not found!=
|
||||
Chest list:=
|
||||
The chest already exists!=
|
||||
ID: @1 - POSITION: @2=
|
||||
ID: @1 - Position: @2 @npreciousness: @3-@4 @ntreasures amount: @5-@6=
|
||||
Position saved!=
|
||||
You didn't set the treasures!=
|
||||
You didn't set the chests!=
|
||||
|
@ -39,7 +39,6 @@ Pos1 or pos2 are not set!=
|
|||
@1 added to @2!=
|
||||
x@1 @2 added to @3 with @4 rarity and @5 preciousness!=
|
||||
@1 removed from @2!=
|
||||
Choose a kit=
|
||||
Kit @1 created!=
|
||||
Kit @1 deleted!=
|
||||
Kits list:=
|
||||
|
@ -50,4 +49,5 @@ x@1 @2 added to @3!=
|
|||
@1 kits have been copied to @2!=
|
||||
Time is out, the match is over!=
|
||||
Nobody=
|
||||
Nobody must be in the editor!=
|
||||
Nobody must be in the editor!=
|
||||
Maps table reset!=
|
Loading…
Reference in New Issue