diff --git a/mods/join_fs/api.lua b/mods/join_fs/api.lua deleted file mode 100644 index f1d48b0..0000000 --- a/mods/join_fs/api.lua +++ /dev/null @@ -1,69 +0,0 @@ -join_fs = { - slides = {}, - players = {} -} - -function join_fs.load() - local filepath = minetest.get_worldpath() .. "/join_fs.txt" - local file = io.open(filepath, "r") - if file then - local table = minetest.deserialize(file:read("*all")) - if type(table) == "table" then - join_fs.players = table.players - return - end - end -end - -function join_fs.save() - local filepath = minetest.get_worldpath() .. "/join_fs.txt" - local file = io.open(filepath, "w") - if file then - file:write(minetest.serialize({ - players = join_fs.players - })) - file:close() - else - minetest.log("warning", "Failed to save join_fs player config!") - end -end - -minetest.register_on_shutdown(function() - join_fs.save() -end) - -function join_fs.confirm(name, sname) - local player = join_fs.players[name] - if not player then - player = {} - join_fs.players[name] = player - end - player[sname] = true - join_fs.save() -end - -function join_fs.register_slide(def) - table.insert(join_fs.slides, def) - return def.name -end - -function join_fs.show_next_slide(player) - for _, def in pairs(join_fs.slides) do - local pids = join_fs.players[player:get_player_name()] or {} - if def.should_show(player, pids[def.name]) then - def.show(player) - break - end - end -end - -join_fs.load() -minetest.register_on_joinplayer(function (player) - local name = player:get_player_name() - minetest.after(0.5, function() - local player = minetest.get_player_by_name(name) - if player then - join_fs.show_next_slide(player) - end - end) -end) diff --git a/mods/join_fs/depends.txt b/mods/join_fs/depends.txt deleted file mode 100644 index 91ee42b..0000000 --- a/mods/join_fs/depends.txt +++ /dev/null @@ -1 +0,0 @@ -shooter diff --git a/mods/join_fs/init.lua b/mods/join_fs/init.lua deleted file mode 100644 index 689e3d1..0000000 --- a/mods/join_fs/init.lua +++ /dev/null @@ -1,64 +0,0 @@ -dofile(minetest.get_modpath("join_fs") .. "/api.lua") - --- Rules slide from agreerules - -join_fs.register_slide({ - name = "rules", - should_show = function(player, has_been_shown_before) - return not minetest.check_player_privs(player:get_player_name(), {interact=true}) - end, - show = function(player) - local msgs = { - "Welcome to Capture the Flag!", - "Developed, hosted, and moderated by rubenwardy.", - " tip: use /vote_next to skip to the next round", - ",By playing on this server you agree to these rules:", - "1. Be nice. eg: No (excessive or bad) swearing", - "2. No dating", - "3. Don't be a cheater", - " (No hacked clients or griefing/sabotage of team)", - "4. Don't impersonate other community members", - "Failure to follow these rules may result in a kick or ban", - " (temp or permanent) depending on severity."} - - local fs = "" - for _, line in pairs(msgs) do - if fs ~= "" then - fs = fs .. "," - end - fs = fs .. minetest.formspec_escape(line) - end - - fs = "size[8,9] textlist[0.1,0.1;7.8,7;rules;" .. fs .. "]" - fs = fs .. " button_exit[0.5,7;3.5,2;yes;" .. - minetest.formspec_escape("Yes, let me play!") .. "]" - fs = fs .. " button[4,7;3.5,2;no;" .. - minetest.formspec_escape("No, get me out of here!") .. "]" - minetest.show_formspec(player:get_player_name(), "join_fs:rules", fs) - end -}) - -minetest.register_on_player_receive_fields(function(player, form, fields) - if form == "join_fs:rules" then - local name = player:get_player_name() - - if fields.rules then - return true - elseif not fields.yes or fields.no then - minetest.kick_player(name, - "You need to agree to the rules to play on this server. " .. - "Please rejoin and confirm another time.") - return true - end - - local privs = minetest.get_player_privs(name) - privs.shout = true - privs.interact = true - - minetest.set_player_privs(name, privs) - minetest.chat_send_player(name, "Welcome "..name.."! You have now permission to play!") - - join_fs.confirm(name, "rules") - join_fs.show_next_slide(player) - end -end) diff --git a/mods/rules/init.lua b/mods/rules/init.lua new file mode 100644 index 0000000..4dc345d --- /dev/null +++ b/mods/rules/init.lua @@ -0,0 +1,96 @@ +-- Rules slide from agreerules + +rules = {} +function rules.show(player) + local msgs = { + "Welcome to Capture the Flag!", + "Developed and hosted by rubenwardy.", + "Moderators: Kpenguin, Thomas-S, Dragonop,", + " stormchaser3000, Calinou.", + " tip: use /vote to skip to the next round", + ",By playing on this server you agree to these rules:", + "1. Be nice. eg: No (excessive or bad) swearing", + "2. No dating.", + "3. Don't be a cheater. No hacked clients.", + "4. Don't be a traitor. Don't:", + " a. Dig blocks in your base to make it less secure or", + " to trap team mates on purpuse.", + " b. Help the other team.", + "5. Don't impersonate other community members", + "Failure to follow these rules may result in a kick or ban", + " (temp or permanent) depending on severity."} + + local fs = "" + for _, line in pairs(msgs) do + if fs ~= "" then + fs = fs .. "," + end + fs = fs .. minetest.formspec_escape(line) + end + + + fs = "size[8,8]textlist[0.1,0.1;7.8,6;msg;" .. fs .. "]" + if minetest.check_player_privs(player:get_player_name(), { interact = true }) then + fs = fs .. "button_exit[0.5,6;7,2;yes;Okay]" + else + local yes = minetest.formspec_escape("Yes, let me play!") + local no = minetest.formspec_escape("No, get me out of here!") + + fs = fs .. "button_exit[0.5,6;3.5,2;no;" .. no .. "]" + fs = fs .. "button_exit[4,6;3.5,2;yes;" .. yes .. "]" + end + + minetest.show_formspec(player:get_player_name(), "rules:rules", fs) +end + +minetest.register_chatcommand("rules", { + func = function(name, param) + if param ~= "" and + minetest.check_player_privs(name, { kick = true }) then + name = param + end + + local player = minetest.get_player_by_name(name) + if player then + rules.show(player) + return true, "Rules shown." + else + return false, "Player " .. name .. " does not exist or is not online" + end + end +}) + +minetest.register_on_joinplayer(function(player) + if not minetest.check_player_privs(player:get_player_name(), { interact = true }) then + rules.show(player) + end +end) + +minetest.register_on_player_receive_fields(function(player, form, fields) + if form ~= "rules:rules" then + return + end + + local name = player:get_player_name() + if minetest.check_player_privs(name, { interact = true }) then + return true + end + + if fields.msg then + return true + elseif not fields.yes or fields.no then + minetest.kick_player(name, + "You need to agree to the rules to play on this server. " .. + "Please rejoin and confirm another time.") + return true + end + + local privs = minetest.get_player_privs(name) + privs.shout = true + privs.interact = true + minetest.set_player_privs(name, privs) + + minetest.chat_send_player(name, "Welcome "..name.."! You have now permission to play!") + + return true +end)