S.....r
#minecraft #computercraft #lua wtf?

mon = peripheral.wrap("right")

mon.setBackgroundColor(colors.black)

mon.clear()

file = fs.open("template", "r")

lines = 1

templates = {}

while true do

line = file.readLine()

if line == nil then

break

end

templates[lines] = {}

templates[lines]["x"] = line

line = file.readLine()

templates[lines]["y"] = line

line = file.readLine()

color = line

print(templates[lines]["x"])

mon.setCursorPos(templates[lines]["x"], template[lines]["y"])

mon.setBackgroundColor(colors.red)

mon.write(" ")

lines = lines+1

end

i error na 23 "expected number, number"

w pliku template pierwsza linijka zawiera wyłącznie cyfrę 1
1
  • Najlepsze
  • Wszystkie komentarze
Colek
@SiarkoWodor: hehehe

chciałbym umieć czytać
0
S.....r
Na mireczków jak zwykle można liczyć...
0
pretty_hot_programmer
@SiarkoWodor: wartość w templates[lines]["x"], template[lines]["y"] nie jest liczbą.

zrob sobie print +serialize i zobacz co tam jest
0
pretty_hot_programmer
@SiarkoWodor: może masz enter za 1dynką?
0
S.....r
@pretty_hot_programmer : tu trafiłeś w sedno, nie pomyślałem o tym...można z tego ciągu jakoś usunąć znak nowej linii ?
0
pretty_hot_programmer
@SiarkoWodor: znak nowej lini prawdopodobnie rozwiązuje automatycznie readLine.

problem jest w tym warunku IF z breakiem - on ma łapać koniec pliku? pusta (druga) linia to nie jest koniec pliku, więc pójdzie dalej i stąd ten błąd, bo program spodziewa się tam liczby.
0
S.....r
@pretty_hot_programmer :

plik template zawiera co najmniej 3 linijki:

1 <- czyli x
0
pretty_hot_programmer
@SiarkoWodor: może plik jest w UTF-8 i masz BOM czy jak to tam zwą ?
0
S.....r
@pretty_hot_programmer

Rozwiązałem problem!

Kiedy readLine() czyta linijkę zamienia wszystko na string, wystarczy użyć tonumber() i śmiga
0