processing lines in Developer Help
|
|
Code:
mob/proc/processline(var/file) world<<"Original Total Length: [src.linelength]" world<<"<b>File: <br>[file]" var/command=copytext(file,src.linelength,findtext(file,"(")) world<<"Command: [command]" if(lowertext(command)=="echo") if(!findtext(file,");")) src<<"You are missing either a ) or a ; in your echo(s)." return else var/text=copytext(file,src.linelength+5,findtext(file,");")) var/linecount=copytext(file,src.linelength,findtext(file,");")+2) var/a=linecount world<<"\blue [a]" src.linelength+=length(linecount) world<<"Total Length: [src.linelength]" world<<"<b>\red Computer Text: [text]" src.processline(file) else src<<"<b>No commands could be found.</b>"
|
Problem description:
(Warning: This is a messy snippet)
What's in a file:
echo(Hello);
echo(World);
Here is my problem, the proc processes the first line and says Hello, but when it repeats to view the next line it stops at the var/command=copytext(file,src.linelength,findtext(file,"(")) code line.
What does the vars stand for:
linecount and linelength - This counts how many characters I've gone through in order to see what line I should be on next.
text - The text in between the echo brackets.
What it shows when I process the line:
Original Total Length: 1 File: echo(Hello); echo(World); Command: echo echo(Hello); Total Length: 13 Computer Text: Hello Original Total Length: 13 File: echo(Hello); echo(World);
|
|
In copytext(file,src.linelength,findtext(file,"("))
You didn't tell findtext to skip past the stuff already processed. So findtext returned the position of ( from the previous echo which is less than src.linelength the 2nd time around.
Try findtext(file,"(",src.linelength))
You'll need to do that all over the place.
Also, linecount is not giving you a count, but a text string.