+ Now the treasures have an id property instead of using their position
in the table + Fixed: id generation system + Renamed skywars.remove_all with skywars.remove_all_armor + Fixed: player used to slide when he/she got teleported in the arena + Now the armor gets removed even on /forceendmaster
parent
533337dc82
commit
3b9b387280
|
@ -1,5 +1,4 @@
|
|||
arena_lib.on_load("skywars", function(arena)
|
||||
|
||||
if arena.reset == false then
|
||||
minetest.place_schematic(arena.pos1, arena.schematic)
|
||||
arena.reset = true
|
||||
|
@ -9,9 +8,11 @@ arena_lib.on_load("skywars", function(arena)
|
|||
skywars.fill_chests(arena)
|
||||
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
skywars.show_kit_selector(pl_name, arena)
|
||||
minetest.after(0.1, function() player:add_player_velocity(vector.multiply(player:get_player_velocity(), -1)) end)
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
@ -39,7 +40,7 @@ arena_lib.on_celebration("skywars", function(arena, winner_name)
|
|||
|
||||
skywars.deactivate_hotbar(player)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
skywars.remove_all(player)
|
||||
skywars.remove_all_armor(player)
|
||||
end
|
||||
end)
|
||||
|
||||
|
@ -51,7 +52,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)
|
||||
|
||||
skywars.remove_all(player)
|
||||
skywars.remove_all_armor(player)
|
||||
-- restore player's original speed
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
end
|
||||
|
@ -75,7 +76,7 @@ arena_lib.on_death("skywars", function(arena, pl_name, reason)
|
|||
arena_lib.send_message_players_in_arena(arena, skywars_settings.prefix .. skywars.T("@1 is dead", pl_name))
|
||||
end
|
||||
|
||||
skywars.remove_all(player)
|
||||
skywars.remove_all_armor(player)
|
||||
skywars.deactivate_hotbar(player)
|
||||
arena_lib.remove_player_from_arena(pl_name, 1)
|
||||
skywars.update_players_counter(arena)
|
||||
|
@ -84,9 +85,12 @@ end)
|
|||
|
||||
|
||||
arena_lib.on_quit("skywars", function(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
skywars.deactivate_hotbar(minetest.get_player_by_name(pl_name))
|
||||
skywars.update_players_counter(arena, false)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
skywars.remove_all_armor(player)
|
||||
end)
|
||||
|
||||
|
||||
|
@ -95,7 +99,7 @@ arena_lib.on_disconnect("skywars", function(arena, pl_name)
|
|||
local player = minetest.get_player_by_name(pl_name)
|
||||
skywars.deactivate_hotbar(player)
|
||||
skywars.update_players_counter(arena, false)
|
||||
skywars.remove_all(player)
|
||||
skywars.remove_all_armor(player)
|
||||
end)
|
||||
|
||||
|
||||
|
@ -106,7 +110,7 @@ arena_lib.on_kick("skywars", function(arena, pl_name)
|
|||
skywars.deactivate_hotbar(player)
|
||||
skywars.update_players_counter(arena, false)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
skywars.remove_all(player)
|
||||
skywars.remove_all_armor(player)
|
||||
end)
|
||||
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ end
|
|||
|
||||
|
||||
|
||||
function skywars.remove_all(player)
|
||||
function skywars.remove_all_armor(player)
|
||||
local name, armor_inv = armor:get_valid_player(player, "[remove_all]")
|
||||
|
||||
if not name then
|
||||
|
|
37
commands.lua
37
commands.lua
|
@ -198,7 +198,15 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
|
||||
local item_id = 1
|
||||
if arena.treasures[#arena.treasures] then item_id = arena.treasures[#arena.treasures].id+1 end
|
||||
table.insert(arena.treasures, {
|
||||
name = treasure_name,
|
||||
rarity = rarity,
|
||||
count = count,
|
||||
preciousness = preciousness,
|
||||
id = item_id
|
||||
})
|
||||
|
||||
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!",
|
||||
|
@ -241,7 +249,15 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
|
||||
local item_id = 1
|
||||
if arena.treasures[#arena.treasures] then item_id = arena.treasures[#arena.treasures].id+1 end
|
||||
table.insert(arena.treasures, {
|
||||
name = treasure_name,
|
||||
rarity = rarity,
|
||||
count = count,
|
||||
preciousness = preciousness,
|
||||
id = item_id
|
||||
})
|
||||
|
||||
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!",
|
||||
|
@ -301,7 +317,7 @@ function(cmd)
|
|||
end
|
||||
|
||||
for i=1, #arena.treasures do
|
||||
if i == treasure_id then
|
||||
if arena.treasures[i].id == treasure_id then
|
||||
treasure_name = arena.treasures[i].name
|
||||
table.remove(arena.treasures, i)
|
||||
break
|
||||
|
@ -364,7 +380,7 @@ 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, "ID: " .. tostring(i) .. ".\n" ..
|
||||
skywars.print_msg(sender, "ID: " .. arena.treasures[i].id .. ".\n" ..
|
||||
skywars.T(
|
||||
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
|
||||
treasure.name, treasure.rarity, treasure.preciousness, treasure.count
|
||||
|
@ -390,7 +406,7 @@ function(cmd)
|
|||
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.print_msg(sender, "ID: " .. arena.treasures[i].id .. ".\n" ..
|
||||
skywars.T(
|
||||
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
|
||||
treasure.name, treasure.rarity, treasure.preciousness, treasure.count
|
||||
|
@ -406,6 +422,9 @@ function(cmd)
|
|||
function(sender, arena_name, min_preciousness, max_preciousness, t_min, t_max)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local pos = vector.round(minetest.get_player_by_name(sender):get_pos())
|
||||
|
||||
local chest_id = 1
|
||||
if arena.chests[#arena.chests] then chest_id = arena.chests[#arena.chests].id+1 end
|
||||
local chest =
|
||||
{
|
||||
pos = pos,
|
||||
|
@ -413,7 +432,7 @@ function(cmd)
|
|||
max_preciousness = max_preciousness,
|
||||
min_treasures = t_min,
|
||||
max_treasures = t_max,
|
||||
id = arena.chests[#arena.chests].id + 1
|
||||
id = chest_id
|
||||
}
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
|
@ -452,6 +471,8 @@ function(cmd)
|
|||
|
||||
if result then skywars.print_error(sender, skywars.T("You're not looking at anything!")) end
|
||||
|
||||
local chest_id = 1
|
||||
if arena.chests[#arena.chests] then chest_id = arena.chests[#arena.chests].id+1 end
|
||||
local chest =
|
||||
{
|
||||
pos = pos,
|
||||
|
@ -459,7 +480,7 @@ function(cmd)
|
|||
max_preciousness = max_preciousness,
|
||||
min_treasures = t_min,
|
||||
max_treasures = t_max,
|
||||
id = arena.chests[#arena.chests].id + 1
|
||||
id = chest_id
|
||||
}
|
||||
|
||||
if arena_lib.is_arena_in_edit_mode(arena_name) then
|
||||
|
@ -733,7 +754,7 @@ 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
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue