Added kits system
parent
0a84d220a2
commit
5fcd8e817e
48
SETTINGS.lua
48
SETTINGS.lua
|
@ -36,3 +36,51 @@ skywars_settings.show_minimap = false
|
|||
|
||||
-- The players walking speed when ther're playing a match
|
||||
skywars_settings.player_speed = 1
|
||||
|
||||
|
||||
|
||||
|
||||
-- HUDS SETTINGS --
|
||||
|
||||
|
||||
--[[ COORDINATES SYSTEM
|
||||
For X and Y, 0.0 and 1.0 represent opposite edges of the game window, for example:
|
||||
* [0.0, 0.0] is the top left corner of the game window
|
||||
* [1.0, 1.0] is the bottom right of the game window
|
||||
* [0.5, 0.5] is the center of the game window
|
||||
--]]
|
||||
|
||||
|
||||
|
||||
-- The texture background for the kit menu
|
||||
skywars_settings.hud__kit_background = "Kits.png"
|
||||
|
||||
-- The width of the bacgkround texture 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
|
||||
skywars_settings.background_width = 12
|
||||
|
||||
-- The height of the bacgkround texture in real coordinates
|
||||
skywars_settings.background_height = 12
|
||||
|
||||
-- The x position of the first buttons row
|
||||
skywars_settings.starting_x = 2.2
|
||||
|
||||
-- The y position of the first buttons row
|
||||
skywars_settings.starting_y = 6.5
|
||||
|
||||
-- The horizontal distance betweek buttons in real coordinates
|
||||
skywars_settings.distance_x = 3
|
||||
|
||||
-- The vertical distance betweek buttons in real coordinates
|
||||
skywars_settings.distance_y = 3
|
||||
|
||||
-- The amount of buttons in a row
|
||||
skywars_settings.buttons_per_row = 3
|
||||
|
||||
-- The buttons width in real coordinates
|
||||
skywars_settings.buttons_width = 1.7
|
||||
|
||||
-- The buttons height in real coordinates
|
||||
skywars_settings.buttons_height = 1.7
|
||||
|
||||
|
|
14
TUTORIAL.txt
14
TUTORIAL.txt
|
@ -59,7 +59,19 @@ sure to reload the server, so that it can be loaded correctly, and
|
|||
remember that the old schematic won't be deleted!
|
||||
|
||||
|
||||
6) Enabling the arena using
|
||||
6) (Optional) Creating and setting the kits using:
|
||||
|
||||
/skywars createkit <kit name> <texture name>: texture name is the texture
|
||||
that the kit button will have in the selector menu at the start of the match,
|
||||
it must be a file name that you put in the <SKYWARS MOD FOLDER>/textures folder
|
||||
|
||||
/skywars additem <kit name> <item> <count>: with this you can add items to it
|
||||
|
||||
/skywars arenakit add <arena name> <kit name>: each arena has a "kits" property
|
||||
that contains the choosable kits, with this command you add one to it
|
||||
|
||||
|
||||
7) Enabling the arena using
|
||||
|
||||
/skywars enable <arena name>
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ arena_lib.on_start("skywars", function(arena)
|
|||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
skywars.generate_HUD(arena, pl_name)
|
||||
skywars.show_kit_selector(pl_name, arena)
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
-- saving original speed
|
||||
arena.players[pl_name].speed = player:get_physics_override().speed
|
||||
|
|
|
@ -0,0 +1,96 @@
|
|||
local function select_kit(pl_name, kit_items)
|
||||
local player_inv = minetest.get_player_by_name(pl_name):get_inventory()
|
||||
|
||||
for i=1, #kit_items do
|
||||
player_inv:add_item("main", ItemStack(kit_items[i]))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function create_formspec(arena)
|
||||
local width = 5
|
||||
local height = 6
|
||||
|
||||
local formspec = {
|
||||
"formspec_version[3]",
|
||||
"size[12,12]",
|
||||
"position[0.5, 0.5]",
|
||||
"anchor[0.5,0.5]",
|
||||
"no_prepend[]",
|
||||
"bgcolor[#00000000;]",
|
||||
"background[0,0;"..skywars_settings.background_width..","..skywars_settings.background_height..";"..skywars_settings.hud__kit_background..";true]",
|
||||
"style_type[image_button;border=false]"
|
||||
}
|
||||
|
||||
local buttons_per_row = skywars_settings.buttons_per_row
|
||||
local distance_x = skywars_settings.distance_x
|
||||
local distance_y = skywars_settings.distance_y
|
||||
local offset_x = 0
|
||||
local offset_y = 0
|
||||
local kits = skywars.load_kits()
|
||||
|
||||
-- generates the formspec buttons
|
||||
for i=1, #arena.kits do
|
||||
local name = arena.kits[i]
|
||||
local x = skywars_settings.starting_x + offset_x
|
||||
local y = skywars_settings.starting_y + offset_y
|
||||
|
||||
-- if offset_x has reached its maximum amount then reset it and increase offset_y
|
||||
if offset_x == distance_x * (buttons_per_row-1) then
|
||||
offset_y = offset_y + distance_y
|
||||
offset_x = 0
|
||||
else
|
||||
offset_x = offset_x + distance_x
|
||||
end
|
||||
|
||||
local kit_items = ""
|
||||
-- generating the item description (a list of all the items in the kit)
|
||||
if kits[name].items then
|
||||
for j=1, #kits[name].items do
|
||||
local item_name = kits[name].items[j].name
|
||||
|
||||
-- if the string is "mod:item" it becomes "item"
|
||||
if string.match(item_name, ":") then
|
||||
local split_name = string.split(item_name, ":")
|
||||
item_name = split_name[1]
|
||||
end
|
||||
kit_items = kit_items .. "x" .. kits[name].items[j].count .. " " .. item_name .. "\n"
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(formspec, "image_button["..x..","..y..";"..skywars_settings.buttons_width..","..skywars_settings.buttons_height..";" ..kits[name].texture.. ";"..name..";]")
|
||||
table.insert(formspec, "tooltip["..name..";"..minetest.formspec_escape(kit_items).."]")
|
||||
end
|
||||
|
||||
return table.concat(formspec, "")
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.show_kit_selector(pl_name, arena)
|
||||
if #arena.kits == 0 then return end
|
||||
|
||||
minetest.show_formspec(pl_name, "skywars:kit_selector", create_formspec(arena))
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "skywars:kit_selector" then
|
||||
return
|
||||
end
|
||||
|
||||
local pl_name = player:get_player_name()
|
||||
local arena = arena_lib.get_arena_by_player(pl_name)
|
||||
local kits = skywars.load_kits()
|
||||
|
||||
-- if the pressed button's name is equal to one of the kits in the arena then select it
|
||||
for i=1, #arena.kits do
|
||||
local name = arena.kits[i]
|
||||
if fields[name] then
|
||||
select_kit(pl_name, kits[name].items)
|
||||
minetest.close_formspec(pl_name, "skywars:kit_selector")
|
||||
end
|
||||
end
|
||||
end)
|
|
@ -0,0 +1,18 @@
|
|||
local storage = minetest.get_mod_storage()
|
||||
|
||||
|
||||
function skywars.load_kits()
|
||||
local kits = minetest.deserialize(storage:get_string("kits"))
|
||||
|
||||
if kits == "" or kits == nil then
|
||||
kits = {}
|
||||
end
|
||||
|
||||
return kits
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.overwrite_kits(kits_table)
|
||||
storage:set_string("kits", minetest.serialize(kits_table))
|
||||
end
|
317
commands.lua
317
commands.lua
|
@ -1,5 +1,3 @@
|
|||
local mod = "skywars"
|
||||
|
||||
ChatCmdBuilder.new("skywars",
|
||||
function(cmd)
|
||||
|
||||
|
@ -68,8 +66,20 @@ function(cmd)
|
|||
sure to reload the server, so that it can be loaded correctly, and
|
||||
remember that the old schematic won't be deleted!
|
||||
|
||||
|
||||
6) (Optional) Creating and setting the kits using:
|
||||
|
||||
6) Enabling the arena using
|
||||
/skywars createkit <kit name> <texture name>: texture name is the texture
|
||||
that the kit button will have in the selector menu at the start of the match,
|
||||
it must be a file name that you put in the <SKYWARS MOD FOLDER>/textures folder
|
||||
|
||||
/skywars additem <kit name> <item> <count>: with this you can add items to it
|
||||
|
||||
/skywars arenakit add <arena name> <kit name>: each arena has a "kits" property
|
||||
that contains the choosable kits, with this command you add one to it
|
||||
|
||||
|
||||
7) Enabling the arena using
|
||||
|
||||
/skywars enable <arena name>
|
||||
|
||||
|
@ -159,34 +169,34 @@ function(cmd)
|
|||
-- ! CHEST CMDS ! --
|
||||
--------------------
|
||||
|
||||
|
||||
cmd:sub("addtreasure :arena :treasure :rarity:number :preciousness:int :count:int",
|
||||
function(sender, arena_name, treasure_name, rarity, preciousness, count)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
elseif count <= 0 then
|
||||
skywars.print_error(sender, skywars.T("Count has to be greater than 0!"))
|
||||
skywars.print_error(sender, skywars.T("Count has to be greater than 0!"))
|
||||
return
|
||||
elseif rarity < 2 then
|
||||
skywars.print_error(sender, skywars.T("Rarity has to be greater than 2!"))
|
||||
skywars.print_error(sender, skywars.T("Rarity has to be greater than 2!"))
|
||||
return
|
||||
elseif rarity > 20 then
|
||||
skywars.print_error(sender, skywars.T("Rarity has to be smaller than 21!"))
|
||||
skywars.print_error(sender, skywars.T("Rarity has to be smaller than 21!"))
|
||||
return
|
||||
elseif ItemStack(treasure_name):is_known() == false then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", treasure_name))
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", treasure_name))
|
||||
return
|
||||
end
|
||||
|
||||
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Treasure added!"))
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
|
||||
skywars.print_msg(sender, skywars.T("@1 added to @2!", treasure_name, arena_name))
|
||||
end)
|
||||
|
||||
|
||||
|
@ -196,10 +206,10 @@ function(cmd)
|
|||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -213,8 +223,8 @@ function(cmd)
|
|||
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
|
||||
|
||||
if found then skywars.print_msg(sender, skywars.T("Treasure removed!"))
|
||||
else skywars.print_error(sender, skywars.T("Treasure not found!")) end
|
||||
if found 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)
|
||||
|
||||
|
||||
|
@ -225,16 +235,16 @@ function(cmd)
|
|||
local found = false
|
||||
|
||||
if from_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("First arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("First arena not found!"))
|
||||
return
|
||||
elseif to_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Second arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Second arena not found!"))
|
||||
return
|
||||
elseif from_arena == to_arena then
|
||||
skywars.print_error(sender, skywars.T("The arenas must be different!"))
|
||||
skywars.print_error(sender, skywars.T("The arenas must be different!"))
|
||||
return
|
||||
elseif to_arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", to))
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", to))
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -244,7 +254,7 @@ function(cmd)
|
|||
end
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", to, "treasures", to_arena.treasures, false)
|
||||
skywars.print_msg(sender, skywars.T("@1 treasures have been copied to @2!", from, to))
|
||||
skywars.print_msg(sender, skywars.T("@1 treasures have been copied to @2!", from, to))
|
||||
end)
|
||||
|
||||
|
||||
|
@ -254,11 +264,11 @@ function(cmd)
|
|||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("TREASURES LIST:"))
|
||||
skywars.print_msg(sender, skywars.T("Treasures list:"))
|
||||
for i=1, #arena.treasures do
|
||||
local treasure = arena.treasures[i]
|
||||
skywars.print_msg(sender, tostring(i) .. ".\n" ..
|
||||
|
@ -287,17 +297,17 @@ function(cmd)
|
|||
}
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
elseif 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!"))
|
||||
skywars.print_error(sender, skywars.T("The minimum or maximum amount of treasures has to be greater than 0!"))
|
||||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Chest added!"))
|
||||
skywars.print_msg(sender, skywars.T("Chest added!"))
|
||||
table.insert(arena.chests, chest)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false)
|
||||
end)
|
||||
|
@ -308,11 +318,11 @@ function(cmd)
|
|||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("CHEST LIST:"))
|
||||
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))
|
||||
|
@ -326,10 +336,10 @@ function(cmd)
|
|||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -343,14 +353,227 @@ function(cmd)
|
|||
arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false)
|
||||
|
||||
if found then
|
||||
skywars.print_msg(sender, skywars.T("Chest removed!"))
|
||||
skywars.print_msg(sender, skywars.T("Chest removed!"))
|
||||
else
|
||||
skywars.print_error(sender, skywars.T("Chest not found!"))
|
||||
skywars.print_error(sender, skywars.T("Chest not found!"))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-------------------
|
||||
-- ! KITS CMDS ! --
|
||||
-------------------
|
||||
|
||||
cmd:sub("createkit :name :texture",
|
||||
function(sender, kit_name, texture)
|
||||
local kits = skywars.load_kits()
|
||||
|
||||
if kits[kit_name] ~= nil then
|
||||
skywars.print_error(sender, skywars.T("@1 already exists!", kit_name))
|
||||
return
|
||||
end
|
||||
|
||||
kits[kit_name] = {texture = texture, items={}}
|
||||
skywars.overwrite_kits(kits)
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Kit @1 created!", kit_name))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("additem :kit :item :count:int",
|
||||
function(sender, kit_name, item_name, item_count)
|
||||
local kits = skywars.load_kits()
|
||||
local itemstack = {}
|
||||
|
||||
if ItemStack(item_name):is_known() == false then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", item_name))
|
||||
return
|
||||
elseif kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
elseif item_count <= 0 then
|
||||
skywars.print_error(sender, skywars.T("Count has to be greater than 0!"))
|
||||
return
|
||||
end
|
||||
|
||||
itemstack.name = item_name
|
||||
itemstack.count = item_count
|
||||
|
||||
table.insert(kits[kit_name].items, itemstack)
|
||||
skywars.overwrite_kits(kits)
|
||||
|
||||
skywars.print_msg(sender, skywars.T("@1 added to @2!", item_name, kit_name))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("deletekit :kit",
|
||||
function(sender, kit_name)
|
||||
local kits = skywars.load_kits()
|
||||
|
||||
if kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
end
|
||||
|
||||
kits[kit_name] = nil
|
||||
skywars.overwrite_kits(kits)
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Kit @1 deleted!", kit_name))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("removeitem :kit :item",
|
||||
function(sender, kit_name, item_name)
|
||||
local kits = skywars.load_kits()
|
||||
local itemstack = {}
|
||||
local found = false
|
||||
|
||||
if kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
end
|
||||
|
||||
itemstack.name = item_name
|
||||
itemstack.count = item_count
|
||||
|
||||
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)
|
||||
skywars.overwrite_kits(kits)
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
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("getkits",
|
||||
function(sender)
|
||||
local kits = skywars.load_kits()
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Kits list:"))
|
||||
for name in pairs(kits) do
|
||||
skywars.print_msg(sender, name)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("getitems :kit",
|
||||
function(sender, kit_name)
|
||||
local kits = skywars.load_kits()
|
||||
|
||||
if kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
end
|
||||
|
||||
skywars.print_msg(sender, skywars.T("@1 items:", kit_name))
|
||||
for i=1, #kits[kit_name].items do
|
||||
skywars.print_msg(sender, "x" .. kits[kit_name].items[i].count .. " " .. kits[kit_name].items[i].name)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("arenakit add :arena :kit",
|
||||
function(sender, arena_name, kit_name)
|
||||
local kits = skywars.load_kits()
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
elseif kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
end
|
||||
|
||||
table.insert(arena.kits, kit_name)
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "kits", arena.kits, false)
|
||||
skywars.print_msg(sender, skywars.T("@1 added to @2!", kit_name, arena_name))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("arenakit remove :arena :kit",
|
||||
function(sender, arena_name, kit_name)
|
||||
local kits = skywars.load_kits()
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
elseif kits[kit_name] == nil then
|
||||
skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name))
|
||||
return
|
||||
end
|
||||
|
||||
for i=1, #arena.kits do
|
||||
if arena.kits[i] == kit_name then
|
||||
table.remove(arena.kits, i)
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "kits", arena.kits, false)
|
||||
if found then skywars.print_msg(sender, skywars.T("@1 removed from @2!", kit_name, arena_name))
|
||||
else skywars.print_error(sender, skywars.T("Kit not found!")) end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("copykits :fromarena :toarena", function(sender, from, to)
|
||||
local id, from_arena = arena_lib.get_arena_by_name("skywars", from)
|
||||
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!"))
|
||||
return
|
||||
elseif to_arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Second arena not found!"))
|
||||
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
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", to))
|
||||
return
|
||||
end
|
||||
|
||||
to_arena.kits = {}
|
||||
for i=1, #from_arena.kits do
|
||||
to_arena.kits[i] = from_arena.kits[i]
|
||||
end
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", to, "kits", to_arena.kits, false)
|
||||
skywars.print_msg(sender, skywars.T("@1 kits have been copied to @2!", from, to))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
------------------
|
||||
-- ! MAP CMDS ! --
|
||||
------------------
|
||||
|
@ -359,7 +582,7 @@ function(cmd)
|
|||
local player = minetest.get_player_by_name(sender)
|
||||
|
||||
player:get_meta():set_string("pos1", minetest.serialize(player:get_pos()))
|
||||
skywars.print_msg(sender, skywars.T("Position saved!"))
|
||||
skywars.print_msg(sender, skywars.T("Position saved!"))
|
||||
end)
|
||||
|
||||
|
||||
|
@ -369,7 +592,7 @@ function(cmd)
|
|||
|
||||
player:get_meta():set_string("pos2", minetest.serialize(player:get_pos()))
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Position saved!"))
|
||||
skywars.print_msg(sender, skywars.T("Position saved!"))
|
||||
end)
|
||||
|
||||
|
||||
|
@ -382,23 +605,23 @@ function(cmd)
|
|||
local pos2 = minetest.deserialize(player:get_meta():get_string("pos2"))
|
||||
|
||||
if arena == nil then
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
skywars.print_error(sender, skywars.T("Arena not found!"))
|
||||
return
|
||||
end
|
||||
|
||||
if arena.enabled == true then
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
|
||||
if pos1 == "" or pos2 == "" then
|
||||
skywars.print_error(sender, skywars.T("Pos1 or pos2 are not set!"))
|
||||
skywars.print_error(sender, skywars.T("Pos1 or pos2 are not set!"))
|
||||
return
|
||||
end
|
||||
|
||||
skywars.create_schematic(sender, {x = pos1.x, y = pos1.y, z = pos1.z}, {x = pos2.x, y = pos2.y, z = pos2.z}, name, arena)
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic=PATH)", name, arena_name))
|
||||
skywars.print_msg(sender, skywars.T("Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic=PATH)", name, arena_name))
|
||||
end)
|
||||
|
||||
|
||||
|
@ -464,6 +687,24 @@ end, {
|
|||
<pos2z> <schematic_name>
|
||||
|
||||
- getpos
|
||||
|
||||
- createkit <kit name> <texture name>
|
||||
|
||||
- deletekit <kit name>
|
||||
|
||||
- additem <kit name> <item> <count>
|
||||
|
||||
- removeitem <kit name> <item>
|
||||
|
||||
- arenakit add <arena> <kit name>
|
||||
|
||||
- arenakit remove <arena> <kit name>
|
||||
|
||||
- getkits
|
||||
|
||||
- getitems <kit name>
|
||||
|
||||
- copykits <arena1> <arena2>
|
||||
]],
|
||||
privs = { skywars_admin = true }
|
||||
})
|
||||
|
|
5
init.lua
5
init.lua
|
@ -19,7 +19,8 @@ arena_lib.register_minigame("skywars", {
|
|||
treasures = {}, -- items to put in the chests
|
||||
schematic = "",
|
||||
pos1 = {},
|
||||
reset = false
|
||||
reset = false,
|
||||
kits = {}
|
||||
},
|
||||
player_properties = {
|
||||
killstreak = 0,
|
||||
|
@ -30,12 +31,14 @@ arena_lib.register_minigame("skywars", {
|
|||
|
||||
|
||||
dofile(minetest.get_modpath("skywars") .. "/chatcmdbuilder.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_storage/storage_manager.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_hud/hud_manager.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/commands.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_chest_handler/chest_setter.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_chest_handler/treasures.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_map_handler/map_create.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_arena_lib/arena_manager.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_kits/formspec.lua")
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,11 +8,9 @@ Count has to be greater than 0!=La quantità deve essere maggiore di 0
|
|||
Rarity has to be greater than 2!=La rarità deve essere maggiore di 2!
|
||||
Rarity has to be smaller than 21!=La rarità deve essere minore di 21!
|
||||
@1 doesn't exist!=@1 non esiste!
|
||||
Treasure added!=Tesoro aggiunto!
|
||||
Treasure removed!=Tesoro rimosso!
|
||||
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:
|
||||
Treasures list:=Lista dei tesori:
|
||||
First arena not found!=Prima arena non trovata!
|
||||
Second arena not found!=Seconda arena non trovata!
|
||||
@1 treasures have been copied to @2!=I tesori di @1 sono stati copiati in @2!
|
||||
|
@ -22,7 +20,7 @@ name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=nome: @1 @nrarità: @2 @npr
|
|||
Chest added!=Cassa aggiunta!
|
||||
Chest removed!=Cassa rimossa!
|
||||
Chest not found!=Cassa non trovata!
|
||||
CHEST LIST:=LISTA DELLE CASSE:
|
||||
Chest list:=Lista delle casse:
|
||||
ID: @1 - POSITION: @2=ID: @1 - POSIZIONE: @2
|
||||
Position saved!=Posizione salvata
|
||||
Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic@=PATH)=Schematica @1 creata! Puoi usare /skywars info @2 per sapere dove è salvata (vedi schematic@=PERCORSO)
|
||||
|
@ -30,4 +28,14 @@ Schematic @1 created! You can use /skywars info @2 to know its folder (see schem
|
|||
@1 must be disabled!=@1 deve essere disabilitata!
|
||||
Pos1 or pos2 are not set!=Pos1 o pos2 non sono impostate
|
||||
@1 was killed by @2=@1 è stato ucciso da @2
|
||||
@1 is dead=@1 è morto
|
||||
@1 is dead=@1 è morto
|
||||
@1 already exists!=@1 esiste già!
|
||||
@1 added to @2!=@1 aggiunto a @2
|
||||
@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:
|
||||
@1 items:=Oggetti di @1:
|
||||
Kit not found!=Kit non trovato!
|
||||
@1 kits have been copied to @2!=I kit di @1 sono stati copiati in @2!
|
|
@ -11,7 +11,7 @@ Rarity has to be smaller than 21!=
|
|||
Treasure added!=
|
||||
Treasure removed!=
|
||||
Treasure not found!=
|
||||
TREASURES LIST:=
|
||||
Treasures list:=
|
||||
The minimum or maximum amount of treasures has to be greater than 0!=
|
||||
First arena not found!=
|
||||
Second arena not found!=
|
||||
|
@ -22,7 +22,7 @@ name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=
|
|||
Chest added!=
|
||||
Chest removed!=
|
||||
Chest not found!=
|
||||
CHEST LIST:=
|
||||
Chest list:=
|
||||
ID: @1 - POSITION: @2=
|
||||
Position saved!=
|
||||
Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic@=PATH)=
|
||||
|
@ -30,4 +30,14 @@ Schematic @1 created! You can use /skywars info @2 to know its folder (see schem
|
|||
@1 must be disabled!=
|
||||
Pos1 or pos2 are not set!=
|
||||
@1 was killed by @2=
|
||||
@1 is dead=
|
||||
@1 is dead=
|
||||
@1 already exists!=
|
||||
@1 added to @2!=
|
||||
@1 removed from @2!=
|
||||
Choose a kit=
|
||||
Kit @1 created!=
|
||||
Kit @1 deleted!=
|
||||
Kits list:=
|
||||
@1 items:=
|
||||
Kit not found!=
|
||||
@1 kits have been copied to @2!=
|
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 209 B |
Binary file not shown.
After Width: | Height: | Size: 216 B |
Binary file not shown.
After Width: | Height: | Size: 227 B |
Loading…
Reference in New Issue