Prototype Pie hub uptadet
Key Required

Prototype Pie hub uptadet

[0.106patch] Sonic.EXE: The Disaster /Alex Reborn gaelignacio359gaelignacio359 5.4K views 1.6K executesUpdated Aug 30, 2025
Unrated
00
Lua Script•395 lines (13308 chars)
-- == Gael's Rayfield Menu (ESP unificado + cooldowns + anims arregladas) ==
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CollectionService = game:GetService("CollectionService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer

-- Rayfield
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
    Name = "powers",
    LoadingTitle = "sonic.exe the disaster ",
    LoadingSubtitle = "by kaka con keso",
    ConfigurationSaving = { Enabled = true, FolderName = "MyScripts", FileName = "PowersConfig" }
})

-- -------------------- CONFIG & COLORES --------------------
local VIP_NO_COOLDOWN = { enjambrexe = true, holasupsiw8 = true, ytudooq = true }

local characterColors = {
    tails = Color3.fromRGB(255, 165, 0),
    knuckles = Color3.fromRGB(255, 0, 0),
    eggman = Color3.fromRGB(255, 255, 0),
    amy = Color3.fromRGB(255, 105, 180),
    cream = Color3.fromRGB(222, 184, 135),
    sally = Color3.fromRGB(139, 69, 19),
    shadow = Color3.fromRGB(0, 0, 0),
    rouge = Color3.fromRGB(255, 255, 255),
    metalsonic = Color3.fromRGB(0, 0, 255),
    silver = Color3.fromRGB(255, 255, 255),
    blaze = Color3.fromRGB(128, 0, 128),
}

-- -------------------- UTIL --------------------
local function isModelCharacterLike(m)
    if not m or not m:IsA("Model") then return false end
    for _, d in ipairs(m:GetDescendants()) do
        if d:IsA("BasePart") then return true end
    end
    return false
end

local function findCharacterModelInWorkspace(name)
    -- busca modelo con ese nombre en workspace (raro pero útil)
    return workspace:FindFirstChild(name)
end

local function normalizeAnimId(id)
    if not id then return nil end
    local s = tostring(id)
    -- extraer primer número largo
    local num = s:match("(%d+)")
    if not num then return nil end
    return "rbxassetid://"..num
end

-- -------------------- ANIMACIONES (arregladas y cacheadas) --------------------
local animationCache = {}
local function PlayAnimation(animationId)
    local animStr = normalizeAnimId(animationId)
    if not animStr then return end

    local char = player.Character or player.CharacterAdded:Wait()
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end

    -- asegurar Animator
    local animator = humanoid:FindFirstChildOfClass("Animator")
    if not animator then
        animator = Instance.new("Animator")
        animator.Parent = humanoid
    end

    local anim = animationCache[animStr]
    if not anim then
        anim = Instance.new("Animation")
        anim.AnimationId = animStr
        animationCache[animStr] = anim
    end

    -- cargar y reproducir (pcall por si falla)
    local ok, track = pcall(function()
        return animator:LoadAnimation(anim)
    end)
    if ok and track then
        track.Priority = Enum.AnimationPriority.Action
        track:Play()
    end
end

-- -------------------- ESP UNIFICADO (OPTIMIZADO) --------------------
local ESP = {
    master = false,
    exe = false,
    players = false,
    updateTask = nil,
    highlightMap = {} -- [model] = highlightInstance
}

local function clearAllHighlights()
    for model, h in pairs(ESP.highlightMap) do
        if h and h.Parent then pcall(function() h:Destroy() end) end
        ESP.highlightMap[model] = nil
    end
end

local function setHighlight(model, color)
    if not model or not model:IsA("Model") then return end
    -- si ya existe, solo actualizar color
    local existing = ESP.highlightMap[model]
    if existing and existing.Parent then
        pcall(function() existing.OutlineColor = color end)
        return
    end
    -- crear highlight que solo dibuja contorno
    local ok, h = pcall(function()
        local highlight = Instance.new("Highlight")
        highlight.Name = "ESP_Highlight_Gael"
        highlight.FillTransparency = 1
        highlight.OutlineTransparency = 0
        highlight.OutlineColor = color
        highlight.Adornee = model
        highlight.Parent = model
        return highlight
    end)
    if ok and h then
        ESP.highlightMap[model] = h
    end
end

local function buildDesiredHighlights()
    local desired = {} -- model -> color

    -- EXE via CollectionService tags "exe"
    if ESP.exe then
        local tagged = CollectionService:GetTagged("exe")
        for _, obj in ipairs(tagged) do
            if obj and obj:IsA("Model") and isModelCharacterLike(obj) then
                desired[obj] = Color3.fromRGB(255,0,0)
            end
        end
    end

    -- Players via ReplicatedStorage.displayPlayers (si existe)
    if ESP.players and ReplicatedStorage:FindFirstChild("displayPlayers") then
        local folder = ReplicatedStorage.displayPlayers
        for _, child in ipairs(folder:GetChildren()) do
            local stats = child:FindFirstChild("stats")
            if stats and stats:FindFirstChild("character") then
                local modelName = child.Name
                local model = findCharacterModelInWorkspace(modelName)
                if model and model:IsA("Model") and isModelCharacterLike(model) and model ~= player.Character then
                    local characterKey = tostring(stats.character.Value or ""):lower()
                    local color = characterColors[characterKey] or Color3.fromRGB(255,0,0)
                    desired[model] = color
                end
            end
        end
    end

    -- Fallback: buscar modelos en workspace cuyo nombre contenga alguna key (survivor genérico)
    if ESP.players then
        for _, obj in ipairs(workspace:GetDescendants()) do
            if obj:IsA("Model") and isModelCharacterLike(obj) and obj ~= player.Character then
                local low = obj.Name:lower()
                for k, col in pairs(characterColors) do
                    if string.find(low, k) then
                        desired[obj] = col
                        break
                    end
                end
            end
        end
    end

    return desired
end

local function updateESPOnce()
    local desired = buildDesiredHighlights()
    -- quitar highlights que ya no se necesitan
    for model, h in pairs(ESP.highlightMap) do
        if not desired[model] then
            pcall(function() h:Destroy() end)
            ESP.highlightMap[model] = nil
        end
    end
    -- crear/actualizar highlights deseadas
    for model, color in pairs(desired) do
        if model and model.Parent then
            setHighlight(model, color)
        end
    end
end

local function startESPLoop()
    if ESP.updateTask then return end
    ESP.updateTask = task.spawn(function()
        while ESP.master do
            pcall(updateESPOnce)
            task.wait(1) -- refresco cada 1s (ligero)
        end
        ESP.updateTask = nil
    end)
end

local function stopESPLoop()
    ESP.master = false
    if ESP.updateTask then
        ESP.updateTask = nil
    end
    clearAllHighlights()
end

-- -------------------- PODERES (Sonic + Super Jump) --------------------
-- Sonic (botón): boost 68 por 8s, vuelve a 29; cooldown 20s (VIP sin cooldown)
local sonicState = {cool = false}
local function SonicBoost()
    if sonicState.cool and not VIP_NO_COOLDOWN[player.Name:lower()] then return end
    if not player.Character then return end
    sonicState.cool = true

    local char = player.Character
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    local root = char:FindFirstChild("HumanoidRootPart")
    if humanoid then
        humanoid.WalkSpeed = 68
    end
    local particle
    if root then
        particle = Instance.new("ParticleEmitter")
        particle.Color = ColorSequence.new(Color3.fromRGB(0,170,255))
        particle.Texture = "rbxassetid://243098098"
        particle.Size = NumberSequence.new(2)
        particle.Rate = 300
        particle.Lifetime = NumberRange.new(0.3,0.5)
        particle.Speed = NumberRange.new(10,15)
        particle.Parent = root
    end

    task.delay(8, function()
        if humanoid then humanoid.WalkSpeed = 29 end
        if particle and particle.Parent then pcall(function() particle:Destroy() end) end
    end)

    if not VIP_NO_COOLDOWN[player.Name:lower()] then
        task.delay(8 + 20, function() -- 8s duración + 20s cooldown
            sonicState.cool = false
        end)
    else
        -- VIP: no cooldown
        task.delay(8, function() sonicState.cool = false end)
    end
end

-- Super Jump: cooldown 15-20s
local jumpState = {cool = false}
local function SuperJump()
    if jumpState.cool and not VIP_NO_COOLDOWN[player.Name:lower()] then return end
    if not player.Character then return end
    jumpState.cool = true

    local char = player.Character
    local hrp = char:FindFirstChild("HumanoidRootPart")
    if hrp then
        hrp.AssemblyLinearVelocity = Vector3.new(hrp.AssemblyLinearVelocity.X, 110, hrp.AssemblyLinearVelocity.Z)
    end

    local cd = 20
    if VIP_NO_COOLDOWN[player.Name:lower()] then cd = 0 end
    if cd > 0 then
        task.delay(cd, function() jumpState.cool = false end)
    else
        task.delay(1, function() jumpState.cool = false end)
    end
end

-- -------------------- DEBUG (sg123) --------------------
local function createDebugLabelIfMissing()
    -- crea sg123 en CoreGui (igual que tu original)
    local cg = game.CoreGui
    if cg:FindFirstChild("sg123") then return cg.sg123 end
    local SG = Instance.new("ScreenGui", cg)
    SG.Name = "sg123"
    local wa = Instance.new("TextLabel", SG)
    wa.Text = "*Added functionality to the button but it's still lacking"
    wa.Name = "textr"
    wa.Position = UDim2.new(0.5, 0, 0.8, 0)
    wa.TextSize = 14
    wa.TextColor3 = Color3.fromRGB(255, 0, 0)
    wa.Visible = false
    wa.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
    wa.TextStrokeTransparency = 0
    return SG
end

-- -------------------- UI (Rayfield) --------------------
local Tab = Window:CreateTab("⚡ Powers", 78906521958459)

Tab:CreateButton({ Name = "Sonic Boost", Callback = SonicBoost })
Tab:CreateButton({ Name = "Super Jump", Callback = SuperJump })

local EspTab = Window:CreateTab("ESP", 134956083271283)
EspTab:CreateToggle({
    Name = "ESP Master (ON/OFF)",
    CurrentValue = false,
    Flag = "ESP_Master",
    Callback = function(val)
        ESP.master = val
        if ESP.master then
            startESPLoop()
        else
            stopESPLoop()
        end
    end
})
EspTab:CreateToggle({
    Name = "Highlight EXE (CollectionService tag 'exe')",
    CurrentValue = false,
    Flag = "ESP_EXE",
    Callback = function(val)
        ESP.exe = val
        if ESP.master then updateESPOnce() end
    end
})
EspTab:CreateToggle({
    Name = "Highlight Players/Survivors (displayPlayers)",
    CurrentValue = false,
    Flag = "ESP_PLAYERS",
    Callback = function(val)
        ESP.players = val
        if ESP.master then updateESPOnce() end
    end
})

local DebugRayTab = Window:CreateTab("Debug", 101010101)
DebugRayTab:CreateToggle({
    Name = "Toggle Debug HUD (sg123)",
    CurrentValue = false,
    Callback = function(Value)
        createDebugLabelIfMissing()
        -- mostrar/hide en CoreGui
        local cg = game.CoreGui
        if cg:FindFirstChild("sg123") then
            cg.sg123.textr.Visible = Value
        end
        -- intentar mostrar la gui debug del HUD si existe en PlayerGui
        local ok, err = pcall(function()
            local pg = player:WaitForChild("PlayerGui")
            local g = pg:FindFirstChild("gui")
            if g and g:FindFirstChild("hud") and g.hud:FindFirstChild("debug") then
                g.hud.debug.Visible = Value
            end
        end)
    end
})

-- -------------------- TELEPORT / ANIMS TAB --------------------
local TpTab = Window:CreateTab("Teleports", 202020202)
TpTab:CreateButton({ Name = "Teleport to Lobby", Callback = function()
    local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
    if hrp then hrp.CFrame = CFrame.new(0,1,0) end
end })
TpTab:CreateButton({ Name = "Teleport to Game", Callback = function()
    local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
    if hrp then hrp.CFrame = CFrame.new(-272,155,-313) end
end })

local AnimTab = Window:CreateTab("Animations", 303030303)
local Animations = {
    { Name = "Sonic.exe 2 Idle", Id = "rbxassetid://137659262960225" },
    { Name = "ID:1", Id = "http://www.roblox.com/asset/?id=180426354" },
    { Name = "Eyes.R", Id = "rbxassetid://110264241144654" },
    { Name = "Tails Cannon", Id = "rbxassetid://138560715967682" },
    { Name = "Tails Glide", Id = "rbxassetid://136705072136812" },
    { Name = "Amy Arm Idle", Id = "rbxassetid://16548210127" },
    { Name = "Cream Heal", Id = "rbxassetid://14472382960" },
    { Name = "Downed 2", Id = "rbxassetid://129121832899238" },
    { Name = "Injured 2", Id = "rbxassetid://116366098474267" }
}

for _, anim in ipairs(Animations) do
    AnimTab:CreateButton({
        Name = anim.Name,
        Callback = function()
            PlayAnimation(anim.Id)
        end
    })
end

-- Final: limpieza segura al cerrar menu (opcional)
Rayfield:OnUnload(function()
    stopESPLoop()
    clearAllHighlights()
end)

Features & Information

Talvez en otro dia
#Sonicexe#Sonicexetd#Sonicexe the disaster reborn

Community Comments (0)

No comments yet for this script.