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") local rootPart = character:WaitForChild("HumanoidRootPart") local model = nil local animController = nil local animator = nil local animTracks = {} local currentSpeedAnim = nil local animSyncConnection local followConnection local renderConnection -- IDs de animaciones base local idleId = "rbxassetid://116050994905421" local walkId = "rbxassetid://99127941563341" local runId = "rbxassetid://75409814098993" -- IDs de animaciones especiales (no se deben cancelar por movimiento) local overrideIds = { ["rbxassetid://128730974312965"] = true, ["rbxassetid://139835501033932"] = true, ["rbxassetid://81533966558979"] = true, ["rbxassetid://129491851057694"] = true -- Prioridad máxima } -- Ocultar personaje original local function hideCharacter() for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then part.Transparency = 1 part.CanCollide = false elseif part:IsA("Decal") and part.Name == "face" then part.Transparency = 1 end end end -- Mostrar personaje original local function showCharacter() for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then part.Transparency = 0 part.CanCollide = true elseif part:IsA("Decal") and part.Name == "face" then part.Transparency = 0 end end end -- Cargar animación local function loadAnimation(id) local anim = Instance.new("Animation") anim.AnimationId = id return anim end -- Detectar si hay una animación especial activa local function isOverridePlaying() for _, track in ipairs(animator:GetPlayingAnimationTracks()) do if overrideIds[track.Animation.AnimationId] and track.IsPlaying then return true end end return false end -- Reproducir animación base (idle, walk, run) local function playSpeedAnimation(id) if currentSpeedAnim == id then return end currentSpeedAnim = id for _, t in ipairs(animTracks) do if t and t.IsPlaying then t:Stop() end end animTracks = {} if not animator then return end local charTrack = animator:LoadAnimation(loadAnimation(id)) charTrack.Looped = true charTrack:Play() table.insert(animTracks, charTrack) if animController then local modelTrack = animController:LoadAnimation(loadAnimation(id)) modelTrack.Looped = true modelTrack:Play() table.insert(animTracks, modelTrack) end end -- Loop de animaciones base local function startMovementAnimationLoop() renderConnection = RunService.RenderStepped:Connect(function() if not rootPart then return end if isOverridePlaying() then return end local speed = rootPart.Velocity.Magnitude if speed < 1 then playSpeedAnimation(idleId) elseif speed < 18 then playSpeedAnimation(walkId) else playSpeedAnimation(runId) end end) end -- Sincronizar animaciones externas local function syncExternalAnimations() animator = humanoid:FindFirstChildOfClass("Animator") or Instance.new("Animator", humanoid) animSyncConnection = animator.AnimationPlayed:Connect(function(track) local animId = track.Animation.AnimationId -- Asignar prioridad especial if overrideIds[animId] then if animId == "rbxassetid://129491851057694" then track.Priority = Enum.AnimationPriority.Action4 -- ¡Máxima prioridad! else track.Priority = Enum.AnimationPriority.Action2 end end if animController then local anim = Instance.new("Animation") anim.AnimationId = animId local modelTrack = animController:LoadAnimation(anim) modelTrack.Priority = track.Priority modelTrack.Looped = track.Looped modelTrack.TimePosition = track.TimePosition modelTrack:Play() modelTrack:AdjustSpeed(track.Speed) table.insert(animTracks, modelTrack) end end) end -- Cargar modelo Noli local function loadModel() if model then model:Destroy() end local success, noli = pcall(function() return game:GetObjects("rbxassetid://1369183063")[1] end) if not success or not noli then warn("No se pudo cargar el modelo Noli.") return end model = noli:Clone() model.Name = "NoliModel" model.Parent = workspace local hum = model:FindFirstChildOfClass("Humanoid") if hum then hum:Destroy() end animController = Instance.new("AnimationController", model) for _, part in ipairs(model:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = false part.CanCollide = false part.CanTouch = false part.Massless = true end end local modelRoot = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChildWhichIsA("BasePart") if modelRoot then modelRoot.CFrame = rootPart.CFrame followConnection = RunService:BindToRenderStep("ModelFollow", Enum.RenderPriority.Character.Value + 1, function() if model and rootPart then modelRoot.CFrame = rootPart.CFrame end end) end end -- Activar sistema principal local function activate() hideCharacter() loadModel() syncExternalAnimations() startMovementAnimationLoop() end -- Limpiar al reaparecer player.CharacterAdded:Connect(function(char) if followConnection then RunService:UnbindFromRenderStep("ModelFollow") end if renderConnection then renderConnection:Disconnect() end if animSyncConnection then animSyncConnection:Disconnect() end if animator then for _, t in ipairs(animator:GetPlayingAnimationTracks()) do t:Stop() end end for _, t in ipairs(animTracks) do if t and t.IsPlaying then t:Stop() end end animTracks = {} if model and model:IsDescendantOf(workspace) then model:Destroy() end character = char humanoid = character:WaitForChild("Humanoid") rootPart = character:WaitForChild("HumanoidRootPart") showCharacter() script:Destroy() end) -- Iniciar sistema activate() -- Ejecutar habilidades externas loadstring(game:HttpGet("https://pastebin.com/raw/pM45TjG9"))() loadstring(game:HttpGet("https://pastebin.com/raw/kyBLwLxY"))() loadstring(game:HttpGet("https://pastebin.com/raw/P0RJdcBG"))() loadstring(game:HttpGet("https://pastebin.com/raw/6PCxReNm"))()