teleport.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. minetest.register_node("ufowreck:pad", {
  2. description = minetest.colorize("#0E0", "Alien ")..minetest.colorize("#A0F", "Teleport"),
  3. tiles = {
  4. "scifi_nodes_pad.png",
  5. "scifi_nodes_pad.png",
  6. "scifi_nodes_pad.png",
  7. "scifi_nodes_pad.png",
  8. "scifi_nodes_pad.png",
  9. "scifi_nodes_pad.png"
  10. },
  11. drawtype = "nodebox",
  12. paramtype = "light",
  13. groups = {cracky=1, oddly_breakable_by_hand=1},
  14. light_source = 5,
  15. mesecons = {effector = {
  16. rules = {
  17. {x=0, y=0, z=-1},
  18. {x=1, y=0, z=0},
  19. {x=-1, y=0, z=0},
  20. {x=0, y=0, z=1},
  21. {x=1, y=1, z=0},
  22. {x=1, y=-1, z=0},
  23. {x=-1, y=1, z=0},
  24. {x=-1, y=-1, z=0},
  25. {x=0, y=1, z=1},
  26. {x=0, y=-1, z=1},
  27. {x=0, y=1, z=-1},
  28. {x=0, y=-1, z=-1},
  29. {x=0, y=-1, z=0},
  30. },
  31. action_on = function (pos, node)
  32. local obj_list = minetest.get_objects_inside_radius(pos, 3)
  33. for _,obj in ipairs(obj_list) do
  34. if obj:is_player() then
  35. minetest.add_particlespawner(
  36. 25, --amount
  37. 1.5, --time
  38. {x=pos.x-0.9, y=pos.y-0.3, z=pos.z-0.9}, --minpos
  39. {x=pos.x+0.9, y=pos.y-0.3, z=pos.z+0.9}, --maxpos
  40. {x=0, y=0, z=0}, --minvel
  41. {x=0, y=0, z=0}, --maxvel
  42. {x=-0,y=1,z=-0}, --minacc
  43. {x=0,y=2,z=0}, --maxacc
  44. 0.5, --minexptime
  45. 1, --maxexptime
  46. 2, --minsize
  47. 5, --maxsize
  48. false, --collisiondetection
  49. "scifi_nodes_tp_part.png" --texture
  50. )
  51. local name = obj:get_player_name()
  52. minetest.after(1, function(name)
  53. minetest.sound_play("travelnet_travel", {pos = pos, gain = 0.75, max_hear_distance = 10,});
  54. local connected = minetest.get_connected_players()
  55. local still_con = false
  56. for _,player in pairs(connected) do
  57. local p_name = player:get_player_name()
  58. if p_name == name then
  59. still_con = true
  60. break
  61. end
  62. end
  63. if still_con == true then
  64. player = minetest.get_player_by_name(name)
  65. player:setpos({ x = pos.x + math.random(-1,1)*1000, y = pos.y, z = pos.z + math.random(-1,1)*1000})
  66. end
  67. end, name)
  68. end
  69. end
  70. end,
  71. }},
  72. on_rightclick = function(pos, node, clicker)
  73. minetest.add_particlespawner(
  74. 25, --amount
  75. 1.5, --time
  76. {x=pos.x-0.9, y=pos.y-0.3, z=pos.z-0.9}, --minpos
  77. {x=pos.x+0.9, y=pos.y-0.3, z=pos.z+0.9}, --maxpos
  78. {x=0, y=0, z=0}, --minvel
  79. {x=0, y=0, z=0}, --maxvel
  80. {x=-0,y=1,z=-0}, --minacc
  81. {x=0,y=2,z=0}, --maxacc
  82. 0.5, --minexptime
  83. 1, --maxexptime
  84. 2, --minsize
  85. 5, --maxsize
  86. false, --collisiondetection
  87. "scifi_nodes_tp_part.png" --texture
  88. )
  89. local name = clicker:get_player_name() or '|none'
  90. minetest.after(1, function(name)
  91. minetest.sound_play("travelnet_travel", {pos = pos, gain = 0.75, max_hear_distance = 10,});
  92. local connected = minetest.get_connected_players()
  93. local still_con = false
  94. for _,player in pairs(connected) do
  95. local p_name = player:get_player_name()
  96. if p_name == name then
  97. still_con = true
  98. break
  99. end
  100. end
  101. if still_con == true then
  102. player = minetest.get_player_by_name(name)
  103. player:setpos({ x = pos.x + math.random(-1,1)*1000, y = pos.y, z = pos.z + math.random(-1,1)*1000})
  104. end
  105. end, name)
  106. end,
  107. node_box = {
  108. type = "fixed",
  109. fixed = {
  110. {-0.9375, -0.5, -0.75, 0.875, -0.375, 0.75}, -- NodeBox1
  111. {-0.8125, -0.5, -0.875, 0.75, -0.375, 0.875}, -- NodeBox2
  112. {-0.875, -0.5, -0.8125, 0.8125, -0.375, 0.8125}, -- NodeBox3
  113. {-0.8125, -0.5, -0.75, 0.75, -0.3125, 0.75}, -- NodeBox4
  114. },
  115. sounds = default.node_sound_metal_defaults(),
  116. }
  117. })
  118. minetest.register_craft({
  119. output = "ufowreck:pad",
  120. recipe = {
  121. {"ufowreck:alien_metal", "ufowreck:alien_metal", "ufowreck:alien_metal"},
  122. {"ufowreck:alien_metal", "ufowreck:alien_control", "ufowreck:alien_metal"},
  123. {"ufowreck:alien_metal", "ufowreck:alien_metal", "ufowreck:alien_metal"}
  124. }
  125. })