Add speaker node
Minor cleanups and fixes by sofar. Added reading of existing message for easy editing. Add attribution for sound effect.
This commit is contained in:
parent
75cfc90fe3
commit
4673d6dfcd
@ -1,3 +1,4 @@
|
|||||||
boxes
|
boxes
|
||||||
frame
|
frame
|
||||||
sounds
|
sounds
|
||||||
|
fsc
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
--[[
|
--[[
|
||||||
|
|
||||||
mech - mechanisms for Inside The Box
|
mech - mechanisms for Inside The Box
|
||||||
@ -1378,6 +1377,57 @@ minetest.register_node("mech:randomizer", {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_node("mech:speaker", {
|
||||||
|
description = S("Speaker"),
|
||||||
|
tiles = {"speaker.png"},
|
||||||
|
groups = {node = 1, unbreakable = 1},
|
||||||
|
sounds = sounds.metal,
|
||||||
|
on_construct = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("msg", "")
|
||||||
|
end,
|
||||||
|
on_rightclick = function(pos, node, puncher, itemstack, pointed_thing)
|
||||||
|
local name = puncher:get_player_name()
|
||||||
|
if not puncher then
|
||||||
|
return itemstack
|
||||||
|
elseif not boxes.players_editing_boxes[name] then
|
||||||
|
return do_player_place(pos, node, puncher, itemstack, pointed_thing)
|
||||||
|
end
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local metatable = meta:to_table()
|
||||||
|
local msg = ""
|
||||||
|
if metatable.fields and metatable.fields.msg then
|
||||||
|
msg = metatable.fields.msg
|
||||||
|
end
|
||||||
|
local form = "field[msg;message;" .. msg .. "]"
|
||||||
|
fsc.show(name, form, {}, function(player, fields, context)
|
||||||
|
if fields.msg then
|
||||||
|
meta:set_string("msg", fields.msg)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
on_trigger = function(pos)
|
||||||
|
local box = boxes.find_box(pos)
|
||||||
|
if not box then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local msg = meta:get_string("msg")
|
||||||
|
if msg then
|
||||||
|
-- underline text character
|
||||||
|
local underline = string.char(0xcd) .. string.char(0x9f)
|
||||||
|
local newstring = ""
|
||||||
|
for i = 0, #msg, 1 do
|
||||||
|
newstring = newstring .. string.sub(msg, i, i) .. underline
|
||||||
|
end
|
||||||
|
minetest.chat_send_player(box.name, newstring)
|
||||||
|
minetest.sound_play("speaker_trigger", {to_player = box.name}, true)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
-- event reactors:
|
-- event reactors:
|
||||||
-- doors
|
-- doors
|
||||||
|
2
mods/mech/sounds/license.md
Normal file
2
mods/mech/sounds/license.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
* speaker_trigger : From AlienX, CC-BY-3.0
|
||||||
|
- https://freesound.org/people/AlienXXX/sounds/249975/
|
BIN
mods/mech/sounds/speaker_trigger.1.ogg
Normal file
BIN
mods/mech/sounds/speaker_trigger.1.ogg
Normal file
Binary file not shown.
BIN
mods/mech/sounds/speaker_trigger.2.ogg
Normal file
BIN
mods/mech/sounds/speaker_trigger.2.ogg
Normal file
Binary file not shown.
BIN
mods/mech/textures/speaker.png
Normal file
BIN
mods/mech/textures/speaker.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 660 B |
Loading…
x
Reference in New Issue
Block a user