mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-01-11 18:40:25 +01:00
add double doors systeme open/close
This commit is contained in:
parent
6436a28c1b
commit
ca05a04fba
@ -130,6 +130,58 @@ local transform = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function doors.get_pos(pos, dir, p1, b)
|
||||||
|
local pos2 = {x=pos.x, y=pos.y, z=pos.z}
|
||||||
|
if b == "a" then
|
||||||
|
if p1 == 0 then
|
||||||
|
if dir == 1 then
|
||||||
|
pos2.z=pos2.z-1
|
||||||
|
elseif dir == 2 then
|
||||||
|
pos2.x=pos2.x-1
|
||||||
|
elseif dir == 3 then
|
||||||
|
pos2.z=pos2.z+1
|
||||||
|
else
|
||||||
|
pos2.x=pos2.x+1
|
||||||
|
end
|
||||||
|
elseif p1 == 3 then
|
||||||
|
if dir == 1 then
|
||||||
|
pos2.x=pos2.x+1
|
||||||
|
elseif dir == 2 then
|
||||||
|
pos2.z=pos2.z-1
|
||||||
|
elseif dir == 3 then
|
||||||
|
pos2.x=pos2.x-1
|
||||||
|
else
|
||||||
|
pos2.z=pos2.z+1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if p1 == 1 then
|
||||||
|
if dir == 1 then
|
||||||
|
pos2.x=pos2.x+1
|
||||||
|
elseif dir == 2 then
|
||||||
|
pos2.z=pos2.z-1
|
||||||
|
elseif dir == 3 then
|
||||||
|
pos2.x=pos2.x-1
|
||||||
|
else
|
||||||
|
pos2.z=pos2.z+1
|
||||||
|
end
|
||||||
|
elseif p1 == 2 then
|
||||||
|
if dir == 1 then
|
||||||
|
pos2.z=pos2.z+1
|
||||||
|
elseif dir == 2 then
|
||||||
|
pos2.x=pos2.x+1
|
||||||
|
elseif dir == 3 then
|
||||||
|
pos2.z=pos2.z-1
|
||||||
|
else
|
||||||
|
pos2.x=pos2.x-1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return pos2
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function _doors.door_toggle(pos, clicker)
|
function _doors.door_toggle(pos, clicker)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local def = minetest.registered_nodes[minetest.get_node(pos).name]
|
local def = minetest.registered_nodes[minetest.get_node(pos).name]
|
||||||
@ -163,11 +215,6 @@ function _doors.door_toggle(pos, clicker)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local dir = minetest.get_node(pos).param2
|
local dir = minetest.get_node(pos).param2
|
||||||
if state % 2 == 0 then
|
|
||||||
minetest.sound_play(def.door.sounds[1], {pos = pos, gain = 0.3, max_hear_distance = 10})
|
|
||||||
else
|
|
||||||
minetest.sound_play(def.door.sounds[2], {pos = pos, gain = 0.3, max_hear_distance = 10})
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.swap_node(pos, {
|
minetest.swap_node(pos, {
|
||||||
name = name .. transform[state + 1][dir+1].v,
|
name = name .. transform[state + 1][dir+1].v,
|
||||||
@ -175,6 +222,28 @@ function _doors.door_toggle(pos, clicker)
|
|||||||
})
|
})
|
||||||
meta:set_int("state", state)
|
meta:set_int("state", state)
|
||||||
|
|
||||||
|
--MFF double porte
|
||||||
|
local b = string.sub(def.name, -1)
|
||||||
|
local pos2 = doors.get_pos(pos, dir, old, b)
|
||||||
|
local node = minetest.get_node_or_nil(pos2)
|
||||||
|
if node and string.sub(node.name, 0, -3) == name then
|
||||||
|
if b ~= string.sub(node.name, -1) then
|
||||||
|
local state2 = minetest.get_meta(pos2):get_int("state")
|
||||||
|
if (old % 2) == (state2 % 2) then
|
||||||
|
if minetest.registered_nodes[node.name].on_rightclick then
|
||||||
|
return minetest.registered_nodes[node.name].on_rightclick(pos2, node, clicker)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- /double porte
|
||||||
|
|
||||||
|
if state % 2 == 0 then
|
||||||
|
minetest.sound_play(def.door.sounds[1], {pos = pos, gain = 0.3, max_hear_distance = 10})
|
||||||
|
else
|
||||||
|
minetest.sound_play(def.door.sounds[2], {pos = pos, gain = 0.3, max_hear_distance = 10})
|
||||||
|
end
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user