Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
player = Players.LocalPlayer
camera = .CurrentCamera
playerModule = (player:():())
controls = playerModule:()
currentSpeed, currentSens, currentFOV = , ,
slideEnabled, isFreecamEnabled, collisionEnabled = , ,
is180Mode, isDpadMode = ,
slipPower, targetFPS, fpsCapEnabled = , ,
CAM_RADIUS =
cameraCFrame = .()
yaw, pitch = ,
velocity = .(,,)
joystickTouch =
gamepadRotation = .zero
dpadMove = .zero
dpadState = {Up=, Down=, Left=, Right=}
screenGui = .()
screenGui.Name =
screenGui.ResetOnSpawn =
screenGui.IgnoreGuiInset =
screenGui.Parent = player:()
container = .()
container.Size = .(, , , )
container.Position = .(, -, , )
container.AnchorPoint = .(, )
container.BackgroundColor3 = .(, , )
container.BackgroundTransparency =
container.Active =
container.Parent = screenGui
.(, container)
dragHandle = .()
dragHandle.Size = .(, , , ); dragHandle.BackgroundColor3 = .(, , )
dragHandle.Text = ; dragHandle.TextColor3 = .(,,)
dragHandle.Font = .Font.GothamBold; dragHandle.Parent = container
.(, dragHandle)
(text, y, color)
b = .()
b.Size = .(, , , ); b.Position = .(, , , y)
b.AnchorPoint = .(, ); b.BackgroundColor3 = color .(, , )
b.TextColor3 = .(,,); b.Text = text; b.Font = .Font.GothamBold
b.TextScaled = ; b.Parent = container; .(, b)
b
(y, def)
bx = .()
bx.Size = .(, , , ); bx.Position = .(, , , y)
bx.AnchorPoint = .(, ); bx.BackgroundColor3 = .(,,)
bx.BackgroundTransparency = ; bx.TextColor3 = .(,,)
bx.Text = def; bx.Font = .Font.Gotham; bx.Parent = container
.(, bx); bx
toggleBtn = (, )
modeBtn = (, , .(, , ))
speedIn = (, )
sensIn = (, )
fovIn = (, )
colTog = (, )
slideBtn = (, )
dpadTog = (, , .(, , ))
slipIn = (, )
fpsTog = (, , .(, , ))
fpsIn = (, )
tpBtn = (, , .(, , ))
hideBtn = (, , .(, , ))
showBtn = .()
showBtn.Size = .(, , , ); showBtn.Position = .(, -, , )
showBtn.BackgroundColor3 = .(,,); showBtn.Text = ; showBtn.TextColor3 = .(,,)
showBtn.Visible = ; showBtn.Parent = screenGui; .(, showBtn)
dpadFrame = .()
dpadFrame.Size = .(, , , ); dpadFrame.Position = .(, , , -)
dpadFrame.BackgroundTransparency = ; dpadFrame.Visible = ; dpadFrame.Parent = screenGui
(name, pos, rot)
btn = .()
btn.Size = .(, , , ); btn.Position = pos; btn.BackgroundColor3 = .(,,)
btn.BackgroundTransparency = ; btn.Image = ; btn.Rotation = rot; btn.Parent = dpadFrame
.(, btn); btn
btnU, btnD, btnL, btnR = (, .(, -, , ), ), (, .(, -, , -), ), (, .(, , , -), -), (, .(, -, , -), )
.(()
fpsCapEnabled
t = .()
RunService.Heartbeat:()
(.() - t) < (/targetFPS)
RunService.Heartbeat:()
)
(delta)
is180Mode
yaw = yaw - .(delta.X)
pitch = .(pitch - .(delta.Y), .(-), .())
cameraCFrame = .(cameraCFrame.Position) * .(, yaw, ) * .(pitch, , )
cameraCFrame = cameraCFrame * .(, -.(delta.X), ) * .(-.(delta.Y), , )
()
x = (dpadState.Right ) - (dpadState.Left )
z = (dpadState.Down ) - (dpadState.Up )
dpadMove = .(x, , z)
dpadMove.Magnitude > dpadMove = dpadMove.Unit
(b, d)
b.InputBegan:((i) i.UserInputType == .UserInputType.Touch i.UserInputType == .UserInputType.MouseButton1 dpadState[d] = ; (); b.BackgroundTransparency = )
b.InputEnded:((i) i.UserInputType == .UserInputType.Touch i.UserInputType == .UserInputType.MouseButton1 dpadState[d] = ; (); b.BackgroundTransparency = )
(btnU, ); (btnD, ); (btnL, ); (btnR, )
UserInputService.InputBegan:((input, gpe)
isFreecamEnabled
isDpadMode input.UserInputType == .UserInputType.Gamepad1
k = input.KeyCode
k == .KeyCode.DPadUp dpadState.Up = k == .KeyCode.DPadDown dpadState.Down = k == .KeyCode.DPadLeft dpadState.Left = k == .KeyCode.DPadRight dpadState.Right =
()
input.UserInputType == .UserInputType.Touch isDpadMode
input.Position.X < (camera.ViewportSize.X * ) joystickTouch = input
)
UserInputService.InputEnded:((input)
input == joystickTouch joystickTouch =
input.KeyCode == .KeyCode.Thumbstick2 gamepadRotation = .zero
isDpadMode input.UserInputType == .UserInputType.Gamepad1
k = input.KeyCode
k == .KeyCode.DPadUp dpadState.Up = k == .KeyCode.DPadDown dpadState.Down = k == .KeyCode.DPadLeft dpadState.Left = k == .KeyCode.DPadRight dpadState.Right =
()
)
UserInputService.InputChanged:((input, gpe)
isFreecamEnabled (gpe input.UserInputType ~= .UserInputType.Gamepad1)
input.KeyCode == .KeyCode.Thumbstick2
p = input.Position; gamepadRotation = (p.Magnitude > ) .(p.X * , -p.Y * ) .zero
input.UserInputType == .UserInputType.MouseMovement (input.UserInputType == .UserInputType.Touch input ~= joystickTouch)
isDpadMode input.UserInputType == .UserInputType.Touch input.Position.X < (camera.ViewportSize.X * )
(.(input.Delta.X * currentSens, input.Delta.Y * currentSens))
)
RunService:(, .RenderPriority.Camera.Value + , (dt)
isFreecamEnabled
camera.CameraType = .CameraType.Scriptable
player.Character player.Character:()
camera.CameraSubject ~= player.Character.Humanoid camera.CameraSubject = player.Character.Humanoid
gamepadRotation.Magnitude > (gamepadRotation * currentSens)
mv = isDpadMode dpadMove controls:()
dir = (cameraCFrame.RightVector * mv.X) + (cameraCFrame.LookVector * -mv.Z)
targetVel = dir * currentSpeed
velocity = slideEnabled velocity:(targetVel, .(dt * (/slipPower), , )) targetVel
subSteps =
moveStep = velocity / subSteps
params = RaycastParams.(); params.FilterDescendantsInstances = {player.Character}
s = , subSteps
step = moveStep
collisionEnabled step.Magnitude >
i = ,
cast = :(cameraCFrame.Position, CAM_RADIUS, step + (step.Unit * ), params)
cast cast.Instance cast.Instance.CanCollide
step = step - (step:(cast.Normal) * cast.Normal)
step.Magnitude < step = .zero
cameraCFrame = cameraCFrame + step
camera.CFrame = cameraCFrame
camera.FieldOfView = currentFOV
)
(box, var, prefix)
box.FocusLost:(()
val = (box.Text:())
val
var == currentSpeed = val var == currentSens = val var == currentFOV = val var == slipPower = .(val, ) var == targetFPS = .(val, , )
box.Text = prefix .. (val )
)
(speedIn, , ); (sensIn, , ); (fovIn, , ); (slipIn, , ); (fpsIn, , )
toggleBtn.MouseButton1Click:(()
isFreecamEnabled = isFreecamEnabled
toggleBtn.Text = isFreecamEnabled
toggleBtn.BackgroundColor3 = isFreecamEnabled .(, , ) .(,,)
isFreecamEnabled
currentCamCF = camera.CFrame
cameraCFrame = currentCamCF
look = currentCamCF.LookVector
yaw = .(-look.X, -look.Z)
pitch = .(.(look.Y, -, ))
player.Character _, v (player.Character:()) v:() v.Anchored =
camera.CameraType = .CameraType.Custom
player.Character _, v (player.Character:()) v:() v.Anchored =
)
dpadTog.MouseButton1Click:(() isDpadMode = isDpadMode; dpadTog.Text = isDpadMode ; dpadFrame.Visible = isDpadMode; dpadTog.BackgroundColor3 = isDpadMode .(, , ) .(, , ); player.DevTouchMovementMode = isDpadMode .DevTouchMovementMode.Scriptable .DevTouchMovementMode.UserChoice )
fpsTog.MouseButton1Click:(() fpsCapEnabled = fpsCapEnabled; fpsTog.Text = fpsCapEnabled ; fpsTog.BackgroundColor3 = fpsCapEnabled .(, , ) .(, , ) )
modeBtn.MouseButton1Click:(() is180Mode = is180Mode; modeBtn.Text = is180Mode )
colTog.MouseButton1Click:(() collisionEnabled = collisionEnabled; colTog.Text = collisionEnabled )
slideBtn.MouseButton1Click:(() slideEnabled = slideEnabled; slideBtn.Text = slideEnabled )
tpBtn.MouseButton1Click:(() player.Character player.Character:(cameraCFrame.Position) )
hideBtn.MouseButton1Click:(() container.Visible = ; showBtn.Visible = )
showBtn.MouseButton1Click:(() container.Visible = ; showBtn.Visible = )
isDrag, dStart, sPos
dragHandle.InputBegan:((i) i.UserInputType == .UserInputType.MouseButton1 i.UserInputType == .UserInputType.Touch isDrag = ; dStart = i.Position; sPos = container.Position )
UserInputService.InputChanged:((i) isDrag (i.UserInputType == .UserInputType.MouseMovement i.UserInputType == .UserInputType.Touch) delta = i.Position - dStart; container.Position = .(sPos.X.Scale, sPos.X.Offset + delta.X, sPos.Y.Scale, sPos.Y.Offset + delta.Y) )
UserInputService.InputEnded:((i) i.UserInputType == .UserInputType.MouseButton1 i.UserInputType == .UserInputType.Touch isDrag = )No point in using this because there's a newer version

Universal