Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
Camera = .CurrentCamera
LocalPlayer = Players.LocalPlayer
settings = {
color = .(, , ),
thickness = ,
headOffset =
}
R15_BONES = {
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, },
{, }
}
(char)
head = char:()
torso = char:()
lArm = char:()
rArm = char:()
lLeg = char:()
rLeg = char:()
(head torso lArm rArm lLeg rLeg)
neck = torso.CFrame * .(, , )
hip = torso.CFrame * .(, -, )
lShoulder = lArm.CFrame * .(, , )
lElbow = lArm.Position
lHand = lArm.CFrame * .(, -, )
rShoulder = rArm.CFrame * .(, , )
rElbow = rArm.Position
rHand = rArm.CFrame * .(, -, )
lHip = lLeg.CFrame * .(, , )
lKnee = lLeg.Position
lFoot = lLeg.CFrame * .(, -, )
rHip = rLeg.CFrame * .(, , )
rKnee = rLeg.Position
rFoot = rLeg.CFrame * .(, -, )
{
{from = head.Position, to = neck, isHead = },
{from = neck, to = hip, isHead = },
{from = neck, to = lShoulder, isHead = },
{from = lShoulder, to = lElbow, isHead = },
{from = lElbow, to = lHand, isHead = },
{from = neck, to = rShoulder, isHead = },
{from = rShoulder, to = rElbow, isHead = },
{from = rElbow, to = rHand, isHead = },
{from = hip, to = lHip, isHead = },
{from = lHip, to = lKnee, isHead = },
{from = lKnee, to = lFoot, isHead = },
{from = hip, to = rHip, isHead = },
{from = rHip, to = rKnee, isHead = },
{from = rKnee, to = rFoot, isHead = }
}
(char)
bones = {}
_, pair (R15_BONES)
p1 = char:(pair[])
p2 = char:(pair[])
p1 p2
.(bones, {
from = p1.Position,
to = p2.Position,
isHead = (pair[] == )
})
bones
cache = {}
(plr)
data = cache[plr]
data
_, line (data.lines)
line:()
data.circle:()
cache[plr] =
(plr, char)
(plr)
circle = .()
circle.Thickness = settings.thickness
circle.Color = settings.color
circle.Filled =
circle.NumSides =
circle.Transparency =
circle.Visible =
lines = {}
i = ,
line = .()
line.Thickness = settings.thickness
line.Color = settings.color
line.Transparency =
line.Visible =
lines[i] = line
cache[plr] = {
char = char,
lines = lines,
circle = circle
}
RunService.RenderStepped:(()
_, data (cache)
data.circle.Visible =
_, l (data.lines)
l.Visible =
_, plr (Players:())
plr ~= LocalPlayer
char = plr.Character
hum = char char:()
head = char char:()
char hum hum.Health > head
data = cache[plr]
data data.char ~= char
(plr, char)
data = cache[plr]
headPos, vis = Camera:(head.Position)
vis headPos.Z >
top = Camera:(head.Position + .(, head.Size.Y / , ))
bot = Camera:(head.Position - .(, head.Size.Y / , ))
radius = .(.(top.Y - bot.Y) / , )
data.circle.Position = .(headPos.X, headPos.Y)
data.circle.Radius = radius
data.circle.Visible =
isR15 = char:() ~=
segments = isR15 (char) (char)
segments
i, seg (segments)
line = data.lines[i]
line
p1, v1 = Camera:(seg.from)
p2, v2 = Camera:(seg.to)
v1 v2 p1.Z > p2.Z >
from = .(p1.X, p1.Y)
to = .(p2.X, p2.Y)
seg.isHead
dir = to - from
dist = dir.Magnitude
offset = radius * settings.headOffset
dist > offset
from = from + (dir / dist) * offset
line.Visible =
line.From = from
line.To = to
line.Visible =
)
Players.PlayerRemoving:(removeESP)
Universal