--[[ ============================================================ SPECTRUM UI LIBRARY | v3.9.5 (Redesigned Modern Dashboard) ============================================================ ]] local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local SoundService = game:GetService("SoundService") local Debris = game:GetService("Debris") local MarketplaceService = game:GetService("MarketplaceService") local StatsService = game:GetService("Stats") local RunService = game:GetService("RunService") local RbxAnalyticsService = game:GetService("RbxAnalyticsService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local ParentGui if gethui then ParentGui = gethui() elseif game:GetService("CoreGui"):FindFirstChild("RobloxGui") then ParentGui = game:GetService("CoreGui") else ParentGui = PlayerGui end --===================================================================== -- TEMALAR --===================================================================== local Themes = { Green = { Background = Color3.fromRGB(10, 18, 14), Secondary = Color3.fromRGB(15, 26, 20), Tertiary = Color3.fromRGB(20, 36, 28), Accent = Color3.fromRGB(46, 204, 113), AccentDark = Color3.fromRGB(30, 140, 80), Text = Color3.fromRGB(225, 245, 235), SubText = Color3.fromRGB(130, 175, 150), Stroke = Color3.fromRGB(25, 60, 40), Danger = Color3.fromRGB(230, 70, 70), }, Dark = { Background = Color3.fromRGB(14, 14, 14), Secondary = Color3.fromRGB(20, 20, 20), Tertiary = Color3.fromRGB(28, 28, 28), Accent = Color3.fromRGB(200, 200, 200), AccentDark = Color3.fromRGB(140, 140, 140), Text = Color3.fromRGB(240, 240, 240), SubText = Color3.fromRGB(150, 150, 150), Stroke = Color3.fromRGB(45, 45, 45), Danger = Color3.fromRGB(220, 60, 60), }, Foggy = { Background = Color3.fromRGB(15, 23, 36), Secondary = Color3.fromRGB(22, 33, 50), Tertiary = Color3.fromRGB(30, 45, 68), Accent = Color3.fromRGB(56, 152, 255), AccentDark = Color3.fromRGB(25, 100, 210), Text = Color3.fromRGB(240, 248, 255), SubText = Color3.fromRGB(150, 180, 215), Stroke = Color3.fromRGB(45, 75, 115), Danger = Color3.fromRGB(240, 70, 85), }, Sun = { Background = Color3.fromRGB(24, 20, 14), Secondary = Color3.fromRGB(36, 28, 18), Tertiary = Color3.fromRGB(48, 38, 24), Accent = Color3.fromRGB(243, 156, 18), AccentDark = Color3.fromRGB(180, 110, 10), Text = Color3.fromRGB(255, 240, 215), SubText = Color3.fromRGB(190, 155, 120), Stroke = Color3.fromRGB(75, 55, 30), Danger = Color3.fromRGB(230, 70, 70), }, Aqua = { Background = Color3.fromRGB(12, 18, 24), Secondary = Color3.fromRGB(18, 26, 36), Tertiary = Color3.fromRGB(24, 34, 48), Accent = Color3.fromRGB(0, 204, 255), AccentDark = Color3.fromRGB(0, 140, 180), Text = Color3.fromRGB(225, 240, 255), SubText = Color3.fromRGB(130, 160, 190), Stroke = Color3.fromRGB(30, 60, 85), Danger = Color3.fromRGB(230, 70, 70), }, Crimson = { Background = Color3.fromRGB(16, 9, 11), Secondary = Color3.fromRGB(26, 14, 16), Tertiary = Color3.fromRGB(34, 18, 21), Accent = Color3.fromRGB(196, 34, 56), AccentDark = Color3.fromRGB(140, 20, 40), Text = Color3.fromRGB(242, 227, 227), SubText = Color3.fromRGB(178, 148, 148), Stroke = Color3.fromRGB(72, 26, 34), Danger = Color3.fromRGB(220, 60, 60), }, Light = { Background = Color3.fromRGB(238, 238, 243), Secondary = Color3.fromRGB(222, 222, 229), Tertiary = Color3.fromRGB(208, 208, 217), Accent = Color3.fromRGB(65, 105, 225), AccentDark = Color3.fromRGB(45, 80, 185), Text = Color3.fromRGB(20, 20, 24), SubText = Color3.fromRGB(90, 90, 100), Stroke = Color3.fromRGB(190, 190, 200), Danger = Color3.fromRGB(200, 50, 50), }, } --===================================================================== -- SES EFEKTLERİ & YARDIMCI FONKSİYONLAR --===================================================================== local Sounds = { Click = "rbxassetid://140207837688369", Hover = "rbxassetid://720166642", Toggle = "rbxassetid://140207837688369", Notify = "rbxassetid://112486094040833", Error = "rbxassetid://133843340754810", Success = "rbxassetid://140207837688369", } local function PlaySound(id, volume) pcall(function() local s = Instance.new("Sound") s.SoundId = id s.Volume = volume or 0.4 s.Parent = SoundService s:Play() Debris:AddItem(s, 3) end) end local function Create(class, props, children) local inst = Instance.new(class) for k, v in pairs(props or {}) do inst[k] = v end for _, c in ipairs(children or {}) do c.Parent = inst end return inst end local function Tween(obj, props, time, style, dir) local tw = TweenService:Create(obj, TweenInfo.new(time or 0.2, style or Enum.EasingStyle.Quad, dir or Enum.EasingDirection.Out), props) tw:Play() return tw end local function Stroke(parent, color, thickness, transparency) return Create("UIStroke", { Color = color, Thickness = thickness or 1, Transparency = transparency or 0, Parent = parent }) end local function Pad(parent, l, t, r, b) return Create("UIPadding", { PaddingLeft = UDim.new(0, l or 0), PaddingTop = UDim.new(0, t or 0), PaddingRight = UDim.new(0, r or 0), PaddingBottom = UDim.new(0, b or 0), Parent = parent, }) end local function ClickBounce(obj) local orig = obj.Size Tween(obj, { Size = orig - UDim2.new(0, 4, 0, 2) }, 0.07) task.delay(0.07, function() if obj and obj.Parent then Tween(obj, { Size = orig }, 0.14, Enum.EasingStyle.Back) end end) end local function CopyToClipboard(text) if setclipboard then setclipboard(tostring(text)) return true elseif toclipboard then toclipboard(tostring(text)) return true end return false end local function MakeDraggable(frame, handle) local dragging, dragInput, dragStart, startPos handle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) handle.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end local LABEL_WIDTH = 140 local CONTROL_X = 152 local CONTROL_RIGHT_PAD = 12 --===================================================================== -- ANA KÜTÜPHANE --===================================================================== local Spectrum = {} Spectrum.__index = Spectrum function Spectrum:AddWindow(config) config = config or {} local WindowName = config.Name or "Spectrum" local ThemeName = config.Theme or "Aqua" local ToggleKeybind = config.ToggleKeybind or Enum.KeyCode.RightControl local WindowSize = config.Size or UDim2.new(0, 760, 0, 540) local GlobalNotifications = (config.Notifications == nil) and true or config.Notifications local KeySystemCfg = config.KeySystem or { Enabled = false } local ToggleButtonEnabled = (config.ToggleButton == nil) and true or config.ToggleButton local ShowControlPanel = (config.ControlPanel == nil) and true or config.ControlPanel local Theme = Themes[ThemeName] or Themes.Aqua local Window = {} Window.__index = Window Window.Theme = ThemeName Window.CurrentThemeData = Theme Window.Tabs = {} Window.ToggleKeybind = ToggleKeybind Window.GlobalNotifications = GlobalNotifications Window.Open = true Window.Minimized = false Window.Authenticated = not KeySystemCfg.Enabled local ThemeRegistry = {} local ThemeCallbacks = {} local function Themed(instance, property, colorKey) table.insert(ThemeRegistry, { Instance = instance, Property = property, Key = colorKey }) return instance end local function OnThemeChange(fn) table.insert(ThemeCallbacks, fn) end local function CreateBaseElement(parent, height) local Frame = Create("Frame", { Size = UDim2.new(1, 0, 0, height or 38), BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.06, BorderSizePixel = 0, Parent = parent, }) Themed(Frame, "BackgroundColor3", "Tertiary") Themed(Stroke(Frame, Theme.Stroke, 1, 0.3), "Color", "Stroke") Themed(Create("Frame", { Size = UDim2.new(0, 3, 1, 0), BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.1, BorderSizePixel = 0, Parent = Frame, }), "BackgroundColor3", "Accent") return Frame end local ScreenGui = Create("ScreenGui", { Name = "SpectrumUI", ResetOnSpawn = false, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, Parent = ParentGui, }) Window.ScreenGui = ScreenGui if syn and syn.protect_gui then syn.protect_gui(ScreenGui) end local Main = Create("Frame", { Name = "Main", Size = WindowSize, Position = UDim2.new(0.5, -WindowSize.X.Offset / 2, 0.5, -WindowSize.Y.Offset / 2), BackgroundColor3 = Theme.Background, BackgroundTransparency = 0.25, BorderSizePixel = 0, Visible = false, Parent = ScreenGui, }) Themed(Main, "BackgroundColor3", "Background") Themed(Stroke(Main, Theme.Stroke, 1.5, 0.15), "Color", "Stroke") Window.Main = Main local TopBar = Create("Frame", { Name = "TopBar", Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Theme.Secondary, BackgroundTransparency = 0.15, BorderSizePixel = 0, ZIndex = 10, Parent = Main, }) Themed(TopBar, "BackgroundColor3", "Secondary") Themed(Create("Frame", { Size = UDim2.new(1, 0, 0, 2), Position = UDim2.new(0, 0, 1, -2), BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.2, BorderSizePixel = 0, ZIndex = 11, Parent = TopBar, }), "BackgroundColor3", "Accent") Themed(Create("TextLabel", { Name = "Title", Size = UDim2.new(0, 220, 1, 0), Position = UDim2.new(0, 14, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = WindowName, TextColor3 = Theme.Text, TextSize = 15, TextXAlignment = Enum.TextXAlignment.Left, ZIndex = 11, Parent = TopBar, }), "TextColor3", "Text") local CloseButton = Create("TextButton", { Name = "CloseButton", Size = UDim2.new(0, 28, 0, 26), Position = UDim2.new(1, -34, 0.5, -13), BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.1, Text = "X", Font = Enum.Font.GothamBold, TextSize = 13, TextColor3 = Theme.Text, AutoButtonColor = false, ZIndex = 12, Parent = TopBar, }) Themed(CloseButton, "BackgroundColor3", "Tertiary") Themed(CloseButton, "TextColor3", "Text") Themed(Stroke(CloseButton, Theme.Stroke, 1, 0.4), "Color", "Stroke") local MinimizeButton = Create("TextButton", { Name = "MinimizeButton", Size = UDim2.new(0, 28, 0, 26), Position = UDim2.new(1, -66, 0.5, -13), BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.1, Text = "-", Font = Enum.Font.GothamBold, TextSize = 15, TextColor3 = Theme.Text, AutoButtonColor = false, ZIndex = 12, Parent = TopBar, }) Themed(MinimizeButton, "BackgroundColor3", "Tertiary") Themed(MinimizeButton, "TextColor3", "Text") Themed(Stroke(MinimizeButton, Theme.Stroke, 1, 0.4), "Color", "Stroke") CloseButton.MouseEnter:Connect(function() Tween(CloseButton, { BackgroundColor3 = Theme.Danger, BackgroundTransparency = 0.15 }, 0.12) end) CloseButton.MouseLeave:Connect(function() Tween(CloseButton, { BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.1 }, 0.12) end) MinimizeButton.MouseEnter:Connect(function() Tween(MinimizeButton, { BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.15 }, 0.12) end) MinimizeButton.MouseLeave:Connect(function() Tween(MinimizeButton, { BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.1 }, 0.12) end) MakeDraggable(Main, TopBar) local TabList = Create("Frame", { Name = "TabList", Size = UDim2.new(0, 150, 1, -48), Position = UDim2.new(0, 6, 0, 44), BackgroundColor3 = Theme.Secondary, BackgroundTransparency = 0.2, BorderSizePixel = 0, Parent = Main, }) Themed(TabList, "BackgroundColor3", "Secondary") Themed(Stroke(TabList, Theme.Stroke, 1, 0.45), "Color", "Stroke") Create("UIListLayout", { Padding = UDim.new(0, 4), SortOrder = Enum.SortOrder.LayoutOrder, Parent = TabList }) Pad(TabList, 6, 6, 6, 6) local ContentArea = Create("Frame", { Name = "ContentArea", Size = UDim2.new(1, -168, 1, -48), Position = UDim2.new(0, 162, 0, 44), BackgroundTransparency = 1, Parent = Main, }) Window.ContentArea = ContentArea local Overlay = Create("Frame", { Name = "Overlay", Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, ZIndex = 50, Parent = Main, }) local OpenCatchers = {} local function ClosePopup(panel) panel.Visible = false if OpenCatchers[panel] then OpenCatchers[panel]:Destroy() OpenCatchers[panel] = nil end end local function OpenPopup(panel, targetButton, gapY, fixedWidth, align) local absPos = targetButton.AbsolutePosition local absSize = targetButton.AbsoluteSize local mainPos = Main.AbsolutePosition local width = fixedWidth or absSize.X local relX = absPos.X - mainPos.X if align == "right" then relX = (relX + absSize.X) - width end panel.Position = UDim2.new(0, relX, 0, (absPos.Y - mainPos.Y) + absSize.Y + (gapY or 4)) panel.Size = UDim2.new(0, width, panel.Size.Y.Scale, panel.Size.Y.Offset) panel.Visible = true if OpenCatchers[panel] then OpenCatchers[panel]:Destroy() OpenCatchers[panel] = nil end local Catcher = Create("TextButton", { Name = "Catcher", Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = "", AutoButtonColor = false, ZIndex = panel.ZIndex - 1, Parent = Overlay, }) OpenCatchers[panel] = Catcher Catcher.MouseButton1Click:Connect(function() ClosePopup(panel) end) end Themed(Create("TextLabel", { Size = UDim2.new(0, 110, 0, 14), Position = UDim2.new(1, -118, 1, -16), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = "Spectrum v3.9.5", TextColor3 = Theme.SubText, TextTransparency = 0.3, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Right, Parent = Main, }), "TextColor3", "SubText") local NotifyHolder = Create("Frame", { Name = "NotifyHolder", AnchorPoint = Vector2.new(1, 1), Size = UDim2.new(0, 260, 0, 480), Position = UDim2.new(1, -16, 1, -16), BackgroundTransparency = 1, Parent = ScreenGui, }) Create("UIListLayout", { Padding = UDim.new(0, 8), SortOrder = Enum.SortOrder.LayoutOrder, VerticalAlignment = Enum.VerticalAlignment.Bottom, HorizontalAlignment = Enum.HorizontalAlignment.Right, Parent = NotifyHolder, }) Window.NotifyHolder = NotifyHolder local ToggleButton = Create("TextButton", { Name = "ToggleButton", Size = UDim2.new(0, 38, 0, 38), Position = UDim2.new(0, 20, 0, 20), BackgroundColor3 = Theme.Background, BackgroundTransparency = 0.2, Text = "", AutoButtonColor = false, Visible = ToggleButtonEnabled, Parent = ScreenGui, }) Themed(ToggleButton, "BackgroundColor3", "Background") Themed(Stroke(ToggleButton, Theme.Accent, 1.5, 0.2), "Color", "Accent") local InnerDot = Create("Frame", { Size = UDim2.new(0, 12, 0, 12), Position = UDim2.new(0.5, -6, 0.5, -6), BackgroundColor3 = Theme.Accent, BorderSizePixel = 0, Parent = ToggleButton, }) Themed(InnerDot, "BackgroundColor3", "Accent") Create("UICorner", { CornerRadius = UDim.new(1, 0), Parent = InnerDot }) MakeDraggable(ToggleButton, ToggleButton) function Window:Show() if not Window.Authenticated then return end Window.Open = true Main.Visible = true local targetSize = Window.Minimized and UDim2.new(WindowSize.X.Scale, WindowSize.X.Offset, 0, 38) or WindowSize Main.Size = UDim2.new(targetSize.X.Scale, targetSize.X.Offset * 0.9, targetSize.Y.Scale, targetSize.Y.Offset * 0.9) Tween(Main, { Size = targetSize }, 0.22, Enum.EasingStyle.Back) end function Window:Close() if not Window.Authenticated then return end Window.Open = false local currentSize = Main.Size local tw = Tween(Main, { Size = UDim2.new(currentSize.X.Scale, currentSize.X.Offset * 0.9, currentSize.Y.Scale, currentSize.Y.Offset * 0.9) }, 0.15) tw.Completed:Connect(function() if not Window.Open then Main.Visible = false end end) end function Window:Destroy() Window.Open = false if ScreenGui and ScreenGui.Parent then ScreenGui:Destroy() end end function Window:Toggle() if not Window.Authenticated then return end if Window.Open then Window:Close() else Window:Show() end end CloseButton.MouseButton1Click:Connect(function() ClickBounce(CloseButton) PlaySound(Sounds.Click, 0.3) Window:Destroy() end) MinimizeButton.MouseButton1Click:Connect(function() ClickBounce(MinimizeButton) PlaySound(Sounds.Click, 0.3) Window.Minimized = not Window.Minimized if Window.Minimized then TabList.Visible = false ContentArea.Visible = false Tween(Main, { Size = UDim2.new(WindowSize.X.Scale, WindowSize.X.Offset, 0, 38) }, 0.22) else Tween(Main, { Size = WindowSize }, 0.22, Enum.EasingStyle.Back) task.delay(0.1, function() if not Window.Minimized then TabList.Visible = true ContentArea.Visible = true end end) end end) ToggleButton.MouseButton1Click:Connect(function() ClickBounce(ToggleButton) PlaySound(Sounds.Click, 0.3) Window:Toggle() end) UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Window.ToggleKeybind then Window:Toggle() end end) function Window:SetToggleKeybind(keyCode) Window.ToggleKeybind = keyCode end function Window:SetTheme(newThemeName) local t = Themes[newThemeName] if not t then return end Theme = t Window.Theme = newThemeName Window.CurrentThemeData = t for _, entry in ipairs(ThemeRegistry) do if entry.Instance and entry.Instance.Parent then entry.Instance[entry.Property] = t[entry.Key] end end for _, cb in ipairs(ThemeCallbacks) do pcall(cb, t) end for _, tb in ipairs(Window.Tabs) do if tb.Page.Visible then tb.Button.BackgroundColor3 = t.Accent tb.Button.BackgroundTransparency = 0.1 tb.Label.TextColor3 = Color3.new(1, 1, 1) else tb.Button.BackgroundColor3 = t.Tertiary tb.Button.BackgroundTransparency = 0.35 tb.Label.TextColor3 = t.SubText end end end function Window:Notify(config2) config2 = config2 or {} if Window.GlobalNotifications == false then return end local Title = config2.Title or "Bildirim" local Content = config2.Content or "" local Duration = config2.Duration or 3 local SlideContainer = Create("Frame", { Size = UDim2.new(1, 0, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, ClipsDescendants = true, Parent = NotifyHolder, }) local NotifFrame = Create("Frame", { Size = UDim2.new(1, 0, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, Position = UDim2.new(1.4, 0, 0, 0), BackgroundColor3 = Theme.Secondary, BackgroundTransparency = 0.25, BorderSizePixel = 0, Parent = SlideContainer, }) Themed(NotifFrame, "BackgroundColor3", "Secondary") Themed(Stroke(NotifFrame, Theme.Accent, 1, 0.3), "Color", "Accent") Pad(NotifFrame, 12, 10, 12, 10) local NotifLine = Create("Frame", { Size = UDim2.new(1, 0, 0, 2), BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.1, BorderSizePixel = 0, Parent = NotifFrame, }) Themed(NotifLine, "BackgroundColor3", "Accent") Create("UIListLayout", { Padding = UDim.new(0, 4), SortOrder = Enum.SortOrder.LayoutOrder, Parent = NotifFrame, }) local NotifTitle = Create("TextLabel", { Size = UDim2.new(1, 0, 0, 18), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = Title, TextColor3 = Theme.Text, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, Parent = NotifFrame, }) Themed(NotifTitle, "TextColor3", "Text") local NotifContent = Create("TextLabel", { Size = UDim2.new(1, 0, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, Font = Enum.Font.GothamMedium, Text = Content, TextColor3 = Theme.SubText, TextSize = 12, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left, Parent = NotifFrame, }) Themed(NotifContent, "TextColor3", "SubText") PlaySound(Sounds.Notify, 0.35) Tween(NotifFrame, { Position = UDim2.new(0, 0, 0, 0) }, 0.35, Enum.EasingStyle.Back) task.delay(Duration, function() if NotifFrame and NotifFrame.Parent then local tw = Tween(NotifFrame, { Position = UDim2.new(1.4, 0, 0, 0) }, 0.25, Enum.EasingStyle.Quart) tw.Completed:Connect(function() if SlideContainer and SlideContainer.Parent then SlideContainer:Destroy() end end) end end) end local function DoNotify(elementNotifSetting, title, content) local shouldNotify = elementNotifSetting if shouldNotify == nil then shouldNotify = true end if shouldNotify and Window.GlobalNotifications then Window:Notify({ Title = title, Content = content, Duration = 2.5 }) end end --===================================================================== -- KEY LOGIN SCREEN --===================================================================== if KeySystemCfg.Enabled then local KeyOverlay = Create("Frame", { Name = "KeyOverlay", Size = UDim2.new(1, 0, 1, 0), BackgroundColor3 = Color3.fromRGB(5, 5, 5), BackgroundTransparency = 0.35, ZIndex = 100, Parent = ScreenGui, }) local KeyScreen = Create("Frame", { Name = "KeyScreen", Size = UDim2.new(0, 380, 0, 280), Position = UDim2.new(0.5, -190, 0.5, -140), BackgroundColor3 = Theme.Background, BackgroundTransparency = 0.05, BorderSizePixel = 0, ZIndex = 101, Parent = KeyOverlay, }) Themed(KeyScreen, "BackgroundColor3", "Background") Themed(Stroke(KeyScreen, Theme.Accent, 1.5, 0.1), "Color", "Accent") Pad(KeyScreen, 22, 20, 22, 20) MakeDraggable(KeyScreen, KeyScreen) Themed(Create("TextLabel", { Size = UDim2.new(1, 0, 0, 26), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = KeySystemCfg.Title or "SPECTRUM AUTHENTICATION", TextColor3 = Theme.Text, TextSize = 16, ZIndex = 102, TextXAlignment = Enum.TextXAlignment.Center, Parent = KeyScreen, }), "TextColor3", "Text") Themed(Create("TextLabel", { Size = UDim2.new(1, 0, 0, 20), Position = UDim2.new(0, 0, 0, 28), BackgroundTransparency = 1, Font = Enum.Font.GothamMedium, Text = KeySystemCfg.Note or "Lütfen devam etmek için bilgilerinizi giriniz.", TextColor3 = Theme.SubText, TextSize = 12, ZIndex = 102, TextXAlignment = Enum.TextXAlignment.Center, Parent = KeyScreen, }), "TextColor3", "SubText") local UserBoxFrame = Create("Frame", { Size = UDim2.new(1, 0, 0, 38), Position = UDim2.new(0, 0, 0, 64), BackgroundColor3 = Theme.Secondary, ZIndex = 102, Parent = KeyScreen, }) Themed(UserBoxFrame, "BackgroundColor3", "Secondary") Themed(Stroke(UserBoxFrame, Theme.Stroke, 1, 0.3), "Color", "Stroke") Themed(Create("TextLabel", { Size = UDim2.new(0, 28, 1, 0), BackgroundTransparency = 1, Font = Enum.Font.Gotham, Text = "👤", TextSize = 14, ZIndex = 103, Parent = UserBoxFrame, })) local UserInput = Create("TextBox", { Size = UDim2.new(1, -34, 1, 0), Position = UDim2.new(0, 30, 0, 0), BackgroundTransparency = 1, Text = "", PlaceholderText = "Kullanıcı Adı...", Font = Enum.Font.GothamMedium, TextSize = 12, TextColor3 = Theme.Text, PlaceholderColor3 = Theme.SubText, ClearTextOnFocus = false, ZIndex = 103, TextXAlignment = Enum.TextXAlignment.Left, Parent = UserBoxFrame, }) Themed(UserInput, "TextColor3", "Text") Themed(UserInput, "PlaceholderColor3", "SubText") local PassBoxFrame = Create("Frame", { Size = UDim2.new(1, 0, 0, 38), Position = UDim2.new(0, 0, 0, 112), BackgroundColor3 = Theme.Secondary, ZIndex = 102, Parent = KeyScreen, }) Themed(PassBoxFrame, "BackgroundColor3", "Secondary") Themed(Stroke(PassBoxFrame, Theme.Stroke, 1, 0.3), "Color", "Stroke") Themed(Create("TextLabel", { Size = UDim2.new(0, 28, 1, 0), BackgroundTransparency = 1, Font = Enum.Font.Gotham, Text = "🔑", TextSize = 14, ZIndex = 103, Parent = PassBoxFrame, })) local PassInput = Create("TextBox", { Size = UDim2.new(1, -34, 1, 0), Position = UDim2.new(0, 30, 0, 0), BackgroundTransparency = 1, Text = "", PlaceholderText = "Şifre / Key...", Font = Enum.Font.GothamMedium, TextSize = 12, TextColor3 = Theme.Text, PlaceholderColor3 = Theme.SubText, ClearTextOnFocus = false, ZIndex = 103, TextXAlignment = Enum.TextXAlignment.Left, Parent = PassBoxFrame, }) Themed(PassInput, "TextColor3", "Text") Themed(PassInput, "PlaceholderColor3", "SubText") local SubmitBtn = Create("TextButton", { Size = UDim2.new(1, 0, 0, 40), Position = UDim2.new(0, 0, 0, 168), BackgroundColor3 = Theme.Accent, Text = "GİRİŞ YAP", Font = Enum.Font.GothamBold, TextSize = 13, TextColor3 = Color3.new(1, 1, 1), AutoButtonColor = false, ZIndex = 102, Parent = KeyScreen, }) Themed(SubmitBtn, "BackgroundColor3", "Accent") Themed(Stroke(SubmitBtn, Theme.Stroke, 1, 0.3), "Color", "Stroke") SubmitBtn.MouseEnter:Connect(function() Tween(SubmitBtn, { BackgroundTransparency = 0.2 }, 0.15) end) SubmitBtn.MouseLeave:Connect(function() Tween(SubmitBtn, { BackgroundTransparency = 0 }, 0.15) end) SubmitBtn.MouseButton1Click:Connect(function() ClickBounce(SubmitBtn) PlaySound(Sounds.Click, 0.3) local enteredUser = UserInput.Text local enteredPass = PassInput.Text local success = false for _, account in ipairs(KeySystemCfg.Users or {}) do if account.User == enteredUser and account.Pass == enteredPass then success = true break end end if success then Window.Authenticated = true PlaySound(Sounds.Success, 0.4) Tween(KeyScreen, { Size = UDim2.new(0, 0, 0, 0), Position = UDim2.new(0.5, 0, 0.5, 0) }, 0.25, Enum.EasingStyle.Back, Enum.EasingDirection.In) Tween(KeyOverlay, { BackgroundTransparency = 1 }, 0.25) task.delay(0.25, function() KeyOverlay:Destroy() Window:Show() end) else PlaySound(Sounds.Error, 0.4) PassInput.Text = "" PassInput.PlaceholderText = "Hatalı Bilgi!" Tween(PassBoxFrame, { BackgroundColor3 = Theme.Danger }, 0.15) task.delay(0.5, function() Tween(PassBoxFrame, { BackgroundColor3 = Theme.Secondary }, 0.2) end) end end) else task.delay(0.1, function() Window:Show() end) end function Window:AddTab(tabName, twoColumnMode) tabName = tabName or "Tab" twoColumnMode = twoColumnMode or false local Tab = {} Tab.Sections = {} Tab.TwoColumnMode = twoColumnMode local TabButton = Create("TextButton", { Size = UDim2.new(1, 0, 0, 34), BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.35, Text = "", AutoButtonColor = false, Parent = TabList, }) Themed(TabButton, "BackgroundColor3", "Tertiary") Themed(Stroke(TabButton, Theme.Stroke, 1, 0.55), "Color", "Stroke") local TabLabel = Create("TextLabel", { Size = UDim2.new(1, -10, 1, 0), Position = UDim2.new(0, 10, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = tabName, TextColor3 = Theme.SubText, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, Parent = TabButton, }) Themed(TabLabel, "TextColor3", "SubText") local Page = Create("ScrollingFrame", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 3, ScrollBarImageColor3 = Theme.Accent, CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = false, Parent = ContentArea, }) Themed(Page, "ScrollBarImageColor3", "Accent") local LayoutContainer, LeftColumn, RightColumn if twoColumnMode then LayoutContainer = Create("Frame", { Name = "LayoutContainer", Size = UDim2.new(1, 0, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, BorderSizePixel = 0, Parent = Page, }) Create("UIListLayout", { FillDirection = Enum.FillDirection.Horizontal, HorizontalAlignment = Enum.HorizontalAlignment.Center, VerticalAlignment = Enum.VerticalAlignment.Top, Padding = UDim.new(0, 8), SortOrder = Enum.SortOrder.LayoutOrder, Parent = LayoutContainer, }) LeftColumn = Create("Frame", { Name = "LeftColumn", Size = UDim2.new(0.49, -4, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, BorderSizePixel = 0, Parent = LayoutContainer, }) Create("UIListLayout", { Padding = UDim.new(0, 10), SortOrder = Enum.SortOrder.LayoutOrder, Parent = LeftColumn, }) RightColumn = Create("Frame", { Name = "RightColumn", Size = UDim2.new(0.49, -4, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, BorderSizePixel = 0, Parent = LayoutContainer, }) Create("UIListLayout", { Padding = UDim.new(0, 10), SortOrder = Enum.SortOrder.LayoutOrder, Parent = RightColumn, }) end Create("UIListLayout", { Padding = UDim.new(0, 10), SortOrder = Enum.SortOrder.LayoutOrder, Parent = Page, }) Pad(Page, 0, 0, 6, 10) Tab.Button = TabButton Tab.Label = TabLabel Tab.Page = Page Tab.LayoutContainer = LayoutContainer Tab.LeftColumn = LeftColumn Tab.RightColumn = RightColumn local function SelectTab() for _, t in pairs(Window.Tabs) do t.Page.Visible = false Tween(t.Button, { BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.35 }, 0.15) t.Label.TextColor3 = Theme.SubText end Page.Visible = true Tween(TabButton, { BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.1 }, 0.15) TabLabel.TextColor3 = Color3.new(1, 1, 1) end TabButton.MouseButton1Click:Connect(function() PlaySound(Sounds.Click, 0.25) SelectTab() end) table.insert(Window.Tabs, Tab) if #Window.Tabs == 1 then SelectTab() end function Tab:AddSection(sectionName, alignment) sectionName = sectionName or "Section" alignment = alignment or "Single" local Section = {} local parentContainer if twoColumnMode then if alignment == "Right" then parentContainer = RightColumn elseif alignment == "Left" then parentContainer = LeftColumn else parentContainer = Page end else parentContainer = Page end local SectionOuter = Create("Frame", { Size = UDim2.new(1, (parentContainer == Page and -6 or 0), 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundColor3 = Theme.Secondary, BackgroundTransparency = 0.12, BorderSizePixel = 0, Parent = parentContainer, }) Section.Instance = SectionOuter Themed(SectionOuter, "BackgroundColor3", "Secondary") Themed(Stroke(SectionOuter, Theme.Stroke, 1.5, 0.4), "Color", "Stroke") Themed(Create("TextLabel", { Size = UDim2.new(1, -20, 0, 26), Position = UDim2.new(0, 12, 0, 6), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = sectionName, TextColor3 = Theme.Accent, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, Parent = SectionOuter, }), "TextColor3", "Accent") Themed(Create("Frame", { Size = UDim2.new(1, -24, 0, 1), Position = UDim2.new(0, 12, 0, 32), BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.6, BorderSizePixel = 0, Parent = SectionOuter, }), "BackgroundColor3", "Accent") local ElementHolder = Create("Frame", { Size = UDim2.new(1, -20, 0, 0), Position = UDim2.new(0, 10, 0, 38), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, BorderSizePixel = 0, Parent = SectionOuter, }) Create("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, Parent = ElementHolder, }) Pad(SectionOuter, 0, 0, 0, 10) local function BaseElement(height) return CreateBaseElement(ElementHolder, height) end local function NameLabel(parent, text) return Themed(Create("TextLabel", { Size = UDim2.new(0, LABEL_WIDTH, 1, 0), Position = UDim2.new(0, 12, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = text, TextColor3 = Theme.Text, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, Parent = parent, }), "TextColor3", "Text") end function Section:AddButton(cfg) cfg = cfg or {} local Name = cfg.Name or "Button" local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local Frame = BaseElement(38) local Btn = Create("TextButton", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = "", AutoButtonColor = false, Parent = Frame, }) local BtnLabel = Create("TextLabel", { Size = UDim2.new(1, -20, 1, 0), Position = UDim2.new(0, 12, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = Name, TextColor3 = Theme.Text, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, Parent = Frame, }) Themed(BtnLabel, "TextColor3", "Text") local function TriggerButton() ClickBounce(Frame) Tween(Frame, { BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.05 }, 0.1) task.delay(0.15, function() if Frame and Frame.Parent then Tween(Frame, { BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.06 }, 0.2) end end) PlaySound(Sounds.Click, 0.4) DoNotify(Notifications, "Button Tetiklendi", Name .. " butonuna basıldı.") task.spawn(Callback) end Btn.MouseEnter:Connect(function() Tween(Frame, { BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.55 }, 0.15) end) Btn.MouseLeave:Connect(function() Tween(Frame, { BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.06 }, 0.15) end) Btn.MouseButton1Click:Connect(TriggerButton) local API = { Instance = Frame } function API:AddKeybind(keyName) local keyCode = Enum.KeyCode[keyName] or Enum.KeyCode.Unknown local Listening = false BtnLabel.Size = UDim2.new(1, -70, 1, 0) local KeyBtn = Create("TextButton", { Size = UDim2.new(0, 50, 0, 22), Position = UDim2.new(1, -56, 0.5, -11), BackgroundColor3 = Theme.Secondary, Text = keyCode.Name, Font = Enum.Font.GothamBold, TextSize = 11, TextColor3 = Theme.Text, AutoButtonColor = false, Parent = Frame, }) Themed(KeyBtn, "BackgroundColor3", "Secondary") Themed(KeyBtn, "TextColor3", "Text") Themed(Stroke(KeyBtn, Theme.Stroke, 1, 0.3), "Color", "Stroke") KeyBtn.MouseButton1Click:Connect(function() if Listening then return end Listening = true KeyBtn.Text = "..." PlaySound(Sounds.Click, 0.3) local conn conn = UserInputService.InputBegan:Connect(function(input, processed) if input.UserInputType == Enum.UserInputType.Keyboard then keyCode = input.KeyCode KeyBtn.Text = keyCode.Name Listening = false DoNotify(Notifications, "Keybind Ayarlandı", Name .. " -> " .. keyCode.Name) conn:Disconnect() end end) end) UserInputService.InputBegan:Connect(function(input, processed) if processed or Listening then return end if input.KeyCode == keyCode and keyCode ~= Enum.KeyCode.Unknown then TriggerButton() end end) end return API end function Section:AddToggle(cfg) cfg = cfg or {} local Name = cfg.Name or "Toggle" local Default = cfg.Default or false local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local State = Default local Frame = BaseElement(38) local Btn = Create("TextButton", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = "", AutoButtonColor = false, Parent = Frame, }) Themed(Create("TextLabel", { Size = UDim2.new(1, -70, 1, 0), Position = UDim2.new(0, 12, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = Name, TextColor3 = Theme.Text, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, Parent = Frame, }), "TextColor3", "Text") local SwitchBG = Create("Frame", { Size = UDim2.new(0, 44, 0, 22), Position = UDim2.new(1, -54, 0.5, -11), BackgroundColor3 = State and Theme.Accent or Theme.Stroke, BorderSizePixel = 0, Parent = Frame, }) local SwitchStroke = Stroke(SwitchBG, Theme.Stroke, 1, 0.4) Themed(SwitchStroke, "Color", "Stroke") local Knob = Create("Frame", { Size = UDim2.new(0, 18, 0, 18), Position = State and UDim2.new(1, -20, 0.5, -9) or UDim2.new(0, 2, 0.5, -9), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, Parent = SwitchBG, }) local function UpdateVisual() Tween(SwitchBG, { BackgroundColor3 = State and Theme.Accent or Theme.Stroke }, 0.18) Tween(Knob, { Position = State and UDim2.new(1, -20, 0.5, -9) or UDim2.new(0, 2, 0.5, -9) }, 0.18, Enum.EasingStyle.Quart) end OnThemeChange(function() UpdateVisual() end) local function ToggleState() State = not State ClickBounce(SwitchBG) UpdateVisual() PlaySound(Sounds.Toggle, 0.4) DoNotify(Notifications, "Toggle Tetiklendi", Name .. " -> " .. tostring(State)) task.spawn(Callback, State) end Btn.MouseButton1Click:Connect(ToggleState) local API = { Instance = Frame } function API:Set(value) State = value UpdateVisual() task.spawn(Callback, State) end function API:Get() return State end function API:AddKeybind(keyName) local keyCode = Enum.KeyCode[keyName] or Enum.KeyCode.Unknown local Listening = false local KeyBtn = Create("TextButton", { Size = UDim2.new(0, 50, 0, 22), Position = UDim2.new(1, -110, 0.5, -11), BackgroundColor3 = Theme.Secondary, Text = keyCode.Name, Font = Enum.Font.GothamBold, TextSize = 11, TextColor3 = Theme.Text, AutoButtonColor = false, Parent = Frame, }) Themed(KeyBtn, "BackgroundColor3", "Secondary") Themed(KeyBtn, "TextColor3", "Text") Themed(Stroke(KeyBtn, Theme.Stroke, 1, 0.3), "Color", "Stroke") KeyBtn.MouseButton1Click:Connect(function() if Listening then return end Listening = true KeyBtn.Text = "..." PlaySound(Sounds.Click, 0.3) local conn conn = UserInputService.InputBegan:Connect(function(input, processed) if input.UserInputType == Enum.UserInputType.Keyboard then keyCode = input.KeyCode KeyBtn.Text = keyCode.Name Listening = false DoNotify(Notifications, "Keybind Ayarlandı", Name .. " -> " .. keyCode.Name) conn:Disconnect() end end) end) UserInputService.InputBegan:Connect(function(input, processed) if processed or Listening then return end if input.KeyCode == keyCode and keyCode ~= Enum.KeyCode.Unknown then ToggleState() end end) end if Default then task.spawn(Callback, State) end return API end function Section:AddKeybind(cfg) cfg = cfg or {} local Name = cfg.Name or "Keybind" local Default = cfg.Default or Enum.KeyCode.Unknown local Mode = cfg.Mode or "Button" local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local CurrentKey = Default local Listening = false local ToggleState = false local Frame = BaseElement(38) NameLabel(Frame, Name) local StateIndicator = nil if Mode == "Toggle" then StateIndicator = Create("Frame", { Size = UDim2.new(0, 10, 0, 10), Position = UDim2.new(1, -120, 0.5, -5), BackgroundColor3 = Theme.Stroke, BorderSizePixel = 0, Parent = Frame, }) Stroke(StateIndicator, Theme.Stroke, 1, 0) end local KeyBtn = Create("TextButton", { Size = UDim2.new(0, 95, 0, 24), Position = UDim2.new(1, -104, 0.5, -12), BackgroundColor3 = Theme.Secondary, Text = CurrentKey.Name, Font = Enum.Font.GothamBold, TextSize = 11, TextColor3 = Theme.Text, AutoButtonColor = false, Parent = Frame, }) Themed(KeyBtn, "BackgroundColor3", "Secondary") Themed(KeyBtn, "TextColor3", "Text") Themed(Stroke(KeyBtn, Theme.Stroke, 1, 0.3), "Color", "Stroke") KeyBtn.MouseButton1Click:Connect(function() if Listening then return end Listening = true KeyBtn.Text = "..." PlaySound(Sounds.Click, 0.3) local conn conn = UserInputService.InputBegan:Connect(function(input, processed) if input.UserInputType == Enum.UserInputType.Keyboard then CurrentKey = input.KeyCode KeyBtn.Text = CurrentKey.Name Listening = false DoNotify(Notifications, "Keybind Ayarlandı", Name .. " -> " .. CurrentKey.Name) conn:Disconnect() end end) end) UserInputService.InputBegan:Connect(function(input, processed) if processed or Listening then return end if input.KeyCode == CurrentKey and CurrentKey ~= Enum.KeyCode.Unknown then ClickBounce(KeyBtn) if Mode == "Toggle" then ToggleState = not ToggleState if StateIndicator then Tween(StateIndicator, { BackgroundColor3 = ToggleState and Theme.Accent or Theme.Stroke }, 0.15) end DoNotify(Notifications, "Keybind Tetiklendi", Name .. " (Toggle) -> " .. tostring(ToggleState)) task.spawn(Callback, ToggleState) else DoNotify(Notifications, "Keybind Tetiklendi", Name .. " (" .. CurrentKey.Name .. ") tetiklendi.") task.spawn(Callback) end end end) local API = { Instance = Frame } function API:Set(keyCode) CurrentKey = keyCode KeyBtn.Text = keyCode.Name end function API:Get() return CurrentKey end return API end function Section:AddSlider(cfg) cfg = cfg or {} local Name = cfg.Name or "Slider" local Min = cfg.Min or 0 local Max = cfg.Max or 100 local Default = cfg.Default or Min local Increment = cfg.Increment or 1 local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local Value = Default local Frame = BaseElement(50) Themed(Create("TextLabel", { Size = UDim2.new(1, -60, 0, 20), Position = UDim2.new(0, 12, 0, 4), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = Name, TextColor3 = Theme.Text, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, Parent = Frame, }), "TextColor3", "Text") local ValueLabel = Themed(Create("TextLabel", { Size = UDim2.new(0, 50, 0, 20), Position = UDim2.new(1, -58, 0, 4), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = tostring(Value), TextColor3 = Theme.Accent, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Right, Parent = Frame, }), "TextColor3", "Accent") local Track = Themed(Create("Frame", { Size = UDim2.new(1, -24, 0, 6), Position = UDim2.new(0, 12, 0, 32), BackgroundColor3 = Theme.Stroke, BorderSizePixel = 0, Parent = Frame, }), "BackgroundColor3", "Stroke") local Fill = Themed(Create("Frame", { Size = UDim2.new((Value - Min) / (Max - Min), 0, 1, 0), BackgroundColor3 = Theme.Accent, BorderSizePixel = 0, Parent = Track, }), "BackgroundColor3", "Accent") local Knob = Create("Frame", { Size = UDim2.new(0, 14, 0, 14), Position = UDim2.new((Value - Min) / (Max - Min), -7, 0.5, -7), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, Parent = Track, }) local function SetValue(alpha, silent) alpha = math.clamp(alpha, 0, 1) local raw = Min + (Max - Min) * alpha raw = math.floor(raw / Increment + 0.5) * Increment raw = math.clamp(raw, Min, Max) Value = raw local a = (Value - Min) / (Max - Min) Fill.Size = UDim2.new(a, 0, 1, 0) Knob.Position = UDim2.new(a, -7, 0.5, -7) ValueLabel.Text = tostring(Value) if not silent then task.spawn(Callback, Value) end end local dragging = false Track.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true local relX = (input.Position.X - Track.AbsolutePosition.X) / Track.AbsoluteSize.X SetValue(relX) PlaySound(Sounds.Click, 0.15) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then if dragging then dragging = false DoNotify(Notifications, "Slider Değiştirildi", Name .. " -> " .. tostring(Value)) end end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then local relX = (input.Position.X - Track.AbsolutePosition.X) / Track.AbsoluteSize.X SetValue(relX) end end) SetValue((Default - Min) / (Max - Min), true) local API = { Instance = Frame } function API:Set(v) SetValue((v - Min) / (Max - Min)) end function API:Get() return Value end return API end function Section:AddTextbox(cfg) cfg = cfg or {} local Name = cfg.Name or "Textbox" local Placeholder = cfg.PlaceholderText or "Yazınız..." local Default = cfg.Default or "" local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local Frame = BaseElement(38) NameLabel(Frame, Name) local InputBox = Create("TextBox", { Size = UDim2.new(1, -(CONTROL_X + CONTROL_RIGHT_PAD), 0, 26), Position = UDim2.new(0, CONTROL_X, 0.5, -13), BackgroundColor3 = Theme.Secondary, Text = Default, PlaceholderText = Placeholder, Font = Enum.Font.GothamMedium, TextSize = 12, TextColor3 = Theme.Text, PlaceholderColor3 = Theme.SubText, TextXAlignment = Enum.TextXAlignment.Center, TextYAlignment = Enum.TextYAlignment.Center, ClearTextOnFocus = false, Parent = Frame, }) Themed(InputBox, "BackgroundColor3", "Secondary") Themed(InputBox, "TextColor3", "Text") Themed(InputBox, "PlaceholderColor3", "SubText") Themed(Stroke(InputBox, Theme.Stroke, 1, 0.3), "Color", "Stroke") InputBox.Focused:Connect(function() Tween(InputBox, { BackgroundColor3 = Theme.Tertiary }, 0.15) end) InputBox.FocusLost:Connect(function(enterPressed) Tween(InputBox, { BackgroundColor3 = Theme.Secondary }, 0.15) if enterPressed then PlaySound(Sounds.Click, 0.3) DoNotify(Notifications, "Textbox Tetiklendi", Name .. " -> " .. InputBox.Text) task.spawn(Callback, InputBox.Text) end end) local API = { Instance = Frame } function API:Set(text) InputBox.Text = text task.spawn(Callback, text) end function API:Get() return InputBox.Text end return API end function Section:AddColorpicker(cfg) cfg = cfg or {} local Name = cfg.Name or "Colorpicker" local Default = cfg.Default or Color3.new(1, 1, 1) local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local h, s, v = Default:ToHSV() local Hue, Sat, Val = h, s, v local Frame = BaseElement(38) NameLabel(Frame, Name) local Swatch = Create("TextButton", { Size = UDim2.new(0, 40, 0, 22), Position = UDim2.new(1, -50, 0.5, -11), BackgroundColor3 = Default, Text = "", AutoButtonColor = false, Parent = Frame, }) Themed(Stroke(Swatch, Theme.Stroke, 1, 0.2), "Color", "Stroke") local Panel = Create("Frame", { Size = UDim2.new(0, 220, 0, 150), Position = UDim2.new(0, 0, 0, 0), BackgroundColor3 = Theme.Secondary, BackgroundTransparency = 0.05, BorderSizePixel = 0, Visible = false, ZIndex = 60, Parent = Overlay, }) Themed(Panel, "BackgroundColor3", "Secondary") Themed(Stroke(Panel, Theme.Stroke, 1, 0.2), "Color", "Stroke") Pad(Panel, 10, 10, 10, 10) local SVBox = Create("Frame", { Size = UDim2.new(1, 0, 0, 90), BackgroundColor3 = Color3.fromHSV(Hue, 1, 1), BorderSizePixel = 0, ZIndex = 61, Parent = Panel, }) local WhiteGrad = Create("Frame", { Size = UDim2.new(1, 0, 1, 0), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, ZIndex = 61, Parent = SVBox, }) Create("UIGradient", { Color = ColorSequence.new(Color3.new(1, 1, 1), Color3.new(1, 1, 1)), Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1), }), Parent = WhiteGrad, }) local BlackGrad = Create("Frame", { Size = UDim2.new(1, 0, 1, 0), BackgroundColor3 = Color3.new(0, 0, 0), BorderSizePixel = 0, ZIndex = 61, Parent = SVBox, }) Create("UIGradient", { Rotation = 90, Color = ColorSequence.new(Color3.new(0, 0, 0), Color3.new(0, 0, 0)), Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 0), }), Parent = BlackGrad, }) local SVCursor = Create("Frame", { Size = UDim2.new(0, 8, 0, 8), Position = UDim2.new(Sat, -4, 1 - Val, -4), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, ZIndex = 62, Parent = SVBox, }) Stroke(SVCursor, Color3.new(0, 0, 0), 1, 0) local HueBar = Create("Frame", { Size = UDim2.new(1, 0, 0, 16), Position = UDim2.new(0, 0, 0, 100), BorderSizePixel = 0, ZIndex = 61, Parent = Panel, }) Create("UIGradient", { Color = ColorSequence.new({ ColorSequenceKeypoint.new(0.00, Color3.fromRGB(255, 0, 0)), ColorSequenceKeypoint.new(0.17, Color3.fromRGB(255, 255, 0)), ColorSequenceKeypoint.new(0.33, Color3.fromRGB(0, 255, 0)), ColorSequenceKeypoint.new(0.50, Color3.fromRGB(0, 255, 255)), ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 0, 255)), ColorSequenceKeypoint.new(0.83, Color3.fromRGB(255, 0, 255)), ColorSequenceKeypoint.new(1.00, Color3.fromRGB(255, 0, 0)), }), Parent = HueBar, }) local HueCursor = Create("Frame", { Size = UDim2.new(0, 4, 1, 4), Position = UDim2.new(Hue, -2, 0, -2), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, ZIndex = 62, Parent = HueBar, }) local function UpdateColor(silent) local color = Color3.fromHSV(Hue, Sat, Val) Swatch.BackgroundColor3 = color SVBox.BackgroundColor3 = Color3.fromHSV(Hue, 1, 1) if not silent then task.spawn(Callback, color) end end local svDragging, hueDragging = false, false SVBox.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then svDragging = true end end) HueBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then hueDragging = true end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then if svDragging or hueDragging then DoNotify(Notifications, "Colorpicker Tetiklendi", Name .. " rengi güncellendi.") end svDragging = false hueDragging = false end end) UserInputService.InputChanged:Connect(function(input) if input.UserInputType ~= Enum.UserInputType.MouseMovement and input.UserInputType ~= Enum.UserInputType.Touch then return end if svDragging then local relX = math.clamp((input.Position.X - SVBox.AbsolutePosition.X) / SVBox.AbsoluteSize.X, 0, 1) local relY = math.clamp((input.Position.Y - SVBox.AbsolutePosition.Y) / SVBox.AbsoluteSize.Y, 0, 1) Sat, Val = relX, 1 - relY SVCursor.Position = UDim2.new(Sat, -4, 1 - Val, -4) UpdateColor() elseif hueDragging then local relX = math.clamp((input.Position.X - HueBar.AbsolutePosition.X) / HueBar.AbsoluteSize.X, 0, 1) Hue = relX HueCursor.Position = UDim2.new(Hue, -2, 0, -2) UpdateColor() end end) Swatch.MouseButton1Click:Connect(function() PlaySound(Sounds.Click, 0.3) if Panel.Visible then ClosePopup(Panel) else OpenPopup(Panel, Swatch, 6, 220, "right") end end) local API = { Instance = Frame } function API:Set(color) local nh, ns, nv = color:ToHSV() Hue, Sat, Val = nh, ns, nv SVCursor.Position = UDim2.new(Sat, -4, 1 - Val, -4) HueCursor.Position = UDim2.new(Hue, -2, 0, -2) UpdateColor() end function API:Get() return Color3.fromHSV(Hue, Sat, Val) end return API end function Section:AddDropdown(cfg) cfg = cfg or {} local Name = cfg.Name or "Dropdown" local Options = cfg.Options or {} local Default = cfg.Default local Multi = cfg.Multi or false local Callback = cfg.Callback or function() end local Notifications = cfg.Notifications local Selected = Multi and {} or (Default or (Options[1] or nil)) if Multi and Default then for _, v in ipairs(Default) do Selected[v] = true end end local Frame = BaseElement(38) NameLabel(Frame, Name) local DropBtn = Create("TextButton", { Size = UDim2.new(1, -(CONTROL_X + CONTROL_RIGHT_PAD), 0, 26), Position = UDim2.new(0, CONTROL_X, 0.5, -13), BackgroundColor3 = Theme.Secondary, Text = " " .. (Multi and "Seçiniz..." or tostring(Selected or "Seçiniz...")), Font = Enum.Font.GothamMedium, TextSize = 12, TextColor3 = Theme.Text, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, AutoButtonColor = false, Parent = Frame, }) Themed(DropBtn, "BackgroundColor3", "Secondary") Themed(DropBtn, "TextColor3", "Text") Themed(Stroke(DropBtn, Theme.Stroke, 1, 0.3), "Color", "Stroke") -- GÜNCELLEME: Sınırsız Büyümeyen & Kaydırılabilir (ScrollingFrame) Dropdown Listesi Frame'i local ListFrame = Create("ScrollingFrame", { Size = UDim2.new(0, 160, 0, 0), Position = UDim2.new(0, 0, 0, 0), BackgroundColor3 = Theme.Secondary, BackgroundTransparency = 0.05, BorderSizePixel = 0, ClipsDescendants = true, Visible = false, ZIndex = 60, ScrollBarThickness = 3, ScrollBarImageColor3 = Theme.Accent, CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, Parent = Overlay, }) Themed(ListFrame, "BackgroundColor3", "Secondary") Themed(ListFrame, "ScrollBarImageColor3", "Accent") Themed(Stroke(ListFrame, Theme.Stroke, 1, 0.2), "Color", "Stroke") Create("UIListLayout", { SortOrder = Enum.SortOrder.LayoutOrder, Padding = UDim.new(0, 2), Parent = ListFrame, }) Pad(ListFrame, 4, 4, 4, 4) local ITEM_HEIGHT = 26 local MAX_VISIBLE_ITEMS = 4 local function CalculateDropdownHeight() local count = #Options local visibleCount = math.min(count, MAX_VISIBLE_ITEMS) local totalHeight = (visibleCount * ITEM_HEIGHT) + ((visibleCount - 1) * 2) + 8 return totalHeight end local optionButtons = {} local function RefreshText() if Multi then local names = {} for opt, on in pairs(Selected) do if on then table.insert(names, opt) end end DropBtn.Text = " " .. (#names > 0 and table.concat(names, ", ") or "Seçiniz...") else DropBtn.Text = " " .. tostring(Selected or "Seçiniz...") end end -- GÜNCELLEME: Seçili Öğe Durumunu Güncelleyen Fonksiyon local function UpdateVisuals() for opt, btn in pairs(optionButtons) do local isSel = (Multi and Selected[opt]) or (not Multi and Selected == opt) if isSel then btn.BackgroundColor3 = Theme.Accent btn.BackgroundTransparency = 0.2 btn.TextColor3 = Color3.new(1, 1, 1) else btn.BackgroundColor3 = Theme.Tertiary btn.BackgroundTransparency = 1 btn.TextColor3 = Theme.Text end end end local function BuildOptions() optionButtons = {} for _, c in ipairs(ListFrame:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end for _, opt in ipairs(Options) do local OptBtn = Create("TextButton", { Size = UDim2.new(1, -4, 0, ITEM_HEIGHT), BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 1, Text = " " .. tostring(opt), Font = Enum.Font.GothamMedium, TextSize = 12, TextColor3 = Theme.Text, TextXAlignment = Enum.TextXAlignment.Left, AutoButtonColor = false, ZIndex = 61, Parent = ListFrame, }) optionButtons[opt] = OptBtn OptBtn.MouseButton1Click:Connect(function() PlaySound(Sounds.Click, 0.25) if Multi then Selected[opt] = not Selected[opt] else Selected = opt ClosePopup(ListFrame) end UpdateVisuals() RefreshText() DoNotify(Notifications, "Dropdown Tetiklendi", Name .. " -> " .. tostring(opt)) task.spawn(Callback, Selected) end) end ListFrame.Size = UDim2.new(0, ListFrame.Size.X.Offset, 0, CalculateDropdownHeight()) UpdateVisuals() end BuildOptions() RefreshText() OnThemeChange(function() UpdateVisuals() end) DropBtn.MouseButton1Click:Connect(function() PlaySound(Sounds.Click, 0.3) if ListFrame.Visible then ClosePopup(ListFrame) else ListFrame.Size = UDim2.new(0, DropBtn.AbsoluteSize.X, 0, CalculateDropdownHeight()) OpenPopup(ListFrame, DropBtn, 4, DropBtn.AbsoluteSize.X, "right") end end) local API = { Instance = Frame } function API:Refresh(newOptions) Options = newOptions BuildOptions() end function API:Set(value) Selected = value RefreshText() UpdateVisuals() task.spawn(Callback, Selected) end function API:Get() return Selected end return API end function Section:AddLabel(cfg) cfg = cfg or {} local Text = type(cfg) == "string" and cfg or (cfg.Text or "Label") local Frame = BaseElement(30) local Lbl = Themed(Create("TextLabel", { Size = UDim2.new(1, -20, 1, 0), Position = UDim2.new(0, 12, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamMedium, Text = Text, TextColor3 = Theme.SubText, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, TextWrapped = true, Parent = Frame, }), "TextColor3", "SubText") local API = { Instance = Frame } function API:Set(text) Lbl.Text = text end return API end table.insert(Tab.Sections, Section) return Section end return Tab end --===================================================================== -- STATS / DASHBOARD TAB (Yenilenmiş Yüksek Kaliteli Kontrol Paneli) --===================================================================== if ShowControlPanel then local DashTab = Window:AddTab("Dashboard", true) -- SOL KOLON SEKSİYONLARI: PROFiL KARTI (Tasarım Yenilendi) local ProfileSec = DashTab:AddSection("👤 Profil & Hesap Özeti", "Left") local ProfileCardFrame = Create("Frame", { Size = UDim2.new(1, 0, 0, 100), BackgroundColor3 = Theme.Tertiary, BackgroundTransparency = 0.06, BorderSizePixel = 0, Parent = ProfileSec.Instance, }) Themed(ProfileCardFrame, "BackgroundColor3", "Tertiary") Themed(Stroke(ProfileCardFrame, Theme.Stroke, 1, 0.3), "Color", "Stroke") Pad(ProfileCardFrame, 10, 10, 10, 10) -- Sol Accent Çizgisi Themed(Create("Frame", { Size = UDim2.new(0, 3, 1, 0), Position = UDim2.new(0, -10, 0, 0), BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.1, BorderSizePixel = 0, Parent = ProfileCardFrame, }), "BackgroundColor3", "Accent") -- Avatar Görseli local AvatarImg = Create("ImageLabel", { Size = UDim2.new(0, 56, 0, 56), Position = UDim2.new(0, 0, 0, 0), BackgroundColor3 = Theme.Secondary, BorderSizePixel = 0, Parent = ProfileCardFrame, }) Themed(AvatarImg, "BackgroundColor3", "Secondary") Themed(Stroke(AvatarImg, Theme.Accent, 1.5, 0.2), "Color", "Accent") Create("UICorner", { CornerRadius = UDim.new(0, 8), Parent = AvatarImg }) task.spawn(function() local content, isLoaded = Players:GetUserThumbnailAsync(LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size100x100) if isLoaded then AvatarImg.Image = content end end) -- Kullanıcı Adı Themed(Create("TextLabel", { Size = UDim2.new(1, -66, 0, 18), Position = UDim2.new(0, 66, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = LocalPlayer.DisplayName, TextColor3 = Theme.Text, TextSize = 14, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, Parent = ProfileCardFrame, }), "TextColor3", "Text") -- Etiket / ID Themed(Create("TextLabel", { Size = UDim2.new(1, -66, 0, 14), Position = UDim2.new(0, 66, 0, 18), BackgroundTransparency = 1, Font = Enum.Font.GothamMedium, Text = "@" .. LocalPlayer.Name .. " • ID: " .. LocalPlayer.UserId, TextColor3 = Theme.SubText, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, Parent = ProfileCardFrame, }), "TextColor3", "SubText") -- Rozetler / Statü (Premium & Hesap Yaşı) local BadgeHolder = Create("Frame", { Size = UDim2.new(1, -66, 0, 20), Position = UDim2.new(0, 66, 0, 36), BackgroundTransparency = 1, Parent = ProfileCardFrame, }) Create("UIListLayout", { FillDirection = Enum.FillDirection.Horizontal, Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, Parent = BadgeHolder, }) -- Account Age Badge local AgeBadge = Create("Frame", { Size = UDim2.new(0, 85, 1, 0), BackgroundColor3 = Theme.Secondary, Parent = BadgeHolder, }) Themed(AgeBadge, "BackgroundColor3", "Secondary") Themed(Stroke(AgeBadge, Theme.Stroke, 1, 0.4), "Color", "Stroke") Create("UICorner", { CornerRadius = UDim.new(0, 4), Parent = AgeBadge }) Themed(Create("TextLabel", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = "📅 " .. LocalPlayer.AccountAge .. " Gün", TextColor3 = Theme.SubText, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Center, Parent = AgeBadge, }), "TextColor3", "SubText") -- Premium Status Badge local IsPremium = LocalPlayer.MembershipType == Enum.MembershipType.Premium local PremBadge = Create("Frame", { Size = UDim2.new(0, 80, 1, 0), BackgroundColor3 = IsPremium and Color3.fromRGB(255, 170, 0) or Theme.Secondary, BackgroundTransparency = IsPremium and 0.8 or 0, Parent = BadgeHolder, }) if not IsPremium then Themed(PremBadge, "BackgroundColor3", "Secondary") end Themed(Stroke(PremBadge, IsPremium and Color3.fromRGB(255, 170, 0) or Theme.Stroke, 1, 0.4), "Color", IsPremium and "Accent" or "Stroke") Create("UICorner", { CornerRadius = UDim.new(0, 4), Parent = PremBadge }) Create("TextLabel", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = IsPremium and "⭐ Premium" or "👤 Normal", TextColor3 = IsPremium and Color3.fromRGB(255, 200, 50) or Theme.SubText, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Center, Parent = PremBadge, }) local ClientIdStr = "N/A" pcall(function() ClientIdStr = RbxAnalyticsService:GetClientId() end) ProfileSec:AddButton({ Name = "Client ID Kopyala", Callback = function() CopyToClipboard(ClientIdStr) Window:Notify({ Title = "Kopyalandı", Content = "Client ID panoya kopyalandı.", Duration = 2 }) end }) -- TEMA SEÇİMİ local ThemeSec = DashTab:AddSection("🎨 Tema Yönetimi", "Left") local themeNamesList = {} for tName, _ in pairs(Themes) do table.insert(themeNamesList, tName) end ThemeSec:AddDropdown({ Name = "Arayüz Teması", Options = themeNamesList, Default = ThemeName, Callback = function(selectedTheme) Window:SetTheme(selectedTheme) end }) local PlaceSec = DashTab:AddSection("🎮 Sunucu & Oyun Bilgileri", "Left") local PlaceName = "Yükleniyor..." pcall(function() local info = MarketplaceService:GetProductInfo(game.PlaceId) if info and info.Name then PlaceName = info.Name end end) PlaceSec:AddLabel("Oyun: " .. PlaceName) PlaceSec:AddButton({ Name = "Place ID: " .. tostring(game.PlaceId), Callback = function() CopyToClipboard(game.PlaceId) Window:Notify({ Title = "Kopyalandı", Content = "Place ID panoya kopyalandı.", Duration = 2 }) end }) PlaceSec:AddButton({ Name = "Job ID (Sunucu) Kopyala", Callback = function() CopyToClipboard(game.JobId) Window:Notify({ Title = "Kopyalandı", Content = "Job ID panoya kopyalandı.", Duration = 2 }) end }) -- SAĞ KOLON SEKSİYONLARI local PerfSec = DashTab:AddSection("📊 Canlı Performans Monitörü", "Right") local FpsLabel = PerfSec:AddLabel("FPS: 60") local PingLabel = PerfSec:AddLabel("Ping: 0 ms") local MemLabel = PerfSec:AddLabel("Bellek: 0 MB") local RecvLabel = PerfSec:AddLabel("Veri Akışı: 0 KB/s") local PhysSec = DashTab:AddSection("📍 Karakter Fizik Monitörü", "Right") local rawPosStr, rawCFStr, rawVelStr = "0,0,0", "0,0,0", "0,0,0" local PosLbl = PhysSec:AddLabel("Position: 0, 0, 0") PhysSec:AddButton({ Name = "Position Kopyala", Callback = function() CopyToClipboard(rawPosStr) Window:Notify({ Title = "Kopyalandı", Content = "Position verisi kopyalandı.", Duration = 2 }) end }) local CFLbl = PhysSec:AddLabel("CFrame: 0, 0, 0") PhysSec:AddButton({ Name = "CFrame Kopyala", Callback = function() CopyToClipboard(rawCFStr) Window:Notify({ Title = "Kopyalandı", Content = "CFrame verisi kopyalandı.", Duration = 2 }) end }) local VelLbl = PhysSec:AddLabel("Velocity: 0, 0, 0") -- ETKİLEŞİMLİ OYUNCU LİSTESİ SEKSİYONU local PlayerSec = DashTab:AddSection("👥 Oyuncu Listesi", "Single") local PlayerListHolder = Create("Frame", { Name = "PlayerListHolder", Size = UDim2.new(1, 0, 0, 0), AutomaticSize = Enum.AutomaticSize.Y, BackgroundTransparency = 1, Parent = PlayerSec.Instance, }) Create("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, Parent = PlayerListHolder, }) local viewingPlayers = {} local function RefreshPlayerListUI() for _, child in ipairs(PlayerListHolder:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end for _, targetPlayer in ipairs(Players:GetPlayers()) do if targetPlayer ~= LocalPlayer then local RowFrame = CreateBaseElement(PlayerListHolder, 46) local RowAvatar = Create("ImageLabel", { Size = UDim2.new(0, 34, 0, 34), Position = UDim2.new(0, 10, 0.5, -17), BackgroundColor3 = Theme.Secondary, BorderSizePixel = 0, Parent = RowFrame, }) Themed(RowAvatar, "BackgroundColor3", "Secondary") Create("UICorner", { CornerRadius = UDim.new(1, 0), Parent = RowAvatar }) task.spawn(function() local content, isLoaded = Players:GetUserThumbnailAsync(targetPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size100x100) if isLoaded then RowAvatar.Image = content end end) Themed(Create("TextLabel", { Size = UDim2.new(1, -210, 1, 0), Position = UDim2.new(0, 52, 0, 0), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, Text = targetPlayer.DisplayName .. "\n@" .. targetPlayer.Name, TextColor3 = Theme.Text, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, Parent = RowFrame, }), "TextColor3", "Text") -- SAĞ TARAF KONTROLLERİ local ControlsHolder = Create("Frame", { Size = UDim2.new(0, 150, 1, 0), Position = UDim2.new(1, -155, 0, 0), BackgroundTransparency = 1, Parent = RowFrame, }) -- Işınlan Butonu local TpBtn = Create("TextButton", { Size = UDim2.new(0, 75, 0, 26), Position = UDim2.new(0, 0, 0.5, -13), BackgroundColor3 = Theme.Secondary, Text = "Işınlan", Font = Enum.Font.GothamBold, TextSize = 11, TextColor3 = Theme.Text, AutoButtonColor = false, Parent = ControlsHolder, }) Themed(TpBtn, "BackgroundColor3", "Secondary") Themed(TpBtn, "TextColor3", "Text") Themed(Stroke(TpBtn, Theme.Stroke, 1, 0.3), "Color", "Stroke") TpBtn.MouseButton1Click:Connect(function() ClickBounce(TpBtn) PlaySound(Sounds.Click, 0.3) if targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("HumanoidRootPart") and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then LocalPlayer.Character.HumanoidRootPart.CFrame = targetPlayer.Character.HumanoidRootPart.CFrame * CFrame.new(0, 0, 3) Window:Notify({ Title = "Teleport", Content = targetPlayer.Name .. " yanına ışınlanıldı.", Duration = 2 }) end end) -- İzle (View) Toggle Anahtarı local isViewing = viewingPlayers[targetPlayer.UserId] or false local ViewToggleBG = Create("Frame", { Size = UDim2.new(0, 65, 0, 26), Position = UDim2.new(0, 82, 0.5, -13), BackgroundColor3 = isViewing and Theme.Accent or Theme.Stroke, BorderSizePixel = 0, Parent = ControlsHolder, }) Themed(Stroke(ViewToggleBG, Theme.Stroke, 1, 0.4), "Color", "Stroke") local ViewToggleBtn = Create("TextButton", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = isViewing and "İzle: AÇIK" or "İzle: KAPALI", Font = Enum.Font.GothamBold, TextSize = 10, TextColor3 = Color3.new(1, 1, 1), AutoButtonColor = false, Parent = ViewToggleBG, }) ViewToggleBtn.MouseButton1Click:Connect(function() ClickBounce(ViewToggleBG) PlaySound(Sounds.Toggle, 0.4) isViewing = not isViewing viewingPlayers[targetPlayer.UserId] = isViewing ViewToggleBG.BackgroundColor3 = isViewing and Theme.Accent or Theme.Stroke ViewToggleBtn.Text = isViewing and "İzle: AÇIK" or "İzle: KAPALI" if isViewing and targetPlayer.Character and targetPlayer.Character:FindFirstChild("Humanoid") then workspace.CurrentCamera.CameraSubject = targetPlayer.Character.Humanoid Window:Notify({ Title = "Kamera", Content = targetPlayer.Name .. " izleniyor.", Duration = 2 }) else if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then workspace.CurrentCamera.CameraSubject = LocalPlayer.Character.Humanoid end end end) end end end RefreshPlayerListUI() Players.PlayerAdded:Connect(RefreshPlayerListUI) Players.PlayerRemoving:Connect(RefreshPlayerListUI) -- PERFORMANS DÖNGÜSÜ local lastUpdate = tick() local frameCount = 0 RunService.RenderStepped:Connect(function() frameCount = frameCount + 1 local now = tick() if now - lastUpdate >= 0.5 then local fps = math.floor(frameCount / (now - lastUpdate)) FpsLabel:Set("FPS: " .. tostring(fps)) frameCount = 0 lastUpdate = now pcall(function() local ping = math.floor(StatsService.Network.ServerStatsItem["Data Ping"]:GetValue()) PingLabel:Set("Ping: " .. tostring(ping) .. " ms") local mem = math.floor(StatsService:GetTotalMemoryUsageMb()) MemLabel:Set("Bellek: " .. tostring(mem) .. " MB") local recv = math.floor(StatsService.Network.ServerStatsItem["Data Recv"]:GetValue()) RecvLabel:Set("Veri Akışı: " .. tostring(recv) .. " KB/s") end) end pcall(function() if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then local hrp = LocalPlayer.Character.HumanoidRootPart local pos = hrp.Position local cf = hrp.CFrame local vel = hrp.Velocity rawPosStr = string.format("%.2f, %.2f, %.2f", pos.X, pos.Y, pos.Z) rawCFStr = tostring(cf) rawVelStr = string.format("%.2f, %.2f, %.2f", vel.X, vel.Y, vel.Z) PosLbl:Set(string.format("Position: X: %.1f | Y: %.1f | Z: %.1f", pos.X, pos.Y, pos.Z)) CFLbl:Set(string.format("CFrame: %.1f, %.1f, %.1f", cf.X, cf.Y, cf.Z)) VelLbl:Set(string.format("Velocity: X: %.1f | Y: %.1f | Z: %.1f (Hız: %.1f)", vel.X, vel.Y, vel.Z, vel.Magnitude)) end end) end) end return Window end return Spectrum