49 lines
1.5 KiB
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)
|