local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- COLORS
local indigo/blue = Color3.fromRGB(75, 0, 130)
local periwinkle = Color3.fromRGB(204, 204, 255)
-- STATE
local lockedTarget = nil
local lockOnActive = false
local behindUEnabled = false
--utilities
local function roundify(obj, rad)
local uicorner = Instance.new("UICorner", obj)
uicorner.CornerRadius = UDim.new(0, rad)
end
local function getCharRoot(plr)
if plr and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
then
return plr.Character.HumanoidRootPart
end
end
-- uui (TO PlayerGui)
local gui = Instance.new("ScreenGui")
gui.Name = "JumpShowdownLockOnUI"
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 340, 0, 420)
frame.Position = UDim2.new(0.5, -170, 0.5, -210)
frame.BackgroundColor3 = indigo
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
roundify(frame, 16)
local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1, 0, 0, 44)
title.Position = UDim2.new(0, 0, 0, 0)
title.BackgroundTransparency = 1
title.Text = "Jump Showdown Lock-On"
title.TextColor3 = periwinkle
title.Font = Enum.Font.SourceSansBold
title.TextSize = 28
local line = Instance.new("Frame", frame)
line.Size = UDim2.new(1, -32, 0, 2)
line.Position = UDim2.new(0, 16, 0, 44)
line.BackgroundColor3 = periwinkle
line.BorderSizePixel = 0
local targetList = Instance.new("ScrollingFrame", frame)
targetList.Size = UDim2.new(1, -32, 0, 140)
targetList.Position = UDim2.new(0, 16, 0, 56)
targetList.BackgroundColor3 = indigo
targetList.BorderSizePixel = 0
targetList.CanvasSize = UDim2.new(0, 0, 0, 0)
targetList.ScrollBarThickness = 6
roundify(targetList, 12)
local function refreshTargetList()
targetList:ClearAllChildren()
local y = 0
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local btn = Instance.new("TextButton", targetList)
btn.Size = UDim2.new(1, 0, 0, 32)
btn.Position = UDim2.new(0, 0, 0, y)
btn.BackgroundColor3 = periwinkle
btn.TextColor3 = indigo
btn.Font = Enum.Font.SourceSans
btn.TextSize = 20
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.Text = string.format("%s [%s]", player.DisplayName or
player.Name, player.Name)
roundify(btn, 8)
btn.MouseButton1Click:Connect(function()
lockedTarget = player
end)
y = y + 36
end
end
targetList.CanvasSize = UDim2.new(0, 0, 0, y)
end
Players.PlayerAdded:Connect(refreshTargetList)
Players.PlayerRemoving:Connect(refreshTargetList)
refreshTargetList()
local lockOnBtn = Instance.new("TextButton", frame)
lockOnBtn.Size = UDim2.new(1, -32, 0, 40)
lockOnBtn.Position = UDim2.new(0, 16, 0, 210)
lockOnBtn.BackgroundColor3 = periwinkle
lockOnBtn.TextColor3 = indigo
lockOnBtn.Font = Enum.Font.SourceSansBold
lockOnBtn.TextSize = 22
lockOnBtn.Text = "Lock-On: OFF"
roundify(lockOnBtn, 12)
lockOnBtn.MouseButton1Click:Connect(function()
lockOnActive = not lockOnActive
lockOnBtn.Text = "Lock-On: " .. (lockOnActive and "ON" or "OFF")
end)
local behindUBtn = Instance.new("TextButton", frame)
behindUBtn.Size = UDim2.new(1, -32, 0, 40)
behindUBtn.Position = UDim2.new(0, 16, 0, 260)
behindUBtn.BackgroundColor3 = periwinkle
behindUBtn.TextColor3 = indigo
behindUBtn.Font = Enum.Font.SourceSansBold
behindUBtn.TextSize = 22
behindUBtn.Text = "BehindU: OFF"
roundify(behindUBtn, 12)
behindUBtn.MouseButton1Click:Connect(function()
behindUEnabled = not behindUEnabled
behindUBtn.Text = "BehindU: " .. (behindUEnabled and "ON" or "OFF")
end)
local info = Instance.new("TextLabel", frame)
info.Size = UDim2.new(1, -32, 0, 44)
info.Position = UDim2.new(0, 16, 1, -54)
info.BackgroundTransparency = 1
info.TextColor3 = periwinkle
info.Font = Enum.Font.SourceSans
info.TextSize = 18
info.Text = "Select a player to lock-on.\nToggle BehindU to autofarm.\nHold
LeftCtrl & LeftClick to teleport."
-- CAMERA & BEHINDU LOGIC
RunService.RenderStepped:Connect(function()
local myRoot = getCharRoot(LocalPlayer)
local targetRoot = lockedTarget and getCharRoot(lockedTarget)
if behindUEnabled and targetRoot and myRoot then
-- Teleport behind target
local offset = targetRoot.CFrame.LookVector * -2
local newPos = targetRoot.Position + offset + Vector3.new(0,1,0)
myRoot.CFrame = CFrame.new(newPos, targetRoot.Position)
Camera.CameraType = Enum.CameraType.Custom
elseif lockOnActive and targetRoot and myRoot then
-- Aim-assist lock-on camera (smoothly look at target)
local cameraOffset = Vector3.new(0, 4, -8)
local desiredPos = myRoot.Position + cameraOffset
local lookAt = targetRoot.Position + Vector3.new(0,2,0)
Camera.CameraType = Enum.CameraType.Scriptable
Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(desiredPos, lookAt), 0.35)
else
Camera.CameraType = Enum.CameraType.Custom
end
end)
-- CLICK TO TELEPORT FEATURE (LeftCtrl + LeftClick)
local Mouse = LocalPlayer:GetMouse()
local ctrlHeld = false
UserInputService.InputBegan:Connect(function(input, processed)
if input.KeyCode == Enum.KeyCode.LeftControl then
ctrlHeld = true
end
end)
UserInputService.InputEnded:Connect(function(input, processed)
if input.KeyCode == Enum.KeyCode.LeftControl then
ctrlHeld = false
end
end)
Mouse.Button1Down:Connect(function()
if ctrlHeld and LocalPlayer.Character and
LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local target = Mouse.Hit
if target then
-- Teleport slightly above the clicked spot to avoid falling through
the floor
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(target.p +
Vector3.new(0,3,0))
end
end
end)