
KeylessUniversal

local ANIMATIONS = {
Idle = {id = "rbxassetid://120101636793898", track = nil, shouldLoop = true},
Walk = {id = "rbxassetid://91043029480065", track = nil, shouldLoop = true},
Run = {id = "rbxassetid://139348920670961", track = nil, shouldLoop = true},
SuperRun = {id = "rbxassetid://139348920670961", track = nil, shouldLoop = true},
Jump = {id = "rbxassetid://139272524520189", track = nil, shouldLoop = false},
Fall = {id = "rbxassetid://139272524520189", track = nil, shouldLoop = true},
PeelCharge = {id = "rbxassetid://95970005202318", track = nil, shouldLoop = true}
}
local function loadAsset(id)
local ok, objects = pcall(game.GetObjects, game, "rbxassetid://" .. id)
if not ok or not objects or #objects == 0 then return nil end
return objects[1]:Clone()
end
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local isMobile = UserInputService.TouchEnabled
local Workspace = game:GetService("Workspace")
local ContextActionService = game:GetService("ContextActionService")
local workspace = Workspace
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local isScriptActive = false
local animationConnections = {}
local meshReplacementConnection = nil
local peeloutPlayed = false
local SPINDASH_ASSET_ID = 95339729195359
local ASSET_ID = 139567169544950
local LMS_ASSET_ID = 95285665897654
local currentNormalModel = nil
local currentLMSModel = nil
local isInLMS = false
local lmsModelConnection = nil
local CUSTOM_BUTTON_ASSET_ID = 9259054284
local PEEL_OUT_VOICE_ID = 537371462
local highlightEnabled = false
local highlightCooldown = false
local HIGHLIGHT_COOLDOWN_TIME = 20
local HIGHLIGHT_DURATION = 5
local activeHighlights = {}
local activeBillboards = {}
local ADDITIONAL_ASSET_ID = 73750640215993
local GUI_ID = 96036286115324
local currentSpindashModel = nil
local spindashSpinConnection = nil
local spindashSpeedBoostConnection = nil
local isSpindashActive = false
local spindashSpeedBoost = 1
local spindashTargetSpeed = 1
local SPINDASH_BASELINE = 0.1
local SPINDASH_MAX = 1.5
local SPINDASH_RAMP_TIME = 1
local spindashSpeedRate = (SPINDASH_MAX - SPINDASH_BASELINE) / SPINDASH_RAMP_TIME
local isPeelOutActive = false
local isHoldingPeelOut = false
local isPeelOutReleasing = false
local isDropDashActive = false
local lastImageRectOffset = Vector2.new(0, 0)
local dropDashCheckConnection = nil
local isHoldingInput = false
local function playSound(id, parent, volume)
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://" .. id
sound.Volume = volume or 1.5
sound.Parent = parent or humanoidRootPart
sound:Play()
sound.Ended:Connect(function()
sound:Destroy()
end)
end
local function onIndicatorAction(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
activateIndicator()
end
end
ContextActionService:BindAction("ActivateIndicator", onIndicatorAction, false, Enum.KeyCode.Y)
local function onInputBegan(input, gp)
if gp then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
isHoldingInput = true
if isPeelOutActive then
isHoldingPeelOut = true
end
end
end
local function onInputEnded(input, gp)
if gp then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
isHoldingInput = false
isHoldingPeelOut = false
end
end
UserInputService.InputBegan:Connect(onInputBegan)
UserInputService.InputEnded:Connect(onInputEnded)
local function setCharacterSpeedBoost(value)
if character and character.Parent then
character:SetAttribute("SpeedBoost", value)
end
end
local function stopSpindashSpeedBoost()
isSpindashActive = false
if spindashSpeedBoostConnection then
spindashSpeedBoostConnection:Disconnect()
spindashSpeedBoostConnection = nil
end
setCharacterSpeedBoost(1)
end
local function startSpindashSpeedBoost()
if spindashSpeedBoostConnection then return end
isSpindashActive = true
spindashSpeedBoost = SPINDASH_BASELINE
spindashTargetSpeed = SPINDASH_BASELINE
setCharacterSpeedBoost(spindashSpeedBoost)
spindashSpeedBoostConnection = RunService.Heartbeat:Connect(function(delta)
if not isSpindashActive then
if spindashSpeedBoostConnection then
spindashSpeedBoostConnection:Disconnect()
spindashSpeedBoostConnection = nil
end
return
end
if isPeelOutActive then
stopSpindashSpeedBoost()
return
end
local holding = isHoldingInput or UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
if holding then
spindashTargetSpeed = SPINDASH_MAX
else
spindashTargetSpeed = SPINDASH_BASELINE
end
if spindashSpeedBoost < spindashTargetSpeed then
spindashSpeedBoost = math.min(spindashSpeedBoost + (spindashSpeedRate * delta), spindashTargetSpeed)
elseif spindashSpeedBoost > spindashTargetSpeed then
spindashSpeedBoost = math.max(spindashSpeedBoost - (spindashSpeedRate * delta), spindashTargetSpeed)
end
if not isPeelOutActive then
setCharacterSpeedBoost(spindashSpeedBoost)
end
end)
end
local function stopSpindashFollow()
if spindashSpinConnection then
spindashSpinConnection:Disconnect()
spindashSpinConnection = nil
end
if currentSpindashModel then
currentSpindashModel:Destroy()
currentSpindashModel = nil
end
local playersFolder = workspace:FindFirstChild("Players")
if playersFolder then
local playerFolder = playersFolder:FindFirstChild(player.Name)
if playerFolder then
local spindashFolder = playerFolder:FindFirstChild("Spindash")
if spindashFolder then
local spindashPart = spindashFolder:FindFirstChild("Spindash")
if spindashPart then
spindashPart.Transparency = 0
end
end
end
end
stopSpindashSpeedBoost()
end
local function stopPeelOutSpeedBoost() end
local function startPeelOutSpeedBoost() end
local function freezePlayer()
setCharacterSpeedBoost(0)
humanoid.WalkSpeed = 0
end
local function unfreezePlayer()
humanoid.WalkSpeed = 16
end
local stopPeelOut = nil
local monitorPeelOutSounds = nil
local lastDropDashState = false
local function detectDropDash()
local playerGui = player:WaitForChild("PlayerGui", 5)
if not playerGui then return end
local roundGui = playerGui:WaitForChild("Round", 5)
if not roundGui then return end
local gameGui = roundGui:WaitForChild("Game", 5)
if not gameGui then return end
local abilityGui = gameGui:WaitForChild("Ability", 5)
if not abilityGui then return end
local barGui = abilityGui:WaitForChild("Bar", 5)
if not barGui then return end
local ab1Gui = barGui:WaitForChild("AB1", 5)
if not ab1Gui then return end
local imgGui = ab1Gui:WaitForChild("iMG", 5)
if not imgGui then return end
dropDashCheckConnection = RunService.Heartbeat:Connect(function()
if imgGui and imgGui.ImageRectOffset then
local currentOffset = imgGui.ImageRectOffset
local isCurrentlyDropDashing = (currentOffset ~= Vector2.new(0, 0))
if isCurrentlyDropDashing and not lastDropDashState then
isDropDashActive = true
performDropDashLunge()
elseif not isCurrentlyDropDashing then
isDropDashActive = false
end
lastImageRectOffset = currentOffset
lastDropDashState = isCurrentlyDropDashing
end
end)
end
local function replacePlayerFrame()
local playerGui = player:WaitForChild("PlayerGui", 5)
if not playerGui then return end
local roundGui = playerGui:WaitForChild("Round", 5)
if not roundGui then return end
local gameGui = roundGui:WaitForChild("Game", 5)
if not gameGui then return end
local teamsGui = gameGui:WaitForChild("Teams", 5)
if not teamsGui then return end
local playerFrame = teamsGui:FindFirstChild(player.Name)
if not playerFrame then
teamsGui.ChildAdded:Wait()
playerFrame = teamsGui:FindFirstChild(player.Name)
end
if playerFrame and playerFrame:FindFirstChild("Frame") then
local frame = playerFrame.Frame
if frame and frame:FindFirstChild("Character") then
local characterContainer = frame.Character
characterContainer:ClearAllChildren()
local success, objects = pcall(game.GetObjects, game, "rbxassetid://136982160236927")
if success and #objects > 0 then
local asset = objects[1]
for _, obj in asset:GetChildren() do
obj:Clone().Parent = characterContainer
end
if characterContainer:IsA("GuiObject") then
characterContainer.BackgroundTransparency = 1
end
end
end
end
end
local function startSpindashFollow()
if not currentSpindashModel then return end
local spindashFolder = currentSpindashModel.Parent
local spindashPart = spindashFolder and spindashFolder:FindFirstChild("Spindash")
if not spindashPart then return end
if spindashSpinConnection then
spindashSpinConnection:Disconnect()
end
spindashSpinConnection = RunService.Heartbeat:Connect(function()
if not currentSpindashModel or not currentSpindashModel.Parent or not spindashPart or not spindashPart.Parent then
if spindashSpinConnection then
spindashSpinConnection:Disconnect()
spindashSpinConnection = nil
end
currentSpindashModel = nil
stopSpindashFollow()
return
end
local liftOffset = Vector3.new(0, 0, 0)
if currentSpindashModel:IsA("BasePart") then
currentSpindashModel.CFrame = spindashPart.CFrame * CFrame.new(liftOffset)
else
local primary = currentSpindashModel.PrimaryPart or currentSpindashModel:FindFirstChildWhichIsA("BasePart")
if primary then
primary.CFrame = spindashPart.CFrame * CFrame.new(liftOffset)
end
end
end)
end
local function replaceSpindashMesh()
local playersFolder = workspace:FindFirstChild("Players")
if not playersFolder then return end
local playerFolder = playersFolder:FindFirstChild(player.Name)
if not playerFolder then return end
local spindashFolder = playerFolder:FindFirstChild("Spindash")
if not spindashFolder then return end
local spindashPart = spindashFolder:FindFirstChild("Spindash")
if spindashPart and spindashPart:IsA("BasePart") and not currentSpindashModel then
local ok, objects = pcall(game.GetObjects, game, "rbxassetid://" .. SPINDASH_ASSET_ID)
if ok and objects and #objects > 0 then
local newMesh = objects[1]:Clone()
local inserted = nil
if newMesh:IsA("BasePart") then
inserted = newMesh
newMesh.Parent = spindashPart.Parent
else
newMesh.Parent = spindashPart.Parent
inserted = newMesh.PrimaryPart or newMesh:FindFirstChildWhichIsA("BasePart")
end
if inserted then
inserted.CFrame = spindashPart.CFrame * CFrame.new(0, 5, 0)
inserted.Anchored = false
inserted.CanCollide = false
currentSpindashModel = newMesh
spindashPart.Transparency = 1
startSpindashFollow()
startSpindashSpeedBoost()
else
newMesh:Destroy()
end
end
end
end
local function monitorSpindashMesh()
local function checkAndReplace()
if isScriptActive then
replaceSpindashMesh()
end
end
checkAndReplace()
local playersFolder = workspace:FindFirstChild("Players")
if playersFolder then
local playerFolder = playersFolder:FindFirstChild(player.Name)
if playerFolder then
local spindashFolder = playerFolder:FindFirstChild("Spindash")
if spindashFolder then
spindashFolder.DescendantAdded:Connect(function(descendant)
if descendant.Name == "Spindash" and descendant:IsA("BasePart") and not currentSpindashModel then
task.wait(0.1)
checkAndReplace()
end
end)
spindashFolder.DescendantRemoving:Connect(function(descendant)
if descendant.Name == "Spindash" and descendant:IsA("BasePart") then
task.wait(0.1)
if not (spindashFolder:FindFirstChild("Spindash")) then
stopSpindashFollow()
end
end
end)
else
playerFolder.ChildAdded:Connect(function(child)
if child.Name == "Spindash" then
child.DescendantAdded:Connect(function(descendant)
if descendant.Name == "Spindash" and descendant:IsA("BasePart") and not currentSpindashModel then
task.wait(0.1)
checkAndReplace()
end
end)
end
end)
end
else
playersFolder.ChildAdded:Connect(function(child)
if child.Name == player.Name then
child.ChildAdded:Connect(function(spindashChild)
if spindashChild.Name == "Spindash" then
spindashChild.DescendantAdded:Connect(function(descendant)
if descendant.Name == "Spindash" and descendant:IsA("BasePart") and not currentSpindashModel then
task.wait(0.1)
checkAndReplace()
end
end)
end
end)
end
end)
end
end
if meshReplacementConnection then
meshReplacementConnection:Disconnect()
meshReplacementConnection = nil
end
meshReplacementConnection = RunService.Heartbeat:Connect(function()
if isScriptActive and tick() % 1 < 0.1 then
checkAndReplace()
end
end)
end
local function setupSonicViewport()
local ok, viewportFrame = pcall(function()
return player.PlayerGui
:WaitForChild("Round", 30)
:WaitForChild("Game", 30)
:WaitForChild("SurvivorHP", 30)
:WaitForChild("ViewportFrame", 30)
end)
if not ok or not viewportFrame then return end
local viewportModel = viewportFrame
:WaitForChild("WorldModel", 30)
:WaitForChild("Default", 30)
local assetId = "139567169544950"
local function replaceViewportModel()
local ok2, objects = pcall(game.GetObjects, game, "rbxassetid://" .. assetId)
if not ok2 or #objects == 0 then return end
local newModel = objects[1]:Clone()
for _, part in ipairs(viewportModel:GetDescendants()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
part.Transparency = 1
end
end
newModel.Parent = viewportModel
local newHumanoid = newModel:FindFirstChildOfClass("Humanoid")
if newHumanoid then newHumanoid:Destroy() end
local viewportRootPart = viewportModel:FindFirstChild("HumanoidRootPart")
if viewportRootPart then
newModel:PivotTo(viewportRootPart.CFrame * CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(0), math.rad(0), 0))
local primaryPart = newModel.PrimaryPart or newModel:FindFirstChildWhichIsA("BasePart")
if primaryPart then
local weld = Instance.new("WeldConstraint")
weld.Part0 = viewportRootPart
weld.Part1 = primaryPart
weld.Parent = viewportRootPart
end
end
end
replaceViewportModel()
local viewportHumanoid = viewportModel:FindFirstChild("Humanoid")
local currentViewportAnimation = nil
local viewportAnimations = {
Idle = {id = "rbxassetid://103492267285940", track = nil, shouldLoop = true},
Walk = {id = "rbxassetid://124016876172487", track = nil, shouldLoop = true},
Run = {id = "rbxassetid://102091744008058", track = nil, shouldLoop = true},
Jump = {id = "rbxassetid://125236763187476", track = nil, shouldLoop = false},
Fall = {id = "rbxassetid://72841784729233", track = nil, shouldLoop = true}
}
local function loadViewportAnimation(animName)
local animData = viewportAnimations[animName]
if not animData or not viewportHumanoid then return nil end
local animation = Instance.new("Animation")
animation.AnimationId = animData.id
local track = viewportHumanoid:LoadAnimation(animation)
track.Looped = animData.shouldLoop
animData.track = track
return track
end
local function playViewportAnimation(animName)
if not viewportHumanoid then return end
for _, animData in pairs(viewportAnimations) do
if animData.track and animData.track.IsPlaying then
animData.track:Stop()
end
end
local animData = viewportAnimations[animName]
if animData then
if not animData.track then loadViewportAnimation(animName) end
if animData.track then animData.track:Play() end
end
end
local function updateViewportAnimations()
local newAnimation = "Idle"
if viewportHumanoid then
if viewportHumanoid.MoveDirection.Magnitude > 0.1 then
if viewportHumanoid:GetState() == Enum.HumanoidStateType.Running then
if viewportHumanoid.WalkSpeed > 16 then
newAnimation = "Run"
else
newAnimation = "Walk"
end
end
else
local state = viewportHumanoid:GetState()
if state == Enum.HumanoidStateType.Jumping then
newAnimation = "Jump"
elseif state == Enum.HumanoidStateType.Freefall then
newAnimation = "Fall"
else
newAnimation = "Idle"
end
end
end
if newAnimation ~= currentViewportAnimation then
playViewportAnimation(newAnimation)
currentViewportAnimation = newAnimation
end
end
RunService.Heartbeat:Connect(updateViewportAnimations)
viewportModel.DescendantAdded:Connect(function() task.wait(0.5) replaceViewportModel() end)
end
local function loadCustomAsset(url, filename)
if not isfile(filename) then
writefile(filename, game:HttpGet(url))
end
return getcustomasset(filename)
end
local DEFAULT_MUSIC = loadCustomAsset(
"https://raw.githubusercontent.com/makinmaking/NOMOREGAMES/main/NO%20MORE%20GAMES%20-%20Sonic.exe_%20OUTCOME%20MEMORIES%20UST%20(Super%20Sonic%20THEME).mp3",
"default.mp3"
)
local function setupSonicMusic()
if not isScriptActive then return end
local theme = game:GetService("ReplicatedStorage")
:FindFirstChild("ClientAssets")
and game.ReplicatedStorage.ClientAssets:FindFirstChild("Sounds")
and game.ReplicatedStorage.ClientAssets.Sounds:FindFirstChild("mus")
and game.ReplicatedStorage.ClientAssets.Sounds.mus:FindFirstChild("Game")
and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game:FindFirstChild("Round")
and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game.Round:FindFirstChild("SoloTheme")
and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game.Round.SoloTheme:FindFirstChild("SonicSolo")
if theme then
theme.Looped = true
theme.Volume = 2
theme.SoundId = DEFAULT_MUSIC
end
end
local function setupCharacter(char)
if not isScriptActive then return end
local originalParts = {}
for _, v in ipairs(char:GetDescendants()) do
if v:IsA("BasePart") then table.insert(originalParts, v) end
end
for _, part in ipairs(originalParts) do part.Transparency = 1 end
local playersFolder = workspace:FindFirstChild("Players")
local oldVisual = playersFolder and playersFolder:FindFirstChild(player.Name)
if oldVisual then
for _, v in ipairs(oldVisual:GetDescendants()) do
if v:IsA("BasePart") then v.Transparency = 1 end
end
end
local mdl = loadAsset(ASSET_ID)
if not mdl then return end
currentNormalModel = mdl
if oldVisual then mdl.Parent = oldVisual else mdl.Parent = char end
local hrp = char:FindFirstChild("HumanoidRootPart")
local newHrp = mdl:FindFirstChild("HumanoidRootPart")
if not hrp or not newHrp then mdl:Destroy() return end
newHrp.Anchored = true
newHrp.Transparency = 1
local existingHum = mdl:FindFirstChildOfClass("Humanoid")
if existingHum then existingHum:Destroy() end
local existingAnim = mdl:FindFirstChildOfClass("Animator")
if existingAnim then existingAnim:Destroy() end
for _, v in ipairs(mdl:GetDescendants()) do
if v:IsA("BasePart") then
v.CanCollide = false
v.Transparency = 0
end
end
newHrp.CFrame = hrp.CFrame
task.wait(0.1)
newHrp.Transparency = 1
local syncConn
syncConn = RunService.Stepped:Connect(function()
if not char.Parent or not hrp.Parent or not newHrp.Parent then
if syncConn then syncConn:Disconnect() end
return
end
newHrp.CFrame = hrp.CFrame * CFrame.new(0, 1.1, 0)
end)
local animateScript = char:FindFirstChild("Animate")
if animateScript then animateScript.Disabled = true end
end
-- ==================== FIXED BUTTON + INDICATOR ====================
local function highlightPlayers(enable)
if enable then
for _, hl in ipairs(activeHighlights) do
if hl and hl.Parent then hl:Destroy() end
end
for _, b in ipairs(activeBillboards) do
if b and b.Parent
Hola
@Sonic_Joshua Hello Hedg- wait youre spanish
@OutcomeScripter I am Mexican
@Sonic_Joshua okay
Hola tengo una duda con que personaje lo uso...suena obio qe Sonic pero no me agarra sepa que onda
@AxoPleys8 como
A y por cierto si no funciona busca a mi amigo que también subió mi script
@Sonic_Joshua jeje perdón amigo por preocuparte si funciona lo que pasa esque yo estoy wey XD
@AxoPleys8 ok
Pero lo activaste en el lobby
@AxoPleys8 se llama rambo y el script es modern Sonic rework lo inicias en el lobby
can i download this on macbook? it wont let me
Cómo hago que funcione el script soy de cel
@jm1990712 mira ve mi script está un poco bug aquí tienes que ir a otro que es modern Sonic rework
PEAK BRO PEAK
es visible solo para uno mismo o par todo el server?