Advertisement
Alexr360

Artillary Controller

Apr 10th, 2024 (edited)
875
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Print a line of dashes for aesthetics
  2. local function lineBreak()
  3.     local width, height = term.getSize()
  4.     for i = 1, width do
  5.       io.write("-")
  6.     end
  7.     io.write("\n")
  8. end
  9. -- Function to clear the screen
  10. local function clearScreen()
  11.     term.clear()
  12.     term.setCursorPos(1, 1)
  13. end
  14.  
  15. clearScreen()
  16. -- Print the welcome message
  17. print("Artillery Controller")
  18. lineBreak()
  19. print("Select a weapon:")
  20. print("1. TNT")
  21. print("2. Nuke")
  22. print("3. Arrow Spray")
  23. lineBreak()
  24.  
  25. local choice = read()
  26.  
  27. if choice == "1" then
  28.   projectileType = "TNT"
  29. elseif choice == "2" then
  30.   print("Authorization Code:")
  31.   local choice = read()
  32.   if choice == "1234" then
  33.     print("Codes Accepted")
  34.     projectileType = "Nuke"
  35.   end
  36. elseif choice == "3" then
  37.   projectileType = "Arrows"
  38. end
  39.  
  40. clearScreen()
  41.  
  42.  
  43. -- Ask for shot size-- Ask for shot size
  44. print("Artillery Controller")
  45. lineBreak()
  46. print("Weapon:"..projectileType)
  47. lineBreak()
  48. print("Size of Shot:")
  49. print("1. 1x1")
  50. print("2. 2x2")
  51. if projectileType == "TNT" then
  52.     print("3. 3x3")
  53.     print("4. 4x4")
  54.     print("5. 5x5")
  55.     print("6. Stab Charge")
  56.    
  57.     local choice = read()
  58.     if choice == "2" then
  59.       projectilePattern = "2x2"
  60.     elseif choice == "3" then
  61.       projectilePattern = "3x3"
  62.     elseif choice == "4" then
  63.       projectilePattern = "4x4"
  64.     elseif choice == "5" then
  65.       projectilePattern = "5x5"
  66.     elseif choice == "6" then
  67.       projectilePattern = "StabCharge"
  68.     else
  69.       projectilePattern = "Single"
  70.     end
  71.  
  72. elseif projectileType == "Nuke" then
  73.     -- Nuke keeps only Single or 2x2
  74.     local choice = read()
  75.     if choice == "2" then
  76.       projectilePattern = "2x2"
  77.     else
  78.       projectilePattern = "Single"
  79.     end
  80.  
  81. elseif projectileType == "Arrows" then
  82.     projectilePattern = "Spray"  -- only spray pattern for arrow volley 🔫
  83. end
  84. clearScreen()
  85.  
  86.  
  87. print("Artillery Controller")
  88. lineBreak()
  89. print("Weapon:"..projectileType)
  90. print("Pattern:"..projectilePattern)
  91. lineBreak()
  92. print("Number of Itterations")
  93. lineBreak()
  94. local iterations = tonumber(read())
  95. clearScreen()
  96.  
  97. print("Artillery Controller")
  98. lineBreak()
  99. print("Weapon:"..projectileType)
  100. print("Pattern:"..projectilePattern)
  101. lineBreak()
  102. print("Select a targeting method")
  103. print("1. Current Position")
  104. print("2. Custom Current")
  105. print("3. Offset Position")
  106. lineBreak()
  107.  
  108. local choice = read()
  109.  
  110. if choice == "2" then
  111.     print("X: ")
  112.     targetX = read()
  113.     print("Y: ")
  114.     targetY = read()
  115.     print("Z: ")
  116.     targetZ = read()
  117. elseif choice == "3" then
  118.     X, Y, Z = gps.locate()
  119.     print("X: ")
  120.     targetX = X + read()
  121.     print("Y: ")
  122.     targetY = Y + read()
  123.     print("Z: ")
  124.     targetZ = Z + read()
  125. else
  126.     targetX, targetY, targetZ = gps.locate()
  127. end
  128.  
  129. clearScreen()
  130. print("Artillery Controller")
  131. lineBreak()
  132. print("Weapon:"..projectileType)
  133. print("Pattern:"..projectilePattern)
  134. print("X:"..targetX)
  135. print("Y:"..targetY)
  136. print("Z:"..targetZ)
  137. lineBreak()
  138. print("Please Confirm")
  139. print("1. Confirm Input")
  140. print("2. Cancel")
  141. lineBreak()
  142.  
  143.  
  144. local choice = read()
  145.  
  146. if choice == "1" then
  147.     local modem = peripheral.find("modem") or error("No modem attached", 0)
  148.     modem.open(43) -- Open 43 so we can receive replies
  149.    
  150.     clearScreen()
  151.     print("Artillery Controller")
  152.     lineBreak()
  153.     modem.transmit(15, 43, "Artillery")
  154.     os.sleep(0.1)
  155.     print("Artillery Connected")
  156.     print("Starting Programing")
  157.     lineBreak()
  158.  
  159.     modem.transmit(15, 43, projectileType)
  160.     print("Weapon:"..projectileType)
  161.     os.sleep(0.1)
  162.     modem.transmit(15, 43, projectilePattern)
  163.     print("Pattern:"..projectilePattern)
  164.     os.sleep(0.1)
  165.     modem.transmit(15, 43, iterations)
  166.     print("Iterations:"..iterations)
  167.     os.sleep(0.1)
  168.     modem.transmit(15, 43, targetX)
  169.     print("X:"..targetX)
  170.     os.sleep(0.1)
  171.     modem.transmit(15, 43, targetY)
  172.     print("Y:"..targetY)
  173.     os.sleep(0.1)
  174.     modem.transmit(15, 43, targetZ)
  175.     print("Z:"..targetZ)
  176.        
  177.     os.sleep(0.5)
  178.     clearScreen()
  179.     print("Artillery Controller")
  180.     lineBreak()
  181.     print("Programing Complete")
  182.     lineBreak()
  183.     print("Firing Now")
  184.    
  185.     clearScreen()
  186.     print("Artillery Controller")
  187.     lineBreak()
  188.     print("Programing Complete")
  189.     for i = 1, iterations+2 do
  190.         local event, side, channel, replyChannel, message, distance
  191.         repeat
  192.           event, side, channel, replyChannel, message, distance = os.pullEvent("modem_message")
  193.         until channel == 43
  194.         print(tostring(message))
  195.     end
  196. else
  197.   print("Cancelled")
  198. end
  199.  
  200. os.sleep(1)
  201. shell.run("Greeting")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement