Advertisement
Guest User

aerialstrike.lua

a guest
Jan 22nd, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.74 KB | None | 0 0
  1. local drone = component.proxy(component.list("drone")())
  2. local dbg = component.proxy(component.list("debug")())
  3. local net = component.proxy(component.list("modem")())
  4. net.open(2412)
  5. local eventStack = {}
  6. local listeners = {}
  7. event = {}
  8. function event.listen(evtype,callback)
  9.  if listeners[evtype] ~= nil then
  10.   table.insert(listeners[evtype],callback)
  11.   return #listeners
  12.  else
  13.   listeners[evtype] = {callback}
  14.   return 1
  15.  end
  16. end
  17. function event.ignore(evtype,id)
  18.  table.remove(listeners[evtype],id)
  19. end
  20. function event.pull(filter)
  21.  if not filter then return table.remove(eventStack,1)
  22.  else
  23.   for _,v in pairs(eventStack) do
  24.    if v == filter then
  25.     return v
  26.    end
  27.   end
  28.   repeat
  29.    t=table.pack(computer.pullSignal())
  30.    evtype = table.remove(t,1)
  31.    if listeners[evtype] ~= nil then
  32.     for k,v in pairs(listeners[evtype]) do
  33.      local evt,rasin = pcall(v,evtype,table.unpack(t))
  34.      if not evt then
  35.       print("stdout_write","ELF: "..tostring(evtype)..":"..tostring(k)..":"..rasin)
  36.      end
  37.     end
  38.    end
  39.   until evtype == filter
  40.   return evtype, table.unpack(t)
  41.  end
  42. end
  43. function print(...)
  44.  local args=table.pack(...)
  45.  pcall(function() net.broadcast(2412, table.unpack(args)) end)
  46. end
  47. function sleep(n)
  48.   local t0 = computer.uptime()
  49.   while computer.uptime() - t0 <= n do computer.pushSignal("wait") computer.pullSignal() end
  50. end
  51. while true do
  52.   net.open(2412)
  53.   local _, _, _, port, _, player, pass, numRockets = event.pull("modem_message")
  54.   if port == 2412 and pass == "preppux872" then
  55.     net.close(2412)
  56.     local numRocketsUsed = 0
  57.     playerObj = dbg.getPlayer(player)
  58.     playerX, playerY, playerZ = playerObj.getPosition()
  59.     droneXO = dbg.getX()
  60.     droneYO = dbg.getY()
  61.     droneZO = dbg.getZ()
  62.     drone.move(0, 256-droneYO, 0)
  63.     while drone.getOffset() ~= 0 do
  64.       sleep(0.001)
  65.     end
  66.     ::trackTarget::
  67.     drone.setAcceleration(0.5)
  68.     while drone.getOffset() ~= 0 do
  69.       if drone.getOffset() < 1 then
  70.         break
  71.       end
  72.       playerX, playerY, playerZ = playerObj.getPosition()
  73.       droneX = dbg.getX()
  74.       droneY = dbg.getY()
  75.       droneZ = dbg.getZ()
  76.       offsetXP = playerX - droneX
  77.       offsetZP = playerZ - droneZ
  78.       drone.move(offsetXP, 0, offsetZP)
  79.       offsetXP = 0
  80.       offsetZP = 0
  81.       sleep(0.5)
  82.     end
  83.     drone.setAcceleration(0.1)
  84.     goto useRocket
  85.     ::useRocket::
  86.     if playerObj.getHealth() == 0 or numRocketsUsed == numRockets then
  87.       goto returnToBase
  88.     else
  89.       result = drone.use(0)
  90.       if result == true then
  91.         numRocketsUsed = numRocketsUsed + 1
  92.         goto trackTarget
  93.       end
  94.      end
  95.     end
  96.     ::returnToBase::
  97.     droneX = dbg.getX()
  98.     droneZ = dbg.getY()
  99.     offsetXB = droneX - droneXO
  100.     offsetZB = droneZ - droneZO
  101.     drone.move(offsetXB, 0, offsetZB)
  102.     drone.move(0, droneYO, 0)
  103.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement