parent
6f4da65107
commit
7e2ba29a41
|
@ -57,10 +57,10 @@ 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
|
||||
skywars_settings.background_width = 8
|
||||
|
||||
-- The height of the bacgkround texture in real coordinates
|
||||
skywars_settings.background_height = 12
|
||||
skywars_settings.background_height = 8
|
||||
|
||||
-- The x position of the first buttons row
|
||||
skywars_settings.starting_x = 1.7
|
||||
|
@ -78,8 +78,8 @@ skywars_settings.distance_y = 3
|
|||
skywars_settings.buttons_per_row = 3
|
||||
|
||||
-- The buttons width in real coordinates
|
||||
skywars_settings.buttons_width = 2.2
|
||||
skywars_settings.buttons_width = 2
|
||||
|
||||
-- The buttons height in real coordinates
|
||||
skywars_settings.buttons_height = 2
|
||||
skywars_settings.buttons_height = 1.8
|
||||
|
||||
|
|
|
@ -1,22 +1,21 @@
|
|||
arena_lib.on_load("skywars", function(arena)
|
||||
if arena.reset == false then
|
||||
minetest.place_schematic(arena.pos1, arena.schematic)
|
||||
if minetest.get_modpath("exschem") == "" or minetest.get_modpath("exschem") == nil then
|
||||
minetest.place_schematic(arena.pos1, arena.schematic)
|
||||
else
|
||||
skywars.load_exschem_schematic(arena.pos1, arena.schematic)
|
||||
end
|
||||
arena.reset = true
|
||||
end
|
||||
|
||||
skywars.place_chests(arena)
|
||||
skywars.fill_chests(arena)
|
||||
|
||||
minetest.after(skywars_settings.loading_time, function()
|
||||
skywars.place_chests(arena)
|
||||
skywars.fill_chests(arena)
|
||||
end)
|
||||
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
-- preventing players with noclip to fall like idiots when placing blocks
|
||||
if minetest.check_player_privs(pl_name, {noclip=true}) then
|
||||
local privs = minetest.get_player_privs(pl_name)
|
||||
privs.noclip = nil
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
||||
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
|
||||
|
@ -29,14 +28,13 @@ arena_lib.on_start("skywars", function(arena)
|
|||
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
skywars.activate_hotbar(player)
|
||||
|
||||
skywars.generate_HUD(arena, pl_name)
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
-- saving original speed
|
||||
arena.players[pl_name].speed = player:get_physics_override().speed
|
||||
end
|
||||
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
@ -45,8 +43,8 @@ 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)
|
||||
|
||||
skywars.deactivate_hotbar(player)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
armor:remove_all(player)
|
||||
end
|
||||
end)
|
||||
|
||||
|
@ -57,8 +55,8 @@ 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_armor(player)
|
||||
|
||||
armor:remove_all(player)
|
||||
-- restore player's original speed
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
end
|
||||
|
@ -78,10 +76,11 @@ arena_lib.on_death("skywars", function(arena, pl_name, reason)
|
|||
-- arena.HUDs[killer].players_killed[2] == players amount
|
||||
reason.object:hud_change(arena.HUDs[killer].players_killed[1], "text", tostring(arena.HUDs[killer].players_killed[2] + 1))
|
||||
end
|
||||
else
|
||||
arena_lib.send_message_players_in_arena(arena, skywars_settings.prefix .. skywars.T("@1 is dead", pl_name))
|
||||
end
|
||||
|
||||
skywars.remove_all_armor(player)
|
||||
skywars.deactivate_hotbar(player)
|
||||
armor:remove_all(player)
|
||||
arena_lib.remove_player_from_arena(pl_name, 1)
|
||||
skywars.update_players_counter(arena)
|
||||
end)
|
||||
|
@ -91,30 +90,27 @@ 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)
|
||||
armor:remove_all(player)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
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_armor(player)
|
||||
armor:remove_all(player)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
arena_lib.on_kick("skywars", function(arena, pl_name)
|
||||
arena_lib.on_kick("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_HUD(arena, pl_name)
|
||||
skywars.remove_all_armor(player)
|
||||
armor:remove_all(player)
|
||||
end)
|
||||
|
||||
|
||||
|
@ -139,10 +135,6 @@ end)
|
|||
arena_lib.on_timer_tick("skywars", function(arena)
|
||||
arena.time_passed = arena.time_passed + 1
|
||||
|
||||
for pl_name in pairs(arena.players) do
|
||||
skywars.apply_armor_slots(minetest.get_player_by_name(pl_name))
|
||||
end
|
||||
|
||||
if arena.time_passed % 5 == 0 then
|
||||
skywars.kill_players_out_map(arena)
|
||||
end
|
||||
|
@ -154,4 +146,4 @@ 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)
|
||||
end)
|
|
@ -0,0 +1,13 @@
|
|||
function skywars.create_exschem_schematic(sender, pos1, pos2, name, arena)
|
||||
local path = minetest.get_worldpath() .."/schems/".. name
|
||||
|
||||
exschem.save(pos1, pos2, false, 10, name, 0)
|
||||
skywars.print_msg(sender, skywars.T("Schematic @1 created! (Saved in @2)", name, path))
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.load_exschem_schematic(pos1, schematic)
|
||||
|
||||
exschem.load(pos1, pos1, 0, {}, schematic, 0)
|
||||
end
|
|
@ -30,9 +30,17 @@ end
|
|||
function skywars.create_schematic(sender, pos1, pos2, name, arena)
|
||||
pos1, pos2 = reorder_positions(pos1, pos2)
|
||||
|
||||
minetest.create_schematic(pos1, pos2, nil, name, nil)
|
||||
arena.schematic = name
|
||||
if minetest.get_modpath("exschem") == "" or minetest.get_modpath("exschem") == nil then
|
||||
local path = minetest.get_worldpath() .. "/" .. name .. ".mts"
|
||||
|
||||
skywars.print_msg(sender, skywars.T("Schematic @1 created! (Saved in @2)", name, path))
|
||||
else
|
||||
skywars.create_exschem_schematic(sender, pos1, pos2, name, arena)
|
||||
end
|
||||
|
||||
arena.schematic = name
|
||||
arena.pos1 = pos1
|
||||
arena.pos2 = pos2
|
||||
arena_lib.change_arena_property(sender, "skywars", arena.name, "pos1", pos1)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena.name, "pos2", pos2)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena.name, "schematic", arena.schematic)
|
||||
|
|
|
@ -876,9 +876,7 @@ function(cmd)
|
|||
return
|
||||
end
|
||||
|
||||
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))
|
||||
skywars.create_schematic(sender, {x = pos1.x, y = pos1.y, z = pos1.z}, {x = pos2.x, y = pos2.y, z = pos2.z}, name, arena)
|
||||
end)
|
||||
|
||||
|
||||
|
|
2
init.lua
2
init.lua
|
@ -39,7 +39,7 @@ arena_lib.register_minigame("skywars", {
|
|||
|
||||
|
||||
dofile(minetest.get_modpath("skywars") .. "/chatcmdbuilder.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_compatible_mods/_3d_armor/init.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_compatible_mods/exschem/init.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")
|
||||
|
|
2
mod.conf
2
mod.conf
|
@ -1,2 +1,4 @@
|
|||
name = skywars
|
||||
description = Skywars is a PvP minigame where players battle each other on floating islands until there is only one survivor remaining. Each player spawns on their own island and when the round begins must prepare for battle before crossing to the other islands and fighting.
|
||||
depends = arena_lib, default
|
||||
optional_depends = exschem
|
Loading…
Reference in New Issue