daily pastebin goal
20%
SHARE
TWEET

mobTurret

qwertyMAN_rus Feb 1st, 2016 1,077 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local function func()
  2.     local com                   = require("component")
  3.     local event                 = require("event")
  4.     local gpu                   = com.gpu
  5.     local turret                = com.os_energyturret
  6.     local radar                 = com.openperipheral_sensor
  7.     local autors                = {"qwertyMAN"}
  8.     local version               = "0.9.1"
  9.  
  10.     -- Настройки
  11.     local firePleayers          = true
  12.     local fireMobs              = true
  13.     local Black_Player_List     = {}
  14.     local White_Player_List     = {}
  15.     -- относительные координаты пушки от сканера
  16.     local correct = {
  17.         x = 0,
  18.         y = 4,
  19.         z = 0
  20.     }
  21.  
  22.     local function pointer(x,y,z)
  23.         local distXY = math.sqrt(x^2+z^2)
  24.         local distDY = math.sqrt(y^2+distXY^2)
  25.         local outX = math.deg(math.acos(x/distXY))+90
  26.         local outY = 90-math.deg(math.acos(y/distDY))
  27.         if z<0 then
  28.             outX = (180-outX)%360
  29.         end
  30.         return outX,outY
  31.     end    
  32.                    
  33.     while true do
  34.         os.sleep(0)
  35.         local target = false
  36.         local fire = true
  37.         local scan=radar.getPlayers()
  38.         if firePleayers and #scan>0 then
  39.             if #White_Player_List>0 then
  40.                 for i=1, #autors do
  41.                     White_Player_List[#White_Player_List+1] = autors[i]
  42.                 end
  43.                 for i=1, #scan do
  44.                     local swich = true
  45.                     for j=1, #White_Player_List do
  46.                         if scan[i].name==White_Player_List[j] or not scan[i].name then
  47.                             swich = false
  48.                         end
  49.                     end
  50.                     if swich then
  51.                         target = scan[i].name
  52.                         break
  53.                     end
  54.                 end
  55.             elseif #Black_Player_List>0 then
  56.                 for i=#Black_Player_List, 1, -1 do
  57.                     for j=1, #autors do
  58.                         if Black_Player_List[i] == autors[j] then
  59.                             table.remove(Black_Player_List,i)
  60.                         end
  61.                     end
  62.                 end
  63.                 for i=1, #scan do
  64.                     local swich = false
  65.                     for j=1, #Black_Player_List do
  66.                         if scan[i].name==Black_Player_List[j] then
  67.                             swich = true
  68.                         end
  69.                     end
  70.                     if swich then
  71.                         target = scan[i].name
  72.                         break
  73.                     end
  74.                 end
  75.             else
  76.                 if #autors>0 then
  77.                     for i=1, #autors do
  78.                         White_Player_List[#White_Player_List+1] = autors[i]
  79.                     end
  80.                 else
  81.                     target = scan[1].name
  82.                 end
  83.             end
  84.             if target and radar.getPlayerByName(target) then
  85.                 target=radar.getPlayerByName(target).all()
  86.                 local x,y,z = target.position.x-0.5-correct.x, target.position.y+0.3-correct.y, target.position.z-0.5-correct.z
  87.                 local vx,vy = pointer(x,y,z)
  88.                 turret.moveTo(vx,vy)
  89.                 if turret.isOnTarget() then
  90.                     turret.fire()
  91.                 end
  92.                 fire = false
  93.             end
  94.         end
  95.         target = false
  96.         if fireMobs and fire then
  97.             local scan=radar.getMobIds()
  98.             if #scan>0 then
  99.                 for i=1, #scan do
  100.                     local mob
  101.                     if radar.getMobData(scan[i]).basic() then
  102.                         mob = radar.getMobData(scan[i]).basic()
  103.                         target = mob
  104.                     end
  105.                 end
  106.                 if target then
  107.                     local x,y,z = target.position.x-0.5-correct.x, target.position.y-0.5-correct.y, target.position.z-0.5-correct.z
  108.                     local vx,vy = pointer(x,y,z)
  109.                     turret.moveTo(vx,vy)
  110.                     if turret.isOnTarget() then
  111.                         turret.fire()
  112.                     end
  113.                 end
  114.             end
  115.         end
  116.     end
  117. end
  118. -- мегакостыль
  119. while true do
  120.     local oop = pcall(func)
  121.     print(oop)
  122. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top