--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")