diff --git a/mods/ctf/ctf_map/barrier.lua b/mods/ctf/ctf_map/barrier.lua index 6743538..8c77f12 100644 --- a/mods/ctf/ctf_map/barrier.lua +++ b/mods/ctf/ctf_map/barrier.lua @@ -246,16 +246,10 @@ if minetest.get_modpath("ctf") then end for _, player in pairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local tname = ctf.player(name).team - local pos = player:get_pos() - local privs = minetest.get_player_privs(name) - if tname and not privs.fly and privs.interact then - if (tname == "blue" and pos.z >= 0) or - (tname == "red" and pos.z <= 0) then - minetest.chat_send_player(name, "Match hasn't started yet!") - ctf.move_to_spawn(name) - end + if ctf_map.get_team_relative_z(player) < 0 and not ctf_map.can_cross(player) then + local name = player:get_player_name() + minetest.chat_send_player(name, "Match hasn't started yet!") + ctf.move_to_spawn(name) end end diff --git a/mods/ctf/ctf_map/init.lua b/mods/ctf/ctf_map/init.lua index 1120b58..f3c9386 100644 --- a/mods/ctf/ctf_map/init.lua +++ b/mods/ctf/ctf_map/init.lua @@ -1,5 +1,16 @@ ctf_map = {} +function ctf_map.get_team_relative_z(player) + local name = player:get_player_name() + local tname = ctf.player(name).team + return (tname == "red" and 1 or -1) * player:get_pos().z +end + +-- Overridden by server mods +function ctf_map.can_cross(player) + return false +end + dofile(minetest.get_modpath("ctf_map") .. "/nodes.lua") dofile(minetest.get_modpath("ctf_map") .. "/emerge.lua") dofile(minetest.get_modpath("ctf_map") .. "/barrier.lua")