can you make this script work only if specifiedplayer said q and everything will go back to default and the script will stop working when specifiedplayer said e? local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local specifiedPlayer = Players:FindFirstChild("minifandesktop")
local altplayer1 = Players:FindFirstChild("dekstopminikey")
local altplayer2 = Players:FindFirstChild("desktopremotev")
local altplayer3 = Players:FindFirstChild("desktopmousec")
local altplayer4 = Players:FindFirstChild("desktopbook")
local altplayer5 = Players:FindFirstChild("desktoptoolbox")

if not (specifiedPlayer and altplayer1 and altplayer2 and altplayer3 and altplayer4 and altplayer5) then
    warn("One or more players not found!")
    return
end

local SP_MOVE_THRESHOLD = 0.1
local SPIN_SPEED = 10

local function getTorsoCFrame(player)
    local character = player.Character
    if character then
        local torso = character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso")
        if torso then
            return torso.CFrame
        end
    end
    return nil
end

local function getHumanoid(player)
    local character = player.Character
    if character then
        return character:FindFirstChildOfClass("Humanoid")
    end
    return nil
end

local function getHumanoidRootPart(player)
    local character = player.Character
    if character then
        return character:FindFirstChild("HumanoidRootPart")
    end
    return nil
end

local baseRotationOffset = CFrame.Angles(math.rad(-90), 0, math.rad(-90))

local function setTorsoCFrame(player, cframe)
    if player.Character then
        local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
        local torso = player.Character:FindFirstChild("Torso") or player.Character:FindFirstChild("UpperTorso")
        if torso then
            if humanoid then
                humanoid.PlatformStand = true
            end
            torso.CFrame = cframe
        end
    end
end

local function setupSpecifiedPlayer()
    local humanoid = getHumanoid(specifiedPlayer)
    if humanoid then
        humanoid.WalkSpeed = 30
        humanoid.HipHeight = 3
    end

    specifiedPlayer.CharacterAdded:Connect(function(char)
        local hum = char:WaitForChild("Humanoid")
        hum.WalkSpeed = 30
        hum.HipHeight = 3
    end)
end

setupSpecifiedPlayer()

local spinAngle = 0

local function updateAlts(dt)
    local baseCFrame = getTorsoCFrame(specifiedPlayer)
    local humanoidRoot = getHumanoidRootPart(specifiedPlayer)
    if not baseCFrame or not humanoidRoot then
        warn("Specified player torso or HumanoidRootPart not found")
        return
    end

    local velocity = humanoidRoot.Velocity
    local isMoving = velocity.Magnitude > SP_MOVE_THRESHOLD

    local downOffset = Vector3.new(0, -3.5, 0)
    local basePos = baseCFrame.Position + downOffset

    local baseRotation = baseCFrame - baseCFrame.Position

    local alt1_CFrame = CFrame.new(basePos) * baseRotation * baseRotationOffset

    local alt2_rotationOffset = baseRotationOffset * CFrame.Angles(math.rad(200), 0, 0)
    local alt2_CFrame = CFrame.new(basePos) * baseRotation * alt2_rotationOffset

    local alt3_rotationOffset = baseRotationOffset * CFrame.Angles(math.rad(-200), 0, 0)
    local alt3_CFrame = CFrame.new(basePos) * baseRotation * alt3_rotationOffset

    local leftOffset = alt1_CFrame.UpVector * 3
    local rightOffset = alt1_CFrame.UpVector * -5
    local verticalOffset = Vector3.new(0, 1, 0)

    alt2_CFrame = alt2_CFrame + leftOffset + verticalOffset
    alt3_CFrame = alt3_CFrame + rightOffset + verticalOffset

    local roll90 = CFrame.Angles(0, 0, math.rad(90))
    local rollOffsetRotation = baseRotation * baseRotationOffset * roll90
    local altDownOffset = Vector3.new(0, -1, 0)
    local rightVec = baseCFrame.RightVector

    local alt4Pos = basePos + (rightVec * -4) + altDownOffset
    local alt5Pos = basePos + (rightVec * 3) + altDownOffset

    if isMoving then
        spinAngle = (spinAngle + SPIN_SPEED * dt) % (2 * math.pi)
    end
    local spinRotation = CFrame.Angles(0, spinAngle, 0)

    local alt4_CFrame = CFrame.new(alt4Pos) * rollOffsetRotation * spinRotation
    local alt5_CFrame = CFrame.new(alt5Pos) * rollOffsetRotation * spinRotation

    setTorsoCFrame(altplayer1, alt1_CFrame)
    setTorsoCFrame(altplayer2, alt2_CFrame)
    setTorsoCFrame(altplayer3, alt3_CFrame)
    setTorsoCFrame(altplayer4, alt4_CFrame)
    setTorsoCFrame(altplayer5, alt5_CFrame)
end
RunService.Heartbeat:Connect(updateAlts)