
KeylessUniversal

-- [[ AXIS-SWAPPED POSER FOR REANIMATIONS ]] --
local Player = game:GetService("Players").LocalPlayer
local Mouse = Player:GetMouse()
-- Gizmos
local SelectionBox = Instance.new("SelectionBox", game:GetService("CoreGui"))
SelectionBox.Color3 = Color3.fromRGB(0, 255, 255)
local arcHandles = Instance.new("ArcHandles", game:GetService("CoreGui"))
local moveHandles = Instance.new("Handles", game:GetService("CoreGui"))
arcHandles.Visible, moveHandles.Visible = false, false
local currentJoint = nil
local mode = "Rotate"
-- Mobile Sink
local function setControls(enabled)
local module = Player.PlayerScripts:FindFirstChild("PlayerModule")
if module then
local controls = require(module):GetControls()
if enabled then controls:Enable() else controls:Disable() end
end
end
-- Joint Finder
local function getJoint(name)
if not Player.Character then return nil end
for _, v in pairs(Player.Character:GetDescendants()) do
if v:IsA("Motor6D") and (v.Part1 and v.Part1.Name:lower():find(name:lower())) then
return v
end
end
return nil
end
-- UI Setup
local sg = Instance.new("ScreenGui", game:GetService("CoreGui"))
local main = Instance.new("Frame", sg)
main.Size = UDim2.new(0, 200, 0, 360)
main.Position = UDim2.new(0.75, 0, 0.2, 0)
main.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
main.Active, main.Draggable = true, true
local function createLimb(name, size, pos, color)
local btn = Instance.new("TextButton", main)
btn.Size = size; btn.Position = pos; btn.BackgroundColor3 = color; btn.Text = ""
btn.BorderSizePixel = 0
btn.MouseButton1Click:Connect(function()
local joint = getJoint(name)
if joint then
currentJoint = joint
SelectionBox.Adornee = joint.Part1
arcHandles.Adornee = joint.Part1
moveHandles.Adornee = joint.Part1
arcHandles.Visible = (mode == "Rotate")
moveHandles.Visible = (mode == "Move")
end
end)
end
-- Dummy Layout
createLimb("Head", UDim2.new(0, 45, 0, 45), UDim2.new(0.38, 0, 0.05, 0), Color3.fromRGB(255, 235, 50))
createLimb("Torso", UDim2.new(0, 80, 0, 100), UDim2.new(0.3, 0, 0.2, 0), Color3.fromRGB(0, 120, 200))
createLimb("Left Arm", UDim2.new(0, 40, 0, 100), UDim2.new(0.08, 0, 0.2, 0), Color3.fromRGB(255, 235, 50))
createLimb("Right Arm", UDim2.new(0, 40, 0, 100), UDim2.new(0.72, 0, 0.2, 0), Color3.fromRGB(255, 235, 50))
createLimb("Left Leg", UDim2.new(0, 38, 0, 105), UDim2.new(0.3, 0, 0.5, 0), Color3.fromRGB(150, 200, 50))
createLimb("Right Leg", UDim2.new(0, 38, 0, 105), UDim2.new(0.51, 0, 0.5, 0), Color3.fromRGB(150, 200, 50))
-- [[ THE SWAPPED AXIS MATH ]] --
moveHandles.MouseButton1Down:Connect(function() setControls(false) end)
moveHandles.MouseButton1Up:Connect(function() setControls(true) end)
arcHandles.MouseButton1Down:Connect(function() setControls(false) end)
arcHandles.MouseButton1Up:Connect(function() setControls(true) end)
-- SWAPPED MOVE: X and Z are flipped to fix reanimation offsets
moveHandles.MouseDrag:Connect(function(face, distance)
if currentJoint then
local normal = Vector3.FromNormalId(face)
-- Manual Swap Logic:
local swappedNormal = Vector3.new(normal.Z, normal.Y, normal.X)
currentJoint.C0 *= CFrame.new(swappedNormal * (distance / 20))
end
end)
-- SWAPPED ROTATE: X and Z rings are flipped
arcHandles.MouseDrag:Connect(function(axis, angle)
if currentJoint then
local axisVec = Vector3.FromAxis(axis)
-- Manual Swap Logic:
local swappedAxis = Vector3.new(axisVec.Z, axisVec.Y, axisVec.X)
currentJoint.C0 *= CFrame.fromAxisAngle(swappedAxis, angle)
end
end)
-- Mode Button
local modeBtn = Instance.new("TextButton", main)
modeBtn.Size = UDim2.new(1, 0, 0, 40); modeBtn.Position = UDim2.new(0, 0, 0.88, 0)
modeBtn.Text = "MODE: ROTATE"
modeBtn.MouseButton1Click:Connect(function()
mode = (mode == "Rotate") and "Move" or "Rotate"
modeBtn.Text = "MODE: " .. mode:upper()
if currentJoint then
arcHandles.Visible = (mode == "Rotate")
moveHandles.Visible = (mode == "Move")
end
end)



what is the point of the script its just client sided?
@RedPaintSplat bruh this script is not serversided because this isn't for trolling this probably like making vids the guy literally asked for it