From 58daf49b825e290442312e5f7a37ef7d6b05ae93 Mon Sep 17 00:00:00 2001 From: Vitaliy Olkhin Date: Thu, 15 Feb 2024 14:59:53 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=86=D0=B8=D1=8E=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=B4?= =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D0=BE=D0=B2=20=D0=BF=D0=BE=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=B2=D0=B8=D0=BB=D0=B5=D0=B3=D0=B8=D0=B8=20ban=20=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B7=D0=B8=D1=86=D0=B8=D0=B8=20=D1=82=D1=8E=D1=80?= =?UTF-8?q?=D1=8C=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- init.lua | 39 +++++++++++++++++++++++++++------------ mod.conf | 2 +- nodes.lua | 15 ++++++++++++++- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/init.lua b/init.lua index 5eabe74..ffeb4fd 100644 --- a/init.lua +++ b/init.lua @@ -6,6 +6,7 @@ jail.forced_labor = {y = -14848} --Начало глубины принудит local jailpos = { x = 690, y = 5, z = -7 } local releasepos = { x = 684, y = 5, z = -7 } local timer = 0 +local lower_prison_limit = -5 dofile(minetest.get_modpath("jail") .. "/nodes.lua") @@ -140,9 +141,26 @@ minetest.register_on_shutdown(function() mod_storage:set_string("prisoners", prisoners) end) +jail.private_messages_with_privilege = function(list_privs, msg) + local player_name = 'player_name' + + for _, player in ipairs(minetest.get_connected_players()) do + player_name = player:get_player_name() + + boolean = minetest.check_player_privs(player:get_player_name(), list_privs) + if boolean then + minetest.chat_send_player(player_name, msg) + end + end +end minetest.register_globalstep(function(dtime) - local forced_labor = 0 + local forced_labor = jail.forced_labor.y + 1000 + local max_pos_x = jailpos.x + jail.escape_boundary + local min_pos_x = jailpos.x - jail.escape_boundary + local max_pos_y = jailpos.x + jail.escape_boundary + local max_pos_z = jailpos.z + jail.escape_boundary + local min_pos_z = jailpos.z - jail.escape_boundary -- every 5 seconds if timer > os.time() then @@ -156,23 +174,20 @@ minetest.register_globalstep(function(dtime) if object then local pos = object:get_pos() - local max_pos_x = jail.display_node.x + jail.escape_boundary - local min_pos_x = jail.display_node.x - jail.escape_boundary - local max_pos_y = jail.display_node.y + jail.escape_boundary - local max_pos_z = jail.display_node.z + jail.escape_boundary - local min_pos_z = jail.display_node.z - jail.escape_boundary - - forced_labor = jail.forced_labor.y + 1000 - if (max_pos_x < pos.x or pos.x < min_pos_x or max_pos_z < pos.z or pos.z < min_pos_z) and pos.y > -5 then + if (max_pos_x < pos.x or pos.x < min_pos_x or max_pos_z < pos.z or pos.z < min_pos_z or pos.y > max_pos_y) + and pos.y > lower_prison_limit then object:set_pos(jailpos) - minetest.chat_send_all(minetest.colorize("red", S("Escape attempt: ") .. prisoners_list[i])) + jail.private_messages_with_privilege({ban = true}, + minetest.colorize("red", S("Escape attempt: ") .. prisoners_list[i])) jail.set_permissions_for_the_jail(prisoners_list[i]) end --Проверка если игрок копает в низ по кординатам тюрьмы - if pos.y < -5 and pos.y > forced_labor then + if pos.y < lower_prison_limit and pos.y > forced_labor then object:set_pos(jailpos) - minetest.chat_send_all(minetest.colorize("red", prisoners_list[i] .. S(": He dug under the prison"))) + jail.private_messages_with_privilege({ban = true}, + minetest.colorize("red", prisoners_list[i] .. S(": He dug under the prison"))) + minetest.chat_send_all() jail.set_permissions_for_the_jail(prisoners_list[i]) end diff --git a/mod.conf b/mod.conf index 2fbf1b1..61480fa 100644 --- a/mod.conf +++ b/mod.conf @@ -3,4 +3,4 @@ description = Adds jail for game depends = default min_minetest_version = 5.7 title = Jail -release = 1 \ No newline at end of file +release = 2 \ No newline at end of file diff --git a/nodes.lua b/nodes.lua index e46df5d..4359bde 100644 --- a/nodes.lua +++ b/nodes.lua @@ -32,4 +32,17 @@ minetest.register_node("jail:borders", { paramtype = "light", groups = {dig_immediate = 3, not_in_creative_inventory = 1}, drop = "" -}) \ No newline at end of file +}) + +function dump(o) + if type(o) == 'table' then + local s = '{ ' + for k,v in pairs(o) do + if type(k) ~= 'number' then k = '"'..k..'"' end + s = s .. '['..k..'] = ' .. dump(v) .. ',' + end + return s .. '} ' + else + return tostring(o) + end +end \ No newline at end of file