Run it
Copy the script and paste it into your executor.
P = :()
UIS = :()
RS = :()
TS = :()
plr = P.LocalPlayer
cam = .CurrentCamera
OffsetU =
OffsetD =
aimOn =
charOn =
aimTarget =
charTarget =
oldAutoRotate =
offBg = .(, , )
onBg = .(, , )
offLine = .(, , )
onLine = .(, , )
ink = .(, , )
ui = .()
popup = .()
popupCorner = .()
popupStroke = .()
popupTitle = .()
popupLink = .()
okBtn = .()
okCorner = .()
ui.Name =
ui.ResetOnSpawn =
ui.IgnoreGuiInset =
ui.ZIndexBehavior = .ZIndexBehavior.Sibling
(()
ui.Parent = :()
)
ui.Parent
ui.Parent = plr:()
popup.Name =
popup.Size = .(, , , )
popup.Position = .(, -, , -)
popup.BackgroundColor3 = .(, , )
popup.BorderSizePixel =
popup.ZIndex =
popup.Parent = ui
popupCorner.CornerRadius = .(, )
popupCorner.Parent = popup
popupStroke.Color = .(, , )
popupStroke.Thickness =
popupStroke.Parent = popup
popupTitle.Size = .(, -, , )
popupTitle.Position = .(, , , )
popupTitle.BackgroundTransparency =
popupTitle.Text =
popupTitle.TextColor3 = .(, , )
popupTitle.Font = .Font.Cartoon
popupTitle.TextSize =
popupTitle.TextXAlignment = .TextXAlignment.Center
popupTitle.ZIndex =
popupTitle.Parent = popup
popupLink.Size = .(, -, , )
popupLink.Position = .(, , , )
popupLink.BackgroundTransparency =
popupLink.Text =
popupLink.TextColor3 = .(, , )
popupLink.Font = .Font.Cartoon
popupLink.TextSize =
popupLink.TextWrapped =
popupLink.TextXAlignment = .TextXAlignment.Center
popupLink.ZIndex =
popupLink.Parent = popup
okBtn.Size = .(, , , )
okBtn.Position = .(, -, , -)
okBtn.BackgroundColor3 = .(, , )
okBtn.BorderSizePixel =
okBtn.Text =
okBtn.TextColor3 = .(, , )
okBtn.Font = .Font.Cartoon
okBtn.TextSize =
okBtn.AutoButtonColor =
okBtn.ZIndex =
okBtn.Parent = popup
okCorner.CornerRadius = .(, )
okCorner.Parent = okBtn
aimBtn
aimStroke
charBtn
charStroke
loaded =
(name, text, y, callback)
btn = .()
cr = .()
stroke = .()
label = .()
us = .()
btn.Name = name
btn.Size = .(, )
btn.Position = .(, -, , y)
btn.BackgroundColor3 = offBg
btn.BorderSizePixel =
btn.Active =
btn.ZIndex =
btn.Parent = ui
cr.CornerRadius = .(, )
cr.Parent = btn
stroke.Thickness =
stroke.Color = offLine
stroke.Parent = btn
label.Size = .(, )
label.BackgroundTransparency =
label.Text = text
label.TextColor3 = ink
label.TextSize =
label.Font = .Font.FredokaOne
label.ZIndex =
label.Parent = btn
us.Parent = btn
held
dragStart
startPos
conn
moved =
(i)
i.UserInputType == .UserInputType.Touch
i.UserInputType == .UserInputType.MouseButton1
btn.InputBegan:((i)
(i)
held = i
dragStart = i.Position
startPos = btn.Position
moved =
conn
conn:()
conn = UIS.InputChanged:((x)
x ~= held x.UserInputType ~= .UserInputType.MouseMovement
d = x.Position - dragStart
d.Magnitude >
moved =
moved
btn.Position = .(
startPos.X.Scale,
startPos.X.Offset + d.X,
startPos.Y.Scale,
startPos.Y.Offset + d.Y
)
)
)
btn.InputEnded:((i)
(i)
conn
conn:()
conn =
moved
TS:(
us,
TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out),
{Scale = }
):()
.(, ()
us.Parent
TS:(
us,
TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out),
{Scale = }
):()
)
()
held =
dragStart =
startPos =
moved =
)
btn, stroke
(p)
char = p p.Character
char
hum = char:()
torso = char:()
char:()
char:()
hum hum.Health <= torso
torso
()
char = plr.Character
root = char char:()
root
nearest
distance = .huge
_, p (P:())
p ~= plr
torso = (p)
torso
d = (root.Position - torso.Position).Magnitude
d < distance
distance = d
nearest = p
nearest
(btn, stroke, state)
btn stroke
TS:(
btn,
TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out),
{BackgroundColor3 = state onBg offBg}
):()
TS:(
stroke,
TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out),
{Color = state onLine offLine}
):()
()
aimOn = aimOn
aimOn
aimTarget = ()
aimTarget =
(aimBtn, aimStroke, aimOn)
()
charOn = charOn
char = plr.Character
humanoid = char char:()
charOn
charTarget = ()
humanoid
oldAutoRotate = humanoid.AutoRotate
humanoid.AutoRotate =
charTarget =
humanoid oldAutoRotate ~=
humanoid.AutoRotate = oldAutoRotate
oldAutoRotate =
(charBtn, charStroke, charOn)
()
aimBtn, aimStroke = (, , -, toggleAim)
charBtn, charStroke = (, , -, toggleChar)
RS:(
,
.RenderPriority.Camera.Value + ,
()
cam = .CurrentCamera
aimOn
torso = (aimTarget)
torso
aimOn =
aimTarget =
(aimBtn, aimStroke, )
focus = cam.Focus.Position
dist = (cam.CFrame.Position - focus).Magnitude
dir = torso.Position - focus
dir.Magnitude >
cameraPosition =
focus
- dir.Unit * dist
+ .(, OffsetU, )
+ cam.CFrame.RightVector * OffsetD
cam.CFrame = .(
cameraPosition,
torso.Position
)
charOn
char = plr.Character
root = char char:()
torso = (charTarget)
root torso
charOn =
charTarget =
(charBtn, charStroke, )
humanoid = char char:()
humanoid oldAutoRotate ~=
humanoid.AutoRotate = oldAutoRotate
oldAutoRotate =
targetPos = .(
torso.Position.X,
root.Position.Y,
torso.Position.Z
)
(targetPos - root.Position).Magnitude >
root.CFrame = .(
root.Position,
targetPos
)
)
P.PlayerRemoving:((p)
p == aimTarget
aimOn =
aimTarget =
(aimBtn, aimStroke, )
p == charTarget
charOn =
charTarget =
(charBtn, charStroke, )
char = plr.Character
humanoid = char char:()
humanoid oldAutoRotate ~=
humanoid.AutoRotate = oldAutoRotate
oldAutoRotate =
)
plr.CharacterAdded:(()
aimOn =
charOn =
aimTarget =
charTarget =
(aimBtn, aimStroke, )
(charBtn, charStroke, )
oldAutoRotate =
)
()
loaded
loaded =
popup:()
()
()
okBtn.MouseEnter:(()
okBtn.BackgroundColor3 = .(, , )
)
okBtn.MouseLeave:(()
okBtn.BackgroundColor3 = .(, , )
)
okBtn.MouseButton1Click:(()
()
)a simple lil script that adds two draggable toggles, one locks you camera onto targets humanoid. while the other locks your character instead.

Universal