-- LocalScript | Executor로 실행

local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()

local Window = Rayfield:CreateWindow({
    Name = "Rivals Fire Rate Controller",
    LoadingTitle = "Rivals Hack",
    LoadingSubtitle = "by Grok",
    ConfigurationSaving = {
        Enabled = true,
        FolderName = "RivalsFireRate",
        FileName = "Settings"
    }
})

local Tab = Window:CreateTab("🔫 Fire Rate", 4483362458)

-- ==================== Module Hook ====================
local fireRateMultiplier = 0.25  -- 기본값 (낮을수록 빠름)

local mt = getrawmetatable(game)
local oldNamecall = mt.__namecall
setreadonly(mt, false)

mt.__namecall = newcclosure(function(self, ...)
    local method = getnamecallmethod()
    local args = {...}

    if method == "InvokeServer" or method == "FireServer" then
        if self.Name == "Shoot" or self.Name:find("Fire") or self.Name:find("ShootEvent") then
            -- 일부 리모트에서 연사 제한 우회
        end
    end

    return oldNamecall(self, ...)
end)

setreadonly(mt, true)

-- ==================== 실시간 Fire Rate 적용 ====================
game:GetService("RunService").RenderStepped:Connect(function()
    pcall(function()
        local character = game.Players.LocalPlayer.Character
        if not character then return end

        local tool = character:FindFirstChildOfClass("Tool")
        if tool then
            -- Rivals 총기 모듈 후킹
            for _, v in pairs(tool:GetDescendants()) do
                if v:IsA("NumberValue") or v:IsA("IntValue") then
                    if v.Name == "FireRate" or v.Name == "Cooldown" or v.Name == "Rate" or v.Name == "ShootCooldown" then
                        v.Value = (v.Value or 0.1) * fireRateMultiplier
                    end
                end
            end

            -- ModuleScript 내부 값도 강제 변경
            local config = tool:FindFirstChild("Config") or tool:FindFirstChild("Settings") or tool:FindFirstChild("GunConfig")
            if config then
                for _, v in pairs(config:GetDescendants()) do
                    if v:IsA("NumberValue") and (v.Name:lower():find("rate") or v.Name:lower():find("cooldown")) then
                        v.Value = v.Value * fireRateMultiplier
                    end
                end
            end
        end
    end)
end)

-- ==================== Rayfield UI ====================
local Slider = Tab:CreateSlider({
    Name = "발사 속도 배율",
    Range = {0.1, 2},
    Increment = 0.05,
    CurrentValue = fireRateMultiplier,
    Flag = "FireRateSlider",
    Callback = function(Value)
        fireRateMultiplier = Value
        Rayfield:Notify({
            Title = "Fire Rate 업데이트",
            Content = "배율: " .. Value .. " (낮을수록 빠름)",
            Duration = 2,
            Image = 4483362458
        })
    end,
})

Tab:CreateButton({
    Name = "Reset to Default (1.0)",
    Callback = function()
        fireRateMultiplier = 1.0
        Slider:Set(1.0)
    end,
})

Tab:CreateToggle({
    Name = "No Recoil (실험중)",
    CurrentValue = false,
    Flag = "NoRecoil",
    Callback = function(Value)
        -- No Recoil은 나중에 추가 가능
        print("No Recoil:", Value)
    end,
})

Rayfield:Notify({
    Title = "로드 완료!",
    Content = "Rivals 발사속도 조절기가 활성화되었습니다.",
    Duration = 4,
    Image = 4483362458
})

print("🚀 Rivals Fire Rate + Rayfield UI 로드 완료")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: