diff options
author | Singularis <singularis@volny.cz> | 2022-08-05 18:14:55 +0200 |
---|---|---|
committer | orwell <orwell@bleipb.de> | 2025-05-27 20:22:01 +0200 |
commit | 2d0f3568f72788d2d4689460ffd5f850c3d3d81e (patch) | |
tree | 4a6fb724fbf0c6d8dbf7a49521aa0fefc9316192 | |
parent | 95b158e62c90257d187ca7910b4fc3ad9548e242 (diff) | |
download | advtrains-2d0f3568f72788d2d4689460ffd5f850c3d3d81e.tar.gz advtrains-2d0f3568f72788d2d4689460ffd5f850c3d3d81e.tar.bz2 advtrains-2d0f3568f72788d2d4689460ffd5f850c3d3d81e.zip |
[advtrains] včasný zvuk výstražného přejezdu
- [somemoretrains_tram] změna předmětů vracených po vytěžení vlaku
-rw-r--r-- | advtrains/signals.lua | 22 |
1 files changed, 16 insertions, 6 deletions
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, } ) |