open source
Key Required

open source

[OPE V2] Fruit Battlegroundsspelspel 410 views 2.2K executesUpdated Jul 14, 2026
Unrated
00
Lua Script•561 lines (13641 chars)
-- made by me has solixhub ui
local Library = loadstring(game:HttpGet('https://raw.githubusercontent.com/wrexlua/SOLIXHUB/refs/heads/retard/SolixUI.lua'))()
local Window = Library:Window({
    Name = 'My Hub',
    Size = UDim2.new(0, 770, 0, 526),
    FadeSpeed = 0.25,
})
local MainPage = Window:Page({
    Name = 'Main',
    Columns = 2,
})
local MainSection = MainPage:Section({
    Name = 'Main',
    Side = 1,
})
local AutoSpinEnabled = false
local AutoSpinThread = nil
local SpinType = 'Normal'

local function StartAutoSpin()
    AutoSpinThread = task.spawn(function()
        while AutoSpinEnabled do
            local success, err = pcall(function()
                local Event = game:GetService('ReplicatedStorage').Replicator

                if SpinType == 'Fast' then
                    local Result = table.pack(Event:InvokeServer('FruitsHandler', 'Spin', {
                        Type = 'Fast',
                    }))
                else
                    local Result = table.pack(Event:InvokeServer('FruitsHandler', 'Spin', {}))
                end
            end)

            if not success then
                warn('Auto Spin error:', err)
            end

            task.wait(1)
        end
    end)
end
local function StopAutoSpin()
    AutoSpinEnabled = false

    if AutoSpinThread then
        task.cancel(AutoSpinThread)

        AutoSpinThread = nil
    end
end

MainSection:Toggle({
    Name = 'Auto Spin',
    Flag = 'AutoSpin',
    Default = false,
    Tooltip = 'Auto spins for fruits',
    Callback = function(Value)
        AutoSpinEnabled = Value

        if Value then
            StartAutoSpin()
        else
            StopAutoSpin()
        end
    end,
})
MainSection:Dropdown({
    Name = 'Spin Type',
    Flag = 'SpinType',
    Items = {
        'Normal',
        'Fast',
    },
    Default = 'Normal',
    Multi = false,
    Tooltip = 'Choose spin type',
    Callback = function(Value)
        SpinType = Value
    end,
})

local AutoFarmEnabled = false
local AutoFarmThread = nil
local SelectedKeys = {}
local KeyMap = {
    ['1'] = Enum.KeyCode.One,
    ['2'] = Enum.KeyCode.Two,
    ['3'] = Enum.KeyCode.Three,
    ['4'] = Enum.KeyCode.Four,
}
local VIM = game:GetService('VirtualInputManager')

local function PressKey(keyCode)
    VIM:SendKeyEvent(true, keyCode, false, game)
    task.wait(0.05)
    VIM:SendKeyEvent(false, keyCode, false, game)
end
local function ClickMouse()
    VIM:SendMouseButtonEvent(0, 0, 0, true, game, 0)
    task.wait(0.05)
    VIM:SendMouseButtonEvent(0, 0, 0, false, game, 0)
end
local function StartAutoFarm()
    AutoFarmThread = task.spawn(function()
        while AutoFarmEnabled do
            for _, key in ipairs({
                '1',
                '2',
                '3',
                '4',
            })do
                if not AutoFarmEnabled then
                    break
                end
                if SelectedKeys[key] then
                    PressKey(KeyMap[key])
                    task.wait(0.1)
                    ClickMouse()
                    task.wait(0.2)
                end
            end
        end
    end)
end
local function StopAutoFarm()
    AutoFarmEnabled = false

    if AutoFarmThread then
        task.cancel(AutoFarmThread)

        AutoFarmThread = nil
    end
end

MainSection:Dropdown({
    Name = 'Farm Keys',
    Flag = 'FarmKeys',
    Items = {
        '1',
        '2',
        '3',
        '4',
    },
    Default = {},
    Multi = true,
    Tooltip = 'Choose which keys to use for auto farm',
    Callback = function(Value)
        SelectedKeys = Value
    end,
})
MainSection:Toggle({
    Name = 'Auto Farm',
    Flag = 'AutoFarm',
    Default = false,
    Tooltip = 'Automatically presses selected keys and clicks',
    Callback = function(Value)
        AutoFarmEnabled = Value

        if Value then
            StartAutoFarm()
        else
            StopAutoFarm()
        end
    end,
})

local VisualsPage = Window:Page({
    Name = 'Visuals',
    Columns = 2,
})
local VisualsSection = VisualsPage:Section({
    Name = 'Visuals',
    Side = 1,
})
local KillNotifyData = {
    VictimId = '',
    PlayerId = '',
    Length = '8',
}

VisualsSection:Textbox({
    Name = 'Victim ID',
    Flag = 'KillNotifyVictimId',
    Default = '',
    Placeholder = 'Enter victim UserId...',
    Callback = function(Value)
        KillNotifyData.VictimId = Value
    end,
})
VisualsSection:Textbox({
    Name = 'Killer ID',
    Flag = 'KillNotifyPlayerId',
    Default = '',
    Placeholder = 'Enter killer UserId...',
    Callback = function(Value)
        KillNotifyData.PlayerId = Value
    end,
})
VisualsSection:Textbox({
    Name = 'Length',
    Flag = 'KillNotifyLength',
    Default = '8',
    Placeholder = 'Enter duration in seconds...',
    Callback = function(Value)
        KillNotifyData.Length = Value
    end,
})

local function GetNil(Name, DebugId)
    for _, Object in getnilinstances()do
        if Object.Name == Name and Object:GetDebugId() == DebugId then
            return Object
        end
    end
end

local KillNotifyButtons = VisualsSection:Button()

KillNotifyButtons:Add('Kill Notification', function()
    local VictimId = tonumber(KillNotifyData.VictimId)
    local PlayerId = tonumber(KillNotifyData.PlayerId)
    local Length = tonumber(KillNotifyData.Length)

    if not VictimId or not PlayerId then
        Library:Notification('Error', 'Please enter valid Victim ID and Killer ID.', 3)

        return
    end
    if not Length then
        Length = 8
    end

    local success, err = pcall(function()
        local Event = game:GetService('ReplicatedStorage').ReplicatorNoYield

        firesignal(Event.OnClientEvent, 'KillFeed', 'Add', {
            Victim = VictimId,
            Player = PlayerId,
            Frame = GetNil('Template', '0_1519774'),
            Length = Length,
            StartTime = tick(),
            FromServer = true,
        })
    end)

    if not success then
        warn('Kill Notification error:', err)
        Library:Notification('Error', 'Failed to fire kill notification.', 3)

        return
    end
end, false, 'Fires a fake kill notification popup')

local GemNotifyData = {
    Amount = '',
}

VisualsSection:Textbox({
    Name = 'Gem Amount',
    Flag = 'GemNotifyAmount',
    Default = '',
    Placeholder = 'Enter amount of gems...',
    Callback = function(Value)
        GemNotifyData.Amount = Value
    end,
})

local GemNotifyButtons = VisualsSection:Button()

GemNotifyButtons:Add('Gem Notification', function()
    local Amount = tonumber(GemNotifyData.Amount)

    if not Amount then
        Library:Notification('Error', 'Please enter a valid gem amount.', 3)

        return
    end

    local success, err = pcall(function()
        local Event = game:GetService('ReplicatedStorage').Replicator
        local Callback = getcallbackvalue(Event, 'OnClientInvoke')

        Callback('Notifications', 'Start', {
            FromServer = true,
            Text = '<Color=255,0,255><Gained ' .. Amount .. ' gems!>',
            StartTime = tick(),
            Length = 5,
            Size = 0.8,
        })
    end)

    if not success then
        warn('Gem Notification error:', err)
        Library:Notification('Error', 'Failed to fire gem notification.', 3)

        return
    end
end, false, 'Fires a fake gem gained notification popup')

local LevelNotifyData = {
    Level = '',
}

VisualsSection:Textbox({
    Name = 'Level Amount',
    Flag = 'LevelNotifyAmount',
    Default = '',
    Placeholder = 'Enter level number...',
    Callback = function(Value)
        LevelNotifyData.Level = Value
    end,
})

local LevelNotifyButtons = VisualsSection:Button()

LevelNotifyButtons:Add('Level Notification', function()
    local Level = tonumber(LevelNotifyData.Level)

    if not Level then
        Library:Notification('Error', 'Please enter a valid level number.', 3)

        return
    end

    local success, err = pcall(function()
        local Event = game:GetService('ReplicatedStorage').Replicator
        local Callback = getcallbackvalue(Event, 'OnClientInvoke')

        Callback('Notifications', 'Start', {
            FromServer = true,
            Text = '<Color=255,255,0><Level Up!> (' .. Level .. ')',
            StartTime = tick(),
            Length = 5,
            Size = 0.8,
        })
    end)

    if not success then
        warn('Level Notification error:', err)
        Library:Notification('Error', 'Failed to fire level notification.', 3)

        return
    end
end, false, 'Fires a fake level up notification popup')

local LeaderboardSection = VisualsPage:Section({
    Name = 'Leaderboard Spoofer',
    Side = 2,
})
local LeaderboardEnabled = false
local LeaderboardData = {
    UserId = '',
    Wins = '',
    Position = '',
}

LeaderboardSection:Textbox({
    Name = 'User ID',
    Flag = 'LeaderboardUserId',
    Default = '',
    Placeholder = 'Enter User ID...',
    Callback = function(Value)
        LeaderboardData.UserId = Value
    end,
})
LeaderboardSection:Textbox({
    Name = 'Wins',
    Flag = 'LeaderboardWins',
    Default = '',
    Placeholder = 'Enter wins amount...',
    Callback = function(Value)
        LeaderboardData.Wins = Value
    end,
})
LeaderboardSection:Textbox({
    Name = 'Position',
    Flag = 'LeaderboardPosition',
    Default = '1',
    Placeholder = 'Enter position (1-100)...',
    Callback = function(Value)
        LeaderboardData.Position = Value
    end,
})

local OriginalLeaderboardData = {
    TournamentWins = {
        {
            key = '205985849',
            value = 1043,
        },
        {
            key = '158201183',
            value = 888,
        },
        {
            key = '4719303144',
            value = 728,
        },
        {
            key = '1319033257',
            value = 693,
        },
        {
            key = '3533945986',
            value = 585,
        },
        {
            key = '2669506928',
            value = 546,
        },
        {
            key = '4544809774',
            value = 516,
        },
        {
            key = '1882225600',
            value = 494,
        },
        {
            key = '2654011494',
            value = 491,
        },
        {
            key = '331760241',
            value = 462,
        },
    },
    Bounty = {
        {
            key = '3011634890',
            value = 999890648,
        },
        {
            key = '4582742350',
            value = 999694623,
        },
        {
            key = '1839147598',
            value = 993634926,
        },
        {
            key = '5683974116',
            value = 992924183,
        },
        {
            key = '7226631176',
            value = 990996179,
        },
        {
            key = '3623679695',
            value = 979748479,
        },
        {
            key = '2431757115',
            value = 973849813,
        },
        {
            key = '5636244612',
            value = 952511967,
        },
        {
            key = '425315060',
            value = 950385511,
        },
        {
            key = '4083456353',
            value = 940571517,
        },
    },
}

local function SpoofLeaderboard()
    local UserId = LeaderboardData.UserId
    local Wins = tonumber(LeaderboardData.Wins)
    local Position = tonumber(LeaderboardData.Position)

    if not UserId or UserId == '' then
        Library:Notification('Error', 'Please enter a User ID.', 3)

        return
    end
    if not Wins then
        Library:Notification('Error', 'Please enter a valid wins amount.', 3)

        return
    end
    if not Position or Position < 1 or Position > 100 then
        Library:Notification('Error', 'Position must be between 1-100.', 3)

        return
    end

    local fakeData = {
        TournamentWins = {},
        Bounty = {},
    }

    for i, entry in ipairs(OriginalLeaderboardData.TournamentWins)do
        table.insert(fakeData.TournamentWins, {
            key = entry.key,
            value = entry.value,
        })
    end
    for i, entry in ipairs(OriginalLeaderboardData.Bounty)do
        table.insert(fakeData.Bounty, {
            key = entry.key,
            value = entry.value,
        })
    end

    table.insert(fakeData.TournamentWins, Position, {
        key = UserId,
        value = Wins,
    })

    local success, err = pcall(function()
        local Event = game:GetService('ReplicatedStorage').ReplicatorNoYield

        firesignal(Event.OnClientEvent, 'Leaderboards', 'Update', fakeData)
    end)

    if not success then
        warn('Leaderboard Spoof error:', err)
        Library:Notification('Error', 'Failed to spoof leaderboard.', 3)

        return
    end

    Library:Notification('Success', 'Leaderboard spoofed at position ' .. Position .. '!', 3)
end
local function RefreshLeaderboard()
    local success, err = pcall(function()
        local Event = game:GetService('ReplicatedStorage').ReplicatorNoYield

        firesignal(Event.OnClientEvent, 'Leaderboards', 'Update', OriginalLeaderboardData)
    end)

    if not success then
        warn('Leaderboard Refresh error:', err)
    else
        Library:Notification('Refreshed', 'Leaderboard restored!', 3)
    end
end

LeaderboardSection:Toggle({
    Name = 'Enable Spoofer',
    Flag = 'LeaderboardSpoofer',
    Default = false,
    Tooltip = 'Spoofs the leaderboard with your custom values',
    Callback = function(Value)
        LeaderboardEnabled = Value

        if Value then
            SpoofLeaderboard()
        else
            RefreshLeaderboard()
        end
    end,
})
Library:CheckForAutoLoad()

Features & Information

open source fruit battlegrounds script enjoy ez

Community Comments (0)

No comments yet for this script.

More Scripts for [OPE V2] Fruit Battlegrounds