Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- RAILCRAFT ELEVATOR CLIENT "A" VERSION 1.4 MARCH 13TH 2014
- -- DESIGNED AND WRITTEN BY "MYSTERYDUMP"
- -- WWW.MYSTERYDUMP.COM
- -- ****IMPORTANT**** THIS IS THE "A" VERSION OF THE CLIENT SOFTWARE AND MUST BE USED WITH THE "A" VERSIONS OF THE ELEVATOR "MONITOR PROGRAM" AND THE "A" VERSION OF THE ELEVATOR SERVER! IF YOU NEED HELP BUILDING AND/OR INSTALLING THE ELEVATOR AND THE SERVER/MONITOR/CLIENT PROGRAMS AND THEN CONFIGURING THEM, GO TO MYSTERYDUMP.COM/ELEVATOR FOR HELP.
- -- MODEM SETUP
- rednet.open("back")
- -- SET BUNDLED CABLES AND INITIALIZE IN/OUTPUTS (OFF)
- local cablePort1 = "bottom"
- -- LOCALS
- local clientID = 4 -- <-------- ********* ENTER THE FLOOR# THIS COMPUTER WILL GO ON, 1-7 ***********
- local serverID = 86 -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- local buttonPressed = 0
- local powerStatus = 0
- local token = 0 -- <----- Tells the client 0=Standby 1=Ready 2=Busy 3=Hold
- local messageID = 0
- local elevatorKey = 0
- status = "TESTING"
- -- POWER
- checkPower = function()
- while true do
- sleep(0)
- powerStatus = dataRXPacket[0]
- if powerStatus == 0 then
- power = "OFFLINE"
- end
- if powerStatus == 1 then
- power ="ONLINE"
- end
- end
- end
- -- CLEAR & INITIALIZE TERMINAL (FUNCTION)
- function screen()
- term.clear()
- term.setCursorPos(45,19)
- -- print "Elevator Button v1.4a" -- <--------------- ENABLE TO DISPLAY VERSION NUMBER ON SCREEN
- term.setCursorPos(23,3)
- print "FLOOR"
- term.setCursorPos(29,3)
- print (tostring(clientID))
- term.setCursorPos(20,7)
- print "SELECT FLOOR #"
- term.setCursorPos(25,10)
- print "[7]"
- term.setCursorPos(25,11)
- print "[6]"
- term.setCursorPos(25,12)
- print "[5]"
- term.setCursorPos(25,13)
- print "[3]"
- term.setCursorPos(25,14)
- print "[2]"
- term.setCursorPos(25,15)
- print "[1]"
- term.setCursorPos(43,18)
- print "Reset [R]"
- end
- -- TX -- TRANSMIT DATA
- local dataTXPacket = {}
- dataTXPacket[0] = 0
- dataTXPacket[1] = 0
- dataTXPacket[2] = (buttonPressed)
- function updateTX()
- local msg = textutils.serialize(dataTXPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- end
- -- RX -- RECEIVE DATA
- dataRXPacket = {}
- dataRXPacket[0] = 0 -- SERVERS MAIN POWER SWITCH
- dataRXPacket[10] = 0 -- TOKEN
- dataRXPacket[11] = 0 -- MESSAGEID
- dataRXPacket[12] = 0 -- ELEVATOR KEY
- rxData = function()
- while true do
- sleep(0)
- senderID, message, distance = rednet.receive()
- if senderID == (serverID) then
- dataRXPacket = textutils.unserialize(message)
- powerStatus = (dataRXPacket[0])
- token = (dataRXPacket[10]) -- <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
- messageID = (dataRXPacket[11]) -- <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
- elevatorKey = (dataRXPacket[12]) -- <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
- end
- end
- end
- token = function()
- while true do
- sleep(0)
- token = (dataRXPacket[10]) -- <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ******** ***********VERY IMPORT TO CHANGE THIS TO MATCH!!!! ***********
- if token == 0 then
- status = "STANDBY"
- term.setCursorPos(15,5)
- term.clearLine()
- print ("Elevator Status: ", status)
- end
- if token == 1 then
- status = "READY"
- term.setCursorPos(15,5)
- term.clearLine()
- print ("Elevator Status: ", status)
- end
- if token == 2 then
- status = "BUSY"
- term.setCursorPos(15,5)
- term.clearLine()
- print ("Elevator Status: ", status)
- end
- if token == 3 then
- status = "HOLD"
- term.setCursorPos(15,5)
- term.clearLine()
- print ("Elevator Status: ", status)
- end
- end
- end
- -- BUTTON SELECTION (INPUT FROM USER) (PARALLEL FUNCTION)
- ready = function()
- while true do
- local event, param1 = os.pullEvent ("char")
- if param1 == "7" then
- if token == 0 then
- if powerStatus == 1 then
- buttonPressed = 7
- term.setCursorPos(18,17)
- write ("FLOOR 7 Selected!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 2 -- <---------- REQUEST TOKEN = 2
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif token == 1 then
- term.setCursorPos(18,17)
- write ("Elevator is Ready!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 2 then
- term.setCursorPos(18,17)
- write ("Elevator is Busy!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 3 then
- term.setCursorPos(18,17)
- write ("Elevator on Hold!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "6" then
- if token == 0 then
- if powerStatus == 1 then
- buttonPressed = 6
- term.setCursorPos(18,17)
- write ("FLOOR 6 Selected!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 2 -- <---------- REQUEST TOKEN = 2
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif token == 1 then
- term.setCursorPos(18,17)
- write ("Elevator is Ready!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 2 then
- term.setCursorPos(18,17)
- write ("Elevator is Busy!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 3 then
- term.setCursorPos(18,17)
- write ("Elevator on Hold!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "5" then
- if token == 0 then
- if powerStatus == 1 then
- buttonPressed = 5
- term.setCursorPos(18,17)
- write ("FLOOR 5 Selected!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 2
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif token == 1 then
- term.setCursorPos(18,17)
- write ("Elevator is Ready!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 2 then
- term.setCursorPos(18,17)
- write ("Elevator is Busy!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 3 then
- term.setCursorPos(18,17)
- write ("Elevator on Hold!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "3" then
- if token == 0 then
- if powerStatus == 1 then
- buttonPressed = 3
- term.setCursorPos(18,17)
- write ("FLOOR 3 Selected!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 2
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif token == 1 then
- term.setCursorPos(18,17)
- write ("Elevator is Ready!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 2 then
- term.setCursorPos(18,17)
- write ("Elevator is Busy!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 3 then
- term.setCursorPos(18,17)
- write ("Elevator on Hold!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "2" then
- if token == 0 then
- if powerStatus == 1 then
- buttonPressed = 2
- term.setCursorPos(18,17)
- write ("FLOOR 2 Selected!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 2
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif token == 1 then
- term.setCursorPos(18,17)
- write ("Elevator is Ready!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 2 then
- term.setCursorPos(18,17)
- write ("Elevator is Busy!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 3 then
- term.setCursorPos(18,17)
- write ("Elevator on Hold!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "1" then
- if token == 0 then
- if powerStatus == 1 then
- buttonPressed = 1
- term.setCursorPos(18,17)
- write ("FLOOR 1 Selected!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 2
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif token == 1 then
- term.setCursorPos(18,17)
- write ("Elevator is Ready!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 2 then
- term.setCursorPos(18,17)
- write ("Elevator is Busy!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- elseif token == 3 then
- term.setCursorPos(18,17)
- write ("Elevator on Hold!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "r" then
- if powerStatus == 1 then
- buttonPressed = 0
- redstone.setBundledOutput(cablePort1, colors.red)
- sleep(.5)
- redstone.setBundledOutput(cablePort1, 0)
- term.setCursorPos(20,17)
- print "Elevator Reset!"
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 0
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- elseif param1 == "R" then
- if powerStatus == 1 then
- buttonPressed = 0
- redstone.setBundledOutput(cablePort1, colors.red)
- sleep(.5)
- redstone.setBundledOutput(cablePort1, 0)
- term.setCursorPos(20,17)
- print "Elevator Reset!"
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- local dataPacket = {}
- dataPacket[0] = (clientID)
- dataPacket[1] = 0
- dataPacket[2] = (buttonPressed)
- local msg = textutils.serialize(dataPacket)
- rednet.send(86, msg) -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
- else
- term.setCursorPos(20,17)
- write ("OUT OF ORDER!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- else
- term.setCursorPos(20,17) --WRONG BUTTON
- print ("Wrong button!")
- sleep (1.5)
- term.setCursorPos(1,17)
- term.clearLine()
- end
- end
- end
- -- BEGIN PROGRAM
- term.clear()
- screen()
- updateTX()
- parallel.waitForAll(rxData, checkPower, ready, token)
Add Comment
Please, Sign In to add comment