Unlock All Open Source
Key Required

Unlock All Open Source

[🎃]🏀Basketball Legends🏀PidarchikPidarchik 54.8K views 3.7K executesUpdated Sep 2, 2025
1.0/ 5(10 votes)
2820% Positive
Lua Script•476 lines (18463 chars)
run_on_actor(getactors()[1], [[
    local repStorage = game:GetService('ReplicatedStorage')
    local players = game:GetService('Players')

    local localPlayer = players.LocalPlayer 
    local character = localPlayer.Character 

    local knit = require(repStorage.Packages.Knit)
    local items = require(repStorage.Modules.Items)
    local inventory = require(repStorage.Controllers.UIController.Inventory)
    local store = require(repStorage.Controllers.UIController.Store)
    local visuals = require(repStorage.Controllers.VisualController)

    local economy = knit.GetService('EconomyService')
    local data = knit.GetController('DataController').Data 

    local inventoryFrames = localPlayer.PlayerGui.Main.Inventory
    local storeFrames = localPlayer.PlayerGui.Main.Store.StoreFrames 

    local function WaitForChildWhichIsA(self: Instance, ClassName: string)
        while self:FindFirstChildWhichIsA(ClassName) == nil do 
            task.wait()
        end 
    end 

    local storeButtons = {
        Equipped = {
            Text = 'USING',
            Color = ColorSequence.new(Color3.fromRGB(146, 26, 221), Color3.fromRGB(53, 7, 71)),
            Image = 'rbxassetid://16546841553'
        };
        Equip = {
            Text = 'EQUIP',
            Color = ColorSequence.new(Color3.fromRGB(23, 221, 198), Color3.fromRGB(8, 71, 64)),
            Image = 'rbxassetid://16546837268'
        }
    }

    local function unlockAll() 
        local bannerAssets = game.ReplicatedStorage.Assets.Banners 
        local effectAssets = game.ReplicatedStorage.Assets.Effects 
        local dunks = {}

        for dunk, dunkData in next, items.Dunks do 
            dunks[dunk] = false
        end 
        
        local newInventory = {Skins={},Effects={},Banners={},Emotes={}}

        for category, _ in next, newInventory do 
            for item, _ in next, items[category] do 
                newInventory[category][#newInventory[category]+1] = {item, false}
            end 
        end

        for gamepass, _ in next, data.Gamepasses do 
            data.Gamepasses[gamepass] = true
        end 
        data.Prestige = 3

        for dunk, _ in next, items.Dunks do 
            data.Dunks.Owned[dunk] = true
        end 
        
        data.Inventory = newInventory

        local function unequipAll(category: string) 
            for i,v in next, inventoryFrames[category]:GetChildren() do 
                if v:FindFirstChild('Using') then 
                    v.Using.Visible = false 
                end 
            end  
        end 

        inventory:UpdateInventory(newInventory)
        inventory.UpdateInventory = function() end 
        store.UpdateData = function() end 

        local ball = localPlayer.Character:FindFirstChild('Basketball')
        local currentSkin = nil 
        local currentEffect = nil 
        local currentBanner = nil 
        local currentEmote = nil
        local currentDunk = nil

        local function getItemDataByName(category: string, name: string)
            local nigga = nil 

            for i,v in next, items[category] do 
                if v[1] == name then 
                    nigga = v 
                    break 
                end 
            end 

            return nigga
        end 

        local function getRealItemName(category: string, name: string)
            local nigga = nil 
            local nameIdx = 1 
            if category == 'Dunks' then 
                nameIdx = 2 
            end 

            for i,v in next, items[category] do 
                if v[nameIdx] == name then 
                    nigga = i 
                    break 
                end  
            end 

            return nigga
        end 

        local function getMyWorkspaceBall()
            local nigger = nil 

            for i,v in next, workspace:GetChildren() do 
                if v.Name == 'Basketball' and v:GetAttribute('Owner') == localPlayer.UserId then 
                    nigger = v 
                    break 
                end 
            end 
            
            return nigger   
        end 

        local oldEffects = {}
        local oldBallEffects = {} 

        local function applyBallAppearance(name: string)
            for i,v in next, oldEffects do 
                v.Parent = nil   
                v:Destroy()
            end 

            local realName = getRealItemName('Skins', name)
            if not realName then  return end 

            local effects = repStorage.Assets.Ball:FindFirstChild(realName)
            if not effects then return end 

            for _, possibleEffect in next, effects:GetChildren() do 
                if possibleEffect:IsA('ParticleEmitter') then 
                    local newEffect = possibleEffect:Clone() 
                    newEffect.Parent = ball.Attach:FindFirstChildWhichIsA('SpecialMesh')
                    table.insert(oldEffects, newEffect)
                end  
            end  


            if effects:FindFirstChild('CUSTOM_SKIN_HOLDER') then 
                local skinHolder = effects.CUSTOM_SKIN_HOLDER.CUSTOM_SKIN_HOLDER
                
                for _, skinElement in next, skinHolder:GetChildren() do 
                    if skinElement:IsA('MeshPart') then 
                        local newEffect = skinElement:Clone() 
                        local weld = newEffect:FindFirstChildWhichIsA('WeldConstraint')
                        newEffect.CFrame = ball.Attach.CFrame 
                        weld.Part0 = ball.Attach   
                        newEffect.Parent = ball.Attach 
                        table.insert(oldEffects, newEffect)
                    end 
                end  

                if skinHolder:FindFirstChild('AttHolder') then 
                    for _, attEffect in next, skinHolder.AttHolder:GetChildren() do 
                        local newAttEffect = attEffect:Clone() 
                        newAttEffect.Parent = ball.Attach
                        table.insert(oldEffects, newAttEffect)
                    end  
                end  
            end 

            if effects:FindFirstChild('CUSTOM_AURA') then 

                for _, bodyPart in next, effects.CUSTOM_AURA:GetChildren() do 
                    for _, effect in next, bodyPart:GetChildren() do   
                        if effect:IsA('CFrameValue') then 
                            local attachment = Instance.new('Attachment')
                            attachment.Parent = character[bodyPart.Name]
                            attachment.CFrame = effect.Value
                            for _, cfEffect in next, effect:GetChildren() do 
                                local newCfEffect = cfEffect:Clone() 
                                newCfEffect.Parent = attachment 
                                table.insert(oldEffects, newCfEffect)
                            end 
                            continue
                        end 

                        if effect:IsA('BasePart') then 
                            local newPart = effect:Clone()
                            local weld = Instance.new('WeldConstraint')
                            weld.Parent = newPart 
                            newPart.CFrame = character[bodyPart.Name].CFrame * newPart:GetAttribute('Offset')
                            weld.Part0 = character[bodyPart.Name]
                            weld.Part1 = newPart
                            newPart.Parent = character[bodyPart.Name]
                            table.insert(oldEffects, newPart)
                            continue
                        end 

                        local newEffect = effect:Clone()
                        newEffect.Parent = character[bodyPart.Name]
                        table.insert(oldEffects, newEffect)
                    end 
                end   
            end 
        end   
        local sharedUtil = require(game.ReplicatedStorage.Modules.SharedUtil)
        local function applyBallEffects(name: string, basketball: Instance)
            local effectFolder = effectAssets:FindFirstChild(name)
            if not effectFolder then 
                
                return 
            end  
            local basketball = sharedUtil.Ball:GetClosestBall(localPlayer)
            if basketball:FindFirstChildWhichIsA('Trail') then 
                basketball:FindFirstChildWhichIsA('Trail'):Destroy()
            end 
            
            for i,v in next, effectFolder:GetChildren() do 
                if v:IsA('Trail') then 
                    local a = v:Clone() 
                    a.Enabled = true 
                    a.Attachment0 = basketball.A0 
                    a.Attachment1 = basketball.A1
                    a.Parent = basketball
                    table.insert(oldBallEffects, a)
                end 
                if v.Name == 'EffectAtt' then 
                    for _,effect in next, v:GetChildren() do 
                        local newEffect = effect:Clone() 
                        newEffect.Parent = basketball.A0
                        table.insert(oldBallEffects, newEffect)
                    end  
                end  

                if v.Name == 'EffectAtt2' then 
                    for _,effect in next, v:GetChildren() do 
                        local newEffect = effect:Clone() 
                        newEffect.Parent = basketball.A1
                        table.insert(oldBallEffects, newEffect)
                    end  
                end  

                if v:IsA('ParticleEmitter') then 
                    v.Parent = basketball
                    table.insert(oldBallEffects, v)
                end 
            end 
        end 

        local function changeEmote(name: string)
            local realName = getRealItemName('Emotes', name)
            data.Emotes.Equipped = realName
        end 

        local function changeBallSkin(ball: Tool | Part)
            if ball and currentSkin then 
                local skinData = getItemDataByName('Skins', currentSkin)

                if ball.Parent == character then 
                    ball:WaitForChild('Attach')
                end 

                local attach = ball:FindFirstChild('Attach') or ball

                WaitForChildWhichIsA(attach, 'SpecialMesh')
                
                if typeof(skinData[3]) == 'number' then 
                    attach.Transparency = 0
                    attach:FindFirstChildWhichIsA('SpecialMesh').MeshId = 'rbxassetid://14536927547'
                    attach:FindFirstChildWhichIsA('SpecialMesh').TextureId = 'rbxassetid://' .. skinData[3]
                end

                if typeof(skinData[3]) == 'table' then 
                    attach.Transparency = 1
                    attach:FindFirstChildWhichIsA('SpecialMesh').TextureId = ''
                    attach:FindFirstChildWhichIsA('SpecialMesh').MeshId = 'rbxassetid://' .. skinData[4]
                end  

                if ball.Parent == character then 
                    applyBallAppearance(currentSkin)
                end 
            end 
        end 

        local function changeBanner(name: string)
            local bannerName = getRealItemName('Banners', name)
            local newBg = bannerAssets:FindFirstChild(bannerName)
            if not newBg then 
                
                return 
            end

            local infoUi = character.HumanoidRootPart.Info 
            local currentBg = infoUi.BG
            if infoUi:FindFirstChild('Frame') then 
                infoUi.Frame:Destroy()
            end 

            local score = currentBg.Score.Record.Text
            local streak = currentBg.Streak.Title.Text

            currentBg:Destroy() 

            local newBgFrame = newBg.BG:Clone() 
            local newAnimFrame = newBg:FindFirstChild('Frame')
            if newAnimFrame then 
                newAnimFrame = newAnimFrame:Clone()
                newAnimFrame.ZIndex = 0
                newAnimFrame.Parent = infoUi
            end 

            newBgFrame.UsernameBox.Username.Text = localPlayer.Name 
            newBgFrame.Streak.Title.Text = streak 
            newBgFrame.Score.Record.Text = score
            newBgFrame.Parent = infoUi 
        end 

        local function newEquip(category: string, name: string)
            for i,v in next, data[category].Inventory do 
                if v[1] == name then 
                    data[category].Inventory[i][2] = true 
                else 
                    data[category].Inventory[i][2] = false 
                end 
            end  
        end

        for _, category in next, inventoryFrames:GetChildren() do 
            if not newInventory[category.Name] then continue end 
            for _, item in next, category:GetChildren() do 
                if item:IsA('ImageButton') then 
                    if item.Name:match('Model') then continue end 

                    if category.Name == 'Banners' then 
                        local bannerName = getRealItemName('Banners', item.Name)
                        item.Icon.Image = bannerAssets[bannerName].BG.BasicBanner.Image
                    end 

                    hookfunction(getconnections(item.MouseButton1Click)[1].Function, function() end)

                    item.MouseButton1Click:Connect(function()
                        unequipAll(category.Name)
                        newEquip(category.Name, item.Name)
                        item.Using.Visible = true
                        
                        if category.Name == 'Skins' then 
                            currentSkin = item.Name 
                            changeBallSkin(ball)
                        elseif category.Name == 'Emotes' then 
                            currentEmote = item.Name 
                            changeEmote(currentEmote)
                        elseif category.Name == 'Banners' then 
                            currentBanner = item.Name 
                            changeBanner(currentBanner)
                        elseif category.Name == 'Effects' then 
                            currentEffect = item.Name 
                        end 
                    end)
                end 
            end 
        end 

        local dunkInfo = storeFrames.Dunks.Info
        local equipDunkButton = dunkInfo.Buy 
        for _,dunkItem in next, storeFrames.Dunks.List:GetChildren() do 
            if dunkItem:IsA('ImageButton') then 
                hookfunction(getconnections(dunkItem.MouseButton1Click)[1].Function, function()
                    local dunkName = dunkItem.Name 
                    dunkInfo.Title.Text = dunkItem.Title.Text
                    if dunks[dunkName] then 
                        equipDunkButton.UIGradient.Color = storeButtons.Equipped.Color 
                        equipDunkButton.Title.Text = storeButtons.Equipped.Text 
                        equipDunkbutton.Image = storeButtons.Equipped.Image
                    else
                        equipDunkButton.UIGradient.Color = storeButtons.Equip.Color 
                        equipDunkButton.Title.Text = storeButtons.Equip.Text 
                        equipDunkButton.Image = storeButtons.Equip.Image
                    end 
                end)
            end 
        end 

        oldEquipDunk = hookfunction(getconnections(equipDunkButton.MouseButton1Click)[1].Function, function()
            local dunkName = getRealItemName('Dunks', storeFrames.Dunks.Info.Title.Text)

            for dunkState,_ in next, dunks do 
                dunks[dunkState] = false 
            end 
            
            dunks[dunkName] = true
            data.Dunks.Equipped = dunkName 
            equipDunkButton.UIGradient.Color = storeButtons.Equipped.Color 
            equipDunkButton.Title.Text = storeButtons.Equipped.Text 
        end) 

        local function ballAdded()
            character.ChildAdded:Connect(function(ballObj: Tool)
                if ballObj.Name ~= 'Basketball' then return end 

                ball = ballObj 
                if currentSkin then 
                    changeBallSkin(ball)
                end 

                ball.AncestryChanged:Connect(function()
                    for i,v in next, oldEffects do 
                        v.Parent = nil 
                        v:Destroy()
                    end

                    changeBallSkin(getMyWorkspaceBall())
                end) 
            end)
        end

        localPlayer.CharacterAdded:Connect(ballAdded)
        ballAdded()

        character.ChildAdded:Connect(function(ballObj: Tool)
            if ballObj.Name ~= 'Basketball' then return end 

            ball = ballObj 
            if currentSkin then 
                changeBallSkin(ball)
            end 

            ball.AncestryChanged:Connect(function()
                for i,v in next, oldEffects do 
                    v.Parent = nil 
                    v:Destroy()
                end

                changeBallSkin(getMyWorkspaceBall())
            end) 
        end)
        local c = require(game.ReplicatedStorage.Controllers.VisualController.TOOL_Emotes)

        oldEffect = hookfunction(visuals.Effect, function(self, effect, ...)
            local args = {...}

            if effect == 'StartBallEffect' then 
                local effectOwner = args[3]
                if effectOwner == character.HumanoidRootPart then 
                    local effectName = getRealItemName('Effects', currentEffect) or 'Default'
                    args[1] = effectName or 'Default'
                    
                    local ball = sharedUtil.Ball:GetClosestBall(localPlayer)
                    applyBallEffects(effectName, ball)
                    c:Emote(data.Emotes.Equipped)
                end 
            end 

            if effect == 'BallEffect' then 
                local effectBall = args[3]
                if effectBall == sharedUtil.Ball:GetClosestBall(localPlayer) then 
                    for _, effectObj in next, oldBallEffects do 
                        effectObj.Parent = nil 
                        effectObj:Destroy()
                    end 
                    
                    local effectName = getRealItemName('Effects', currentEffect)
                    args[1] = effectName or 'Default'
                end 
            end 

            return oldEffect(self, effect, unpack(args))
        end)
    end

    unlockAll()
]])

Features & Information

run_on_actor has to be in ur executor otherwise not supported
#blade ball death ball mm delta solara xeno#nights in the forest sab steal a brainrot gag grow#a garden rivals unlock auto farm infinite#adopt me decompiler volleyball legends hub#dex keyless bloxburg free

Community Comments (10)

primelgcsprimelgcsSep 2, 2025

w

ImAzureImAzureSep 2, 2025

W

SneekerSneekerSep 2, 2025(edited)

Its just visual guys it's not fe only u can see it. And u can't even trade them it's just a waste

Replying to @Sneeker
PidarchikPidarchikSep 3, 2025

@Sneeker LOL

edfgfghfgdhredfgfghfgdhrSep 13, 2025

not work pls help me my discord dryehgzt

RayanrjeidRayanrjeidOct 23, 2025

Guys it finest work for me update it

Replying to @Rayanrjeid
tgmtvthtgmtvthOct 24, 2025

@Rayanrjeid How? I've been trying and it doesnt work

Replying to @tgmtvth
viiiviiiNov 11, 2025

@tgmtvth same

tgmtvthtgmtvthOct 24, 2025

Is it working after the Halloween update?

Replying to @tgmtvth
FadeddddddddFadeddddddddJan 18, 2026

@tgmtvth sadly it doesn't work now RIP this script it was lowk goated

More Scripts for [🎃]🏀Basketball Legends🏀