Setting cleaning

master
rubenwardy 2015-07-14 18:30:41 +01:00
parent 5706b89871
commit 0f66ff6b07
4 changed files with 87 additions and 24 deletions

View File

@ -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

View File

@ -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",

View File

@ -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!")

View File

@ -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)