0
0
Fork 0
minetest-mod-rules/init.lua

49 lines
1.5 KiB
Lua

local NAME = minetest.get_current_modname()
local PATH = minetest.get_modpath(NAME) .."/rules/"
local MODFILES = minetest.get_dir_list(PATH, false)
serverrules = {}
spacenum = 20 - string.len(NAME)
minetest.debug("" .. NAME .. string.rep(" ",spacenum) .. "init")
-- This assumes that the lua/ subdir contains lua code only.
for i=1,table.getn(MODFILES),1
do
minetest.debug(""..NAME .. string.rep(" ",spacenum) .."load " .. MODFILES[i])
dofile(PATH .. MODFILES[i])
end
minetest.debug("| "..NAME .. string.rep(" ", spacenum) .."rules loaded!")
local rand = PseudoRandom(tonumber(SecureRandom():next_bytes():byte(1)))
local function getruleset()
index = math.floor(rand:next() / 32767 * #serverrules + 1)
return serverrules[index] or {"A bomb is a bad choice for close range combat."}
end
local function show_rules(playername)
local ruleset = getruleset()
local formspec = "size[10,12]real_coordinates[true]textarea[0,0;10,11;;rules;"
for i=1, #ruleset do
formspec = formspec .. i .. ". " .. minetest.formspec_escape(ruleset[i]) .. "\n"
end
formspec = formspec .. "]button_exit[0,11;10,1;;I agree to be bound by these terms and conditions]"
minetest.show_formspec(playername, "idontcare", formspec)
end
minetest.register_chatcommand("rules",{
params = "",
description = "Shows server rules YOU MUST AGREE BEFORE PLAYING",
func = function(name, param)
show_rules(name)
return true
end
})
minetest.register_on_joinplayer(function(player)
show_rules(player:get_player_name())
end)