From 2241c8b6d5f086c8ab9f81ab32839b5a516980ce Mon Sep 17 00:00:00 2001 From: runs Date: Sun, 1 Aug 2021 16:15:32 +0200 Subject: [PATCH] fixes --- init.lua | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 9dea4b9..f2b46c0 100644 --- a/init.lua +++ b/init.lua @@ -98,6 +98,8 @@ function ptol.freeze(player) end local obj = minetest.add_entity(player:get_pos(), "ptol:freeze") obj:get_luaentity():set_frozen_player(player) + ptol.show_warning(player) + minetest.sound_play("ptol_warning", {to_player = player:get_player_name(), gain = 1.0, max_hear_distance = 10,}) end function ptol.unfreeze(player) @@ -110,6 +112,7 @@ function ptol.unfreeze(player) objects[i]:remove() end end + ptol.remove_warning(player) end function ptol.show_warning(player) @@ -128,6 +131,12 @@ function ptol.remove_warning(player) player:hud_remove(ptol.warnings[player:get_player_name()]) end +minetest.register_on_joinplayer(function(player) + if ptol.is_frozen(player) then + ptol.unfreeze(player) + end +end) + local timer = 0 minetest.register_globalstep(function(dtime) @@ -150,12 +159,12 @@ minetest.register_globalstep(function(dtime) else player_inside = player_inside_box(player_pos, ptol_level) end + local frozen = ptol.is_frozen(player) if not player_inside then local dir_to_center = vector.direction(player_pos, ptol.settings.world_center) local player_dir = player:get_look_dir() local angle_to_center = math.deg(vector.angle(dir_to_center, player_dir)) --minetest.chat_send_all(tostring(angle_to_center)) - local frozen = ptol.is_frozen(player) --minetest.chat_send_all(tostring(angle_to_center)..":"..tostring(ptol.settings.allowed_angle)) local controls = player:get_player_control() local not_allowed_control = false @@ -164,14 +173,15 @@ minetest.register_globalstep(function(dtime) end if not(frozen) and ((angle_to_center > ptol.settings.allowed_angle) or not_allowed_control) then ptol.freeze(player) - ptol.show_warning(player) - minetest.sound_play("ptol_warning", {to_player = player:get_player_name(), gain = 1.0, max_hear_distance = 10,}) --minetest.chat_send_all("freeze") elseif frozen and (angle_to_center <= ptol.settings.allowed_angle) and not(not_allowed_control) then ptol.unfreeze(player) - ptol.remove_warning(player) --minetest.chat_send_all("unfreeze") end + else + if frozen then + ptol.unfreeze(player) + end end end end)