Advertisement
Guest User

Untitled

a guest
Dec 20th, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.68 KB | None | 0 0
  1. local load_time_start = os.clock()
  2. music = {}
  3. function music.reset()
  4.     music.t1 = os.clock()
  5.     music.tab = {}
  6.     music.num = 1
  7. end
  8. music.reset()
  9. music.tab = {
  10.     {"music_1", 0.2},
  11.     {"music_1", 0.5},
  12.     {"music_1", 1},
  13. }
  14.  
  15. minetest.register_node("music:play", {
  16.     description = "Play",
  17.     tiles = {"default_steel_block.png","default_steel_block.png","default_wood.png"},
  18.     groups = {bendy=2,cracky=1},
  19.     sounds = default_stone_sounds,
  20.     on_construct = function(pos)
  21.         minetest.get_meta(pos):set_string("infotext", "Play")
  22.     end,
  23.     on_punch = function(pos, _, puncher)
  24.         music.status = nil
  25.         for _,i in ipairs(music.tab) do
  26.             minetest.after(i[2], function(pos)
  27.                 if not music.status then
  28.                     minetest.sound_play(i[1], {pos = pos, gain = 1, max_hear_distance = 10})
  29.                     minetest.chat_send_player(puncher:get_player_name(), i[2]..' '..i[1])
  30.                 end
  31.             end, pos)
  32.         end
  33.     end,
  34. })
  35.  
  36. minetest.register_node("music:record", {
  37.     description = "Record",
  38.     tiles = {"default_steel_block.png","default_steel_block.png","default_wood.png"},
  39.     groups = {bendy=2,cracky=1},
  40.     sounds = default_stone_sounds,
  41.     on_construct = function(pos)
  42.         minetest.get_meta(pos):set_string("infotext", "Record")
  43.     end,
  44.     on_punch = function(pos, _, puncher)
  45.         music.status = "recording"
  46.         music.t1 = os.clock()
  47.         music.tab = {}
  48.         music.num = 1
  49.         minetest.chat_send_player(puncher:get_player_name(), 'num, tab and t1 reset')
  50.     end,
  51. })
  52.  
  53. minetest.register_node("music:box", {
  54.     description = "Sound Box",
  55.     tiles = {"default_steel_block.png","default_steel_block.png","default_wood.png"},
  56.     groups = {bendy=2,cracky=1},
  57.     sounds = default_stone_sounds,
  58.     on_construct = function(pos)
  59.         local meta = minetest.get_meta(pos)
  60.         meta:set_string("formspec", "field[text;;${text}]")
  61.         meta:set_string("infotext", "\"\"")
  62.     end,
  63.     on_receive_fields = function(pos, formname, fields, sender)
  64.         local meta = minetest.get_meta(pos)
  65.         fields.text = fields.text or ""
  66.         minetest.log("action", (sender:get_player_name() or "").." wrote \""..fields.text..
  67.                 "\" to musicbox at "..minetest.pos_to_string(pos))
  68.         meta:set_string("text", fields.text)
  69.         meta:set_string("infotext", '"'..fields.text..'"')
  70.     end,
  71.     on_punch = function(pos, _, puncher)
  72.         local meta = minetest.get_meta(pos)
  73.         local soundname = meta:get_string("text")
  74.         if music.status == "recording" then
  75.             local delay = os.clock() - music.t1
  76.             music.tab[music.num] = {soundname, delay}
  77.             music.num = music.num+1
  78.             minetest.chat_send_player(puncher:get_player_name(), delay..' '..soundname)
  79.         end
  80.         minetest.sound_play(soundname, {pos = pos, gain = 1, max_hear_distance = 10})
  81.     end,
  82. })
  83.  
  84. print(string.format("[music] loaded after ca. %.2fs", os.clock() - load_time_start))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement