Advertisement
NanoBob

Multiplayer Digit Lock

Jun 26th, 2014
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.69 KB | None | 0 0
  1. --NanoTech Industries ©
  2.  
  3. --Edit the below part for customization
  4.  
  5. --Possible sides: front,right,back,left,top,bottom
  6.  
  7. monSide="back"          -- The side on which the monitor is
  8. redstoneSide="bottom"   -- The side of which you want the redstone signal to output
  9. code="12345"            -- The code can be 1 to 5 numbers
  10.  
  11.  
  12. -- Do NOT change anything below this point.
  13. inputs={}
  14. m=peripheral.wrap(monSide)
  15. function drawNumpad()
  16.     m.clear()
  17.     clearInput()
  18.     m.setBackgroundColor(128)
  19.     m.setCursorPos(2,1)
  20.     m.write("     ")
  21.    
  22.     m.setBackgroundColor(256)
  23.     m.setCursorPos(1,1)
  24.     m.write(" ")
  25.     m.setCursorPos(7,1)
  26.     m.write(" ")
  27.     m.setCursorPos(1,2)
  28.     m.write("       ")
  29.    
  30.     m.setBackgroundColor(32768)
  31.     m.setCursorPos(2,2)
  32.     m.write("1 2 3")
  33.     m.setCursorPos(2,3)
  34.     m.write("4 5 6")
  35.     m.setCursorPos(2,4)
  36.     m.write("7 8 9")
  37.     m.setCursorPos(2,5)
  38.     m.write("  0  ")
  39.    
  40.    
  41.     m.setBackgroundColor(256)
  42.     m.setCursorPos(1,3)
  43.     m.write(" ")
  44.     m.setCursorPos(1,4)
  45.     m.write(" ")
  46.     m.setCursorPos(1,5)
  47.     m.write(" ")
  48.     m.setCursorPos(7,3)
  49.     m.write(" ")
  50.     m.setCursorPos(7,4)
  51.     m.write(" ")
  52.     m.setCursorPos(7,5)
  53.     m.write(" ")
  54.    
  55.     m.setBackgroundColor(32)
  56.     m.setCursorPos(6,5)
  57.     m.write("Ok")
  58.    
  59.     m.setBackgroundColor(16384)
  60.     m.setCursorPos(1,5)
  61.     m.write("< ")
  62.    
  63. end
  64.  
  65.  
  66.  
  67.  
  68. function inputNumber()
  69.     event,side,x,y=os.pullEvent("monitor_touch")
  70.     if x==2 and y==2 then
  71.         digit=1
  72.     elseif x==4 and y==2 then
  73.         digit=2
  74.     elseif x==6 and y==2 then
  75.         digit=3
  76.     elseif x==2 and y==3 then
  77.         digit=4
  78.     elseif x==4 and y==3 then
  79.         digit=5
  80.     elseif x==6 and y==3 then
  81.         digit=6
  82.     elseif x==2 and y==4 then
  83.         digit=7
  84.     elseif x==4 and y==4 then
  85.         digit=8
  86.     elseif x==6 and y==4 then
  87.         digit=9
  88.     elseif x==4 and y==5 then
  89.         digit=0
  90.     elseif x>=2 and y==5 then
  91.         digit="ok"
  92.     elseif x<=6 and y==5 then
  93.         digit="clear"      
  94.     end
  95.    
  96.     if digit=="ok" then
  97.         checkNumber()
  98.     elseif digit=="clear" then
  99.         backspaceInput()
  100.     else
  101.         if #inputs<5 then
  102.             inputs[#inputs+1]=digit
  103.             m.setBackgroundColor(128)
  104.             m.setCursorPos(#inputs+1,1)
  105.             m.write(tostring(digit))
  106.         end
  107.     end
  108.    
  109. end
  110.  
  111.  
  112.  
  113. function checkNumber()
  114.     input=""
  115.     for id,number in pairs(inputs) do
  116.         input=input..number
  117.     end
  118.     if input==code then
  119.         redstone.setOutput(redstoneSide,true)
  120.         clearInput()
  121.         sleep(5)       
  122.         redstone.setOutput(redstoneSide,false)     
  123.     else
  124.         clearInput()
  125.     end
  126.    
  127.    
  128. end
  129.  
  130. function backspaceInput()
  131.     inputs[#inputs]=nil
  132.     m.setCursorPos(2,1)
  133.     m.write("     ")
  134.     m.setCursorPos(2,1)
  135.     m.setBackgroundColor(128)
  136.     for i,number in pairs(inputs) do
  137.         m.write(tostring(number))
  138.     end
  139. end
  140.  
  141. function clearInput()
  142.     inputs={}
  143.     m.setCursorPos(2,1)
  144.     m.setBackgroundColor(128)
  145.     m.write("     ")
  146. end
  147.  
  148. drawNumpad()
  149.  
  150. while true do
  151.     inputNumber()
  152. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement