Setting cleaning
parent
5706b89871
commit
0f66ff6b07
|
@ -1,3 +1,47 @@
|
|||
-- Awaiting core support.
|
||||
local function __genOrderedIndex( t )
|
||||
local orderedIndex = {}
|
||||
for key in pairs(t) do
|
||||
table.insert( orderedIndex, key )
|
||||
end
|
||||
table.sort( orderedIndex )
|
||||
return orderedIndex
|
||||
end
|
||||
|
||||
local function orderedNext(t, state)
|
||||
-- Equivalent of the next function, but returns the keys in the alphabetic
|
||||
-- order. We use a temporary ordered key table that is stored in the
|
||||
-- table being iterated.
|
||||
|
||||
local key = nil
|
||||
if state == nil then
|
||||
t.__orderedIndex = __genOrderedIndex( t )
|
||||
key = t.__orderedIndex[1]
|
||||
else
|
||||
for i = 1,table.getn(t.__orderedIndex) do
|
||||
if t.__orderedIndex[i] == state then
|
||||
key = t.__orderedIndex[i+1]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if key then
|
||||
return key, t[key]
|
||||
end
|
||||
|
||||
-- no more value to return, cleanup
|
||||
t.__orderedIndex = nil
|
||||
return
|
||||
end
|
||||
|
||||
function orderedPairs(t)
|
||||
-- Equivalent of the pairs() function on tables. Allows to iterate
|
||||
-- in order
|
||||
return orderedNext, t, nil
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Registered
|
||||
ctf.registered_on_load = {}
|
||||
function ctf.register_on_load(func)
|
||||
|
@ -118,13 +162,17 @@ end
|
|||
|
||||
-- Set default setting value
|
||||
function ctf._set(setting, default)
|
||||
if ctf._defsettings[setting] then
|
||||
ctf.warning("settings", "Setting " .. dump(setting) .. " redeclared!")
|
||||
ctf.warning("settings", debug.traceback())
|
||||
end
|
||||
ctf._defsettings[setting] = default
|
||||
|
||||
if minetest.setting_get("ctf."..setting) then
|
||||
ctf.log("init", "- " .. setting .. ": " .. minetest.setting_get("ctf."..setting))
|
||||
ctf.log("settings", "- " .. setting .. ": " .. minetest.setting_get("ctf."..setting))
|
||||
elseif minetest.setting_get("ctf_"..setting) then
|
||||
ctf.log("init", "- " .. setting .. ": " .. minetest.setting_get("ctf_"..setting))
|
||||
ctf.warning("init", "deprecated setting ctf_"..setting..
|
||||
ctf.log("settings", "- " .. setting .. ": " .. minetest.setting_get("ctf_"..setting))
|
||||
ctf.warning("settings", "deprecated setting ctf_"..setting..
|
||||
" used, use ctf."..setting.." instead.")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -144,6 +144,17 @@ minetest.register_chatcommand("ctf_reload", {
|
|||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("ctf_ls", {
|
||||
description = "ctf: list settings",
|
||||
privs = {ctf_admin=true},
|
||||
func = function(name, param)
|
||||
minetest.chat_send_player(name, "Settings:")
|
||||
for set, def in orderedPairs(ctf._defsettings) do
|
||||
minetest.chat_send_player(name, " - " .. set .. ": " .. dump(ctf.setting(set)))
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("team_owner", {
|
||||
params = "player name",
|
||||
description = "Make player team owner",
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
ctf.register_on_init(function()
|
||||
ctf.log("flash", "Initialising...")
|
||||
ctf._set("gui.team.teleport_to_spawn", false)
|
||||
ctf._set("flash", false)
|
||||
ctf._set("flash.teams", "red, red, 15, 7, 39; blue, blue, -9, 9, -43")
|
||||
ctf._set("flash.remove_leaveplayer", true)
|
||||
ctf._set("remove_player_on_leave", true)
|
||||
ctf._set("new_game.teams", "")
|
||||
ctf._set("new_game.clear_inv", false)
|
||||
-- ^ name, color, x, y, z; name, color, x, y, z
|
||||
-- ^ eg: red, red, 15, 7, 39; blue, blue, -9, 9, -43
|
||||
|
||||
end)
|
||||
|
||||
local function safe_place(pos, node)
|
||||
|
@ -46,15 +48,19 @@ minetest.register_on_joinplayer(function(player)
|
|||
end)
|
||||
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
if ctf.setting("flash.remove_leaveplayer") then
|
||||
if ctf.setting("remove_player_on_leave") then
|
||||
ctf.remove_player(player:get_player_name())
|
||||
end
|
||||
end)
|
||||
|
||||
ctf.register_on_new_game(function()
|
||||
local teams = ctf.setting("new_game.teams")
|
||||
if teams:trim() == "" then
|
||||
return
|
||||
end
|
||||
ctf.log("flash", "Setting up new game!")
|
||||
|
||||
local teams = ctf.setting("flash.teams"):split(";")
|
||||
teams = teams:split(";")
|
||||
local pos = {}
|
||||
for i, v in pairs(teams) do
|
||||
local team = v:split(",")
|
||||
|
@ -91,16 +97,10 @@ ctf.register_on_new_game(function()
|
|||
|
||||
for i, player in pairs(minetest.get_connected_players()) do
|
||||
local name = player:get_player_name()
|
||||
local inv = player:get_inventory()
|
||||
inv:set_list("main", {})
|
||||
inv:set_list("craft", {})
|
||||
|
||||
local alloc_mode = tonumber(ctf.setting("allocate_mode"))
|
||||
if alloc_mode == 0 then
|
||||
return
|
||||
end
|
||||
local team = ctf.autoalloc(name, alloc_mode)
|
||||
if team then
|
||||
|
||||
if alloc_mode ~= 0 and team then
|
||||
ctf.log("autoalloc", name .. " was allocated to " .. team)
|
||||
ctf.join(name, team)
|
||||
end
|
||||
|
@ -113,10 +113,13 @@ ctf.register_on_new_game(function()
|
|||
end
|
||||
end
|
||||
|
||||
minetest.log("action", "Giving initial stuff to player "..player:get_player_name())
|
||||
player:get_inventory():add_item('main', 'default:pick_steel')
|
||||
player:get_inventory():add_item('main', 'default:sword_steel')
|
||||
player:get_inventory():add_item('main', 'default:cobble 99')
|
||||
if ctf.setting("new_game.clear_inv_on_new_game") then
|
||||
local inv = player:get_inventory()
|
||||
inv:set_list("main", {})
|
||||
inv:set_list("craft", {})
|
||||
give_initial_stuff(player)
|
||||
end
|
||||
|
||||
player:set_hp(20)
|
||||
end
|
||||
minetest.chat_send_all("Next round!")
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
minetest.register_on_newplayer(function(player)
|
||||
--print("on_newplayer")
|
||||
function give_initial_stuff(player)
|
||||
if minetest.setting_getbool("give_initial_stuff") then
|
||||
minetest.log("action", "Giving initial stuff to player "..player:get_player_name())
|
||||
player:get_inventory():add_item('main', 'default:pick_steel')
|
||||
player:get_inventory():add_item('main', 'default:sword_steel')
|
||||
player:get_inventory():add_item('main', 'default:cobble 99')
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
minetest.register_on_newplayer(give_initial_stuff)
|
||||
|
|
Loading…
Reference in New Issue