master
runs 2021-08-01 16:15:32 +02:00
parent 40f6415c04
commit 2241c8b6d5
1 changed files with 14 additions and 4 deletions

View File

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