boboh

Untitled

Mar 19th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. local standartESP = {};
  2.  
  3. local localPlayer = game:GetService("Players").LocalPlayer;
  4. local currentCamera = workspace.CurrentCamera;
  5. local worldToViewportPoint = currentCamera.WorldToViewportPoint;
  6. local setmetatable = setmetatable;
  7. local newDrawing = Drawing.new;
  8. local newVector2 = Vector2.new;
  9. local newVector3 = Vector3.new;
  10. local remove = table.remove;
  11.  
  12. local headOffset = newVector3(0, 0.5, 0);
  13. local legOffset = newVector3(0, 3, 0);
  14. local tracerStart = newVector2(currentCamera.ViewportSize.X / 2, currentCamera.ViewportSize.Y);
  15.  
  16. function standartESP.new(data)
  17. local self = setmetatable({
  18. plr = data.plr,
  19. char = data.plr.Character,
  20. espBox = nil,
  21. name = nil,
  22. tracer = nil,
  23. espColor = data.espColor or fromRGB(255, 255, 255),
  24. teamCheck = data.teamCheck or false;
  25. }, {__index = OwlESP});
  26.  
  27. local plr = data.plr;
  28. local char = self.char;
  29. local espBoxVisible = data.espBoxVisible;
  30. local tracerVisible = data.tracerVisible;
  31. local text = data.text;
  32.  
  33. if not char then return; end;
  34.  
  35. local rootPart = char.HumanoidRootPart;
  36. local head = char.Head;
  37. local rootPos, rootVis = worldToViewportPoint(currentCamera, rootPart.Position);
  38. local headPos = worldToViewportPoint(currentCamera, head.Position + headOffset);
  39. local legPos = worldToViewportPoint(currentCamera, rootPart.Position - legOffset);
  40. local visible = (self.teamCheck and plr.TeamColor ~= localPlayer.TeamColor) or (not self.teamCheck);
  41.  
  42. local espBox = newDrawing("Square");
  43. espBox.Color = self.espColor;
  44. espBox.Thickness = 2;
  45. espBox.Filled = false;
  46. espBox.Transparency = 0.8;
  47. local tracer = newDrawing("Line");
  48. tracer.From = tracerStart;
  49. tracer.Color = self.espColor;
  50. tracer.Thickness = 2;
  51. tracer.Transparency = 0.8;
  52. local name = newDrawing("Text");
  53. name.Text = text;
  54. name.Size = 16;
  55. name.Color = self.espColor;
  56. name.Center = true;
  57. name.Outline = true;
  58.  
  59. if rootVis then
  60. espBox.Size = newVector2(2350 / rootPos.Z, headPos.Y - legPos.Y);
  61. espBox.Position = newVector2(rootPos.X - espBox.Size.X / 2, rootPos.Y - espBox.Size.Y / 2);
  62. tracer.To = newVector2(rootPos.X, rootPos.Y - espBox.Size.Y / 2);
  63. name.Position = newVector2(rootPos.X, (rootPos.Y + espBox.Size.Y / 2) - 25);
  64.  
  65. espBox.Visible = espBoxVisible and visible;
  66. tracer.Visible = tracerVisible and visible;
  67. name.Visible = visible;
  68. end;
  69.  
  70. self.espBox = {espBox, espBoxVisible};
  71. self.tracer = {tracer, tracerVisible};
  72. self.name = {name, text};
  73.  
  74. return self;
  75. end;
  76.  
  77. function standartESP:setESPBox(visible)
  78. self.espBox[2] = visible;
  79. end;
  80.  
  81. function standartESP:setTracer(visible)
  82. self.tracer[2] = visible;
  83. end;
  84.  
  85. function standartESP:setText(text)
  86. self.name[2] = text;
  87. end;
  88.  
  89. function standartESP:update()
  90. local plr, char, espBox, tracer, name = self.plr, self.char, self.espBox[1], self.tracer[1], self.name[1];
  91. local espBoxVisible, tracerVisible, text, espColor = self.espBox[2], self.tracer[2], self.name[2], self.espColor;
  92. local rootPart, head = char:FindFirstChild("HumanoidRootPart"), char:FindFirstChild("Head");
  93.  
  94. if rootPart and head then
  95. local rootPos, rootVis = worldToViewportPoint(currentCamera, rootPart.Position);
  96. local headPos = worldToViewportPoint(currentCamera, head.Position + headOffset);
  97. local legPos = worldToViewportPoint(currentCamera, rootPart.Position - legOffset);
  98. local visible = (self.teamCheck and plr.TeamColor ~= localPlayer.TeamColor) or (not self.teamCheck);
  99.  
  100. if rootVis then
  101. espBox.Size = newVector2(2350 / rootPos.Z, headPos.Y - legPos.Y);
  102. local espBoxSize = espBox.Size;
  103. espBox.Position = newVector2(rootPos.X - espBoxSize.X / 2, rootPos.Y - espBoxSize.Y / 2);
  104. espBox.Color = espColor;
  105. tracer.To = newVector2(rootPos.X, rootPos.Y - espBoxSize.Y / 2);
  106. tracer.Color = espColor;
  107. name.Position = newVector2(rootPos.X, (rootPos.Y + espBoxSize.Y / 2) - 25);
  108. name.Text = text;
  109. name.Color = espColor;
  110.  
  111. espBox.Visible = espBoxVisible and visible;
  112. tracer.Visible = tracerVisible and visible;
  113. name.Visible = visible;
  114. else
  115. espBox.Visible = false;
  116. tracer.Visible = false;
  117. name.Visible = false;
  118. end;
  119. end;
  120. end;
  121.  
  122. function standartESP:remove()
  123. self.espBox[1]:Remove();
  124. self.tracer[1]:Remove();
  125. self.name[1]:Remove();
  126. function self:update() end;
  127. end;
  128.  
  129. return standartESP;
Add Comment
Please, Sign In to add comment