Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- by UNOBTANIUM 4.4.2014
- local id = "TEXT"
- local state = false
- local w,h = term.getSize()
- function save()
- local file = fs.open("redstone","w")
- file.writeLine(id)
- file.writeLine(tostring(state))
- file.close()
- end
- function load()
- if fs.exists("redstone") then
- local file = fs.open("redstone","r")
- id = file.readLine()
- if file.readLine() == "true" then
- state = true
- end
- file.close()
- end
- end
- function openRednet()
- for _, side in pairs(redstone.getSides()) do
- if peripheral.getType(side) == "modem" then
- rednet.open(side)
- end
- end
- end
- function setRedstone()
- for _, side in pairs(redstone.getSides()) do
- redstone.setOutput(side, state)
- end
- end
- function set()
- sleep(0)
- term.setCursorPos(1, 5)
- term.clearLine()
- write("Text: ", 14, 5)
- id = betterRead(20,5)
- end
- function betterRead(x,y) -- DONE 1
- term.setCursorBlink(true)
- local s = id
- while true do
- term.setCursorPos(x,y)
- term.write( string.rep(' ', w - x + 1) )
- term.setCursorPos(x,y)
- if s:len()+x < w then
- term.write(s)
- else
- term.write(s:sub( s:len() - (w-x-2)))
- end
- local e = { os.pullEvent() }
- if e[1] == "char" then
- s = s .. e[2]
- elseif e[1] == "key" then
- if e[2] == keys.enter then
- break
- elseif e[2] == keys.backspace then
- s = s:sub( 1, s:len() - 1 )
- end
- end
- end
- term.setCursorBlink(false)
- return s
- end
- function draw()
- term.clear()
- write("Text: " .. id, 14,5)
- write("Current State: " .. tostring(state), 5,6)
- write("Hit a button to change the text!",8,8)
- end
- function write(text, x, y)
- term.setCursorPos(x,y)
- term.write(tostring(text))
- end
- function main()
- while true do
- draw()
- openRednet()
- local event = {os.pullEvent()}
- if event[1] == "rednet_message" then
- if event[3] == ("" .. id .. tostring(not state)) then
- state = not state
- setRedstone()
- end
- elseif event[1] == "key" then
- set()
- end
- save()
- end
- end
- load()
- setRedstone()
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement