diff --git a/mods/game/functions/init.lua b/mods/game/functions/init.lua index c5de023..92f06ec 100644 --- a/mods/game/functions/init.lua +++ b/mods/game/functions/init.lua @@ -16,18 +16,20 @@ function give_player_items(player) -- Give the player their initial stuff inv:set_list("main", {}) - if class == "sniper" then - inv:add_item("main", "ctf_ranged:m200_loaded") - inv:add_item("main", "default:sword_stone") - inv:add_item("main", "ctf_ranged:ammo 100") - elseif class == "assault" then - inv:add_item("main", "ctf_ranged:ak47_loaded") - inv:add_item("main", "ctf_ranged:glock17_loaded") - inv:add_item("main", "ctf_ranged:ammo 100") - elseif class == "shotgun" then - inv:add_item("main", "ctf_ranged:benelli_loaded") - inv:add_item("main", "ctf_ranged:glock17_loaded") - inv:add_item("main", "ctf_ranged:ammo 100") + if class == "1" then + for i = 1, #map_data.classes.class_1.initial_items do + inv:add_item("main", map_data.classes.class_1.initial_items[i]) + end + + elseif class == "2" then + for i = 1, #map_data.classes.class_2.initial_items do + inv:add_item("main", map_data.classes.class_2.initial_items[i]) + end + + elseif class == "3" then + for i = 1, #map_data.classes.class_3.initial_items do + inv:add_item("main", map_data.classes.class_3.initial_items[i]) + end end end @@ -89,9 +91,9 @@ function set_player_mode(player, mode) -- Set player mode (spectator, pre-match, label[3,0.1;Change class:] - button[0.3,1;2.5,1;class_sniper;Long-range] - button[2.8,1;2.5,1;class_assault;Mid-range] - button[5.3,1;2.5,1;class_shotgun;Short-range] + button[0.3,1;2.5,1;class_sniper;]] .. map_data.classes.class_1.name .. [[] + button[2.8,1;2.5,1;class_assault;]] .. map_data.classes.class_2.name .. [[] + button[5.3,1;2.5,1;class_shotgun;]] .. map_data.classes.class_3.name .. [[] list[current_player;main;0,2;8,1;] list[current_player;main;0,3.25;8,3;8] @@ -132,7 +134,7 @@ function start_match(map) -- Start the match for i = 10, 1, -1 do -- count down from 10 to 1 (yes you are free to set me on fire for this horrible solution) core.after(map_data.start_time - 10 + i, function() - core.chat_send_all(core.colorize("green", string.format("Match starts in %d second%s.", (11 - i), 11 - i == 1 and "" or "s"))) -- <-- RIP readability + core.chat_send_all(core.colorize("green", string.format("Match starts in %d second%s.", 11 - i, 11 - i == 1 and "" or "s"))) -- <- RIP readability end) end diff --git a/mods/game/main/init.lua b/mods/game/main/init.lua index b8cbffa..5ef686e 100644 --- a/mods/game/main/init.lua +++ b/mods/game/main/init.lua @@ -51,7 +51,7 @@ core.register_on_joinplayer(function(player) }) if player:get_meta():get_string("class") == "" then - player:get_meta():set_string("class", "assault") + player:get_meta():set_string("class", "2") -- Assault end set_player_mode(player, "normal") @@ -91,13 +91,13 @@ core.register_on_player_receive_fields(function(player, formname, fields) end if fields.class_sniper then - player:get_meta():set_string("class", "sniper") + player:get_meta():set_string("class", "1") give_player_items(player) elseif fields.class_assault then - player:get_meta():set_string("class", "assault") + player:get_meta():set_string("class", "2") give_player_items(player) elseif fields.class_shotgun then - player:get_meta():set_string("class", "shotgun") + player:get_meta():set_string("class", "3") give_player_items(player) end end) diff --git a/mods/game/maps/README.md b/mods/game/maps/README.md index c12ccc0..fa5c873 100644 --- a/mods/game/maps/README.md +++ b/mods/game/maps/README.md @@ -48,7 +48,24 @@ local map_data = { on_start = "(Lua script to be run after /start is run, leave blank unless you know what you are doing!)", on_barrier_remove = "(Lua script to be run after the barrier is removed, leave blank unless you know what you are doing!)", on_end = "(Lua script to be run after the match has ended, leave blank unless you know what you are doing!)" - } + }, + + classes = { + class_1 = { + name = "(Name of class #1 here)", + initial_items = {"(Initial item #1 for class #1)", "(Initial item #2 for class #1...)"} + }, + + class_2 = { + name = "(Name of class #2 here)", + initial_items = {"(Initial item #1 for class #2)", "(Initial item #2 for class #2...)"} + }, + + class_3 = { + name = "(Name of class #3 here)", + initial_items = {"(Initial item #1 for class #3)", "(Initial item #2 for class #3...)"} + } + } } return map_data diff --git a/mods/game/maps/init.lua b/mods/game/maps/init.lua index a9baa89..9e80bba 100644 --- a/mods/game/maps/init.lua +++ b/mods/game/maps/init.lua @@ -16,6 +16,29 @@ function place_map(map) if map_data.start_time == nil or map_data.start_time <= 0 then map_data.start_time = 30 end + + if map_data.classes == nil then + map_data.classes = {} + map_data.classes.class_1 = {} + map_data.classes.class_2 = {} + map_data.classes.class_3 = {} + end + + if map_data.classes.class_1.initial_items == nil or map_data.classes.class_1.name == nil then + map_data.classes.class_1.initial_items = {"ctf_ranged:m200_loaded", "default:sword_stone", "ctf_ranged:ammo 100"} + map_data.classes.class_1.name = "Long-range" + end + + if map_data.classes.class_2.initial_items == nil or map_data.classes.class_2.name == nil then + map_data.classes.class_2.initial_items = {"ctf_ranged:ak47_loaded", "ctf_ranged:glock17_loaded", "ctf_ranged:ammo 100"} + map_data.classes.class_2.name = "Mid-range" + end + + if map_data.classes.class_3.initial_items == nil or map_data.classes.class_3.name == nil then + map_data.classes.class_3.initial_items = {"ctf_ranged:benelli_loaded", "ctf_ranged:glock17_loaded", "ctf_ranged:ammo 100"} + map_data.classes.class_3.name = "Short-range" + end + return map_data end