Cool illions script
Key RequiredUniversal

Cool illions script

Universal ScriptRubixScriptingsRubixScriptings 719 views 42 executesUpdated May 11, 2026
Unrated
00
Lua Script•889 lines (31957 chars)
--// Exponential Growth UI v3.5
--// Place this in a LocalScript inside StarterPlayerScripts

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")
local TextChatService = game:GetService("TextChatService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

--// 1. CLEAN UP EXISTING
local oldGui = playerGui:FindFirstChild("ExponentialGUI")
if oldGui then oldGui:Destroy() end
local oldBlur = Lighting:FindFirstChild("ExpUIBlur")
if oldBlur then oldBlur:Destroy() end

--// 2. SUFFIX SYSTEM (Base-1000 Multiplicative Blocks)
local first10 = {"K", "M", "B", "T", "q", "Q", "s", "S", "O", "N"}

local uN = {"U", "D", "T", "q", "Q", "s", "S", "O", "N"}
local tC = {"D", "V", "Tg", "qg", "Qig", "Hxg", "Sg", "Og", "Ng"}
local tL = {"d", "v", "tg", "qg", "qig", "hxg", "sg", "og", "ng"}
local hC = {"Ce", "Du", "Te", "Qr", "Qu", "Se", "St", "Ot", "Nn"}
local hL = {"ce", "du", "te", "qr", "qu", "se", "st", "ot", "nn"}

local superPre_Upper = {"Mi", "Mc", "Na", "Pic", "Fm", "Att", "Zep", "Yt", "Xon", "Vec"}
local superPre_Lower = {"mi", "mc", "na", "pi", "fm", "at", "ze", "yt", "xn", "vc"}

local superA_Upper = {"Me", "Duc", "Tec", "Trec", "Pnec", "Hxec", "Hpec", "Ocec", "Enec"}
local superA_Lower = {"me", "dc", "tc", "trc", "pnc", "hxc", "hpc", "occ", "enc"}

local superB_Upper = {"Ic", "Tect", "Trect", "Pnct", "Hxct", "Hpct", "Occt", "Enct"}
local superB_Lower = {"ic", "tct", "trct", "pct", "hxct", "hpct", "occt", "enct"}

local superC_Upper = {"Hct", "Dhct", "Thct", "Trhct", "Pnhct", "Hxhct", "Hphct", "Ochct", "Enhct"}
local superC_Lower = {"ht", "dht", "tht", "trht", "pht", "hxht", "hpht", "ocht", "eht"}

local function getStandardDigitStr(val)
    if val < 10 then return uN[val] end
    local u = val % 10
    local t = math.floor((val % 100) / 10) * 10
    local h = math.floor(val / 100) * 100
    local res = ""
    if h > 0 then res = (u > 0 and hL[h/100] or hC[h/100]) .. res end
    if t > 0 then res = (u > 0 and tL[t/10] or tC[t/10]) .. res end
    if u > 0 then res = uN[u] .. res end
    return res
end

local function getBlockSuffix(j, isLower)
    if j == 0 then return "" end
    if j <= 10 then
        return isLower and superPre_Lower[j] or superPre_Upper[j]
    end
    if j <= 19 then
        local idx = j - 10
        return isLower and superA_Lower[idx] or superA_Upper[idx]
    end

    local u = j % 10
    local t = math.floor((j % 100) / 10) * 10
    local h = math.floor(j / 100) * 100
    local res = ""

    if u > 0 then
        res = res .. (isLower and superA_Lower[u] or superA_Upper[u])
    end
    if t > 0 then
        local tIdx = (t - 20) / 10 + 1
        if u > 0 then
            res = res .. superB_Lower[tIdx]
        else
            res = res .. (isLower and superB_Lower[tIdx] or superB_Upper[tIdx])
        end
    end
    if h > 0 then
        local hIdx = h / 100
        if u > 0 or t > 0 then
            res = res .. superC_Lower[hIdx]
        else
            res = res .. (isLower and superC_Lower[hIdx] or superC_Upper[hIdx])
        end
    end

    return res
end

local function getSuffix(i)
    if i == 0 then return "" end
    if i <= 10 then return first10[i] end

    local blocks = {}
    local tempIdx = i
    for b = 0, 200 do
        if tempIdx == 0 then break end
        table.insert(blocks, tempIdx % 1000)
        tempIdx = math.floor(tempIdx / 1000)
    end

    local res = ""
    for b = #blocks, 1, -1 do
        local val = blocks[b]
        local j = b - 1
        if val > 0 then
            if j == 0 then
                if val <= 10 then
                    res = res .. first10[val]
                else
                    res = res .. getStandardDigitStr(val)
                end
            else
                if val == 1 then
                    res = res .. getBlockSuffix(j, false)
                else
                    res = res .. getStandardDigitStr(val) .. getBlockSuffix(j, true)
                end
            end
        end
    end

    return res
end

--// 3. THEME COLORS
local solidThemes = {
    Red = Color3.fromRGB(255, 0, 0),
    Vermillion = Color3.fromRGB(255, 89, 0),
    Orange = Color3.fromRGB(255, 165, 0),
    Sunset = Color3.fromRGB(253, 94, 83),
    ["Sandy Lemon"] = Color3.fromRGB(252, 230, 121),
    Yellow = Color3.fromRGB(255, 255, 0),
    Lime = Color3.fromRGB(0, 255, 0),
    Green = Color3.fromRGB(0, 128, 0),
    ["Forest green"] = Color3.fromRGB(34, 139, 34),
    ["Earth green"] = Color3.fromRGB(56, 118, 29),
    ["Night mint"] = Color3.fromRGB(62, 180, 137),
    Mint = Color3.fromRGB(152, 255, 152),
    Teal = Color3.fromRGB(0, 128, 128),
    Cyan = Color3.fromRGB(0, 255, 255),
    ["Sky blue"] = Color3.fromRGB(135, 206, 235),
    ["Noon blue"] = Color3.fromRGB(0, 95, 206),
    ["Neon blue"] = Color3.fromRGB(78, 111, 255),
    Blue = Color3.fromRGB(0, 0, 255),
    ["Space blue"] = Color3.fromRGB(35, 53, 123),
    Purple = Color3.fromRGB(128, 0, 128),
    Pink = Color3.fromRGB(255, 192, 203),
    ["Neon pink"] = Color3.fromRGB(255, 16, 240),
    ["Cherry pink"] = Color3.fromRGB(233, 99, 121),
    ["Cherry blossom"] = Color3.fromRGB(255, 183, 197),
    Magenta = Color3.fromRGB(255, 0, 255),
    Black = Color3.fromRGB(0, 0, 0),
    Brown = Color3.fromRGB(139, 69, 19),
    Beige = Color3.fromRGB(245, 245, 220),
    ["Moon light"] = Color3.fromRGB(240, 240, 230),
    Grey = Color3.fromRGB(128, 128, 128),
    ["Light gray"] = Color3.fromRGB(211, 211, 211),
    ["White smoke"] = Color3.fromRGB(245, 245, 245),
    White = Color3.fromRGB(255, 255, 255)
}

local solidThemeOrder = {
    "Red", "Vermillion", "Orange", "Sunset", "Sandy Lemon", "Yellow", "Lime", "Green", "Forest green", "Earth green", "Night mint", "Mint", "Teal", "Cyan", "Sky blue", "Noon blue", "Neon blue", "Blue", "Space blue", "Purple", "Pink", "Neon pink", "Cherry pink", "Cherry blossom", "Magenta", "Black", "Brown", "Beige", "Moon light", "Grey", "Light gray", "White smoke", "White"
}

local gradientThemes = {
    Red = ColorSequence.new(Color3.fromRGB(255, 0, 0), Color3.fromRGB(180, 0, 0)),
    Orange = ColorSequence.new(Color3.fromRGB(255, 165, 0), Color3.fromRGB(255, 100, 0)),
    Copper = ColorSequence.new(Color3.fromRGB(184, 115, 51), Color3.fromRGB(120, 75, 30)),
    Yellow = ColorSequence.new(Color3.fromRGB(255, 255, 0), Color3.fromRGB(255, 215, 0)),
    Green = ColorSequence.new(Color3.fromRGB(0, 255, 0), Color3.fromRGB(0, 160, 0)),
    Emerald = ColorSequence.new(Color3.fromRGB(80, 220, 100), Color3.fromRGB(0, 100, 50)),
    Cyan = ColorSequence.new(Color3.fromRGB(0, 255, 255), Color3.fromRGB(0, 160, 200)),
    ["Sky blue"] = ColorSequence.new(Color3.fromRGB(135, 206, 235), Color3.fromRGB(70, 130, 180)),
    Diamond = ColorSequence.new(Color3.fromRGB(185, 242, 255), Color3.fromRGB(105, 197, 255)),
    Blue = ColorSequence.new(Color3.fromRGB(0, 0, 255), Color3.fromRGB(0, 0, 160)),
    Purple = ColorSequence.new(Color3.fromRGB(128, 0, 128), Color3.fromRGB(186, 85, 211)),
    Pink = ColorSequence.new(Color3.fromRGB(255, 192, 203), Color3.fromRGB(255, 105, 180)),
    Brown = ColorSequence.new(Color3.fromRGB(139, 69, 19), Color3.fromRGB(100, 60, 20)),
    Black = ColorSequence.new(Color3.fromRGB(60, 60, 60), Color3.fromRGB(0, 0, 0)),
    Grey = ColorSequence.new(Color3.fromRGB(128, 128, 128), Color3.fromRGB(90, 90, 90)),
    White = ColorSequence.new(Color3.fromRGB(255, 255, 255), Color3.fromRGB(200, 200, 200))
}
local gradientThemeOrder = {"Red", "Orange", "Copper", "Yellow", "Green", "Emerald", "Cyan", "Sky blue", "Diamond", "Blue", "Purple", "Pink", "Brown", "Black", "Grey", "White"}

local currentThemeColor = Color3.fromRGB(0, 255, 255)
local currentThemeGradient = ColorSequence.new(currentThemeColor, Color3.fromRGB(255, 255, 255))

--// 4. UI CREATION
local blur = Instance.new("BlurEffect")
blur.Name = "ExpUIBlur"
blur.Size = 15
blur.Parent = Lighting

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ExponentialGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 460, 0, 280)
mainFrame.Position = UDim2.new(0.5, -230, 0.5, -140)
mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
mainFrame.BackgroundTransparency = 0.1
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 12)
mainCorner.Parent = mainFrame

local mainGradient = Instance.new("UIGradient")
mainGradient.Color = ColorSequence.new(Color3.fromRGB(20, 20, 30), Color3.fromRGB(10, 10, 15))
mainGradient.Rotation = 90
mainGradient.Parent = mainFrame

local stroke = Instance.new("UIStroke")
stroke.Color = currentThemeColor
stroke.Thickness = 1.5
stroke.Transparency = 0.3
stroke.Parent = mainFrame

-- Top Bar
local topBar = Instance.new("Frame")
topBar.Size = UDim2.new(1, 0, 0, 40)
topBar.BackgroundColor3 = currentThemeColor
topBar.BackgroundTransparency = 0.8
topBar.Parent = mainFrame

local topBarGradient = Instance.new("UIGradient")
topBarGradient.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255), currentThemeColor)
topBarGradient.Transparency = NumberSequence.new(0.8, 0.9)
topBarGradient.Rotation = 90
topBarGradient.Parent = topBar

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -180, 1, 0)
title.Position = UDim2.new(0, 15, 0, 0)
title.BackgroundTransparency = 1
title.Text = "EXPONENTIAL GROWTH v3.5"
title.Font = Enum.Font.GothamBold
title.TextSize = 16
title.TextColor3 = Color3.fromRGB(240, 240, 255)
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = topBar

local function createTopBtn(icon, posOffset)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 40, 0, 40)
    btn.Position = UDim2.new(1, posOffset, 0, 0)
    btn.BackgroundTransparency = 1
    btn.Text = icon
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 18
    btn.TextColor3 = Color3.fromRGB(220, 220, 240)
    btn.Parent = topBar
    
    btn.MouseEnter:Connect(function() btn.TextColor3 = Color3.fromRGB(255, 255, 255) end)
    btn.MouseLeave:Connect(function() btn.TextColor3 = Color3.fromRGB(220, 220, 240) end)
    
    return btn
end

local settingsBtn = createTopBtn("⚙", -40)
local themeBtn = createTopBtn("🎨", -80)
local minBtn = createTopBtn("—", -120)
local closeBtn = createTopBtn("X", -160)
closeBtn.TextColor3 = Color3.fromRGB(255, 100, 100)
closeBtn.MouseEnter:Connect(function() closeBtn.TextColor3 = Color3.fromRGB(255, 150, 150) end)
closeBtn.MouseLeave:Connect(function() closeBtn.TextColor3 = Color3.fromRGB(255, 100, 100) end)

-- Number Display
local numLabel = Instance.new("TextLabel")
numLabel.Size = UDim2.new(0.9, 0, 0, 75)
numLabel.Position = UDim2.new(0.05, 0, 0, 50)
numLabel.BackgroundTransparency = 1
numLabel.Text = "100.00"
numLabel.Font = Enum.Font.GothamBlack
numLabel.TextSize = 55
numLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
numLabel.TextScaled = true
numLabel.Parent = mainFrame

local numGradient = Instance.new("UIGradient")
numGradient.Color = currentThemeGradient
numGradient.Parent = numLabel

local function darkenColor(c, factor)
    return Color3.fromRGB(math.floor(c.R*255*factor), math.floor(c.G*255*factor), math.floor(c.B*255*factor))
end

local function updateNumGradient(isSuper)
    local cs = currentThemeGradient
    if isSuper then
        local kps = {}
        for _, kp in ipairs(cs.Keypoints) do
            table.insert(kps, ColorSequenceKeypoint.new(kp.Time, darkenColor(kp.Value, 0.65)))
        end
        numGradient.Color = ColorSequence.new(kps)
    else
        numGradient.Color = cs
    end
end

-- Mode Toggle
local modeBtn = Instance.new("TextButton")
modeBtn.Size = UDim2.new(0.9, 0, 0, 32)
modeBtn.Position = UDim2.new(0.05, 0, 0, 130)
modeBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
modeBtn.BackgroundTransparency = 0.9
modeBtn.Font = Enum.Font.GothamSemibold
modeBtn.TextSize = 14
modeBtn.TextColor3 = Color3.fromRGB(240, 240, 255)
modeBtn.Text = "Mode: Multiply (x1.20)"
modeBtn.Parent = mainFrame

local modeCorner = Instance.new("UICorner")
modeCorner.CornerRadius = UDim.new(0, 8)
modeCorner.Parent = modeBtn

modeBtn.MouseEnter:Connect(function() modeBtn.BackgroundTransparency = 0.8 end)
modeBtn.MouseLeave:Connect(function() modeBtn.BackgroundTransparency = 0.9 end)

-- Action Buttons Row
local btnRow = Instance.new("Frame")
btnRow.Size = UDim2.new(0.9, 0, 0, 30)
btnRow.Position = UDim2.new(0.05, 0, 0, 170)
btnRow.BackgroundTransparency = 1
btnRow.Parent = mainFrame

local btnNames = {"Pause", "Reset", "Chat", "Changelogs", "About"}
local actionButtons = {}
for i, name in ipairs(btnNames) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.19, 0, 1, 0)
    btn.Position = UDim2.new((i-1) * 0.2, 0, 0, 0)
    btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    btn.BackgroundTransparency = 0.9
    btn.Font = Enum.Font.GothamSemibold
    btn.TextSize = 12
    btn.TextColor3 = Color3.fromRGB(240, 240, 255)
    btn.Text = name
    btn.Parent = btnRow

    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 8)
    c.Parent = btn
    
    btn.MouseEnter:Connect(function() btn.BackgroundTransparency = 0.75 end)
    btn.MouseLeave:Connect(function() btn.BackgroundTransparency = 0.9 end)

    actionButtons[name] = btn
end

-- Slider
local sliderLabel = Instance.new("TextLabel")
sliderLabel.Size = UDim2.new(0.9, 0, 0, 20)
sliderLabel.Position = UDim2.new(0.05, 0, 0, 208)
sliderLabel.BackgroundTransparency = 1
sliderLabel.Text = "Rate: 1.20"
sliderLabel.Font = Enum.Font.GothamSemibold
sliderLabel.TextSize = 13
sliderLabel.TextColor3 = Color3.fromRGB(220, 220, 240)
sliderLabel.Parent = mainFrame

local sliderTrack = Instance.new("Frame")
sliderTrack.Size = UDim2.new(0.9, 0, 0, 8)
sliderTrack.Position = UDim2.new(0.05, 0, 0, 235)
sliderTrack.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
sliderTrack.BorderSizePixel = 0
sliderTrack.Parent = mainFrame

local trackCorner = Instance.new("UICorner")
trackCorner.CornerRadius = UDim.new(1, 0)
trackCorner.Parent = sliderTrack

local sliderFill = Instance.new("Frame")
sliderFill.Size = UDim2.new(0, 0, 1, 0)
sliderFill.BackgroundColor3 = currentThemeColor
sliderFill.BorderSizePixel = 0
sliderFill.Parent = sliderTrack

local sliderGradient = Instance.new("UIGradient")
sliderGradient.Color = ColorSequence.new(currentThemeColor, darkenColor(currentThemeColor, 0.7))
sliderGradient.Parent = sliderFill

local fillCorner = Instance.new("UICorner")
fillCorner.CornerRadius = UDim.new(1, 0)
fillCorner.Parent = sliderFill

local sliderHandle = Instance.new("Frame")
sliderHandle.Size = UDim2.new(0, 22, 0, 22)
sliderHandle.Position = UDim2.new(0, -11, 0.5, -11)
sliderHandle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
sliderHandle.BorderSizePixel = 0
sliderHandle.Parent = sliderTrack

local handleCorner = Instance.new("UICorner")
handleCorner.CornerRadius = UDim.new(1, 0)
handleCorner.Parent = sliderHandle

local handleStroke = Instance.new("UIStroke")
handleStroke.Color = currentThemeColor
handleStroke.Thickness = 2
handleStroke.Parent = sliderHandle

--// 5. WINDOWS & SETTINGS
local maxStringLength = 0

local function createWindow(size, pos)
    local win = Instance.new("Frame")
    win.Size = size
    win.Position = pos
    win.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
    win.BackgroundTransparency = 0.05
    win.Visible = false
    win.ZIndex = 10
    win.Parent = mainFrame

    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 10)
    c.Parent = win

    local s = Instance.new("UIStroke")
    s.Color = currentThemeColor
    s.Thickness = 1
    s.Transparency = 0.5
    s.Parent = win

    return win
end

local function closeAllWindows()
    themeWindow.Visible = false
    aboutWindow.Visible = false
    changelogsWindow.Visible = false
    settingsWindow.Visible = false
end

local function applySolidTheme(color)
    currentThemeColor = color
    currentThemeGradient = ColorSequence.new(color, Color3.fromRGB(255, 255, 255))
    
    stroke.Color = color
    handleStroke.Color = color
    mainFrame.BackgroundColor3 = Color3.fromRGB(math.floor(color.R * 15), math.floor(color.G * 15), math.floor(color.B * 15))
    topBar.BackgroundColor3 = color
    
    sliderGradient.Color = ColorSequence.new(color, darkenColor(color, 0.7))
    topBarGradient.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255), color)
    
    updateNumGradient(false)
end

local function applyGradientTheme(cs)
    currentThemeGradient = cs
    local firstColor = cs.Keypoints[1].Value
    currentThemeColor = firstColor
    
    stroke.Color = firstColor
    handleStroke.Color = firstColor
    mainFrame.BackgroundColor3 = Color3.fromRGB(math.floor(firstColor.R * 15), math.floor(firstColor.G * 15), math.floor(firstColor.B * 15))
    topBar.BackgroundColor3 = firstColor
    
    sliderGradient.Color = cs
    topBarGradient.Color = cs
    
    updateNumGradient(false)
end

-- Theme Window
themeWindow = createWindow(UDim2.new(0, 260, 0, 320), UDim2.new(1, -270, 0, 50))

local tabContainer = Instance.new("Frame")
tabContainer.Size = UDim2.new(1, -20, 0, 35)
tabContainer.Position = UDim2.new(0, 10, 0, 10)
tabContainer.BackgroundTransparency = 1
tabContainer.Parent = themeWindow

local solidTabBtn = Instance.new("TextButton")
solidTabBtn.Size = UDim2.new(0.5, -3, 1, 0)
solidTabBtn.Position = UDim2.new(0, 0, 0, 0)
solidTabBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
solidTabBtn.BackgroundTransparency = 0.5
solidTabBtn.Text = "Solid"
solidTabBtn.Font = Enum.Font.GothamBold
solidTabBtn.TextSize = 13
solidTabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
solidTabBtn.Parent = tabContainer
local stc = Instance.new("UICorner") stc.CornerRadius = UDim.new(0, 6) stc.Parent = solidTabBtn

local gradTabBtn = Instance.new("TextButton")
gradTabBtn.Size = UDim2.new(0.5, -3, 1, 0)
gradTabBtn.Position = UDim2.new(0.5, 3, 0, 0)
gradTabBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
gradTabBtn.BackgroundTransparency = 0.8
gradTabBtn.Text = "Gradient"
gradTabBtn.Font = Enum.Font.GothamBold
gradTabBtn.TextSize = 13
gradTabBtn.TextColor3 = Color3.fromRGB(220, 220, 240)
gradTabBtn.Parent = tabContainer
local gtc = Instance.new("UICorner") gtc.CornerRadius = UDim.new(0, 6) gtc.Parent = gradTabBtn

local function setTab(isSolid)
    solidScroll.Visible = isSolid
    gradScroll.Visible = not isSolid
    solidTabBtn.BackgroundTransparency = isSolid and 0.5 or 0.8
    gradTabBtn.BackgroundTransparency = isSolid and 0.8 or 0.5
end
solidTabBtn.MouseButton1Click:Connect(function() setTab(true) end)
gradTabBtn.MouseButton1Click:Connect(function() setTab(false) end)

solidScroll = Instance.new("ScrollingFrame")
solidScroll.Size = UDim2.new(1, -10, 1, -55)
solidScroll.Position = UDim2.new(0, 5, 0, 50)
solidScroll.BackgroundTransparency = 1
solidScroll.ScrollBarThickness = 4
solidScroll.ZIndex = 11
solidScroll.Parent = themeWindow

gradScroll = Instance.new("ScrollingFrame")
gradScroll.Size = UDim2.new(1, -10, 1, -55)
gradScroll.Position = UDim2.new(0, 5, 0, 50)
gradScroll.BackgroundTransparency = 1
gradScroll.ScrollBarThickness = 4
gradScroll.Visible = false
gradScroll.ZIndex = 11
gradScroll.Parent = themeWindow

local function createGridLayout(parent)
    local layout = Instance.new("UIGridLayout")
    layout.CellSize = UDim2.new(0, 110, 0, 35)
    layout.CellPadding = UDim2.new(0, 5, 0, 5)
    layout.SortOrder = Enum.SortOrder.LayoutOrder
    layout.Parent = parent
end
createGridLayout(solidScroll)
createGridLayout(gradScroll)

for i, name in ipairs(solidThemeOrder) do
    local color = solidThemes[name]
    local btn = Instance.new("TextButton")
    btn.BackgroundColor3 = color
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 11
    btn.TextColor3 = Color3.fromRGB(0, 0, 0)
    btn.Text = name
    btn.LayoutOrder = i
    btn.ZIndex = 11
    btn.Parent = solidScroll
    
    local bCorner = Instance.new("UICorner")
    bCorner.CornerRadius = UDim.new(0, 6)
    bCorner.Parent = btn

    btn.MouseButton1Click:Connect(function() applySolidTheme(color) end)
end

for i, name in ipairs(gradientThemeOrder) do
    local cs = gradientThemes[name]
    local btn = Instance.new("TextButton")
    btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 11
    btn.TextColor3 = Color3.fromRGB(0, 0, 0)
    btn.Text = name
    btn.LayoutOrder = i
    btn.ZIndex = 11
    btn.Parent = gradScroll
    
    local bCorner = Instance.new("UICorner")
    bCorner.CornerRadius = UDim.new(0, 6)
    bCorner.Parent = btn

    local bGrad = Instance.new("UIGradient")
    bGrad.Color = cs
    bGrad.Parent = btn

    btn.MouseButton1Click:Connect(function() applyGradientTheme(cs) end)
end

-- About Window
aboutWindow = createWindow(UDim2.new(0, 340, 0, 180), UDim2.new(0.5, -170, 0.5, -90))
local aboutText = Instance.new("TextLabel")
aboutText.Size = UDim2.new(1, -30, 1, -20)
aboutText.Position = UDim2.new(0, 15, 0, 15)
aboutText.BackgroundTransparency = 1
aboutText.Text = "How does this thing work?\n\nSo basically its like a mini LNGI thing you can use! its a cool script i made just for you guys who just like numbers and suffixes."
aboutText.Font = Enum.Font.Gotham
aboutText.TextSize = 14
aboutText.TextColor3 = Color3.fromRGB(230, 230, 250)
aboutText.TextWrapped = true
aboutText.TextYAlignment = Enum.TextYAlignment.Top
aboutText.ZIndex = 11
aboutText.Parent = aboutWindow

-- Changelogs Window
changelogsWindow = createWindow(UDim2.new(0, 340, 0, 200), UDim2.new(0.5, -170, 0.5, -100))

local clTitle = Instance.new("TextLabel")
clTitle.Size = UDim2.new(1, 0, 0, 40)
clTitle.Position = UDim2.new(0, 0, 0, 15)
clTitle.BackgroundTransparency = 1
clTitle.Text = "Changelogs"
clTitle.Font = Enum.Font.GothamBold
clTitle.TextSize = 28
clTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
clTitle.ZIndex = 11
clTitle.Parent = changelogsWindow

local clBody = Instance.new("TextLabel")
clBody.Size = UDim2.new(1, -40, 0, 100)
clBody.Position = UDim2.new(0, 20, 0, 60)
clBody.BackgroundTransparency = 1
clBody.Text = "v3.5\nyes new theme and i had to fix the setting for max illion length"
clBody.Font = Enum.Font.Gotham
clBody.TextSize = 16
clBody.TextColor3 = Color3.fromRGB(220, 220, 240)
clBody.TextWrapped = true
clBody.TextYAlignment = Enum.TextYAlignment.Top
clBody.TextXAlignment = Enum.TextXAlignment.Left
clBody.ZIndex = 11
clBody.Parent = changelogsWindow

local clFooter = Instance.new("TextLabel")
clFooter.Size = UDim2.new(1, -40, 0, 20)
clFooter.Position = UDim2.new(0, 20, 1, -25)
clFooter.BackgroundTransparency = 1
clFooter.Text = "versions v3.3 and below are not logged!!!"
clFooter.Font = Enum.Font.GothamSemibold
clFooter.TextSize = 11
clFooter.TextColor3 = Color3.fromRGB(150, 150, 170)
clFooter.TextXAlignment = Enum.TextXAlignment.Center
clFooter.ZIndex = 11
clFooter.Parent = changelogsWindow

-- Settings Window
settingsWindow = createWindow(UDim2.new(0, 360, 0, 120), UDim2.new(0.5, -180, 0.5, -60))

local function createSettingLabel(text, posY)
    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0.5, -10, 0, 35)
    lbl.Position = UDim2.new(0, 15, 0, posY)
    lbl.BackgroundTransparency = 1
    lbl.Text = text
    lbl.Font = Enum.Font.GothamSemibold
    lbl.TextSize = 13
    lbl.TextColor3 = Color3.fromRGB(230, 230, 250)
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.ZIndex = 11
    lbl.Parent = settingsWindow
end

local function createSettingBox(default, posY)
    local box = Instance.new("TextBox")
    box.Size = UDim2.new(0.4, -25, 0, 35)
    box.Position = UDim2.new(0.55, 5, 0, posY)
    box.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    box.Text = tostring(default)
    box.Font = Enum.Font.GothamSemibold
    box.TextSize = 13
    box.TextColor3 = Color3.fromRGB(255, 255, 255)
    box.ZIndex = 11
    box.Parent = settingsWindow

    local bc = Instance.new("UICorner")
    bc.CornerRadius = UDim.new(0, 6)
    bc.Parent = box

    return box
end

createSettingLabel("Max String Length (0 = ∞)", 40)
local lengthLimitBox = createSettingBox(maxStringLength, 40)

lengthLimitBox.FocusLost:Connect(function()
    local val = tonumber(lengthLimitBox.Text)
    if val and val >= 0 then maxStringLength = math.floor(val) end
    lengthLimitBox.Text = tostring(maxStringLength)
end)

-- Close Buttons for Windows
local function addCloseToWindow(win)
    local cBtn = Instance.new("TextButton")
    cBtn.Size = UDim2.new(0, 35, 0, 35)
    cBtn.Position = UDim2.new(1, -40, 0, 5)
    cBtn.BackgroundTransparency = 1
    cBtn.Text = "X"
    cBtn.Font = Enum.Font.GothamBold
    cBtn.TextSize = 18
    cBtn.TextColor3 = Color3.fromRGB(255, 100, 100)
    cBtn.ZIndex = 12
    cBtn.Parent = win
    cBtn.MouseButton1Click:Connect(function() win.Visible = false end)
end

addCloseToWindow(aboutWindow)
addCloseToWindow(changelogsWindow)
addCloseToWindow(settingsWindow)

--// 6. LOGIC & INTERACTIVITY
local isMultiply = true
local isPaused = false
local isResetting = false
local currentVal = 1.2
local exponent = 2

local function updateModeText()
    if isMultiply then
        modeBtn.Text = "Mode: Multiply (x" .. string.format("%.2f", currentVal) .. ")"
    else
        modeBtn.Text = "Mode: Exponent (^" .. string.format("%.2f", currentVal) .. ")"
    end
    sliderLabel.Text = "Rate: " .. string.format("%.2f", currentVal)
end

modeBtn.MouseButton1Click:Connect(function()
    isMultiply = not isMultiply
    updateModeText()
end)

settingsBtn.MouseButton1Click:Connect(function()
    local vis = settingsWindow.Visible
    closeAllWindows()
    settingsWindow.Visible = not vis
end)

themeBtn.MouseButton1Click:Connect(function()
    local vis = themeWindow.Visible
    closeAllWindows()
    themeWindow.Visible = not vis
end)

actionButtons["Pause"].MouseButton1Click:Connect(function()
    isPaused = not isPaused
    isResetting = false
    actionButtons["Pause"].Text = isPaused and "Resume" or "Pause"
end)

actionButtons["Reset"].MouseButton1Click:Connect(function()
    isResetting = true
    isPaused = false
    actionButtons["Pause"].Text = "Pause"
end)

actionButtons["About"].MouseButton1Click:Connect(function()
    local vis = aboutWindow.Visible
    closeAllWindows()
    aboutWindow.Visible = not vis
end)

actionButtons["Changelogs"].MouseButton1Click:Connect(function()
    local vis = changelogsWindow.Visible
    closeAllWindows()
    changelogsWindow.Visible = not vis
end)

local function sendChat(msg)
    pcall(function()
        local channel = TextChatService.TextChannels:FindFirstChild("RBXGeneral")
        if channel then channel:SendAsync(msg) return end
    end)
    pcall(function()
        local events = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
        if events and events:FindFirstChild("SayMessageRequest") then
            events.SayMessageRequest:FireServer(msg, "All")
        end
    end)
end

actionButtons["Chat"].MouseButton1Click:Connect(function()
    if exponent < 3 then return end
    local idx = math.floor(exponent / 3)
    if idx > 0 then
        local suffix = getSuffix(idx)
        if maxStringLength > 0 and #suffix > maxStringLength then
            return -- Stop chatting entirely if limit is reached
        end
        sendChat("Current Illion: " .. suffix)
    end
end)

-- Slider Logic
local dragging = false
local sliderMin, sliderMax = 1.05, 2.5

local function updateSlider(input)
    local relX = input.Position.X - sliderTrack.AbsolutePosition.X
    local percent = math.clamp(relX / sliderTrack.AbsoluteSize.X, 0, 1)
    currentVal = sliderMin + (sliderMax - sliderMin) * percent
    currentVal = math.floor(currentVal * 100) / 100
    sliderFill.Size = UDim2.new(percent, 0, 1, 0)
    sliderHandle.Position = UDim2.new(percent, -11, 0.5, -11)
    updateModeText()
end

sliderHandle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true end end)
sliderTrack.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then updateSlider(input) dragging = true end end)
UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end)
UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateSlider(input) end end)

-- Drag Logic
local dragToggle, dragStart, startPos
topBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragToggle = true
        dragStart = input.Position
        startPos = mainFrame.Position
    end
end)
UserInputService.InputChanged:Connect(function(input)
    if dragToggle and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        local delta = input.Position - dragStart
        mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)
topBar.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragToggle = false end end)

-- Minimize Logic
local isMinimized = false
minBtn.MouseButton1Click:Connect(function()
    isMinimized = not isMinimized
    local targetSize = isMinimized and UDim2.new(0, 460, 0, 40) or UDim2.new(0, 460, 0, 280)
    TweenService:Create(mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {Size = targetSize}):Play()
end)

-- Close Animation
local function closeUI()
    TweenService:Create(mainFrame, TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
        Size = UDim2.new(0, 0, 0, 0),
        BackgroundTransparency = 1,
        Rotation = 45
    }):Play()
    TweenService:Create(stroke, TweenInfo.new(0.5), {Transparency = 1}):Play()
    TweenService:Create(blur, TweenInfo.new(0.5), {Size = 0}):Play()
    
    task.delay(0.6, function()
        screenGui:Destroy()
        blur:Destroy()
    end)
end
closeBtn.MouseButton1Click:Connect(closeUI)

--// 7. MATH LOOP & FORMAT
local function formatNumber(exp)
    if exp >= 1.79e308 then return "∞", 0 end
    if exp < 3 then return string.format("%.2f", 10^exp), 0 end

    local mantissa = 10 ^ (exp % 3)
    local idx = math.floor(exp / 3)
    local suffix = getSuffix(idx)

    local text = string.format("%.2f", mantissa) .. (suffix ~= "" and " " .. suffix or "")
    -- Trim the string display if it exceeds the max length
    if maxStringLength > 0 and #text > maxStringLength then
        text = string.sub(text, 1, maxStringLength) .. "..."
    end

    return text, idx
end

RunService.Heartbeat:Connect(function(dt)
    if not screenGui or not screenGui.Parent then return end
    
    if isResetting then
        exponent = exponent + (2 - exponent) * math.min(1, dt * 8)
        if math.abs(exponent - 2) < 0.05 then
            exponent = 2
            isResetting = false
        end
    elseif not isPaused then
        if isMultiply then
            exponent = exponent + math.log10(currentVal) * dt * 10
        else
            exponent = exponent * (1 + (currentVal - 1) * dt * 2)
        end
    end
    
    local text, idx = formatNumber(exponent)
    numLabel.Text = text
    
    -- Apply 35% darker gradient if it reaches indexes 1,000 and more
    updateNumGradient(idx >= 1000)
end)

updateModeText()

Features & Information

its a very cool script!!! it has like illions and features! v3.5 Now has proper string trimming on settings, gradients.

Community Comments (1)

RubixScriptingsRubixScriptingsMay 12, 2026

I heard there is hacked or/and bot account spamming links onto my scripts, dont trust them. (not towards hate) (sincrerely, rubix.)

More Scripts for Universal Scripts