fixes
parent
40f6415c04
commit
2241c8b6d5
18
init.lua
18
init.lua
|
@ -98,6 +98,8 @@ function ptol.freeze(player)
|
||||||
end
|
end
|
||||||
local obj = minetest.add_entity(player:get_pos(), "ptol:freeze")
|
local obj = minetest.add_entity(player:get_pos(), "ptol:freeze")
|
||||||
obj:get_luaentity():set_frozen_player(player)
|
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
|
end
|
||||||
|
|
||||||
function ptol.unfreeze(player)
|
function ptol.unfreeze(player)
|
||||||
|
@ -110,6 +112,7 @@ function ptol.unfreeze(player)
|
||||||
objects[i]:remove()
|
objects[i]:remove()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
ptol.remove_warning(player)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ptol.show_warning(player)
|
function ptol.show_warning(player)
|
||||||
|
@ -128,6 +131,12 @@ function ptol.remove_warning(player)
|
||||||
player:hud_remove(ptol.warnings[player:get_player_name()])
|
player:hud_remove(ptol.warnings[player:get_player_name()])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
if ptol.is_frozen(player) then
|
||||||
|
ptol.unfreeze(player)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
local timer = 0
|
local timer = 0
|
||||||
|
|
||||||
minetest.register_globalstep(function(dtime)
|
minetest.register_globalstep(function(dtime)
|
||||||
|
@ -150,12 +159,12 @@ minetest.register_globalstep(function(dtime)
|
||||||
else
|
else
|
||||||
player_inside = player_inside_box(player_pos, ptol_level)
|
player_inside = player_inside_box(player_pos, ptol_level)
|
||||||
end
|
end
|
||||||
|
local frozen = ptol.is_frozen(player)
|
||||||
if not player_inside then
|
if not player_inside then
|
||||||
local dir_to_center = vector.direction(player_pos, ptol.settings.world_center)
|
local dir_to_center = vector.direction(player_pos, ptol.settings.world_center)
|
||||||
local player_dir = player:get_look_dir()
|
local player_dir = player:get_look_dir()
|
||||||
local angle_to_center = math.deg(vector.angle(dir_to_center, player_dir))
|
local angle_to_center = math.deg(vector.angle(dir_to_center, player_dir))
|
||||||
--minetest.chat_send_all(tostring(angle_to_center))
|
--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))
|
--minetest.chat_send_all(tostring(angle_to_center)..":"..tostring(ptol.settings.allowed_angle))
|
||||||
local controls = player:get_player_control()
|
local controls = player:get_player_control()
|
||||||
local not_allowed_control = false
|
local not_allowed_control = false
|
||||||
|
@ -164,14 +173,15 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
if not(frozen) and ((angle_to_center > ptol.settings.allowed_angle) or not_allowed_control) then
|
if not(frozen) and ((angle_to_center > ptol.settings.allowed_angle) or not_allowed_control) then
|
||||||
ptol.freeze(player)
|
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")
|
--minetest.chat_send_all("freeze")
|
||||||
elseif frozen and (angle_to_center <= ptol.settings.allowed_angle) and not(not_allowed_control) then
|
elseif frozen and (angle_to_center <= ptol.settings.allowed_angle) and not(not_allowed_control) then
|
||||||
ptol.unfreeze(player)
|
ptol.unfreeze(player)
|
||||||
ptol.remove_warning(player)
|
|
||||||
--minetest.chat_send_all("unfreeze")
|
--minetest.chat_send_all("unfreeze")
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
if frozen then
|
||||||
|
ptol.unfreeze(player)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue