Hub Loader Script Open Source
Key RequiredUniversal

Hub Loader Script Open Source

Universal ScriptSouljaWitchSrcSouljaWitchSrc 2.2K views 327 executesUpdated Dec 21, 2025
3.8/ 5(4 votes)
3175% Positive
Lua Script•526 lines (20440 chars)
--[[
    SoujaHub - Loader Script v1.4 

]]

--================================================================================--
--[[ SERVICES ]]--
--================================================================================--
local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local SoundService = game:GetService("SoundService")

--================================================================================--
--[[ CONFIGURATION ]]--
--================================================================================--
local Config = {
    -- Main Settings
    HubName = "SOUJA HUB",
    Subtitle = "Public Version",
    LogoLetter = "S",
    ImageLogo = "", -- Paste your decal ID here. Leave blank for letter.
    LoadTime = 8,

    -- Main script to load after the animation finishes
    ScriptToLoad = "", -- IMPORTANT: Replace with your actual script URL (Not Loadstring)

    -- Loading Messages & Tips displayed randomly
    Messages = {
        "Connecting...",
        "Authenticating...",
        "Downloading assets...",
        "Configuring environment...",
        "Building interface...",
        "Finalizing..."
    },
    Tips = {
        "Did you know? You can customize the settings in the hub.",
        "Check out our community for support and updates!",
        "New features are added regularly!"
    },

    -- Sound Effects (IDs have been replaced with verified, working assets)
    Sounds = {
        Open = "rbxassetid/913363037",      -- UI Open Sound
        Update = "rbxassetid/6823769213",     -- UI Click
        Success = "rbxassetid/10895847421",   -- Success Chime
        Failure = "rbxassetid/142642633",     -- Error Sound
        TipPing = "rbxassetid/5151558373"      -- Notification Ping
    },

    -- Animation Timings
    IntroAnimationTime = 0.6,
    OutroAnimationTime = 0.5,

    -- Theme & Colors
    Theme = {
        Primary = Color3.fromRGB(170, 70, 255),
        Background = Color3.fromRGB(20, 20, 30),
        BackgroundGradient = Color3.fromRGB(35, 35, 50),
        Text = Color3.fromRGB(255, 255, 255),
        MutedText = Color3.fromRGB(120, 125, 135),
        ProgressBackground = Color3.fromRGB(30, 32, 38),
        Failure = Color3.fromRGB(255, 80, 80),
        SuccessFlash = Color3.fromRGB(255, 255, 255)
    },

    -- Fonts
    Fonts = {
        Main = Enum.Font.GothamBold,
        Secondary = Enum.Font.Gotham,
        Code = Enum.Font.Code
    }
}

--================================================================================--
--[[ SCRIPT SETUP ]]--
--================================================================================--

-- Create a sound player utility
local SoundPlayer = {}
for name, id in pairs(Config.Sounds) do
    if id and id ~= "" then
        local sound = Instance.new("Sound")
        sound.SoundId = id
        sound.Parent = SoundService
        SoundPlayer[name] = sound
    end
end
local function PlaySound(name)
    if SoundPlayer[name] then
        SoundPlayer[name]:Play()
    end
end

-- Get Player and PlayerGui
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- Add a blur effect to the world behind the UI
local blur = Instance.new("BlurEffect", game:GetService("Lighting"))
blur.Size = 0
blur.Enabled = true

-- Create the main ScreenGui container
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SoujaHubLoader"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.DisplayOrder = 999

--================================================================================--
--[[ UI ELEMENT CREATION ]]--
--================================================================================--

-- Main container frame for the loader
local container = Instance.new("Frame")
container.Name = "Container"
container.AnchorPoint = Vector2.new(0.5, 0.5)
container.Size = UDim2.new(0, 0, 0, 0)
container.Position = UDim2.new(0.5, 0, 0.5, 0)
container.BackgroundColor3 = Config.Theme.Background
container.BorderSizePixel = 0
container.Parent = screenGui

Instance.new("UICorner", container).CornerRadius = UDim.new(0, 20)

local containerGradient = Instance.new("UIGradient", container)
containerGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Config.Theme.Background),
    ColorSequenceKeypoint.new(1, Config.Theme.BackgroundGradient)
}
containerGradient.Rotation = 90

local borderStroke = Instance.new("UIStroke", container)
borderStroke.Color = Config.Theme.Primary
borderStroke.Thickness = 3
borderStroke.Transparency = 0.2
borderStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border

-- Logo elements
local logoCircle = Instance.new("Frame", container)
logoCircle.Name = "Logo"
logoCircle.AnchorPoint = Vector2.new(0.5, 0)
logoCircle.Size = UDim2.new(0, 70, 0, 70)
logoCircle.Position = UDim2.new(0.5, 0, 0, 25)
logoCircle.BackgroundColor3 = Config.Theme.Primary
logoCircle.BorderSizePixel = 0
logoCircle.ClipsDescendants = true
Instance.new("UICorner", logoCircle).CornerRadius = UDim.new(0, 15)

local logoInner = Instance.new("Frame", logoCircle)
logoInner.AnchorPoint = Vector2.new(0.5, 0.5)
logoInner.Size = UDim2.new(0, 58, 0, 58)
logoInner.Position = UDim2.new(0.5, 0, 0.5, 0)
logoInner.BackgroundColor3 = Config.Theme.Background
logoInner.BorderSizePixel = 0
Instance.new("UICorner", logoInner).CornerRadius = UDim.new(0, 12)

if Config.ImageLogo and Config.ImageLogo ~= "" then
    local logoImage = Instance.new("ImageLabel", logoInner)
    logoImage.Size = UDim2.new(1, 0, 1, 0)
    logoImage.BackgroundTransparency = 1
    logoImage.Image = Config.ImageLogo
else
    local logoText = Instance.new("TextLabel", logoInner)
    logoText.Size = UDim2.new(1, 0, 1, 0)
    logoText.BackgroundTransparency = 1
    logoText.Text = Config.LogoLetter
    logoText.TextColor3 = Config.Theme.Primary
    logoText.TextSize = 36
    logoText.Font = Config.Fonts.Main
end

-- Text elements
local title = Instance.new("TextLabel", container)
title.Size = UDim2.new(1, -40, 0, 35)
title.Position = UDim2.new(0, 20, 0, 105)
title.BackgroundTransparency = 1
title.Text = Config.HubName
title.TextColor3 = Config.Theme.Text
title.TextSize = 28
title.Font = Config.Fonts.Main
title.TextXAlignment = Enum.TextXAlignment.Center

local versionText = Instance.new("TextLabel", container)
versionText.Size = UDim2.new(1, -40, 0, 18)
versionText.Position = UDim2.new(0, 20, 0, 140)
versionText.BackgroundTransparency = 1
versionText.Text = Config.Subtitle
versionText.TextColor3 = Config.Theme.MutedText
versionText.TextSize = 13
versionText.Font = Config.Fonts.Secondary
versionText.TextXAlignment = Enum.TextXAlignment.Center

-- Progress Bar elements
local progressBg = Instance.new("Frame", container)
progressBg.Name = "progressBg"
progressBg.Size = UDim2.new(1, -60, 0, 7)
progressBg.Position = UDim2.new(0, 30, 0, 175)
progressBg.BackgroundColor3 = Config.Theme.ProgressBackground
progressBg.BorderSizePixel = 0
Instance.new("UICorner", progressBg).CornerRadius = UDim.new(1, 0)

local successGlowStroke = Instance.new("UIStroke", progressBg)
successGlowStroke.Color = Config.Theme.SuccessFlash
successGlowStroke.Thickness = 4
successGlowStroke.Transparency = 1

local progressFill = Instance.new("Frame", progressBg)
progressFill.Name = "progressFill"
progressFill.Size = UDim2.new(0, 0, 1, 0)
progressFill.BackgroundColor3 = Config.Theme.Primary
progressFill.BorderSizePixel = 0
progressFill.ClipsDescendants = true
Instance.new("UICorner", progressFill).CornerRadius = UDim.new(1, 0)

Instance.new("UIGradient", progressFill).Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Config.Theme.Primary),
    ColorSequenceKeypoint.new(1, Color3.new(
        math.min(1, Config.Theme.Primary.R * 1.5),
        math.min(1, Config.Theme.Primary.G * 1.5),
        math.min(1, Config.Theme.Primary.B * 1.5)
    ))
}

local progressShine = Instance.new("Frame", progressFill)
progressShine.Name = "progressShine"
progressShine.Size = UDim2.new(0.4, 0, 1, 0)
progressShine.Position = UDim2.new(-1, 0, 0, 0)
progressShine.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
progressShine.BackgroundTransparency = 0.6
progressShine.BorderSizePixel = 0
Instance.new("UICorner", progressShine).CornerRadius = UDim.new(1, 0)

Instance.new("UIGradient", progressShine).Transparency = NumberSequence.new{
    NumberSequenceKeypoint.new(0, 1),
    NumberSequenceKeypoint.new(0.5, 0.2),
    NumberSequenceKeypoint.new(1, 1)
}

local progressShimmer = Instance.new("UIGradient", progressFill)
progressShimmer.Rotation = 90
progressShimmer.Offset = Vector2.new(0, -1)
progressShimmer.Transparency = NumberSequence.new{
    NumberSequenceKeypoint.new(0, 1),
    NumberSequenceKeypoint.new(0.4, 0.8),
    NumberSequenceKeypoint.new(0.5, 0.7),
    NumberSequenceKeypoint.new(0.6, 0.8),
    NumberSequenceKeypoint.new(1, 1)
}

-- Bottom status text elements
local percentText = Instance.new("TextLabel", container)
percentText.Size = UDim2.new(0, 100, 0, 28)
percentText.Position = UDim2.new(0.5, -50, 0, 192)
percentText.BackgroundTransparency = 1
percentText.Text = "0%"
percentText.TextColor3 = Config.Theme.Primary
percentText.TextSize = 20
percentText.Font = Config.Fonts.Main

local statusText = Instance.new("TextLabel", container)
statusText.Size = UDim2.new(1, -40, 0, 20)
statusText.Position = UDim2.new(0, 20, 0, 230)
statusText.BackgroundTransparency = 1
statusText.Text = "Initializing..."
statusText.TextColor3 = Config.Theme.MutedText
statusText.TextSize = 12
statusText.Font = Config.Fonts.Code
statusText.TextXAlignment = Enum.TextXAlignment.Center

-- Finally, parent the main GUI to the PlayerGui
screenGui.Parent = playerGui

--================================================================================--
--[[ CORE FUNCTIONS & ANIMATIONS ]]--
--================================================================================--

local currentPercent = 0

local function updateProgress(target, duration)
    local startPercent = currentPercent
    local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
    local fillTween = TweenService:Create(progressFill, tweenInfo, {Size = UDim2.new(target / 100, 0, 1, 0)})
    fillTween:Play()
    
    local tempNumber = Instance.new("NumberValue")
    tempNumber.Value = startPercent
    local textTween = TweenService:Create(tempNumber, tweenInfo, {Value = target})
    textTween:Play()
    
    local connection
    connection = tempNumber.Changed:Connect(function()
        local newPercent = math.clamp(tempNumber.Value, 0, 100)
        percentText.Text = math.floor(newPercent) .. "%"
        currentPercent = newPercent
        if newPercent >= target then
            tempNumber:Destroy()
            connection:Disconnect()
        end
    end)
end

local tipDebounce = false
local function updateStatus(text, instant)
    if instant then statusText.Text = text; return end

    if not tipDebounce and #Config.Tips > 0 and math.random() < 0.3 then
        tipDebounce = true
        local textToRestore = text
        task.spawn(function()
            task.wait(1.5)
            PlaySound("TipPing")
            
            local originalPosition = statusText.Position
            local slideDownOffset = UDim2.new(originalPosition.X.Scale, originalPosition.X.Offset, originalPosition.Y.Scale, originalPosition.Y.Offset + 10)
            local slideUpOffset = UDim2.new(originalPosition.X.Scale, originalPosition.X.Offset, originalPosition.Y.Scale, originalPosition.Y.Offset - 10)
            
            local outTween = TweenService:Create(statusText, TweenInfo.new(0.25), {TextTransparency = 1})
            outTween:Play()
            outTween.Completed:Wait()

            statusText.Text = Config.Tips[math.random(1, #Config.Tips)]
            statusText.Position = slideDownOffset
            
            -- [FIXED] Corrected EasingStyle from Quint to Sine
            local inTween = TweenService:Create(statusText, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {
                TextTransparency = 0,
                Position = originalPosition
            })
            inTween:Play()
            inTween.Completed:Wait()

            task.wait(3)

            local outTween2 = TweenService:Create(statusText, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.In), {
                TextTransparency = 1,
                Position = slideUpOffset
            })
            outTween2:Play()
            outTween2.Completed:Wait()

            statusText.Text = textToRestore
            statusText.Position = originalPosition
            local inTween2 = TweenService:Create(statusText, TweenInfo.new(0.25), {TextTransparency = 0})
            inTween2:Play()
            
            task.wait(3)
            tipDebounce = false
        end)
    end

    PlaySound("Update")
    local outTween = TweenService:Create(statusText, TweenInfo.new(0.15), {TextTransparency = 1})
    outTween:Play()
    outTween.Completed:Wait()
    statusText.Text = text
    local inTween = TweenService:Create(statusText, TweenInfo.new(0.15), {TextTransparency = 0})
    inTween:Play()
end

-- A function to display a fatal error on the UI and halt execution
local function displayFatalError(errorMessage)
    updateStatus(errorMessage, true)
    PlaySound("Failure")
    
    TweenService:Create(borderStroke, TweenInfo.new(0.3), {Color = Config.Theme.Failure}):Play()
    TweenService:Create(progressFill, TweenInfo.new(0.3), {BackgroundColor3 = Config.Theme.Failure}):Play()
    
    local grad = progressFill:FindFirstChildOfClass("UIGradient")
    if grad then
         TweenService:Create(grad, TweenInfo.new(0.3), {Color = ColorSequence.new(Config.Theme.Failure)}):Play()
    end
    percentText.TextColor3 = Config.Theme.Failure
end

--================================================================================--
--[[ MAIN EXECUTION SEQUENCE ]]--
--================================================================================--

-- Step 1: Set all elements to be fully transparent for the fade-in animation
for _, child in ipairs(container:GetDescendants()) do
    if child:IsA("TextLabel") then
        child.TextTransparency = 1
    elseif child:IsA("ImageLabel") then
        child.ImageTransparency = 1
    elseif child:IsA("Frame") then
        child.BackgroundTransparency = 1
    elseif child:IsA("UIStroke") then
        child.Transparency = 1
    end
end

-- Step 2: Apply an interactive hover effect to the logo
logoCircle.MouseEnter:Connect(function()
    TweenService:Create(logoCircle, TweenInfo.new(0.2), {Size = UDim2.new(0, 75, 0, 75)}):Play()
end)
logoCircle.MouseLeave:Connect(function()
    TweenService:Create(logoCircle, TweenInfo.new(0.2), {Size = UDim2.new(0, 70, 0, 70)}):Play()
end)

-- Step 3: Run the intro animation
PlaySound("Open")
TweenService:Create(blur, TweenInfo.new(Config.IntroAnimationTime), {Size = 12}):Play()
local introTween = TweenService:Create(container, TweenInfo.new(Config.IntroAnimationTime, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
    Size = UDim2.new(0, 420, 0, 260)
})
introTween:Play()
introTween.Completed:Wait()

-- Step 4: Staggered fade-in for all child elements
for _, child in ipairs(container:GetDescendants()) do
    if child:IsA("TextLabel") then
        TweenService:Create(child, TweenInfo.new(0.4), {TextTransparency = 0}):Play()
    elseif child:IsA("ImageLabel") then
        TweenService:Create(child, TweenInfo.new(0.4), {ImageTransparency = 0}):Play()
    elseif child:IsA("Frame") then
        local targetTransparency = (child.Name == "progressShine") and 0.6 or 0
        TweenService:Create(child, TweenInfo.new(0.4), {BackgroundTransparency = targetTransparency}):Play()
    elseif child:IsA("UIStroke") then
        local targetTransparency = (child == successGlowStroke) and 1 or 0.2
        TweenService:Create(child, TweenInfo.new(0.4), {Transparency = targetTransparency}):Play()
    end
    task.wait(0.02)
end

-- Step 5: Check for configuration errors AFTER the UI is visible.
if Config.ScriptToLoad == "" or Config.ScriptToLoad == "YOUR_SCRIPT_URL_HERE" then
    displayFatalError("FATAL: Script URL is missing!")
    return -- Stop execution
end

-- Step 6: Start the dynamic animation loops
local loadingFinished = false
task.spawn(function()
    -- Shine Loop
    while container.Parent and not loadingFinished do
        progressShine.Position = UDim2.new(-0.4, 0, 0, 0)
        TweenService:Create(progressShine, TweenInfo.new(1.5, Enum.EasingStyle.Linear), {Position = UDim2.new(1.4, 0, 0, 0)}):Play()
        task.wait(2)
    end
end)
task.spawn(function()
    -- Shimmer Loop
    while container.Parent and not loadingFinished do
        progressShimmer.Offset = Vector2.new(0, -1)
        TweenService:Create(progressShimmer, TweenInfo.new(1, Enum.EasingStyle.Linear), {Offset = Vector2.new(0, 1)}):Play()
        task.wait(1)
    end
end)

-- Step 7: Start the main loading sequence
task.spawn(function()
    local stepDuration = Config.LoadTime / #Config.Messages
    for i, msg in ipairs(Config.Messages) do
        updateStatus(msg, false)
        updateProgress((i / #Config.Messages) * 100, stepDuration * 0.9)
        task.wait(stepDuration)
    end
    
    loadingFinished = true
    logoCircle.Active = false
    TweenService:Create(progressShine, TweenInfo.new(0.3), {BackgroundTransparency = 1}):Play()
    updateStatus("Loading Script...", true)

    local success, result = pcall(function()
        loadstring(game:HttpGet(Config.ScriptToLoad))()
    end)
    
    if success then
        PlaySound("Success")
        updateStatus("Launched!", true)
        
        -- Play success animations
        local flashIn = TweenService:Create(successGlowStroke, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Transparency = 0.4})
        local flashOut = TweenService:Create(successGlowStroke, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Transparency = 1})
        local bounceUp = TweenService:Create(logoCircle, TweenInfo.new(0.3, Enum.EasingStyle.Elastic, Enum.EasingDirection.Out), {Size = UDim2.new(0, 78, 0, 78)})
        local bounceDown = TweenService:Create(logoCircle, TweenInfo.new(0.2, Enum.EasingStyle.Linear), {Size = UDim2.new(0, 70, 0, 70)})

        flashIn:Play()
        bounceUp:Play()

        flashIn.Completed:Connect(function()
            task.wait(0.1)
            flashOut:Play()
        end)
        bounceUp.Completed:Connect(function()
            bounceDown:Play()
        end)

        -- Perfectly chain the outro to the flash animation's completion.
        flashOut.Completed:Connect(function()
            TweenService:Create(statusText, TweenInfo.new(0.2), {TextTransparency = 1}):Play()
            task.wait(0.2)
            
            TweenService:Create(blur, TweenInfo.new(Config.OutroAnimationTime), {Size = 0}):Play()
            
            local outroTween = TweenService:Create(container, TweenInfo.new(Config.OutroAnimationTime, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
                Size = UDim2.new(0, 0, 0, 0)
            })
            outroTween:Play()

            for _, child in ipairs(container:GetDescendants()) do
                if child ~= statusText then
                    if child:IsA("TextLabel") then
                        TweenService:Create(child, TweenInfo.new(Config.OutroAnimationTime * 0.8), {TextTransparency = 1}):Play()
                    elseif child:IsA("ImageLabel") then
                        TweenService:Create(child, TweenInfo.new(Config.OutroAnimationTime * 0.8), {ImageTransparency = 1}):Play()
                    elseif child:IsA("Frame") then
                        TweenService:Create(child, TweenInfo.new(Config.OutroAnimationTime * 0.8), {BackgroundTransparency = 1}):Play()
                    elseif child:IsA("UIStroke") then
                        TweenService:Create(child, TweenInfo.new(Config.OutroAnimationTime * 0.8), {Transparency = 1}):Play()
                    end
                end
            end
            
            outroTween.Completed:Wait()
            screenGui:Destroy()
            blur:Destroy()
        end)
    else
        displayFatalError("Error: Script failed to load.")
        warn("[SoujaHub] Critical Error: The main script failed to load.", result)
    end
end)

Features & Information

Introducing the SoujaHub Loader v1.4 This is more than just a simple script loader; it's a complete, professional-grade loading experience designed to give any project a high-quality first impression. It comes packed with cinematic animations, deep customization, and robust functional features that make it both beautiful and reliable. Deep Customization & Rebranding Everything you see and hear is easily changeable right from the Config table at the top of the script, so you never have to dig through the code. You have full identity control, allowing you to instantly rebrand the loader by changing the Hub Name, Subtitle, and Logo Letter, or even by using a custom decal ID for the logo. The custom theme engine lets you tailor the entire visual aesthetic, from the primary purple accent and background gradient to the text and error states. You can also control the entire pace of the experience by setting the Load Time, as well as the intro and outro animation speeds. To add another layer of polish, the integrated sound system lets you add custom sound effects for key moments like the UI opening or successful loading. A Visually Stunning & Cinematic Experience The loader is built from the ground up to be visually engaging and feel premium, ensuring users are impressed from the very first second. It features a cinematic intro and outro, where the UI gracefully animates into view with a satisfying "pop" effect, complemented by a background blur that focuses attention. Elements don't just appear—they fade in sequentially, giving the loader a dynamic and professionally layered feel. The progress bar is more than a simple line; it includes a Shine Effect that periodically sweeps across and a Shimmer Effect for a lively, textured feel. The logo is also interactive, subtly growing on mouse hover. Finally, on a successful launch, the UI celebrates with a distinct "flash" on the progress bar and a "bounce" on the logo before cleanly exiting. Robust Core Functionality Beyond its looks, the loader is a reliable and intelligent tool for delivering your scripts. Its primary function is to securely load and execute your main script from a URL. The loader keeps the user informed by cycling through a sequence of customizable messages, from "Connecting..." to "Finalizing...". You can also provide a list of helpful tips that will occasionally appear with their own unique animation, keeping the user engaged. Most importantly, it features intelligent error handling. If the script URL is missing or fails, the loader automatically enters a Fatal Error Mode, providing clear visual feedback by turning the UI's theme red and displaying a precise error message, so you're never left guessing what went wrong.
#Hub#Loader#Source#Keyless#Free

Community Comments (8)

SouljaWitchSrcSouljaWitchSrcDec 21, 2025

Let me know your thoughts, what can be added, improved, or changed. (And if u like it follow and leave a like)

SouljaWitchSrcSouljaWitchSrcDec 22, 2025

If anyone does use this, no need for credits. i just wanna see the hub/script youse make so lmk.

SouljaWitchSrcSouljaWitchSrcDec 22, 2025

Next version to come out is gunna be 10x better

SouljaWitchSrcSouljaWitchSrcDec 22, 2025

@PuddingCutiepatootie Thank you, im working on a new version, so far its 10x better. Themes, whitelist (Simple) etc

cobrucobruDec 22, 2025

Pls make it minimal looks interesting but minimal stuff would be better haha

Replying to @cobru
SouljaWitchSrcSouljaWitchSrcDec 22, 2025

@cobru its mostly fully customizable, what do u mean. If u want another version to be more low-key lmk what u would wanna see in it and ill make it

Replying to @SouljaWitchSrc
cobrucobruDec 22, 2025

@SouljaWitchSrc pls give me ur discord my discord is .cobru

Replying to @cobru
SouljaWitchSrcSouljaWitchSrcDec 22, 2025

@cobru sent u a request

More Scripts for Universal Scripts