LoliSmasher2001

Fast(er) 2D/3D Box ESP

Oct 3rd, 2015
495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.18 KB | None | 0 0
  1. --[[
  2.     Dynamic 2D/3D box esp
  3.         by Kujou
  4. ]]--
  5.  
  6. local function Draw3DBox(pos,min,max)
  7.     -- Thanks dad
  8.     local b = {}
  9.     -- Bottom Square
  10.     b[1] = {Vector(min.x,min.y,min.z),Vector(max.x,min.y,min.z)}
  11.     b[2] = {Vector(min.x,min.y,min.z),Vector(min.x,max.y,min.z)}
  12.     b[3] = {Vector(min.x,max.y,min.z),Vector(max.x,max.y,min.z)}
  13.     b[4] = {Vector(max.x,max.y,min.z),Vector(max.x,min.y,min.z)}
  14.     -- Pillars
  15.     b[5] = {Vector(min.x,min.y,min.z),Vector(min.x,min.y,max.z)}
  16.     b[6] = {Vector(min.x,max.y,min.z),Vector(min.x,max.y,max.z)}
  17.     b[7] = {Vector(max.x,max.y,min.z),Vector(max.x,max.y,max.z)}
  18.     b[8] = {Vector(max.x,min.y,min.z),Vector(max.x,min.y,max.z)}
  19.     -- Top Square
  20.     b[9] = {Vector(min.x,min.y,max.z),Vector(max.x,min.y,max.z)}
  21.     b[10] = {Vector(min.x,min.y,max.z),Vector(min.x,max.y,max.z)}
  22.     b[11] = {Vector(min.x,max.y,max.z),Vector(max.x,max.y,max.z)}
  23.     b[12] = {Vector(max.x,max.y,max.z),Vector(max.x,min.y,max.z)}
  24.     -- Iterate corners and draw line to join them
  25.     for k,v in next,b do
  26.         local p = pos:ToScreen()
  27.         local s = (pos + v[1]):ToScreen()
  28.         local e = (pos + v[2]):ToScreen()
  29.         surface.DrawLine(s.x,s.y,e.x,e.y)
  30.     end
  31. end
  32.  
  33. local function Draw2DBox(pos,min,max)
  34.     local h = (pos + Vector(0,0,max.z)):ToScreen().y
  35.     min = min + pos
  36.     max = max + pos
  37.     pos = pos:ToScreen()
  38.     -- just the sides of the box are needed
  39.     local s = {}
  40.     s[1] = Vector(min.x,min.y,0):ToScreen().x
  41.     s[2] = Vector(min.x,max.y,0):ToScreen().x
  42.     s[3] = Vector(max.x,max.y,0):ToScreen().x
  43.     s[4] = Vector(max.x,min.y,0):ToScreen().x
  44.     -- lowest = left side of the box, highest = right side of the box
  45.     local lowest = math.min(unpack(s))
  46.     local highest = math.max(unpack(s))
  47.     -- Drawing the box itself
  48.     surface.DrawOutlinedRect(lowest,h,highest-lowest,pos.y-h)
  49. end
  50.  
  51. local function DrawESP()
  52.     for k,v in next, player.GetAll() do
  53.             if (v == LocalPlayer() || v:IsDormant() || !ply:Alive()) then
  54.                 continue
  55.             end
  56.             local pos,min,max = ply:GetPos(),ply:OBBMins(),ply:OBBMaxs()
  57.             surface.SetDrawColor(255,0,0)
  58.             Draw3DBox(pos,min,max)
  59.             surface.SetDrawColor(0,255,0)
  60.             Draw2DBox(pos,min,max)
  61.     end
  62. end
  63. hook.Add("HUDPaint","esp",DrawESP)
Add Comment
Please, Sign In to add comment