> Fixed Height Bug

scaffolding will always go up to 32 nodes, no matter where you place the node
> Height Set to 32 nodes
  Scaffolding cannot go over 32 nodes.
This commit is contained in:
Infinatum 2016-10-25 09:45:49 +01:00
parent a00e2ff125
commit 31edf283f7
1 changed files with 45 additions and 12 deletions

View File

@ -33,34 +33,50 @@ minetest.register_node("scaffolding:scaffolding", {
-- many thanks to addi for improveing (rewriteing) my crappy code -- -- many thanks to addi for improveing (rewriteing) my crappy code --
local name = minetest.get_node(pos).name -- get loacation of node local name = minetest.get_node(pos).name -- get loacation of node
height = 0; -- set hite of scaffolding (not set) height = 0;
depth = 0; -- !!Note!! depth is not needed at the moment
--[[ debug stuff ]] --[[ debug stuff ]]
minetest.chat_send_all(string.format("node: %s",name)) minetest.chat_send_all(string.format("node: %s",name))
minetest.chat_send_all(string.format("node: %s %s %s ",pos.x, pos.y, pos.z )) minetest.chat_send_all(string.format("node: %s %s %s ",pos.x, pos.y, pos.z ))
-- set pos at bottom of scafolding tower.
repeat
pos.y = pos.y - 1; --every run get one node up
depth = depth - 1
local current_node = minetest.get_node(pos); --get the node of the new position
minetest.chat_send_all(string.format("found %q at location: %s",
current_node.name,
minetest.pos_to_string(pos)
))
until current_node.name ~= "scaffolding:scaffolding" -- will repeat untill it dose not find a scaffolding node
minetest.chat_send_all(string.format("exit loop"))
-- check height of scaffolding tower --
repeat repeat
pos.y = pos.y + 1; --every run get one node up pos.y = pos.y + 1; --every run get one node up
height = height + 1 height = height + 1
local current_node = minetest.get_node(pos); --get the node of the new position local current_node = minetest.get_node(pos); --get the node of the new position
minetest.chat_send_all(string.format("found %q at location: %s", minetest.chat_send_all(string.format("found %q at location: %s",
current_node.name, current_node.name,
minetest.pos_to_string(pos) minetest.pos_to_string(pos)
)) ))
if current_node.name == "air" then if current_node.name == "air" then
minetest.set_node(pos, {name = "scaffolding:scaffolding"} ) minetest.set_node(pos, {name = "scaffolding:scaffolding"} )
itemstack:take_item(1); --//and remove one if its the correct one itemstack:take_item(1); --//and remove one if its the correct one
player:set_wielded_item(itemstack);--//update inventory of the player player:set_wielded_item(itemstack);--//update inventory of the player
end end
until current_node.name ~= "scaffolding:scaffolding" or height >= 64 --we repeat until we find something else then "scaffolding:scaffolding" until current_node.name ~= "scaffolding:scaffolding" or height >= 32 --we repeat until we find something else then "scaffolding:scaffolding"
--maybe there should be also another limit, because its currently possible to build infinite towers --maybe there should be also another limit, because its currently possible to build infinite towers
minetest.chat_send_all(string.format("exit loop")) minetest.chat_send_all(string.format("exit loop"))
end end
end, end,
node_box = { node_box = {
type = "fixed", type = "fixed",
@ -237,13 +253,30 @@ minetest.register_node("scaffolding:reinforced_scaffolding", {
-- many thanks to addi for improveing (rewriteing) my crappy code -- -- many thanks to addi for improveing (rewriteing) my crappy code --
local name = minetest.get_node(pos).name -- get loacation of node local name = minetest.get_node(pos).name -- get loacation of node
height = 0; -- set hite of scaffolding (not set) height = 0;
depth = 0; -- !!Note!! depth is not deeded at the moment
--[[ debug stuff ]] --[[ debug stuff ]]
minetest.chat_send_all(string.format("node: %s",name)) minetest.chat_send_all(string.format("node: %s",name))
minetest.chat_send_all(string.format("node: %s %s %s ",pos.x, pos.y, pos.z )) minetest.chat_send_all(string.format("node: %s %s %s ",pos.x, pos.y, pos.z ))
-- set pos at bottom of scafolding tower.
repeat
pos.y = pos.y - 1; --every run get one node up
depth = depth - 1 -- !!Note!! depth is not needed at the moment
local current_node = minetest.get_node(pos); --get the node of the new position
minetest.chat_send_all(string.format("found %q at location: %s",
current_node.name,
minetest.pos_to_string(pos)
))
until current_node.name ~= "scaffolding:iron_scaffolding" -- will repeat untill it dose not find a scaffolding node
minetest.chat_send_all(string.format("exit loop"))
-- check height of scaffolding tower --
repeat repeat
pos.y = pos.y + 1; --every run get one node up pos.y = pos.y + 1; --every run get one node up
height = height + 1 height = height + 1
@ -258,7 +291,7 @@ minetest.register_node("scaffolding:reinforced_scaffolding", {
itemstack:take_item(1); --//and remove one if its the correct one itemstack:take_item(1); --//and remove one if its the correct one
player:set_wielded_item(itemstack);--//update inventory of the player player:set_wielded_item(itemstack);--//update inventory of the player
end end
until current_node.name ~= "scaffolding:iron_scaffolding" or height >= 64 --we repeat until we find something else then "scaffolding:scaffolding" until current_node.name ~= "scaffolding:iron_scaffolding" or height >= 32 --we repeat until we find something else then "scaffolding:scaffolding"
--maybe there should be also another limit, because its currently possible to build infinite towers --maybe there should be also another limit, because its currently possible to build infinite towers
minetest.chat_send_all(string.format("exit loop")) minetest.chat_send_all(string.format("exit loop"))