player_manager.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. local S = minetest.get_translator("terms_of_service")
  2. local function make_formspec() end
  3. local TOS = [[
  4. ]] .. "1) " .. S("Always respect other players") .. "\n" .. [[
  5. ]] .. "2) " .. S("No excessive swearing") .. "\n" .. [[
  6. ]] .. "3) " .. S("No modified clients") .. "\n" .. [[
  7. ]] .. "\n" .. [[
  8. ]] .. S("Admins reserve the right to remove whoever transgress the rules. In case of repeated misbehaviours, the user will be banned")
  9. minetest.register_on_joinplayer(function(player)
  10. local p_name = player:get_player_name()
  11. if not minetest.get_player_privs(p_name).tos_accepted then
  12. minetest.after(1, function()
  13. minetest.show_formspec(p_name, "tos:tos_fs", make_formspec())
  14. end)
  15. end
  16. end)
  17. minetest.register_on_player_receive_fields(function(player, formname, fields)
  18. if formname ~= "tos:tos_fs" then return end
  19. local p_name = player:get_player_name()
  20. if fields.ok or fields.key_enter then
  21. if fields.hidden_word == string.lower(fields.entry) then
  22. local privs = minetest.get_player_privs(p_name)
  23. privs.tos_accepted = true
  24. privs.interact = true
  25. minetest.set_player_privs(p_name, privs)
  26. minetest.chat_send_player(p_name, S("Enjoy your staying!"))
  27. else
  28. minetest.chat_send_player(p_name, S("Wrong, try again"))
  29. minetest.show_formspec(p_name, "tos:tos_fs", make_formspec())
  30. return
  31. end
  32. elseif fields.quit then
  33. if not minetest.get_player_privs(p_name).tos_accepted then
  34. minetest.chat_send_player(p_name, S("Please read carefully and click 'accept'"))
  35. minetest.show_formspec(p_name, "tos:tos_fs", make_formspec())
  36. return
  37. end
  38. elseif fields.no then
  39. minetest.kick_player(p_name, S("All the players must adhere to the rules"))
  40. return
  41. else
  42. minetest.show_formspec(p_name, "tos:tos_fs", make_formspec())
  43. end
  44. end)
  45. ----------------------------------------------
  46. ---------------FUNZIONI LOCALI----------------
  47. ----------------------------------------------
  48. function make_formspec()
  49. local word = S("never")
  50. local formspec = {
  51. "size[9,8]",
  52. "textarea[0.5,0.5;8,7;TOS;".. S("SERVER RULES") .. ";"..TOS.."]",
  53. "field[0.5,7.5;6,1;entry;" .. S("When can I insult a user? One word") .. ";]",
  54. "button_exit[6,7.4;1.5,0.5;ok;" .. S("Accept") .. "]",
  55. "button[7.5,7.4;1.5,0.5;no;" .. S("Deny") .. "]",
  56. "field[10,10;0.1,0.1;hidden_word;;"..word.."]",
  57. "field_close_on_enter[;false]"
  58. }
  59. return table.concat(formspec, "")
  60. end