From 42663612a20d9e4c65696523d789f457266f718f Mon Sep 17 00:00:00 2001 From: IonicCheese Date: Thu, 19 Feb 2026 11:53:10 -0800 Subject: [PATCH] Add even more new stuff --- mods/game/chatcommands/init.lua | 9 ++++----- mods/game/functions/init.lua | 6 +++--- mods/game/maps/init.lua | 26 ++++++++++++++++---------- mods/game/maps/maps/mini-map/map.lua | 16 +++++++++++++--- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/mods/game/chatcommands/init.lua b/mods/game/chatcommands/init.lua index 4b4b782..4c1f213 100644 --- a/mods/game/chatcommands/init.lua +++ b/mods/game/chatcommands/init.lua @@ -44,11 +44,10 @@ core.register_chatcommand("list_maps", { privs = {match_manager = true}, description = "List all maps", func = function() - local maps = core.get_dir_list(core.get_modpath("maps") .. "/maps", true) - local map_list = "Available maps:\n" - for _, map in pairs(maps) do - map_list = map_list .. map .. "\n" + local list_string = "Available maps:\n" + for _, map in pairs(map_list) do + list_string = list_string .. map .. "\n" end - return true, map_list .. "\nUse /start to start a match." + return true, list_string .. "\nUse /start to start a match." end }) \ No newline at end of file diff --git a/mods/game/functions/init.lua b/mods/game/functions/init.lua index 34c91ff..48217c4 100644 --- a/mods/game/functions/init.lua +++ b/mods/game/functions/init.lua @@ -130,10 +130,10 @@ function start_match(map) -- Start the match return end - map_data = place_map(map or "forest") -- default to forest if no map is specified + place_map(map or "forest") -- default to forest if no map is specified - if map_data == "nope :(" then - return map_data + if map_data == nil then + return "nope :(" end set_match_state("pre_match") diff --git a/mods/game/maps/init.lua b/mods/game/maps/init.lua index b1683f2..764a97b 100644 --- a/mods/game/maps/init.lua +++ b/mods/game/maps/init.lua @@ -1,7 +1,12 @@ -- Maps mod for SSG + +local map_path = core.get_modpath("maps") .. "/maps/" +map_data = {} + +map_list = core.get_dir_list(map_path, true) +table.sort(map_list) + function place_map(map) - local map_path = core.get_modpath("maps") .. "/maps/" - local map_list = core.get_dir_list(map_path, true) local map_pos = vector.new(0, 0, 0) for i = 1, #map_list do @@ -9,16 +14,18 @@ function place_map(map) map_pos = vector.new(1000 * (i - 1), 0, 0) break elseif i == #map_list then - return "nope :(" + return nil end end - local map_data = dofile(map_path .. map .. "/map.lua") + map_data = dofile(map_path .. map .. "/map.lua") map_data.pos = map_pos core.place_schematic(map_pos, map_path .. map .. "/map.mts", 0, nil, true) if not map_data.spawn then -- set a default spawnpoint if not set map_data.spawn = vector.new(map_data.size.x / 2, map_data.barrier_level + 1, map_data.size.z / 2) + map_pos + else + map_data.spawn = map_data.spawn + map_pos end if map_data.start_time == nil or map_data.start_time <= 0 then @@ -46,16 +53,15 @@ function place_map(map) map_data.classes.class_3.initial_items = {"ctf_ranged:benelli_loaded", "ctf_ranged:glock17_loaded", "ctf_ranged:ammo 99"} map_data.classes.class_3.name = "Short-range" end - - - return map_data end -function remove_barrier(x, y, z) -- name and arguments kept for backwards compat +function remove_barrier() for _, player in pairs(core.get_connected_players()) do local pos = player:get_pos() player:set_pos({x=pos.x, y=map_data.barrier_level - 3.5, z=pos.z}) end - assert(loadstring(map_data.scripts.on_barrier_remove or ""))() - return "" + + if map_data.on_barrier_remove then + map_data.on_barrier_remove() + end end diff --git a/mods/game/maps/maps/mini-map/map.lua b/mods/game/maps/maps/mini-map/map.lua index e9d4658..12f0ace 100644 --- a/mods/game/maps/maps/mini-map/map.lua +++ b/mods/game/maps/maps/mini-map/map.lua @@ -2,13 +2,23 @@ return { name = "mini-map", size = vector.new(8, 19, 8), - barrier_level = 15, + -- This is a ridiculous hack to prevent players from teleporting into the ground.. + barrier_level = 19, - spawn = nil, + spawn = vector.new(4, 15, 4), start_time = 15, on_start = nil, on_end = nil, - on_barrier_remove = nil, + on_barrier_remove = function() + local pos = map_data.pos + local size = map_data.size + pos + + for x = pos.x + 1, size.x - 2 do + for z = pos.z + 1, size.z - 2 do + core.set_node(vector.new(x, 14, z), {name = "air"}) + end + end + end, }