From 2d0f3568f72788d2d4689460ffd5f850c3d3d81e Mon Sep 17 00:00:00 2001 From: Singularis Date: Fri, 5 Aug 2022 18:14:55 +0200 Subject: [advtrains] včasný zvuk výstražného přejezdu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - [somemoretrains_tram] změna předmětů vracených po vytěžení vlaku --- advtrains/signals.lua | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'advtrains/signals.lua') diff --git a/advtrains/signals.lua b/advtrains/signals.lua index bd1bd49..ed73d98 100644 --- a/advtrains/signals.lua +++ b/advtrains/signals.lua @@ -286,6 +286,7 @@ minetest.register_node("advtrains:across_off", { mesecons = {effector = { rules = advtrains.meseconrules, action_on = function (pos, node) + minetest.get_meta(pos):set_int("crossing_state", 0) advtrains.ndb.swap_node(pos, {name = "advtrains:across_on", param2 = node.param2}, true) end }}, @@ -293,12 +294,14 @@ minetest.register_node("advtrains:across_off", { getstate = "off", setstate = function(pos, node, newstate) if newstate == "on" then + minetest.get_meta(pos):set_int("crossing_state", 0) advtrains.ndb.swap_node(pos, {name = "advtrains:across_on", param2 = node.param2}, true) end end, }, on_rightclick=function(pos, node, player) if advtrains.check_turnout_signal_protection(pos, player:get_player_name()) then + minetest.get_meta(pos):set_int("crossing_state", 0) advtrains.ndb.swap_node(pos, {name = "advtrains:across_on", param2 = node.param2}, true) end end, @@ -350,14 +353,21 @@ minetest.register_abm( { label = "Sound for Level Crossing", nodenames = {"advtrains:across_on"}, - interval = 3, + interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - minetest.sound_play("advtrains_crossing_bell", { - pos = pos, - gain = 1.0, -- default - max_hear_distance = 16, -- default, uses an euclidean metric - }) + local meta = minetest.get_meta(pos) + local state = meta:get_int("crossing_state") + if state <= 0 then + minetest.sound_play("advtrains_crossing_bell", { + pos = pos, + gain = 1.0, -- default + max_hear_distance = 16, -- default, uses an euclidean metric + }) + meta:set_int("crossing_state", 2) + else + meta:set_int("crossing_state", state - 1) + end end, } ) -- cgit v1.2.3