PHOBOSS

StableSwarm.lua

Mar 24th, 2022 (edited)
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.46 KB | None | 0 0
  1. local component = require("component")
  2. local event = require("event")
  3. local serialization= require("serialization")
  4. local computer= require("computer")
  5. local modem = component.modem
  6.  
  7.  
  8. local QueensChannel = 2412
  9. local SoldiersChannel = 2413
  10.  
  11. modem.open(QueensChannel)
  12.  
  13. modem.broadcast(QueensChannel,"Qr= component.proxy(component.list('radar')())")
  14. modem.broadcast(QueensChannel,"Qn= component.proxy(component.list('navigation')())")
  15. modem.broadcast(QueensChannel,"Qd= component.proxy(component.list('drone')())")
  16. --[[
  17. modem.broadcast(QueensChannel,"function sleep(timeout) checkArg(1, timeout, 'number', 'nil') local deadline = computer.uptime() + (timeout or 0) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end")
  18.  
  19. modem.broadcast(QueensChannel,"e_coords={0,0,0} ")
  20.  
  21. modem.broadcast(QueensChannel,"function getEntityCoord(e_name) checkArg(1,e_name,'string','nil') for k,v in ipairs(Qr.getEntities()) do if v.name == e_name then e_coords[1]=v.x e_coords[2]=v.y e_coords[3]=v.z break end end end")
  22.  
  23. modem.broadcast(QueensChannel,"function getPlayerCoord(e_name) checkArg(1,e_name,'string','nil') for k,v in ipairs(Qr.getPlayers()) do if v.name == e_name then e_coords[1]=v.x e_coords[2]=v.y e_coords[3]=v.z break end end end")
  24.  
  25. modem.broadcast(QueensChannel,"function moveToEntity(e_name) checkArg(1,e_name,'string','nil') getEntityCoord(e_name) Qd.move(e_coords[1],e_coords[2]+2,e_coords[3]) end")
  26. ]]
  27.  
  28. modem.broadcast(QueensChannel,
  29. [[
  30. function sleep(timeout)
  31. checkArg(1, timeout, 'number', 'nil')
  32. local deadline = computer.uptime() + (timeout or 0)
  33. repeat
  34. computer.pullSignal(deadline - computer.uptime())
  35. until computer.uptime() >= deadline
  36. end
  37. ]])
  38. modem.broadcast(QueensChannel,"e_coords={0,0,0}")
  39. modem.broadcast(QueensChannel,
  40. [[
  41. function getPlayerCoord(e_name)
  42. checkArg(1,e_name,'string','nil')
  43. for k,v in ipairs(Qr.getPlayers()) do
  44. if v.name == e_name then
  45. e_coords[1]=v.x e_coords[2]=v.y e_coords[3]=v.z
  46. break
  47. end
  48. end
  49. end
  50.  
  51. function moveToPlayer(e_name)
  52. checkArg(1,e_name,"string","nil")
  53. getPlayerCoord(e_name)
  54. Qd.move(e_coords[1],e_coords[2]+2,e_coords[3])
  55. end
  56.  
  57. function loopMoveToPlayer(e_name)
  58. checkArg(1,e_name,"string","nil")
  59. if e_name then
  60. local stp
  61. repeat
  62. getPlayerCoord(e_name)
  63. Qd.move(e_coords[1],e_coords[2]+2,e_coords[3])
  64. stp = select(6,computer.pullSignal(0.5))
  65. until stp=="stop"
  66. end
  67. end
  68. ]])
  69.  
  70. modem.broadcast(QueensChannel,
  71. [[
  72. function SwarmPlayer(e_name)
  73. checkArg(1,e_name,'string','nil')
  74. getPlayerCoord(e_name)
  75. Qd.move(e_coords[1]+ math.random(-3,3),e_coords[2] + math.random(-3,3),e_coords[3]+ math.random(-3,3))
  76. end
  77. ]])
  78.  
  79. modem.open(SoldiersChannel)
  80. modem.broadcast(SoldiersChannel,"Sr= component.proxy(component.list('radar')())")
  81. modem.broadcast(SoldiersChannel,"Sn= component.proxy(component.list('navigation')())")
  82. modem.broadcast(SoldiersChannel,"Sd= component.proxy(component.list('drone')())")
  83. modem.broadcast(SoldiersChannel,"function sleep(timeout) checkArg(1, timeout, 'number', 'nil') local deadline = computer.uptime() + (timeout or 0) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end")
  84.  
  85. local function sleep(timeout) checkArg(1, timeout, "number", "nil")
  86. local deadline = computer.uptime() + (timeout or 0)
  87. repeat
  88. computer.pullSignal(deadline - computer.uptime())
  89. until computer.uptime() >= deadline
  90. end
  91.  
  92. local c = "local cmd local g=1 repeat cmd = select(6,computer.pullSignal(0.5)) Qd.setLightColor(0xFFFF00) Qd.setStatusText(\"Bingus \"..g) g=g+1 until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  93.  
  94. local rad ="getEntityCoord(\"ph0\") Qd.setStatusText(tostring(e_coords[1]))"
  95.  
  96. local search ="local cmd repeat cmd = select(6,computer.pullSignal(0.5)) getEntityCoord(\"ph0\") Qd.setStatusText(tostring(e_coords[1])) until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  97.  
  98. local mv_2 ="local cmd repeat cmd = select(6,computer.pullSignal(0.5)) getEntityCoord(\"ph0\") Qd.move(e_coords[1],e_coords[2]+2,e_coords[3]) until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  99.  
  100. local mv_2F ="local cmd repeat cmd = select(6,computer.pullSignal(0.5)) moveToEntity(\"ph0\") until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  101.  
  102. local mv_2P ="local cmd repeat cmd = select(6,computer.pullSignal(0.5)) getPlayerCoord(\"ph0\") Qd.move(e_coords[1],e_coords[2]+2,e_coords[3]) until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  103.  
  104. local mv_2PF ="local cmd repeat cmd = select(6,computer.pullSignal(0.5)) moveToPlayer(\"ph0\") until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  105.  
  106. local queenCmd = "moveToPlayer(\"ph0\")"
  107.  
  108.  
  109.  
  110. local queensOnly ="local cmd repeat cmd = select(6,computer.pullSignal(0.5)) "..queenCmd.." until cmd==\"stop\" Qd.setLightColor(0xFF0000) Qd.setStatusText(cmd)"
  111.  
  112. local queenCmdSwrm = "SwarmPlayer(\"ph0\")"
  113.  
  114. local queensOnly2 =
  115. [[
  116. local cmd
  117. repeat
  118. cmd = select(6,computer.pullSignal(0.5))
  119. if Qd.name():match("^Q%d+$") then
  120. ]]..queenCmdSwrm..[[
  121. end
  122. until cmd=="stop"
  123. Qd.setLightColor(0xFF0000)
  124. Qd.setStatusText(cmd)
  125. ]]
  126.  
  127. local queenCmdDisp = [[ Qd.setStatusText(tag) ]]
  128. local queensOnly3 =
  129. [[
  130. local cmd,tag,x,y,z
  131. repeat
  132. _,_,_,_,_,cmd,tag,x,y,z = computer.pullSignal(0.5)
  133. if Qd.name():match("^Q%d+$") then
  134. if tag then
  135. Qd.setStatusText(tag)
  136. end
  137. end
  138. until cmd=="stop"
  139. Qd.setLightColor(0xFF0000)
  140. ]]
  141.  
  142. local queensOnly4 =
  143. [[
  144. local cmd,tag,x,y,z
  145. while true do
  146. _,_,_,_,_,cmd,tag,x,y,z = computer.pullSignal(0.5)
  147. if Qd.name():match("^Q%d+$") then
  148. if cmd =="txt" then
  149. repeat
  150. if tag then
  151. Qd.setStatusText(tag)
  152. end
  153. Qd.setLightColor(0xFF0000)
  154. cmd = select(6,computer.pullSignal(0.5))
  155. until cmd=="stop"
  156. end
  157. end
  158. Qd.setLightColor(0xFFAF00)
  159. end
  160. ]]
  161.  
  162. local queensOnly5 =
  163. [[
  164. local cmd,tag,x,y,z
  165. while true do
  166. _,_,_,_,_,cmd,tag,x,y,z = computer.pullSignal(0.5)
  167. if Qd.name():match("^Q%d+$") then
  168. if cmd == "go" then
  169. Qd.setLightColor(0x00FF00)
  170. loopMoveToPlayer(tag)
  171. end
  172. end
  173. Qd.setLightColor(0xFFAF00)
  174. end
  175. ]]
  176. modem.broadcast(QueensChannel,queensOnly5)
  177. print("Bingus15")
  178.  
  179. while true do
  180. local cmd=io.read()
  181. if not cmd then return end
  182. if(cmd == "G") then
  183. modem.broadcast(QueensChannel,"go","ph0")
  184. sleep(0.5)
  185. elseif(cmd == "S") then
  186. modem.broadcast(QueensChannel,"stop")
  187. sleep(0.5)
  188. else
  189. modem.broadcast(QueensChannel,cmd)
  190. end
  191. end
Add Comment
Please, Sign In to add comment