Somsong
Key RequiredUniversal

Somsong

Universal ScriptVecxsonVecxson 1.1K views 6 executesUpdated Nov 1, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•266 lines (11664 chars)
--Somsong V3.3

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")


local function safe_warn(...)
    local args = {...}
    pcall(function()
        print("[SomsongExecutor WARN]", table.unpack(args))
    end)
end

local player = Players.LocalPlayer
if not player then
    safe_warn("Waiting for LocalPlayer...")
    repeat task.wait() until Players.LocalPlayer
    player = Players.LocalPlayer
end

local gui = Instance.new("ScreenGui")
gui.Name = "SomsongExecutor"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local function new(class, props)
    local o = Instance.new(class)
    for k,v in pairs(props or {}) do
        pcall(function() o[k] = v end)
    end
    return o
end

-- THEMES
local THEMES = {
    Dark = {Main=Color3.fromRGB(10,20,40),Code=Color3.fromRGB(15,25,55),Btn=Color3.fromRGB(0,90,200),Btn2=Color3.fromRGB(0,70,150),ConsoleBtn=Color3.fromRGB(40,160,60),Text=Color3.fromRGB(255,255,255),SubText=Color3.fromRGB(180,180,200),Tooltip=Color3.fromRGB(20,20,30)},
    Light= {Main=Color3.fromRGB(245,245,250),Code=Color3.fromRGB(235,235,240),Btn=Color3.fromRGB(0,120,220),Btn2=Color3.fromRGB(90,140,200),ConsoleBtn=Color3.fromRGB(30,130,70),Text=Color3.fromRGB(20,20,20),SubText=Color3.fromRGB(110,110,120),Tooltip=Color3.fromRGB(240,240,245)},
    Neon = {Main=Color3.fromRGB(6,6,10),Code=Color3.fromRGB(12,12,18),Btn=Color3.fromRGB(0,200,240),Btn2=Color3.fromRGB(120,80,200),ConsoleBtn=Color3.fromRGB(200,80,240),Text=Color3.fromRGB(230,230,255),SubText=Color3.fromRGB(160,140,200),Tooltip=Color3.fromRGB(10,8,14)}
}
local THEME_ORDER = {"Dark","Light","Neon"}

-- Persistence
local THEME_FILE = "SomsongTheme.txt"
local function safe_read(fname)
    if not (isfile and readfile and isfile(fname)) then return nil end
    local ok, data = pcall(readfile, fname)
    return ok and data or nil
end
local function safe_write(fname, data)
    if not writefile then return end
    pcall(writefile, fname, tostring(data))
end

local themeIndex = 1
do
    local saved = safe_read(THEME_FILE)
    if saved then
        saved = saved:gsub("%s+","")
        for i,name in ipairs(THEME_ORDER) do
            if name:lower() == saved:lower() then themeIndex = i end
        end
    end
end
local function theme_name() return THEME_ORDER[themeIndex] end
local function theme() return THEMES[theme_name()] end

-- Notification system (top-right, stacked, smaller)
local activeNotifs = {}
local function notify(msg)
    local notifWidth, notifHeight = 220, 30 -- smaller size
    local notif = Instance.new("Frame")
    notif.Size = UDim2.new(0, notifWidth, 0, notifHeight)
    notif.Position = UDim2.new(1, -notifWidth - 20, 0, 20 + (#activeNotifs * (notifHeight + 10))) -- stacked
    notif.AnchorPoint = Vector2.new(0,0)
    notif.BackgroundColor3 = Color3.fromRGB(40,40,70)
    notif.BorderSizePixel = 0
    notif.ZIndex = 10
    notif.Parent = gui

    table.insert(activeNotifs, notif)

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0,6)
    corner.Parent = notif

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1,0,1,0)
    label.Position = UDim2.new(0,0,0,0)
    label.BackgroundTransparency = 1
    label.TextColor3 = Color3.fromRGB(255,255,255)
    label.Text = msg
    label.Font = Enum.Font.GothamBold
    label.TextSize = 14
    label.TextScaled = true
    label.ZIndex = 11
    label.Parent = notif

    notif.BackgroundTransparency = 1
    label.TextTransparency = 1

    for i=0,1,0.1 do
        notif.BackgroundTransparency = 1-i
        label.TextTransparency = 1-i
        task.wait(0.03)
    end

    task.wait(2)

    for i=0,1,0.1 do
        notif.BackgroundTransparency = i
        label.TextTransparency = i
        task.wait(0.03)
    end

    notif:Destroy()
    table.remove(activeNotifs, 1)
    for i,frame in ipairs(activeNotifs) do
        TweenService:Create(frame, TweenInfo.new(0.2), {Position = UDim2.new(1, -notifWidth - 20, 0, 20 + ((i-1)*(notifHeight+10))) }):Play()
    end
end

-- GUI BUILD
local MAIN_W, MAIN_H = 760, 340
local Main = new("Frame",{Size=UDim2.new(0,MAIN_W,0,MAIN_H),Position=UDim2.new(0.5,-MAIN_W/2,0.5,-MAIN_H/2),BackgroundColor3=theme().Main,BorderSizePixel=0,Active=true,Draggable=true,Parent=gui})
new("UICorner",{Parent=Main,CornerRadius=UDim.new(0,10)})
local Gradient = Instance.new("UIGradient", Main)
Gradient.Color = ColorSequence.new{ColorSequenceKeypoint.new(0,theme().Code),ColorSequenceKeypoint.new(1,theme().Main)}
Gradient.Rotation = 45

-- Title
local Title = new("TextLabel",{Size=UDim2.new(1,-60,0,30),Position=UDim2.new(0,10,0,0),Text="Somsong Executor",Font=Enum.Font.GothamBold,TextSize=18,TextColor3=theme().Text,BackgroundTransparency=1,TextXAlignment=Enum.TextXAlignment.Left,Parent=Main})

-- Close
local Close = new("TextButton",{Size=UDim2.new(0,30,0,30),Position=UDim2.new(1,-40,0,0),Text="X",Font=Enum.Font.GothamBold,TextSize=16,BackgroundColor3=Color3.fromRGB(200,50,50),TextColor3=Color3.new(1,1,1),Parent=Main})
new("UICorner",{Parent=Close,CornerRadius=UDim.new(0,6)})
Close.MouseButton1Click:Connect(function() gui:Destroy() end)

-- CodeBox
local CodeBox = new("TextBox",{Size=UDim2.new(1,-40,0,200),Position=UDim2.new(0,20,0,40),BackgroundColor3=theme().Code,TextColor3=theme().Text,PlaceholderText='print("hello") -- or moduleName',Font=Enum.Font.Code,TextSize=16,ClearTextOnFocus=false,MultiLine=true,TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top,Parent=Main})
new("UICorner",{Parent=CodeBox,CornerRadius=UDim.new(0,8)})

-- Status
local Status = new("TextLabel",{Size=UDim2.new(0.6,0,0,22),Position=UDim2.new(0,20,0,250),BackgroundTransparency=1,Text="Status: Ready",Font=Enum.Font.Gotham,TextSize=14,TextColor3=theme().SubText,Parent=Main})

-- Buttons (dynamic spacing)
local ButtonContainer = new("Frame",{Size=UDim2.new(1,-40,0,40),Position=UDim2.new(0,20,0,280),BackgroundTransparency=1,Parent=Main})
local buttonTexts = {"Execute","Clear","Console","Insert Sample","Theme"}
local buttonColors = {theme().Btn, theme().Btn2, theme().ConsoleBtn, theme().Btn2, theme().Btn}
local buttonWidths = {150,150,150,120,110}
local buttons = {}
local spacing = 10 -- spacing between buttons
local xPos = 0

for i,txt in ipairs(buttonTexts) do
    local b = new("TextButton",{
        Size = UDim2.new(0, buttonWidths[i], 1, 0),
        Position = UDim2.new(0, xPos, 0, 0),
        Text = txt,
        Font = Enum.Font.GothamBold,
        TextSize = 16,
        TextColor3 = Color3.new(1,1,1),
        BackgroundColor3 = buttonColors[i],
        Parent = ButtonContainer
    })
    new("UICorner",{Parent=b, CornerRadius=UDim.new(0,8)})
    table.insert(buttons, b)
    xPos = xPos + buttonWidths[i] + spacing
end

local Execute, Clear, ConsoleBtn, SampleBtn, ThemeBtn = table.unpack(buttons)

-- Console
local ConsoleFrame = new("Frame",{Size=UDim2.new(0,520,0,220),Position=UDim2.new(0.5,-260,1,20),BackgroundColor3=theme().Code,Visible=false,Parent=gui,Active=true,Draggable=true})
new("UICorner",{Parent=ConsoleFrame,CornerRadius=UDim.new(0,8)})
local ConsoleTitle=new("TextLabel",{Parent=ConsoleFrame,Size=UDim2.new(1,-140,0,28),Position=UDim2.new(0,10,0,6),BackgroundTransparency=1,Text="Somsong Console",Font=Enum.Font.GothamBold,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextColor3=theme().Text})
local ConsoleClose= new("TextButton",{Size=UDim2.new(0,60,0,28),Position=UDim2.new(1,-70,0,6),Text="Close",Font=Enum.Font.GothamBold,TextSize=14,TextColor3=Color3.new(1,1,1),BackgroundColor3=theme().Btn,Parent=ConsoleFrame})
new("UICorner",{Parent=ConsoleClose,CornerRadius=UDim.new(0,6)})
local ConsoleClear= new("TextButton",{Size=UDim2.new(0,90,0,28),Position=UDim2.new(1,-170,0,6),Text="Clear Logs",Font=Enum.Font.GothamBold,TextSize=14,TextColor3=Color3.new(1,1,1),BackgroundColor3=theme().Btn2,Parent=ConsoleFrame})
new("UICorner",{Parent=ConsoleClear,CornerRadius=UDim.new(0,6)})

local ConsoleLog=new("TextBox",{Parent=ConsoleFrame,Size=UDim2.new(1,-20,1,-44),Position=UDim2.new(0,10,0,38),BackgroundColor3=theme().Code,TextColor3=theme().Text,Font=Enum.Font.Code,TextSize=14,Text="",MultiLine=true,ReadOnly=true,ClearTextOnFocus=false,TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top})
new("UICorner",{Parent=ConsoleLog,CornerRadius=UDim.new(0,6)})

local function appendConsole(t) pcall(function() ConsoleLog.Text=ConsoleLog.Text.."\n"..tostring(t) end) end

-- Override print
local old_print = print
print = function(...)
    local out={}
    for i=1,select("#",...) do table.insert(out,tostring(select(i,...))) end
    local line=table.concat(out,"\t")
    appendConsole(line)
    pcall(old_print,"[SomsongConsole] "..line)
end

local consoleVisible=false
local function showConsole()
    if consoleVisible then return end
    ConsoleFrame.Visible=true
    TweenService:Create(ConsoleFrame,TweenInfo.new(0.3),{Position=UDim2.new(0.5,-260,0.5,120)}):Play()
    consoleVisible=true
end
local function hideConsole()
    if not consoleVisible then return end
    TweenService:Create(ConsoleFrame,TweenInfo.new(0.3),{Position=UDim2.new(0.5,-260,1,20)}):Play()
    task.delay(0.3,function() ConsoleFrame.Visible=false end)
    consoleVisible=false
end

-- Theme
local function apply_theme()
    local t=theme()
    Main.BackgroundColor3=t.Main
    Gradient.Color=ColorSequence.new{ColorSequenceKeypoint.new(0,t.Code),ColorSequenceKeypoint.new(1,t.Main)}
    CodeBox.BackgroundColor3=t.Code
    CodeBox.TextColor3=t.Text
    Status.TextColor3=t.SubText
    Title.TextColor3=t.Text
    Execute.BackgroundColor3=t.Btn
    Clear.BackgroundColor3=t.Btn2
    ConsoleBtn.BackgroundColor3=t.ConsoleBtn
    SampleBtn.BackgroundColor3=t.Btn2
    ThemeBtn.BackgroundColor3=t.Btn
    ConsoleFrame.BackgroundColor3=t.Code
    ConsoleLog.BackgroundColor3=t.Code
    ConsoleLog.TextColor3=t.Text
    ConsoleTitle.TextColor3=t.Text
    ConsoleClear.BackgroundColor3=t.Btn2
    ConsoleClose.BackgroundColor3=t.Btn
end

-- Buttons logic
Execute.MouseButton1Click:Connect(function()
    local code=CodeBox.Text
    if not code or code=="" then notify("Nothing to run"); Status.Text="Status: Nothing to run" return end
    Status.Text="Status: Running..."
    local loader=loadstring or load
    local func,err=loader(code)
    if not func then Status.Text="Compile error"; notify("Compile error"); appendConsole(err); return end
    local ok,e=pcall(func)
    if ok then Status.Text="Status: Ran OK"; notify("Executed successfully"); appendConsole("Executed successfully") else Status.Text="Runtime error"; notify("Runtime error"); appendConsole(e) end
end)

Clear.MouseButton1Click:Connect(function() CodeBox.Text=""; Status.Text="Status: Cleared"; notify("Cleared") end)
SampleBtn.MouseButton1Click:Connect(function() CodeBox.Text="print('Hello Somsong!')"; Status.Text="Status: Sample inserted"; notify("Sample inserted") end)
ConsoleBtn.MouseButton1Click:Connect(function() if consoleVisible then hideConsole() else showConsole() end end)
ConsoleClose.MouseButton1Click:Connect(hideConsole)
ConsoleClear.MouseButton1Click:Connect(function()
    ConsoleLog.Text = ""
    appendConsole("Console cleared.")
    notify("Console cleared")
end)

ThemeBtn.MouseButton1Click:Connect(function()
    themeIndex = themeIndex + 1
    if themeIndex > #THEME_ORDER then themeIndex = 1 end
    apply_theme()
    safe_write(THEME_FILE, theme_name())
    Status.Text = "Theme: " .. theme_name()
    notify("Theme changed to " .. theme_name())
end)

-- Initial setup
apply_theme()
appendConsole("Somsong Executor v3.2 loaded. Theme: " .. theme_name())
notify("Somsong Executor v3.3 loaded")

Features & Information

Added: console, insert sample, Toggle Theme.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts