This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Bobibibi's profile picture

Help for a beginner

Started by Bobibibi, 15 July 2014 - 08:33 PM
Bobibibi #1
Posted 15 July 2014 - 10:33 PM
Hey everybody,

I'm just beginning programmation and I have some problems.
I have a problem on this section of my program and I can't resolve it.

Thank you for your help!!
(sorry for misspelling, I don"t speak very good english)

for i= 1,16 do
  seeds = turtle.getItemCount(turtle.select(i))
  NBRseeds = seeds + NBRseeds
end
Edited on 15 July 2014 - 09:01 PM
Cranium #2
Posted 15 July 2014 - 11:02 PM
Fixed the code formatting for you. You can put code in
 tags, and it'll look nicer that way.
TheOddByte #3
Posted 15 July 2014 - 11:12 PM
Hey, welcome to the forums. Before I help you with the code I'll give you some tips when asking questions hereNow onto the problem, the argument you're putting into turtle.getItemCount should in this case be i.
What you're doing wrong is you're trying to put a function as an argument, it would be okay if the function would return a number, but in this case it returns a boolean( as you can see on the wiki )

So here's how the code should look like

for i = 1, 16 do
    seeds = turtle.getItemCount( i ) -- removed turtle.select
    NBRseeds = seeds + NBRseeds
end

And if you're just beginning programming then I suggest you check out the PIL and the wiki
Bobibibi #4
Posted 15 July 2014 - 11:14 PM
Oups. Thank you!!!
flaghacker #5
Posted 15 July 2014 - 11:16 PM
First, please post the full error, with line number and full code. This time the issue was easy to find, but it can be a pain when people don't post all details.

The syntax for turtle.getItemCount is as follows:

local count = turtle.getItemCount(<slotNumber>)
You're passing it the return value of turtle.select, which makes no sense. I suggest changing your program to this:

local total
for i = 1, 16 do
  total = total + turtle.getItemCount(i)
end

EDIT: Ninja'd
Edited on 15 July 2014 - 09:20 PM
Bobibibi #6
Posted 15 July 2014 - 11:39 PM
Sorry for my mistake!!

A big thank you to everybody who help me!!
Bobibibi #7
Posted 16 July 2014 - 12:15 AM
Sorry. The problem isn't resolve.
(the program is not finish.)

Problem:

Error : attempt to perform arithmetic__add on number and nil

Line: 8 to 10

local turn = 1
local NBRseeds

function firstTime()

print("needed "..area.." seeds")
os.sleep(10)
for i= 1,16 do -- the problem is here!
  NBRseeds = turtle.getItemCount(i) + NBRseeds -- the problem is here!
end -- the problem is here!

if  NBRseeds >= area then
  print("number reaches")
  constructionOfTheFarm()
else
  missings = area - NBRseeds
  print("missing"..missings.."seeds")
  NBRseeds = 0
  firstTime()
end
end

function constructionOfTheFarm()

for i = 1, x do
   for o = 1, z do
	turtle.DigDown()
	slot=1
	while not turtle.placeDown() do
	  turtle.select(slot)
	  slot=slot+1
	  if slot>16 then
	   break
	  end
	turtle.placeDown()
	turtle.forward()
   end

  if turn == 1 then
	turn = 0
  else
	turn = 1
  end

  if turn == 1 then
	 turtle.turnLeft()
	 turtle.forward()
	 turtle.turnLeft()
  
  else
	 turtle.turnRight()
	 turtle.forward()
	 turtle.turnRight()
   end
  end
end
end
-- information phase
print("Welcome to the turtle's farm")
print(" ")
print("Information needed")
print(" ")

term.write("First Time?(Yes/No)")-- by default: No
firstTimes = io.read()

term.write("mode 9x9 activated?(Yes/No)") -- by default: Yes / recommanded
mode9x9 = io.read()

term.write("Length:") -- by default: 9
x = math.abs(tonumber(io.read()))

term.write("Width:") -- by default: 9
z = math.abs(tonumber(io.read()))


if mode9x9 == "Yes" then
x=x*9
z=z*9

else
  x = x
  z = z
end

if not x or x == 0 then
x = 9
end
if not z or z == 0 then
z = 9
end

area = x*z

if area > 1024 then
term.clear()
print("Too big")
os.sleep(4)
os.reboot()
end
Edited on 15 July 2014 - 10:21 PM
hilburn #8
Posted 16 July 2014 - 12:21 AM
Inititalise NBRseeds as local NBRseeds = 0, should fix it
Bobibibi #9
Posted 16 July 2014 - 12:27 AM
The error was very simple!!
Thank you
hilburn #10
Posted 16 July 2014 - 12:30 AM
The error was very simple!!
Thank you

99% of the time they are

The other 1% they require a complete rewrite…