aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSingularis <singularis@volny.cz>2022-08-05 18:14:55 +0200
committerorwell <orwell@bleipb.de>2025-05-27 20:22:01 +0200
commit2d0f3568f72788d2d4689460ffd5f850c3d3d81e (patch)
tree4a6fb724fbf0c6d8dbf7a49521aa0fefc9316192
parent95b158e62c90257d187ca7910b4fc3ad9548e242 (diff)
downloadadvtrains-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.lua22
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,
}
)