MysteryDump

MysteryDump's Railcraft Elevator Client v1.4a - FLOOR 3

Mar 16th, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.42 KB | None | 0 0
  1. --  RAILCRAFT ELEVATOR CLIENT "A" VERSION 1.4 MARCH 13TH 2014
  2. --  DESIGNED AND WRITTEN BY "MYSTERYDUMP"
  3. --  WWW.MYSTERYDUMP.COM
  4.  
  5.  
  6. --  ****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.
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. -- MODEM SETUP
  21.  
  22. rednet.open("back")
  23.  
  24. -- SET BUNDLED CABLES AND INITIALIZE IN/OUTPUTS (OFF)
  25.  
  26.     local cablePort1 = "bottom"
  27.  
  28.  
  29.  
  30. -- LOCALS
  31.    
  32.  
  33.  
  34.    
  35.     local clientID = 3 -- <-------- ********* ENTER THE FLOOR# THIS COMPUTER WILL GO ON, 1-7 ***********
  36.  
  37.     local serverID = 86 -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  38.  
  39.     local buttonPressed = 0
  40.  
  41.  
  42.     local powerStatus = 0
  43.    
  44.  
  45.     local token = 0  --  <----- Tells the client 0=Standby 1=Ready 2=Busy 3=Hold
  46.     local messageID = 0
  47.     local elevatorKey = 0
  48.  
  49.     status = "TESTING"
  50.  
  51.  
  52.  
  53.  
  54.  
  55. -- POWER
  56.  
  57.  
  58. checkPower = function()
  59.  
  60.     while true do
  61.     sleep(0)
  62.  
  63.         powerStatus = dataRXPacket[0]
  64.  
  65.         if powerStatus == 0 then
  66.         power = "OFFLINE"
  67.         end
  68.  
  69.         if powerStatus == 1 then
  70.         power ="ONLINE"
  71.         end
  72.     end
  73. end
  74.    
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100. -- CLEAR & INITIALIZE TERMINAL (FUNCTION)
  101.  
  102.  
  103.  
  104. function screen()
  105.  
  106.     term.clear()
  107.     term.setCursorPos(45,19)
  108. --  print "Elevator Button v1.4a"   --  <--------------- ENABLE TO DISPLAY VERSION NUMBER ON SCREEN
  109.  
  110.     term.setCursorPos(23,3)
  111.     print "FLOOR"
  112.     term.setCursorPos(29,3)
  113.     print (tostring(clientID))
  114.  
  115.  
  116.     term.setCursorPos(20,7)
  117.     print "SELECT FLOOR #"
  118.  
  119.     term.setCursorPos(25,10)
  120.     print "[7]"
  121.     term.setCursorPos(25,11)
  122.     print "[6]"
  123.     term.setCursorPos(25,12)
  124.     print "[5]"
  125.     term.setCursorPos(25,13)
  126.     print "[4]"
  127.     term.setCursorPos(25,14)
  128.     print "[2]"
  129.     term.setCursorPos(25,15)
  130.     print "[1]"
  131.     term.setCursorPos(43,18)
  132.     print "Reset [R]"
  133. end
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. -- TX -- TRANSMIT DATA
  148.  
  149.  
  150.  
  151. local dataTXPacket = {}
  152.         dataTXPacket[0] = 0
  153.         dataTXPacket[1] = 0
  154.         dataTXPacket[2] = (buttonPressed)
  155.  
  156.  
  157. function updateTX()
  158.  
  159.         local msg = textutils.serialize(dataTXPacket)
  160.         rednet.send(86, msg)                                  -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  161. end
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176. -- RX -- RECEIVE DATA
  177.  
  178.  
  179.     dataRXPacket = {}
  180.         dataRXPacket[0] = 0  -- SERVERS MAIN POWER SWITCH
  181.         dataRXPacket[13] = 0  -- TOKEN
  182.         dataRXPacket[14] = 0  -- MESSAGEID
  183.         dataRXPacket[15] = 0  -- ELEVATOR KEY
  184.  
  185.  
  186.  
  187. rxData = function()
  188.  
  189.  
  190.     while true do
  191.     sleep(0)
  192.  
  193.  
  194.         senderID, message, distance = rednet.receive()
  195.  
  196.             if senderID == (serverID) then
  197.  
  198.                 dataRXPacket = textutils.unserialize(message)
  199.  
  200.                 powerStatus = (dataRXPacket[0])
  201.                 token = (dataRXPacket[13])          --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  202.                 messageID = (dataRXPacket[14])          --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  203.                 elevatorKey = (dataRXPacket[15])        --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  204.             end
  205.     end
  206. end
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217. token = function()
  218.  
  219.     while true do
  220.     sleep(0)
  221.    
  222.     token = (dataRXPacket[13])  --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********    ***********VERY IMPORT TO CHANGE THIS TO MATCH!!!! ***********
  223.  
  224.  
  225.         if token == 0 then
  226.             status = "STANDBY"
  227.                 term.setCursorPos(15,5)
  228.                 term.clearLine()
  229.                 print ("Elevator Status: ", status)
  230.  
  231.         end
  232.  
  233.         if token == 1 then
  234.             status = "READY"
  235.                 term.setCursorPos(15,5)
  236.                 term.clearLine()
  237.                 print ("Elevator Status: ", status)
  238.         end
  239.  
  240.         if token == 2 then
  241.             status = "BUSY"
  242.                 term.setCursorPos(15,5)
  243.                 term.clearLine()   
  244.                 print ("Elevator Status: ", status)
  245.         end
  246.  
  247.         if token == 3 then
  248.             status = "HOLD"
  249.                 term.setCursorPos(15,5)
  250.                 term.clearLine()
  251.                 print ("Elevator Status: ", status)
  252.         end
  253.     end
  254. end
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281. -- BUTTON SELECTION (INPUT FROM USER) (PARALLEL FUNCTION)
  282.  
  283.  
  284. ready = function()
  285.  
  286.  
  287.     while true do
  288.  
  289.        
  290.         local event, param1 = os.pullEvent ("char")
  291.  
  292.  
  293.             if param1 == "7" then
  294.                 if token == 0 then
  295.                     if powerStatus == 1 then
  296.                    
  297.                         buttonPressed = 7
  298.                         term.setCursorPos(18,17)
  299.                         write ("FLOOR 7 Selected!")
  300.                         sleep (1.5)
  301.                         term.setCursorPos(1,17)
  302.                         term.clearLine()
  303.                             local dataPacket = {}
  304.                             dataPacket[0] = (clientID)
  305.                             dataPacket[1] = 2           -- <---------- REQUEST TOKEN = 2
  306.                             dataPacket[2] = (buttonPressed)
  307.                             local msg = textutils.serialize(dataPacket)
  308.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  309.  
  310.  
  311.                         else
  312.  
  313.                         term.setCursorPos(20,17)
  314.                         write ("OUT OF ORDER!")
  315.                         sleep (1.5)
  316.                         term.setCursorPos(1,17)
  317.                         term.clearLine()
  318.  
  319.                     end
  320.  
  321.                 elseif token == 1 then
  322.  
  323.                         term.setCursorPos(18,17)
  324.                         write ("Elevator is Ready!")
  325.                         sleep (1.5)
  326.                         term.setCursorPos(1,17)
  327.                         term.clearLine()
  328.  
  329.                 elseif token == 2 then
  330.  
  331.                         term.setCursorPos(18,17)
  332.                         write ("Elevator is Busy!")
  333.                         sleep (1.5)
  334.                         term.setCursorPos(1,17)
  335.                         term.clearLine()
  336.  
  337.                 elseif token == 3 then
  338.  
  339.                         term.setCursorPos(18,17)
  340.                         write ("Elevator on Hold!")
  341.                         sleep (1.5)
  342.                         term.setCursorPos(1,17)
  343.                         term.clearLine()
  344.  
  345.                 end
  346.  
  347.  
  348.  
  349.  
  350.  
  351.    
  352.             elseif param1 == "6" then
  353.                 if token == 0 then
  354.                     if powerStatus == 1 then
  355.            
  356.                         buttonPressed = 6
  357.                         term.setCursorPos(18,17)
  358.                         write ("FLOOR 6 Selected!")
  359.                         sleep (1.5)
  360.                         term.setCursorPos(1,17)
  361.                         term.clearLine()
  362.                             local dataPacket = {}
  363.                             dataPacket[0] = (clientID)
  364.                             dataPacket[1] = 2           -- <---------- REQUEST TOKEN = 2
  365.                             dataPacket[2] = (buttonPressed)
  366.                             local msg = textutils.serialize(dataPacket)
  367.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  368.  
  369.    
  370.                     else
  371.                         term.setCursorPos(20,17)
  372.                         write ("OUT OF ORDER!")
  373.                         sleep (1.5)
  374.                         term.setCursorPos(1,17)
  375.                         term.clearLine()
  376.  
  377.                     end
  378.  
  379.                 elseif token == 1 then
  380.  
  381.                         term.setCursorPos(18,17)
  382.                         write ("Elevator is Ready!")
  383.                         sleep (1.5)
  384.                         term.setCursorPos(1,17)
  385.                         term.clearLine()
  386.  
  387.                 elseif token == 2 then
  388.  
  389.                         term.setCursorPos(18,17)
  390.                         write ("Elevator is Busy!")
  391.                         sleep (1.5)
  392.                         term.setCursorPos(1,17)
  393.                         term.clearLine()
  394.  
  395.                 elseif token == 3 then
  396.  
  397.                         term.setCursorPos(18,17)
  398.                         write ("Elevator on Hold!")
  399.                         sleep (1.5)
  400.                         term.setCursorPos(1,17)
  401.                         term.clearLine()
  402.  
  403.                 end
  404.  
  405.  
  406.  
  407.  
  408.  
  409.    
  410.             elseif param1 == "5" then
  411.                 if token == 0 then
  412.                     if powerStatus == 1 then
  413.                
  414.                         buttonPressed = 5
  415.                         term.setCursorPos(18,17)
  416.                         write ("FLOOR 5 Selected!")
  417.                         sleep (1.5)
  418.                         term.setCursorPos(1,17)
  419.                         term.clearLine()
  420.                             local dataPacket = {}
  421.                             dataPacket[0] = (clientID)
  422.                             dataPacket[1] = 2
  423.                             dataPacket[2] = (buttonPressed)
  424.                             local msg = textutils.serialize(dataPacket)
  425.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  426.  
  427.                    
  428.                     else
  429.                         term.setCursorPos(20,17)
  430.                         write ("OUT OF ORDER!")
  431.                         sleep (1.5)
  432.                         term.setCursorPos(1,17)
  433.                         term.clearLine()
  434.  
  435.                     end
  436.  
  437.                 elseif token == 1 then
  438.  
  439.                         term.setCursorPos(18,17)
  440.                         write ("Elevator is Ready!")
  441.                         sleep (1.5)
  442.                         term.setCursorPos(1,17)
  443.                         term.clearLine()
  444.  
  445.                 elseif token == 2 then
  446.  
  447.                         term.setCursorPos(18,17)
  448.                         write ("Elevator is Busy!")
  449.                         sleep (1.5)
  450.                         term.setCursorPos(1,17)
  451.                         term.clearLine()
  452.  
  453.                 elseif token == 3 then
  454.  
  455.                         term.setCursorPos(18,17)
  456.                         write ("Elevator on Hold!")
  457.                         sleep (1.5)
  458.                         term.setCursorPos(1,17)
  459.                         term.clearLine()
  460.                 end
  461.  
  462.  
  463.  
  464.  
  465.  
  466.    
  467.             elseif param1 == "4" then
  468.                 if token == 0 then
  469.                     if powerStatus == 1 then
  470.                
  471.                         buttonPressed = 4
  472.                         term.setCursorPos(18,17)
  473.                         write ("FLOOR 4 Selected!")
  474.                         sleep (1.5)
  475.                         term.setCursorPos(1,17)
  476.                         term.clearLine()
  477.                             local dataPacket = {}
  478.                             dataPacket[0] = (clientID)
  479.                             dataPacket[1] = 2
  480.                             dataPacket[2] = (buttonPressed)
  481.                             local msg = textutils.serialize(dataPacket)
  482.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  483.  
  484.                    
  485.                     else
  486.  
  487.                         term.setCursorPos(20,17)
  488.                         write ("OUT OF ORDER!")
  489.                         sleep (1.5)
  490.                         term.setCursorPos(1,17)
  491.                         term.clearLine()
  492.                     end
  493.  
  494.                 elseif token == 1 then
  495.  
  496.                         term.setCursorPos(18,17)
  497.                         write ("Elevator is Ready!")
  498.                         sleep (1.5)
  499.                         term.setCursorPos(1,17)
  500.                         term.clearLine()
  501.  
  502.                 elseif token == 2 then
  503.  
  504.                         term.setCursorPos(18,17)
  505.                         write ("Elevator is Busy!")
  506.                         sleep (1.5)
  507.                         term.setCursorPos(1,17)
  508.                         term.clearLine()
  509.  
  510.                 elseif token == 3 then
  511.  
  512.                         term.setCursorPos(18,17)
  513.                         write ("Elevator on Hold!")
  514.                         sleep (1.5)
  515.                         term.setCursorPos(1,17)
  516.                         term.clearLine()
  517.                 end
  518.  
  519.  
  520.  
  521.  
  522.  
  523.    
  524.             elseif param1 == "2" then
  525.                 if token == 0 then
  526.                     if powerStatus == 1 then
  527.                
  528.                         buttonPressed = 2
  529.                         term.setCursorPos(18,17)
  530.                         write ("FLOOR 2 Selected!")
  531.                         sleep (1.5)
  532.                         term.setCursorPos(1,17)
  533.                         term.clearLine()
  534.                             local dataPacket = {}
  535.                             dataPacket[0] = (clientID)
  536.                             dataPacket[1] = 2
  537.                             dataPacket[2] = (buttonPressed)
  538.                             local msg = textutils.serialize(dataPacket)
  539.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  540.                
  541.                     else
  542.  
  543.                         term.setCursorPos(20,17)
  544.                         write ("OUT OF ORDER!")
  545.                         sleep (1.5)
  546.                         term.setCursorPos(1,17)
  547.                         term.clearLine()
  548.                     end
  549.  
  550.                 elseif token == 1 then
  551.  
  552.                         term.setCursorPos(18,17)
  553.                         write ("Elevator is Ready!")
  554.                         sleep (1.5)
  555.                         term.setCursorPos(1,17)
  556.                         term.clearLine()
  557.  
  558.                 elseif token == 2 then
  559.  
  560.                         term.setCursorPos(18,17)
  561.                         write ("Elevator is Busy!")
  562.                         sleep (1.5)
  563.                         term.setCursorPos(1,17)
  564.                         term.clearLine()
  565.  
  566.                 elseif token == 3 then
  567.  
  568.                         term.setCursorPos(18,17)
  569.                         write ("Elevator on Hold!")
  570.                         sleep (1.5)
  571.                         term.setCursorPos(1,17)
  572.                         term.clearLine()
  573.                 end
  574.  
  575.  
  576.  
  577.  
  578.  
  579.    
  580.             elseif param1 == "1" then
  581.                 if token == 0 then
  582.                     if powerStatus == 1 then
  583.                
  584.                         buttonPressed = 1
  585.                         term.setCursorPos(18,17)
  586.                         write ("FLOOR 1 Selected!")
  587.                         sleep (1.5)
  588.                         term.setCursorPos(1,17)
  589.                         term.clearLine()
  590.                             local dataPacket = {}
  591.                             dataPacket[0] = (clientID)
  592.                             dataPacket[1] = 2
  593.                             dataPacket[2] = (buttonPressed)
  594.                             local msg = textutils.serialize(dataPacket)
  595.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  596.                
  597.                     else
  598.  
  599.                         term.setCursorPos(20,17)
  600.                         write ("OUT OF ORDER!")
  601.                         sleep (1.5)
  602.                         term.setCursorPos(1,17)
  603.                         term.clearLine()
  604.                     end
  605.  
  606.                 elseif token == 1 then
  607.  
  608.                         term.setCursorPos(18,17)
  609.                         write ("Elevator is Ready!")
  610.                         sleep (1.5)
  611.                         term.setCursorPos(1,17)
  612.                         term.clearLine()
  613.  
  614.                 elseif token == 2 then
  615.  
  616.                         term.setCursorPos(18,17)
  617.                         write ("Elevator is Busy!")
  618.                         sleep (1.5)
  619.                         term.setCursorPos(1,17)
  620.                         term.clearLine()
  621.  
  622.                 elseif token == 3 then
  623.  
  624.                         term.setCursorPos(18,17)
  625.                         write ("Elevator on Hold!")
  626.                         sleep (1.5)
  627.                         term.setCursorPos(1,17)
  628.                         term.clearLine()
  629.                 end
  630.  
  631.  
  632.  
  633.  
  634.  
  635.    
  636.             elseif param1 == "r" then
  637.                     if powerStatus == 1 then
  638.                    
  639.                         buttonPressed = 0
  640.                         redstone.setBundledOutput(cablePort1, colors.red)
  641.                         sleep(.5)
  642.                         redstone.setBundledOutput(cablePort1, 0)
  643.                         term.setCursorPos(20,17)
  644.                         print "Elevator Reset!"
  645.                         sleep (1.5)
  646.                         term.setCursorPos(1,17)
  647.                         term.clearLine()
  648.                             local dataPacket = {}
  649.                             dataPacket[0] = (clientID)
  650.                             dataPacket[1] = 0
  651.                             dataPacket[2] = (buttonPressed)
  652.                             local msg = textutils.serialize(dataPacket)
  653.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  654.                     else
  655.                         term.setCursorPos(20,17)
  656.                         write ("OUT OF ORDER!")
  657.                         sleep (1.5)
  658.                         term.setCursorPos(1,17)
  659.                         term.clearLine()
  660.                     end
  661.  
  662.  
  663.  
  664.  
  665.  
  666.    
  667.             elseif param1 == "R" then
  668.                     if powerStatus == 1 then
  669.                    
  670.                         buttonPressed = 0
  671.                         redstone.setBundledOutput(cablePort1, colors.red)
  672.                         sleep(.5)
  673.                         redstone.setBundledOutput(cablePort1, 0)
  674.                         term.setCursorPos(20,17)
  675.                         print "Elevator Reset!"
  676.                         sleep (1.5)
  677.                         term.setCursorPos(1,17)
  678.                         term.clearLine()
  679.                             local dataPacket = {}
  680.                             dataPacket[0] = (clientID)
  681.                             dataPacket[1] = 0
  682.                             dataPacket[2] = (buttonPressed)
  683.                             local msg = textutils.serialize(dataPacket)
  684.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  685.                     else
  686.                         term.setCursorPos(20,17)
  687.                         write ("OUT OF ORDER!")
  688.                         sleep (1.5)
  689.                         term.setCursorPos(1,17)
  690.                         term.clearLine()
  691.                     end
  692.  
  693.  
  694.  
  695.  
  696.             else
  697.  
  698.             term.setCursorPos(20,17)  --WRONG BUTTON
  699.             print ("Wrong button!")
  700.             sleep (1.5)
  701.             term.setCursorPos(1,17)
  702.             term.clearLine()
  703.  
  704.             end
  705.     end
  706. end
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721. -- BEGIN PROGRAM
  722.  
  723. term.clear()
  724. screen()
  725. updateTX()
  726.  
  727.  
  728. parallel.waitForAll(rxData, checkPower, ready, token)
Add Comment
Please, Sign In to add comment