
KeylessUniversal

-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- SAVE DEFAULT WALK SPEED
local DEFAULT_WALK_SPEED = humanoid.WalkSpeed
-- TOOL CREATION
local tool = Instance.new("Tool")
tool.Name = "noclip"
tool.RequiresHandle = false
tool.Parent = player:WaitForChild("Backpack")
-- R6 Motor6D Mapping
local R6_MAPPING = {
["Torso"] = "RootJoint",
["Head"] = "Neck",
["Right Arm"] = "Right Shoulder",
["Left Arm"] = "Left Shoulder",
["Right Leg"] = "Right Hip",
["Left Leg"] = "Left Hip",
}
local motors = {}
for _, m in ipairs(character:GetDescendants()) do
if m:IsA("Motor6D") then
motors[m.Name] = m
end
end
local function resetMotors()
for _, m in pairs(motors) do
m.Transform = CFrame.identity
end
end
--========================================
-- PART 1: TOOL "Reversal red" LOOP
--========================================
local toolConnection
local keyframeSequence
local asset = game:GetObjects("rbxassetid://15194217961")[1]
if asset then
for _, obj in ipairs(asset:GetDescendants()) do
if obj:IsA("KeyframeSequence") and obj.Name == "Reversal red" then
keyframeSequence = obj
break
end
end
end
local function playKeyframe(seq)
if not seq then return end
local keyframes = seq:GetKeyframes()
table.sort(keyframes, function(a,b) return a.Time < b.Time end)
local startTime = os.clock()
local duration = keyframes[#keyframes].Time
toolConnection = RunService.RenderStepped:Connect(function()
local t = os.clock() - startTime
for i = #keyframes,1,-1 do
if t >= keyframes[i].Time then
for _, pose in ipairs(keyframes[i]:GetDescendants()) do
if pose:IsA("Pose") then
local motor = motors[R6_MAPPING[pose.Name]]
if motor then motor.Transform = pose.CFrame end
end
end
break
end
end
if t >= duration then
startTime = os.clock() -- loop
end
end)
end
--========================================
-- PART 2: WALK / RUN / IDLE OVERRIDE
--========================================
local modelAsset = game:GetObjects("rbxassetid://128769945038492")[1]
local idleSeq, walkSeq, runSeq
if modelAsset then
for _, obj in ipairs(modelAsset:GetDescendants()) do
if obj:IsA("KeyframeSequence") then
local name = obj.Name:lower()
if name:find("idle") and not idleSeq then
idleSeq = obj
elseif name:find("walk") and not walkSeq then
walkSeq = obj
elseif name:find("run") and not runSeq then
runSeq = obj
end
end
end
end
local movementConn
local currentMovementSeq
local runEnabled = false
local movementPaused = false
local function playMovement(seq)
if not seq then return end
currentMovementSeq = seq
if movementConn then movementConn:Disconnect() movementConn = nil end
local keyframes = seq:GetKeyframes()
table.sort(keyframes, function(a,b) return a.Time < b.Time end)
local startTime = os.clock()
local duration = keyframes[#keyframes].Time
movementConn = RunService.RenderStepped:Connect(function()
if movementPaused then return end -- stop updating if paused
local t = os.clock() - startTime
for i = #keyframes,1,-1 do
if t >= keyframes[i].Time then
for _, pose in ipairs(keyframes[i]:GetDescendants()) do
if pose:IsA("Pose") then
local motor = motors[R6_MAPPING[pose.Name]]
if motor then motor.Transform = pose.CFrame end
end
end
break
end
end
if t >= duration then
startTime = os.clock() -- loop
end
end)
end
-- Update movement every frame
RunService.RenderStepped:Connect(function()
if movementPaused then return end
local moveMag = humanoid.MoveDirection.Magnitude
if moveMag > 0 then
if runEnabled and runSeq then
if currentMovementSeq ~= runSeq then playMovement(runSeq) end
elseif walkSeq then
if currentMovementSeq ~= walkSeq then playMovement(walkSeq) end
end
else
if idleSeq then
if currentMovementSeq ~= idleSeq then playMovement(idleSeq) end
else
if movementConn then movementConn:Disconnect() movementConn = nil end
end
end
end)
--========================================
-- PART 3: RUN TOGGLE BUTTON
--========================================
if runSeq then
local gui = Instance.new("ScreenGui", player.PlayerGui)
gui.ResetOnSpawn = false
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0,150,0,50)
frame.Position = UDim2.new(0,20,0,20)
frame.BackgroundColor3 = Color3.fromRGB(30,30,30)
Instance.new("UICorner", frame)
local runBtn = Instance.new("TextButton", frame)
runBtn.Size = UDim2.new(1, -10, 1, -10)
runBtn.Position = UDim2.new(0,5,0,5)
runBtn.Text = "Run: OFF"
runBtn.TextScaled = true
runBtn.MouseButton1Click:Connect(function()
runEnabled = not runEnabled
if runEnabled then
humanoid.WalkSpeed = 30
runBtn.Text = "Run: ON"
else
humanoid.WalkSpeed = DEFAULT_WALK_SPEED
runBtn.Text = "Run: OFF"
end
end)
end
--========================================
-- TOOL EVENTS: PAUSE MOVEMENT WHEN EQUIPPED
--========================================
tool.Equipped:Connect(function()
movementPaused = true -- pause walk/idle/run
if toolConnection then toolConnection:Disconnect() toolConnection = nil end
resetMotors()
if keyframeSequence then
playKeyframe(keyframeSequence)
end
end)
tool.Unequipped:Connect(function()
movementPaused = false -- resume walk/idle/run
if toolConnection then
toolConnection:Disconnect()
toolConnection = nil
end
resetMotors()
end)No comments yet for this script.



