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