Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local Workspace = game:GetService("Workspace")
- local LocalPlayer = Players.LocalPlayer
- local Camera = Workspace.CurrentCamera
- local Box_Color = Color3.fromRGB(0, 255, 50)
- local Box_Thickness = 1.4
- local Box_Transparency = 0
- local Tracers = true
- local Tracer_Color = Color3.fromRGB(0, 255, 50)
- local Tracer_Thickness = 1.4
- local Tracer_Transparency = 0
- local Autothickness = false
- local Team_Check = true
- local red = Color3.fromRGB(227, 52, 52)
- local green = Color3.fromRGB(88, 217, 24)
- local espLines = {}
- local function NewLine()
- local line = Drawing.new("Line")
- line.Visible = false
- line.From = Vector2.new(0, 0)
- line.To = Vector2.new(1, 1)
- line.Color = Box_Color
- line.Thickness = Box_Thickness
- line.Transparency = Box_Transparency
- return line
- end
- local function CleanupESP(player)
- if espLines[player] then
- for _, line in pairs(espLines[player]) do
- if line then
- line:Remove()
- end
- end
- espLines[player] = nil
- end
- end
- local function ESP()
- for _, v in pairs(Players:GetPlayers()) do
- if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("Humanoid") and v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChild("Head") then
- if not espLines[v] then
- espLines[v] = {
- line1 = NewLine(), line2 = NewLine(), line3 = NewLine(), line4 = NewLine(),
- line5 = NewLine(), line6 = NewLine(), line7 = NewLine(), line8 = NewLine(),
- line9 = NewLine(), line10 = NewLine(), line11 = NewLine(), line12 = NewLine(),
- Tracer = NewLine()
- }
- end
- local lines = espLines[v]
- local pos, vis = Camera:WorldToViewportPoint(v.Character.HumanoidRootPart.Position)
- if vis then
- local Scale = v.Character.Head.Size.Y / 2
- local Size = Vector3.new(2, 3, 1.5) * (Scale * 2)
- local function wp(offset)
- return Camera:WorldToViewportPoint((v.Character.HumanoidRootPart.CFrame * CFrame.new(offset)).Position)
- end
- local Top1, Top2, Top3, Top4 = wp(Vector3.new(-Size.X, Size.Y, -Size.Z)), wp(Vector3.new(-Size.X, Size.Y, Size.Z)), wp(Vector3.new(Size.X, Size.Y, Size.Z)), wp(Vector3.new(Size.X, Size.Y, -Size.Z))
- local Bottom1, Bottom2, Bottom3, Bottom4 = wp(Vector3.new(-Size.X, -Size.Y, -Size.Z)), wp(Vector3.new(-Size.X, -Size.Y, Size.Z)), wp(Vector3.new(Size.X, -Size.Y, Size.Z)), wp(Vector3.new(Size.X, -Size.Y, -Size.Z))
- lines.line1.From, lines.line1.To = Vector2.new(Top1.X, Top1.Y), Vector2.new(Top2.X, Top2.Y)
- lines.line2.From, lines.line2.To = Vector2.new(Top2.X, Top2.Y), Vector2.new(Top3.X, Top3.Y)
- lines.line3.From, lines.line3.To = Vector2.new(Top3.X, Top3.Y), Vector2.new(Top4.X, Top4.Y)
- lines.line4.From, lines.line4.To = Vector2.new(Top4.X, Top4.Y), Vector2.new(Top1.X, Top1.Y)
- lines.line5.From, lines.line5.To = Vector2.new(Bottom1.X, Bottom1.Y), Vector2.new(Bottom2.X, Bottom2.Y)
- lines.line6.From, lines.line6.To = Vector2.new(Bottom2.X, Bottom2.Y), Vector2.new(Bottom3.X, Bottom3.Y)
- lines.line7.From, lines.line7.To = Vector2.new(Bottom3.X, Bottom3.Y), Vector2.new(Bottom4.X, Bottom4.Y)
- lines.line8.From, lines.line8.To = Vector2.new(Bottom4.X, Bottom4.Y), Vector2.new(Bottom1.X, Bottom1.Y)
- lines.line9.From, lines.line9.To = Vector2.new(Bottom1.X, Bottom1.Y), Vector2.new(Top1.X, Top1.Y)
- lines.line10.From, lines.line10.To = Vector2.new(Bottom2.X, Bottom2.Y), Vector2.new(Top2.X, Top2.Y)
- lines.line11.From, lines.line11.To = Vector2.new(Bottom3.X, Bottom3.Y), Vector2.new(Top3.X, Top3.Y)
- lines.line12.From, lines.line12.To = Vector2.new(Bottom4.X, Bottom4.Y), Vector2.new(Top4.X, Top4.Y)
- if Tracers then
- local trace = Camera:WorldToViewportPoint(v.Character.Head.Position + Vector3.new(0, Scale * 2, 0))
- lines.Tracer.From = Vector2.new(trace.X, trace.Y)
- lines.Tracer.To = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
- end
- if Team_Check then
- local isBeast = v.Character:FindFirstChild("BeastPowers") ~= nil
- for _, line in pairs(lines) do
- line.Color = isBeast and red or green
- end
- end
- local thickness = Autothickness and math.clamp(1 / (LocalPlayer.Character.HumanoidRootPart.Position - v.Character.HumanoidRootPart.Position).Magnitude * 100, 0.1, 4) or Box_Thickness
- for _, line in pairs(lines) do
- line.Thickness = thickness
- line.Visible = true
- end
- else
- for _, line in pairs(lines) do
- line.Visible = false
- end
- end
- else
- CleanupESP(v)
- end
- end
- end
- RunService.RenderStepped:Connect(ESP)
- Players.PlayerRemoving:Connect(CleanupESP)
- Players.PlayerAdded:Connect(function(newplr)
- newplr.CharacterAdded:Connect(function(char)
- char:WaitForChild("HumanoidRootPart")
- char:WaitForChild("Head")
- end)
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement