Hello pros!
I have been writing a program for a public crafting hub on my server.
So far the program takes a username and password, displayes the username onto a monitor then opens the iron door to let the user in.
I spent a few hours now trying to figure out how to display a timer after the user has entered the room and the door shuts. I want it to show how long the user has been in the crafting area.
My problem is that the timer would start in the middle of the code, but I find it stopping my code after it which waits for the user to input the password again to exit.
I guess I can tell the timer to stop after the user enters his password, wrong or right, but I don't know how to do that.
Thanks for the help!
[Question] Starting a timer in the middle of code.
Started by liljpac, Oct 15 2012 08:59 AM
7 replies to this topic
#1
Posted 15 October 2012 - 08:59 AM
#2
Posted 15 October 2012 - 09:58 AM
I sense a tall, dark stranger, the number 14, and someone whose name starts with 'K'. Wait, scratch that. I'm a terrible psychic. So are the rest of us. Sorry.
#3
Posted 15 October 2012 - 10:16 AM
I really didn't want to post the code because it is so messy :/
I'm sure you are all face palming right now, and I am sure that the half of this is messed up, but to be fair I did have it working until I tried to add the timer into the code.
while true do
term.clear()
term.setCursorPos(1, 1)
mon = peripheral.wrap("top")
mon.clear()
local user
term.write("Enter a username: ")
user = read()
mon.setCursorPos(3, 1)
mon.write("User:".. user)
mon.setCursorPos(3, 2)
mon.write("Time:")
local password1
term.write("Enter a password: ")
password1 = read("*")
redstone.setOutput( "left", true)
term.clear()
term.setCursorPos(1, 1)
print("Closing the door in 5 seconds")
sleep(5)
redstone.setOutput( "left", false)
term.clear()
term.setCursorPos(1, 1)
local password2 = 1
print("Enter your password to open the door: ")
mon.setCursorPos(8, 2)
local time = 1
while password2==1 do
time = time + 1
password2 = read("*")
mon.write(time)
sleep(1)
end
while password1 ~= password2 do
if password1 == password2 then
print("Correct.")
redstone.setOutput("left", true)
sleep(5)
redstone.setOutput("left", false)
else
print("wrong password.")
sleep(1)
term.clear()
term.setCursorPos(1, 1)
print("Enter your password to open the door: ")
password2 = read("*")
end
end
--above is broken at the moment
end
I'm sure you are all face palming right now, and I am sure that the half of this is messed up, but to be fair I did have it working until I tried to add the timer into the code.
#4
Posted 15 October 2012 - 10:48 AM
Well,
Someone please, by all means, correct me if I'm wrong.
I don't think you can change a variable from an integer to a string?
And if you can, that's kind of cool.
But in regards to your problem.
I believe the read() method actually waits for user input.
I haven't looked at the exact code, but I assume it utilizes a while loop or something of the sort.
password2 = 1
-- Further down...
password2 = read("*")
Someone please, by all means, correct me if I'm wrong.
I don't think you can change a variable from an integer to a string?
And if you can, that's kind of cool.
But in regards to your problem.
I believe the read() method actually waits for user input.
I haven't looked at the exact code, but I assume it utilizes a while loop or something of the sort.
#5
Posted 15 October 2012 - 10:50 AM
tostring()
#7
Posted 15 October 2012 - 10:54 AM
yeah sure, variables in lua are variables, not specific to a type. a string can easily be changed to a int and then to a bool, sure
#8
Posted 15 October 2012 - 10:57 AM
Lua > Java.
Back on topic though, the read() function waits for user input, which results in your timer stopping.
Back on topic though, the read() function waits for user input, which results in your timer stopping.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users












