+ Added timer to arenas

+ Added new cmds and improved the old ones
+ Modified some messages
master
Giov4 2020-09-16 23:03:49 +02:00
parent 1f9da7b94b
commit 65056fee35
6 changed files with 224 additions and 94 deletions

View File

@ -1,4 +1,5 @@
(If you find it uncomfortable to read the tutorial from the chat
you can read it from a file in the mod folder called TUTORIAL.txt)
These are the steps to follow in order to create and configure an
arena:
@ -31,9 +32,13 @@ a preciousness range 2-4 can spawn just items with a preciousness
between 2 and 4
count: the item amount
/skywars addtreasure <arena name> <item> <rarity (min 2.0, max
20.0)> <preciousness> <count>
/skywars addtreasure <arena name> <item> <count> <rarity (min 2.0, max
1000.0)> <preciousness>
You can also use:
/skywars addtreasure hand <arena name> <rarity (min 2.0, max 20.0)>
<preciousness>
this will get the item name and count from the one in your hand.
4) Setting the chests in the arena using:
@ -41,7 +46,7 @@ count: the item amount
<min_treasures_amount (min. 1)> <max_treasures_amount>
to add a chest use this command at the position you want it to spawn, it
will automatically be filled with the right items when the match
starts
starts.
5) Saving the map schematic using:
@ -61,10 +66,10 @@ schematic, because the old one won't be deleted!
/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
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
@ -74,7 +79,7 @@ that contains the choosable kits, with this command you add one to it
/skywars enable <arena name>
Once you've done this you can click the sign and start playing :)
You can use /help skywars to read all the commands
Once you've done this you can click the sign and start playing :).
You can use /help skywars to read all the commands.
To modify the game settings (such as the messages prefix or the
hub spawn point) you can edit the SETTINGS.lua file
hub spawn point) you can edit the SETTINGS.lua file.

View File

@ -115,5 +115,7 @@ end)
arena_lib.on_timeout("skywars", function(arena)
arena_lib.load_celebration("skywars", arena, skywars.T("Nobody"))
arena_lib.send_message_players_in_arena(arena, skywars_settings.prefix .. skywars.T("Time is out, the match is over!"))
end)

View File

@ -30,8 +30,8 @@ end
function skywars.create_schematic(sender, pos1, pos2, name, arena)
pos1, pos2 = reorder_positions(pos1, pos2)
minetest.create_schematic(pos1, pos2, nil, minetest.get_worldpath() .. "/" .. name .. ".mts", nil)
arena.schematic = minetest.get_worldpath() .. "/" .. name .. ".mts"
minetest.create_schematic(pos1, pos2, nil, name, nil)
arena.schematic = name
arena_lib.change_arena_property(sender, "skywars", arena.name, "pos1", pos1)
arena_lib.change_arena_property(sender, "skywars", arena.name, "pos2", pos2)

View File

@ -39,9 +39,13 @@ function(cmd)
between 2 and 4
count: the item amount
/skywars addtreasure <arena name> <item> <rarity (min 2.0, max
1000.0)> <preciousness> <count>
/skywars addtreasure <arena name> <item> <count> <rarity (min 2.0, max
1000.0)> <preciousness>
You can also use:
/skywars addtreasure hand <arena name> <rarity (min 2.0, max 20.0)>
<preciousness>
this will get the item name and count from the one in your hand.
4) Setting the chests in the arena using:
@ -49,7 +53,7 @@ function(cmd)
<min_treasures_amount (min. 1)> <max_treasures_amount>
to add a chest use this command at the position you want it to spawn, it
will automatically be filled with the right items when the match
starts
starts.
5) Saving the map schematic using:
@ -69,7 +73,7 @@ function(cmd)
/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
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
@ -82,10 +86,10 @@ function(cmd)
/skywars enable <arena name>
Once you've done this you can click the sign and start playing :)
You can use /help skywars to read all the commands
Once you've done this you can click the sign and start playing :).
You can use /help skywars to read all the commands.
To modify the game settings (such as the messages prefix or the
hub spawn point) you can edit the SETTINGS.lua file
hub spawn point) you can edit the SETTINGS.lua file.
]])
end)
@ -169,16 +173,19 @@ function(cmd)
-- ! CHEST CMDS ! --
--------------------
cmd:sub("addtreasure :arena :treasure :rarity:number :preciousness:int :count:int",
function(sender, arena_name, treasure_name, rarity, preciousness, count)
cmd:sub("addtreasure :arena :treasure :count:int :rarity:number :preciousness:int",
function(sender, arena_name, treasure_name, count, rarity, preciousness )
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
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
elseif count <= 0 then
skywars.print_error(sender, skywars.T("Count has to be greater than 0!"))
return
@ -196,12 +203,57 @@ function(cmd)
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
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))
skywars.print_msg(sender, skywars.T("x@1 @2 added to @3 with @4 rarity and @5 preciousness!",
count, treasure_name, arena_name, rarity, preciousness
))
end)
cmd:sub("addtreasure hand :arena :rarity:number :preciousness:int",
function(sender, arena_name, rarity, preciousness)
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
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 treasure_name == nil then
else print(treasure_name) end
if arena == nil then
skywars.print_error(sender, skywars.T("Arena not found!"))
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 < 2 then
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!"))
return
elseif treasure_name == "" then
skywars.print_error(sender, skywars.T("Your hand is empty!"))
return
end
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
skywars.print_msg(sender, skywars.T("x@1 @2 added to @3 with @4 rarity and @5 preciousness!",
count, treasure_name, arena_name, rarity, preciousness
))
end)
cmd:sub("removetreasure :arena :treasure", function(sender, arena_name, treasure_name)
cmd:sub("removetreasure name :arena :treasure", function(sender, arena_name, treasure_name)
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
local found = false
@ -209,8 +261,11 @@ function(cmd)
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
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
@ -222,7 +277,36 @@ function(cmd)
end
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
if found then skywars.print_msg(sender, skywars.T("@1 removed from @2", treasure_name, arena_name))
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)
cmd:sub("removetreasure id :arena :id:int", function(sender, arena_name, treasure_id)
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
local treasure_name = ""
if 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
end
for i=1, #arena.treasures do
if i == treasure_id then
treasure_name = arena.treasures[i].name
table.remove(arena.treasures, i)
end
end
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
if treasure_name ~= "" 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)
@ -233,6 +317,7 @@ 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!"))
return
@ -243,8 +328,11 @@ function(cmd)
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
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 = {}
@ -270,17 +358,41 @@ function(cmd)
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" ..
skywars.print_msg(sender, "ID: " .. tostring(i) .. ".\n" ..
skywars.T(
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
treasure.name, treasure.rarity, treasure.preciousness, treasure.count
)
) .. "\n\n"
)
end
end)
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 == nil then
skywars.print_error(sender, skywars.T("Arena not found!"))
return
end
skywars.print_msg(sender, skywars.T("Treasures list:"))
for i=1, #arena.treasures do
local treasure = arena.treasures[i]
if treasure.name == treasure_name then
skywars.print_msg(sender, "ID: " .. tostring(i) .. ".\n" ..
skywars.T(
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
treasure.name, treasure.rarity, treasure.preciousness, treasure.count
) .. "\n\n"
)
end
end
end)
cmd:sub("addchest :arena :minpreciousness:int :maxpreciousness:int :tmin:int :tmax:int",
function(sender, arena_name, min_preciousness, max_preciousness, t_min, t_max)
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
@ -298,10 +410,15 @@ function(cmd)
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 t_min <= 0 or t_max <= 0 then
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
end
@ -338,8 +455,11 @@ function(cmd)
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
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
@ -449,7 +569,7 @@ function(cmd)
end
if found then
skywars.print_msg(sender, skywars.T("@1 removed from @2!", item_name, kit_name))
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
@ -494,10 +614,15 @@ function(cmd)
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
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
end
@ -519,10 +644,15 @@ function(cmd)
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
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
end
@ -536,9 +666,8 @@ function(cmd)
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))
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)
@ -548,6 +677,7 @@ 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!"))
return
@ -558,8 +688,12 @@ function(cmd)
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
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 = {}
@ -605,17 +739,22 @@ function(cmd)
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 pos1 == "" or pos2 == "" then
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 pos1 == "" or pos2 == "" then
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))
local schem_path = minetest.get_worldpath() .. "/" .. name .. ".mts"
skywars.create_schematic(sender, {x = pos1.x, y = pos1.y, z = pos1.z}, {x = pos2.x, y = pos2.y, z = pos2.z}, schem_path, arena)
skywars.print_msg(sender, skywars.T("Schematic @1 created! (Saved in @2)", name, schem_path))
end)
@ -637,66 +776,44 @@ end, {
description = [[
Arena_lib:
- tutorial
- create <arena name> [min players] [max players]
- edit <arena name>
- remove <arena name>
- info <arena name>
- list
- enable <arena name>
- disable <arena name>
Skywars commands:
- addtreasure <arena name> <item> <rarity (min 2.0, max 20.0)>
<preciousness> <count>
- removetreasure <arena name> <treasure name>
- addtreasure <arena name> <item> <count> <rarity (min 2.0, max 20.0)>
<preciousness>
- addtreasure hand <arena name> <rarity (min 2.0, max 20.0)>
<preciousness>
- removetreasure name <arena name> <treasure name>
- removetreasure id <arena name> <treasure id>
- gettreasures <arena name>
- copytreasures <(from) arena name> <(to) arena name>: this will copy
the first arena treasures in to the second one (! the second one will
be overwritten !)
- searchtreasure <arena name> <treasure name>: shows all the treasures with that name
- copytreasures <(from) arena name> <(to) arena name>
- addchest <arena name> <min_preciousness> <max_preciousness>
<min_treasures_amount (min. 1)> <max_treasures_amount>
- removechest <id>
- getchests <arena name>: shows id and position of each chest
- getchests <arena name>
- pos1
- pos2
- createschematic <arena name> <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 }

View File

@ -8,6 +8,7 @@ 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!
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:
@ -23,7 +24,7 @@ Chest not found!=Cassa non trovata!
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)
Schematic @1 created! (Saved in @2)=Schematica @1 creata! (Salvata in @2)
@1 wasn't configured properly!=@1 non è stata configurata correttamente
@1 must be disabled!=@1 deve essere disabilitata!
Pos1 or pos2 are not set!=Pos1 o pos2 non sono impostate
@ -31,7 +32,8 @@ Pos1 or pos2 are not set!=Pos1 o pos2 non sono impostate
@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
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!
@ -39,4 +41,5 @@ 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!
Time is out, the match is over!=Tempo terminato, la partita è finita!
Time is out, the match is over!=Tempo terminato, la partita è finita!
Nobody=Nessuno

View File

@ -8,6 +8,7 @@ Count has to be greater than 0!=
Rarity has to be greater than 2!=
Rarity has to be smaller than 21!=
@1 doesn't exist!=
Your hand is empty!=
Treasure added!=
Treasure removed!=
Treasure not found!=
@ -25,7 +26,7 @@ Chest not found!=
Chest list:=
ID: @1 - POSITION: @2=
Position saved!=
Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic@=PATH)=
Schematic @1 created! (Saved in @2)=
@1 wasn't configured properly!=
@1 must be disabled!=
Pos1 or pos2 are not set!=
@ -33,6 +34,7 @@ Pos1 or pos2 are not set!=
@1 is dead=
@1 already exists!=
@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!=
@ -41,4 +43,5 @@ Kits list:=
@1 items:=
Kit not found!=
@1 kits have been copied to @2!=
Time is out, the match is over!=
Time is out, the match is over!=
Nobody=