+ Build permission setting

+ Removing drops when resetting a map
+ removeitem and removetreasure hand cmds
+ clearmapstable debug cmd
+ Translations corrections and cmd messages improved
+ Code cleaning
master
Giov4 2020-10-01 19:54:39 +02:00
parent 6a17c99ca6
commit 15245337a2
6 changed files with 281 additions and 239 deletions

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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 }
})

View File

@ -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!

View File

@ -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!=