--Variables (For random stuff) local yPos = 3 local xPos = 1 local currentVersion = 1.0 --Functions function setColors(backColor, textColor) term.setBackgroundColor(backColor) term.setTextColor(textColor) end function printY(text, yLoc2) term.setCursorPos(1, yLoc2) print(text) if yLoc2 == yPos+1 then yPos = yPos+1 end end function centerPrint(text, yPos) w, h = term.getSize() term.setCursorPos(math.floor(w-text:len())/2, yPos) print(text) end local function downloadFiles(url, path) for i = 1, 3 do local response = http.get(url) if response then local data = response.readAll() if path then local f = io.open(path, "w") f:write(data) f:close() sleep(2) installing = "false" centerPrint("Download success!") end return true end end centerPrint(error("download: Download Failed")) return false end function writeY(text, yLoc) term.setCursorPos(1, yLoc) write(text) if yLoc == yPos+1 then yPos = yPos+1 end end --Main Code w, h = term.getSize() setColors(colors.white, colors.cyan) term.clear() centerPrint("Checking for updates...", 1) paintutils.drawLine(1, 2, w, 2, colors.blue) downloadFiles("https://raw.github.com/redstonefreak589/redos/master/version", ".redos/os/version") h = fs.open(".redos/os/version", "r") versionNumber = h.readAll() h.close() if versionNumber ~= currentVersion then term.setCursorPos(1,1) term.clearLine() centerPrint("New update available! Update now?", 1) event, key = os.pullEvent("key") if key == 21 then fs.delete(".redos/os/version") shell.run("/installer") elseif key == 49 then term.setCursorPos(1,1) term.clearLine() fs.delete(".redos/os/version") end else term.setCursorPos(1,1) term.clearLine() centerPrint("No updates avaible", 1) term.setCursorPos(1,1) term.clearLine() end centerPrint("Welcome To RedOS Login!", 1) setColors(colors.white, colors.cyan) centerPrint("RedOS Login System", 8) sleep(2) term.setCursorPos(1,3) printY("RedOS Login", 2) printY("Username", 3) writeY("> ", yPos+1) input = read() if fs.exists(".redos/login/user") then h = fs.open(".redos/login/user", "r") userName = h.readAll() h.close() if input == userName then term.setCursorPos(1,3) print("Password") yPos = yPos-1 term.setCursorPos(1,4) term.clearLine() writeY("> ", yPos+1) input2 = read("*") if fs.exists(".redos/login/pass") then h = fs.open(".redos/login/pass", "r") password = h.readAll() h.close() if input2 == password then printY("Login Confirmed! Loading desktop...", yPos+1) sleep(2) if fs.exists(".redos/os/desktop") then shell.run(".redos/os/desktop") else term.setBackgroundColor(colors.black) term.clear() term.setCursorPos(1,1) error("desktop: OS corrupt; destop file not present") end else printY("Password incorrect!", yPos+1) end end else printY("Username incorrect!", yPos+1) end else if not fs.exists(".redos/login") then fs.makeDir(".redos") fs.makeDir(".redos/login") end h = fs.open(".redos/login/user", "w") printY("Creating new user file", yPos+1) h.write(input) h.close() printY("Type in your new password", yPos+1) writeY("> ", yPos+1) newP = read("*") h = fs.open(".redos/login/pass", "w") h.write(newP) h.close() term.setCursorPos(1,8) term.clearLine() printY("Password File generated!", yPos+1) printY("OS rebooting...", yPos+1) sleep(2) os.reboot() end
1
[Lua][Question] Function failing after success?
Started by nateracecar5, May 23 2013 08:14 PM
6 replies to this topic
#1
Posted 23 May 2013 - 08:14 PM
My centerPrint(text, yLoc2) function is failing after the second attempt. It works the first time you use it then it spits out an error. Any help? I think the error is somewhere down near the main code. It only says the error in the function that I'm using. Oh, I am getting tired of debugging this thing.
#2
Posted 23 May 2013 - 08:39 PM
This is the line where it happens. error() doesn't return a string, it actually throws an error. So that's where you get the error, right?
If you want it to print the error centered and properly exit afterwards, you could use this function:
centerPrint(error("download: Download Failed"))
If you want it to print the error centered and properly exit afterwards, you could use this function:
function centerPrintError(text, yPos) w, h = term.getSize() term.setCursorPos(math.floor(w-text:len())/2, yPos) printError(text) error() end
#3
Posted 23 May 2013 - 09:02 PM
Orwell, on 23 May 2013 - 08:39 PM, said:
This is the line where it happens. error() doesn't return a string, it actually throws an error. So that's where you get the error, right?
If you want it to print the error centered and properly exit afterwards, you could use this function:
centerPrint(error("download: Download Failed"))
If you want it to print the error centered and properly exit afterwards, you could use this function:
function centerPrintError(text, yPos) w, h = term.getSize() term.setCursorPos(math.floor(w-text:len())/2, yPos) printError(text) error() end
I will try
#4
Posted 23 May 2013 - 09:08 PM
Orwell, on 23 May 2013 - 08:39 PM, said:
This is the line where it happens. error() doesn't return a string, it actually throws an error. So that's where you get the error, right?
If you want it to print the error centered and properly exit afterwards, you could use this function:
centerPrint(error("download: Download Failed"))
If you want it to print the error centered and properly exit afterwards, you could use this function:
function centerPrintError(text, yPos) w, h = term.getSize() term.setCursorPos(math.floor(w-text:len())/2, yPos) printError(text) error() end
#5
Posted 23 May 2013 - 09:19 PM
Okay, I just did a total rewrite of the update code and fixed it
#6
Posted 23 May 2013 - 09:40 PM
Ah, good. By now I have fixed it as well. I had to fix 3 or 4 errors to get through it. The first one was that you didn't create the directory explicitely if it wasn't there yet (e.g. .redos/os/). Then you had the problem of not specifying the y value for centerPrint some times and finally there was the problem with the centerPrint(error("foobar")). Also, you didn't clear lines on centerPrint, thus the text overlapped.
Here is my outcome: http://pastebin.com/6iN0xuWy
Here is my outcome: http://pastebin.com/6iN0xuWy
#7
Posted 23 May 2013 - 09:52 PM
Thanks, but by now I have made it look cleaner and stuff. I hope you liked because I will be using this as my login system for my new OS. Thanks for your help!
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users