MysteryDump

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

Mar 16th, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.36 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 = 1 -- <-------- ********* 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 "[3]"
  129.     term.setCursorPos(25,15)
  130.     print "[2]"
  131.     term.setCursorPos(43,18)
  132.     print "Reset [R]"
  133.  
  134. end
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148. -- TX -- TRANSMIT DATA
  149.  
  150.  
  151.  
  152. local dataTXPacket = {}
  153.         dataTXPacket[0] = 0
  154.         dataTXPacket[1] = 0
  155.         dataTXPacket[2] = (buttonPressed)
  156.  
  157.  
  158. function updateTX()
  159.  
  160.         local msg = textutils.serialize(dataTXPacket)
  161.         rednet.send(86, msg)                                  -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  162. end
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. -- RX -- RECEIVE DATA
  178.  
  179.  
  180.     dataRXPacket = {}
  181.         dataRXPacket[0] = 0  -- SERVERS MAIN POWER SWITCH
  182.         dataRXPacket[19] = 0  -- TOKEN
  183.         dataRXPacket[20] = 0  -- MESSAGEID
  184.         dataRXPacket[21] = 0  -- ELEVATOR KEY
  185.  
  186.  
  187.  
  188. rxData = function()
  189.  
  190.  
  191.     while true do
  192.     sleep(0)
  193.  
  194.  
  195.         senderID, message, distance = rednet.receive()
  196.  
  197.             if senderID == (serverID) then
  198.  
  199.                 dataRXPacket = textutils.unserialize(message)
  200.  
  201.                 powerStatus = (dataRXPacket[0])
  202.                 token = (dataRXPacket[19])          --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  203.                 messageID = (dataRXPacket[20])          --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  204.                 elevatorKey = (dataRXPacket[21])        --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  205.             end
  206.     end
  207. end
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218. token = function()
  219.  
  220.     while true do
  221.     sleep(0)
  222.    
  223.     token = (dataRXPacket[19])          --  <--------------- ******** CHANGE FOR EACH COMPUTER FLOOR LEVEL ********
  224.  
  225.  
  226.         if token == 0 then
  227.             status = "STANDBY"
  228.                 term.setCursorPos(15,5)
  229.                 term.clearLine()
  230.                 print ("Elevator Status: ", status)
  231.  
  232.         end
  233.  
  234.         if token == 1 then
  235.             status = "READY"
  236.                 term.setCursorPos(15,5)
  237.                 term.clearLine()
  238.                 print ("Elevator Status: ", status)
  239.         end
  240.  
  241.         if token == 2 then
  242.             status = "BUSY"
  243.                 term.setCursorPos(15,5)
  244.                 term.clearLine()   
  245.                 print ("Elevator Status: ", status)
  246.         end
  247.  
  248.         if token == 3 then
  249.             status = "HOLD"
  250.                 term.setCursorPos(15,5)
  251.                 term.clearLine()
  252.                 print ("Elevator Status: ", status)
  253.         end
  254.     end
  255. end
  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.  
  282. -- BUTTON SELECTION (INPUT FROM USER) (PARALLEL FUNCTION)
  283.  
  284.  
  285. ready = function()
  286.  
  287.  
  288.     while true do
  289.  
  290.        
  291.         local event, param1 = os.pullEvent ("char")
  292.  
  293.  
  294.             if param1 == "7" then
  295.                 if token == 0 then
  296.                     if powerStatus == 1 then
  297.                    
  298.                         buttonPressed = 7
  299.                         term.setCursorPos(18,17)
  300.                         write ("FLOOR 7 Selected!")
  301.                         sleep (1.5)
  302.                         term.setCursorPos(1,17)
  303.                         term.clearLine()
  304.                             local dataPacket = {}
  305.                             dataPacket[0] = (clientID)
  306.                             dataPacket[1] = 2           -- <---------- REQUEST TOKEN = 2
  307.                             dataPacket[2] = (buttonPressed)
  308.                             local msg = textutils.serialize(dataPacket)
  309.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  310.  
  311.  
  312.                         else
  313.  
  314.                         term.setCursorPos(20,17)
  315.                         write ("OUT OF ORDER!")
  316.                         sleep (1.5)
  317.                         term.setCursorPos(1,17)
  318.                         term.clearLine()
  319.  
  320.                     end
  321.  
  322.                 elseif token == 1 then
  323.  
  324.                         term.setCursorPos(18,17)
  325.                         write ("Elevator is Ready!")
  326.                         sleep (1.5)
  327.                         term.setCursorPos(1,17)
  328.                         term.clearLine()
  329.  
  330.                 elseif token == 2 then
  331.  
  332.                         term.setCursorPos(18,17)
  333.                         write ("Elevator is Busy!")
  334.                         sleep (1.5)
  335.                         term.setCursorPos(1,17)
  336.                         term.clearLine()
  337.  
  338.                 elseif token == 3 then
  339.  
  340.                         term.setCursorPos(18,17)
  341.                         write ("Elevator on Hold!")
  342.                         sleep (1.5)
  343.                         term.setCursorPos(1,17)
  344.                         term.clearLine()
  345.  
  346.                 end
  347.  
  348.  
  349.  
  350.  
  351.  
  352.    
  353.             elseif param1 == "6" then
  354.                 if token == 0 then
  355.                     if powerStatus == 1 then
  356.            
  357.                         buttonPressed = 6
  358.                         term.setCursorPos(18,17)
  359.                         write ("FLOOR 6 Selected!")
  360.                         sleep (1.5)
  361.                         term.setCursorPos(1,17)
  362.                         term.clearLine()
  363.                             local dataPacket = {}
  364.                             dataPacket[0] = (clientID)
  365.                             dataPacket[1] = 2           -- <---------- REQUEST TOKEN = 2
  366.                             dataPacket[2] = (buttonPressed)
  367.                             local msg = textutils.serialize(dataPacket)
  368.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  369.  
  370.    
  371.                     else
  372.                         term.setCursorPos(20,17)
  373.                         write ("OUT OF ORDER!")
  374.                         sleep (1.5)
  375.                         term.setCursorPos(1,17)
  376.                         term.clearLine()
  377.  
  378.                     end
  379.  
  380.                 elseif token == 1 then
  381.  
  382.                         term.setCursorPos(18,17)
  383.                         write ("Elevator is Ready!")
  384.                         sleep (1.5)
  385.                         term.setCursorPos(1,17)
  386.                         term.clearLine()
  387.  
  388.                 elseif token == 2 then
  389.  
  390.                         term.setCursorPos(18,17)
  391.                         write ("Elevator is Busy!")
  392.                         sleep (1.5)
  393.                         term.setCursorPos(1,17)
  394.                         term.clearLine()
  395.  
  396.                 elseif token == 3 then
  397.  
  398.                         term.setCursorPos(18,17)
  399.                         write ("Elevator on Hold!")
  400.                         sleep (1.5)
  401.                         term.setCursorPos(1,17)
  402.                         term.clearLine()
  403.  
  404.                 end
  405.  
  406.  
  407.  
  408.  
  409.  
  410.    
  411.             elseif param1 == "5" then
  412.                 if token == 0 then
  413.                     if powerStatus == 1 then
  414.                
  415.                         buttonPressed = 5
  416.                         term.setCursorPos(18,17)
  417.                         write ("FLOOR 5 Selected!")
  418.                         sleep (1.5)
  419.                         term.setCursorPos(1,17)
  420.                         term.clearLine()
  421.                             local dataPacket = {}
  422.                             dataPacket[0] = (clientID)
  423.                             dataPacket[1] = 2
  424.                             dataPacket[2] = (buttonPressed)
  425.                             local msg = textutils.serialize(dataPacket)
  426.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  427.  
  428.                    
  429.                     else
  430.                         term.setCursorPos(20,17)
  431.                         write ("OUT OF ORDER!")
  432.                         sleep (1.5)
  433.                         term.setCursorPos(1,17)
  434.                         term.clearLine()
  435.  
  436.                     end
  437.  
  438.                 elseif token == 1 then
  439.  
  440.                         term.setCursorPos(18,17)
  441.                         write ("Elevator is Ready!")
  442.                         sleep (1.5)
  443.                         term.setCursorPos(1,17)
  444.                         term.clearLine()
  445.  
  446.                 elseif token == 2 then
  447.  
  448.                         term.setCursorPos(18,17)
  449.                         write ("Elevator is Busy!")
  450.                         sleep (1.5)
  451.                         term.setCursorPos(1,17)
  452.                         term.clearLine()
  453.  
  454.                 elseif token == 3 then
  455.  
  456.                         term.setCursorPos(18,17)
  457.                         write ("Elevator on Hold!")
  458.                         sleep (1.5)
  459.                         term.setCursorPos(1,17)
  460.                         term.clearLine()
  461.                 end
  462.  
  463.  
  464.  
  465.  
  466.  
  467.    
  468.             elseif param1 == "4" then
  469.                 if token == 0 then
  470.                     if powerStatus == 1 then
  471.                
  472.                         buttonPressed = 4
  473.                         term.setCursorPos(18,17)
  474.                         write ("FLOOR 4 Selected!")
  475.                         sleep (1.5)
  476.                         term.setCursorPos(1,17)
  477.                         term.clearLine()
  478.                             local dataPacket = {}
  479.                             dataPacket[0] = (clientID)
  480.                             dataPacket[1] = 2
  481.                             dataPacket[2] = (buttonPressed)
  482.                             local msg = textutils.serialize(dataPacket)
  483.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  484.  
  485.                    
  486.                     else
  487.  
  488.                         term.setCursorPos(20,17)
  489.                         write ("OUT OF ORDER!")
  490.                         sleep (1.5)
  491.                         term.setCursorPos(1,17)
  492.                         term.clearLine()
  493.                     end
  494.  
  495.                 elseif token == 1 then
  496.  
  497.                         term.setCursorPos(18,17)
  498.                         write ("Elevator is Ready!")
  499.                         sleep (1.5)
  500.                         term.setCursorPos(1,17)
  501.                         term.clearLine()
  502.  
  503.                 elseif token == 2 then
  504.  
  505.                         term.setCursorPos(18,17)
  506.                         write ("Elevator is Busy!")
  507.                         sleep (1.5)
  508.                         term.setCursorPos(1,17)
  509.                         term.clearLine()
  510.  
  511.                 elseif token == 3 then
  512.  
  513.                         term.setCursorPos(18,17)
  514.                         write ("Elevator on Hold!")
  515.                         sleep (1.5)
  516.                         term.setCursorPos(1,17)
  517.                         term.clearLine()
  518.                 end
  519.  
  520.  
  521.  
  522.  
  523.  
  524.    
  525.             elseif param1 == "3" then
  526.                 if token == 0 then
  527.                     if powerStatus == 1 then
  528.                
  529.                         buttonPressed = 3
  530.                         term.setCursorPos(18,17)
  531.                         write ("FLOOR 3 Selected!")
  532.                         sleep (1.5)
  533.                         term.setCursorPos(1,17)
  534.                         term.clearLine()
  535.                             local dataPacket = {}
  536.                             dataPacket[0] = (clientID)
  537.                             dataPacket[1] = 2
  538.                             dataPacket[2] = (buttonPressed)
  539.                             local msg = textutils.serialize(dataPacket)
  540.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  541.                
  542.                     else
  543.  
  544.                         term.setCursorPos(20,17)
  545.                         write ("OUT OF ORDER!")
  546.                         sleep (1.5)
  547.                         term.setCursorPos(1,17)
  548.                         term.clearLine()
  549.                     end
  550.  
  551.                 elseif token == 1 then
  552.  
  553.                         term.setCursorPos(18,17)
  554.                         write ("Elevator is Ready!")
  555.                         sleep (1.5)
  556.                         term.setCursorPos(1,17)
  557.                         term.clearLine()
  558.  
  559.                 elseif token == 2 then
  560.  
  561.                         term.setCursorPos(18,17)
  562.                         write ("Elevator is Busy!")
  563.                         sleep (1.5)
  564.                         term.setCursorPos(1,17)
  565.                         term.clearLine()
  566.  
  567.                 elseif token == 3 then
  568.  
  569.                         term.setCursorPos(18,17)
  570.                         write ("Elevator on Hold!")
  571.                         sleep (1.5)
  572.                         term.setCursorPos(1,17)
  573.                         term.clearLine()
  574.                 end
  575.  
  576.  
  577.  
  578.  
  579.  
  580.    
  581.             elseif param1 == "2" then
  582.                 if token == 0 then
  583.                     if powerStatus == 1 then
  584.                
  585.                         buttonPressed = 2
  586.                         term.setCursorPos(18,17)
  587.                         write ("FLOOR 2 Selected!")
  588.                         sleep (1.5)
  589.                         term.setCursorPos(1,17)
  590.                         term.clearLine()
  591.                             local dataPacket = {}
  592.                             dataPacket[0] = (clientID)
  593.                             dataPacket[1] = 2
  594.                             dataPacket[2] = (buttonPressed)
  595.                             local msg = textutils.serialize(dataPacket)
  596.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  597.                
  598.                     else
  599.  
  600.                         term.setCursorPos(20,17)
  601.                         write ("OUT OF ORDER!")
  602.                         sleep (1.5)
  603.                         term.setCursorPos(1,17)
  604.                         term.clearLine()
  605.                     end
  606.  
  607.                 elseif token == 1 then
  608.  
  609.                         term.setCursorPos(18,17)
  610.                         write ("Elevator is Ready!")
  611.                         sleep (1.5)
  612.                         term.setCursorPos(1,17)
  613.                         term.clearLine()
  614.  
  615.                 elseif token == 2 then
  616.  
  617.                         term.setCursorPos(18,17)
  618.                         write ("Elevator is Busy!")
  619.                         sleep (1.5)
  620.                         term.setCursorPos(1,17)
  621.                         term.clearLine()
  622.  
  623.                 elseif token == 3 then
  624.  
  625.                         term.setCursorPos(18,17)
  626.                         write ("Elevator on Hold!")
  627.                         sleep (1.5)
  628.                         term.setCursorPos(1,17)
  629.                         term.clearLine()
  630.                 end
  631.  
  632.  
  633.  
  634.  
  635.  
  636.    
  637.             elseif param1 == "r" then
  638.                     if powerStatus == 1 then
  639.                    
  640.                         buttonPressed = 0
  641.                         redstone.setBundledOutput(cablePort1, colors.red)
  642.                         sleep(.5)
  643.                         redstone.setBundledOutput(cablePort1, 0)
  644.                         term.setCursorPos(20,17)
  645.                         print "Elevator Reset!"
  646.                         sleep (1.5)
  647.                         term.setCursorPos(1,17)
  648.                         term.clearLine()
  649.                             local dataPacket = {}
  650.                             dataPacket[0] = (clientID)
  651.                             dataPacket[1] = 0
  652.                             dataPacket[2] = (buttonPressed)
  653.                             local msg = textutils.serialize(dataPacket)
  654.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  655.                     else
  656.                         term.setCursorPos(20,17)
  657.                         write ("OUT OF ORDER!")
  658.                         sleep (1.5)
  659.                         term.setCursorPos(1,17)
  660.                         term.clearLine()
  661.                     end
  662.  
  663.  
  664.  
  665.  
  666.  
  667.    
  668.             elseif param1 == "R" then
  669.                     if powerStatus == 1 then
  670.                    
  671.                         buttonPressed = 0
  672.                         redstone.setBundledOutput(cablePort1, colors.red)
  673.                         sleep(.5)
  674.                         redstone.setBundledOutput(cablePort1, 0)
  675.                         term.setCursorPos(20,17)
  676.                         print "Elevator Reset!"
  677.                         sleep (1.5)
  678.                         term.setCursorPos(1,17)
  679.                         term.clearLine()
  680.                             local dataPacket = {}
  681.                             dataPacket[0] = (clientID)
  682.                             dataPacket[1] = 0
  683.                             dataPacket[2] = (buttonPressed)
  684.                             local msg = textutils.serialize(dataPacket)
  685.                             rednet.send(86, msg)            -- <-------- ********* ENTER THE SERVER's COMPUTER ID ***********
  686.                     else
  687.                         term.setCursorPos(20,17)
  688.                         write ("OUT OF ORDER!")
  689.                         sleep (1.5)
  690.                         term.setCursorPos(1,17)
  691.                         term.clearLine()
  692.                     end
  693.  
  694.  
  695.  
  696.  
  697.             else
  698.  
  699.             term.setCursorPos(20,17)  --WRONG BUTTON
  700.             print ("Wrong button!")
  701.             sleep (1.5)
  702.             term.setCursorPos(1,17)
  703.             term.clearLine()
  704.  
  705.             end
  706.     end
  707. end
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722. -- BEGIN PROGRAM
  723.  
  724. term.clear()
  725. screen()
  726. updateTX()
  727.  
  728.  
  729. parallel.waitForAll(rxData, checkPower, ready, token)
Add Comment
Please, Sign In to add comment