--[[ Automated Response System - Fixed Execution & Global Drag Engine - Universal UserInputService Drag Engine (Bypasses Button Interception) - Clean Variable Scoping (Fixes execution/nil errors on load) - Smart Lock & Mobile Touch Support ]] -- Services local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TextChatService = game:FindFirstChild("TextChatService") local LegacyChat = game:FindFirstChild("Chat") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local LocalizationService = game:GetService("LocalizationService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- State Management (Defined FIRST so all functions can read it safely) local SystemState = { Targets = {}, TargetList = {}, UsedRoasts = {}, MenuOpen = false, IsLocked = false, CurrentIndex = 1, TargetIndex = 1, TransitionProgress = 1 } -- Dynamic FPS Monitor local CurrentFPS = 60 RunService.RenderStepped:Connect(function(dt) if dt > 0 then CurrentFPS = math.floor(1 / dt) end end) -- Safe Account Age Fetcher local function GetSafeAccountAge(player) local age = 0 local success = pcall(function() age = player.AccountAge end) if success and age then local years = math.floor(age / 365) local remDays = age % 365 if years > 0 then return string.format("%d yr%s, %d days old", years, years > 1 and "s" or "", remDays) else return string.format("%d days old", remDays) end end return "N/A" end -- Device Detector local function DetectDevice(player) if player ~= LocalPlayer then return "PC / Console" end if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then return "Mobile / Tablet" elseif UserInputService.GamepadEnabled and not UserInputService.KeyboardEnabled then return "Console" elseif UserInputService.VREnabled then return "VR Headset" else return "PC (Keyboard/Mouse)" end end -- Keywords & Roasts local AggroKeywords = {"buns", "trash", "bad", "bot", "terrible", "horrible", "ez", "free kill", "sucks", "noob", "garb"} local ApologyKeywords = {"mb", "my bad", "sorry", "sry", "didnt mean to", "didn't mean to", "forgive"} local NiceKeywords = {"w", "gg", "nice", "clutch", "goat", "pro", "carry"} local EmojiCombos = {" ๐Ÿ’€๐Ÿ˜ญโœŒ๏ธ", " ๐Ÿฅ€๐Ÿ™๐Ÿ˜ž๐Ÿ’”", " ๐Ÿคจ๐Ÿ‘๐Ÿ˜”", " ๐Ÿ’€๐Ÿฅ€", " ๐Ÿ˜ญ๐Ÿ’€๐Ÿ’”", " ๐Ÿคจ๐Ÿคฃ๐Ÿ‘", " ๐Ÿคก๐Ÿ’€", " ๐Ÿ˜ญ๐Ÿ™"} local Roasts = { Quoted = { "What does %s even mean by %q? Does bro taste in-game avatars?", "Bro %s really said %q like it made any sense.", "Why is %s out here typing %q like it's a deep thought?", "%s, who taught you to say %q? That sounded terrible.", "Imagine typing %q and thinking you cooked, %s." }, Gameplay = { "%s fights NPCs and still loses.", "Bro %s, your Wi-Fi is carrying your entire gameplay.", "%s plays like the tutorial skipped you.", "Bro %s has negative gaming instincts.", "%s makes bots look intelligent.", "Bro %s got outplayed by gravity." }, AvatarPOV = { "Bro %s, your main avatar looks like it was created with randomizer x50.", "%s changed their avatar in-game and still ended up looking like a starter package.", "Bro %s, who styled your character? A blindfolded guest account?" }, ShortJokes = { "their controller gets more exercise than their brain", "even the server console sighed when they joined", "they are legally classified as background noise in this lobby", "legend says they are still waiting for their skill tree to download" } } -- Utility Helpers local function FetchPlayerLocation(player) local success, code = pcall(function() return LocalizationService:GetCountryRegionForPlayerAsync(player) end) if success and code and code ~= "" then return tostring(code) end return "Unknown Country/Region" end local function ApplyMockCasing(text) local result = "" for i = 1, #text do local c = text:sub(i, i) if math.random(1, 2) == 1 then result = result .. c:lower() else result = result .. c:upper() end end return result end local function SendChatMessage(message) if TextChatService then local textChannels = TextChatService:FindFirstChild("TextChannels") if textChannels then local general = textChannels:FindFirstChild("RBXGeneral") or textChannels:FindFirstChildOfClass("TextChannel") if general then pcall(function() general:SendAsync(message) end) return true end end end if LegacyChat and LegacyChat:FindFirstChild("Chat") then local chat = LegacyChat.Chat if chat and chat:FindFirstChild("SendMessage") then pcall(function() chat:SendMessage(message) end) return true end end return false end local function FindPlayerByPartialName(partial) if not partial or partial == "" then return nil end local search = partial:lower():gsub("%s+", "") for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then if player.Name:lower() == search or (player.DisplayName and player.DisplayName:lower() == search) then return player end end end for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then if player.Name:lower():sub(1, #search) == search or (player.DisplayName and player.DisplayName:lower():sub(1, #search) == search) then return player end end end return nil end local function GetUnusedRoast(category) local pool = Roasts[category] or Roasts.Gameplay local available = {} for _, line in ipairs(pool) do if not SystemState.UsedRoasts[line] then table.insert(available, line) end end if #available == 0 then for _, line in ipairs(pool) do SystemState.UsedRoasts[line] = nil; table.insert(available, line) end end local selected = available[math.random(1, #available)] SystemState.UsedRoasts[selected] = true return selected end local function GenerateDynamicComboResponse(player, message) local name = player.DisplayName or player.Name local cleanMsg = message:gsub("[%p%c]", "") local msgLower = cleanMsg:lower() local baseRoast = "" local words = {} for word in msgLower:gmatch("%S+") do table.insert(words, word) end if #words >= 1 and #words <= 3 then baseRoast = GetUnusedRoast("Quoted"):gsub("%%q", '"' .. ApplyMockCasing(cleanMsg) .. '"') elseif msgLower:find("fit") or msgLower:find("look") or msgLower:find("avatar") then baseRoast = GetUnusedRoast("AvatarPOV") else baseRoast = GetUnusedRoast("Gameplay") end local formatted = string.format(baseRoast, name) if math.random(1, 3) == 1 then formatted = ApplyMockCasing(formatted) end if math.random(1, 3) == 1 then formatted = formatted .. " โ€” plus " .. GetUnusedRoast("ShortJokes") end return formatted .. EmojiCombos[math.random(1, #EmojiCombos)] end local function EaseOutCubic(t) return 1 - math.pow(1 - t, 3) end -- Absolute Universal Drag Engine (Bypasses UI Button Consumption & Prevents Nil Crashes) local function EnableWidgetDragging(frame) local dragging = false local dragStart = Vector3.zero local startPos = UDim2.new() local function IsInputInsideFrame(inputPos) local framePos = frame.AbsolutePosition local frameSize = frame.AbsoluteSize return inputPos.X >= framePos.X and inputPos.X <= (framePos.X + frameSize.X) and inputPos.Y >= framePos.Y and inputPos.Y <= (framePos.Y + frameSize.Y) end UserInputService.InputBegan:Connect(function(input) if SystemState.IsLocked then return end if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then if IsInputInsideFrame(input.Position) then dragging = true dragStart = input.Position startPos = frame.Position end end end) UserInputService.InputChanged:Connect(function(input) if dragging and not SystemState.IsLocked then if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch 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) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) end -- UI Builder local function BuildUI() local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "PS5DashboardUI" ScreenGui.Parent = PlayerGui ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true ScreenGui.DisplayOrder = 999999 ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling local DashboardRoot = Instance.new("Frame") DashboardRoot.Name = "DashboardRoot" DashboardRoot.Size = UDim2.new(1, 0, 1, 0) DashboardRoot.BackgroundColor3 = Color3.fromRGB(5, 6, 9) DashboardRoot.BackgroundTransparency = 0 DashboardRoot.Visible = false DashboardRoot.Active = true DashboardRoot.Parent = ScreenGui local AtmosphericBG = Instance.new("ImageLabel") AtmosphericBG.Name = "AtmosphericBG" AtmosphericBG.Size = UDim2.new(1.1, 0, 1.1, 0) AtmosphericBG.Position = UDim2.new(-0.05, 0, -0.05, 0) AtmosphericBG.BackgroundColor3 = Color3.fromRGB(5, 6, 9) AtmosphericBG.ScaleType = Enum.ScaleType.Crop AtmosphericBG.ImageTransparency = 0.6 AtmosphericBG.Parent = DashboardRoot local DarkVignette = Instance.new("Frame") DarkVignette.Size = UDim2.new(1, 0, 1, 0) DarkVignette.BackgroundColor3 = Color3.fromRGB(0, 0, 0) DarkVignette.BackgroundTransparency = 0.35 DarkVignette.Parent = DashboardRoot local TopBar = Instance.new("Frame") TopBar.Size = UDim2.new(1, -40, 0, 45) TopBar.Position = UDim2.new(0, 20, 0, 15) TopBar.BackgroundTransparency = 1 TopBar.Parent = DashboardRoot local PlayersTab = Instance.new("TextLabel") PlayersTab.Size = UDim2.new(0, 100, 1, 0) PlayersTab.Position = UDim2.new(0, 20, 0, 0) PlayersTab.BackgroundTransparency = 1 PlayersTab.Text = "Players" PlayersTab.TextColor3 = Color3.fromRGB(255, 255, 255) PlayersTab.TextSize = 20 PlayersTab.Font = Enum.Font.GothamBold PlayersTab.TextXAlignment = Enum.TextXAlignment.Left PlayersTab.Parent = TopBar local TabLine = Instance.new("Frame") TabLine.Size = UDim2.new(0, 75, 0, 3) TabLine.Position = UDim2.new(0, 20, 1, -5) TabLine.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TabLine.BorderSizePixel = 0 TabLine.Parent = TopBar local TimeLabel = Instance.new("TextLabel") TimeLabel.Size = UDim2.new(0, 90, 1, 0) TimeLabel.Position = UDim2.new(1, -90, 0, 0) TimeLabel.BackgroundTransparency = 1 TimeLabel.TextColor3 = Color3.fromRGB(240, 243, 255) TimeLabel.TextSize = 14 TimeLabel.Font = Enum.Font.GothamMedium TimeLabel.TextXAlignment = Enum.TextXAlignment.Right TimeLabel.Text = "10:42 PM" TimeLabel.Parent = TopBar task.spawn(function() while true do local date = os.date("*t") local hour = date.hour % 12 if hour == 0 then hour = 12 end local ampm = date.hour >= 12 and "PM" or "AM" TimeLabel.Text = string.format("%d:%02d %s", hour, date.min, ampm) task.wait(10) end end) local CommandFrame = Instance.new("Frame") CommandFrame.Name = "CommandFrame" CommandFrame.Size = UDim2.new(0, 200, 0, 32) CommandFrame.Position = UDim2.new(1, -300, 0, 20) CommandFrame.BackgroundColor3 = Color3.fromRGB(30, 34, 46) CommandFrame.BackgroundTransparency = 0.25 CommandFrame.BorderSizePixel = 0 CommandFrame.Parent = DashboardRoot local CommandCorner = Instance.new("UICorner") CommandCorner.CornerRadius = UDim.new(1, 0) CommandCorner.Parent = CommandFrame local CommandBar = Instance.new("TextBox") CommandBar.Size = UDim2.new(1, -16, 1, 0) CommandBar.Position = UDim2.new(0, 8, 0, 0) CommandBar.BackgroundTransparency = 1 CommandBar.TextColor3 = Color3.fromRGB(255, 255, 255) CommandBar.TextSize = 11 CommandBar.Font = Enum.Font.GothamMedium CommandBar.PlaceholderText = "๐Ÿ” ;roast or ;stop..." CommandBar.PlaceholderColor3 = Color3.fromRGB(150, 155, 175) CommandBar.TextXAlignment = Enum.TextXAlignment.Left CommandBar.ClearTextOnFocus = true CommandBar.Parent = CommandFrame local CarouselContainer = Instance.new("Frame") CarouselContainer.Name = "CarouselContainer" CarouselContainer.Size = UDim2.new(1, 0, 0, 150) CarouselContainer.Position = UDim2.new(0, 0, 0, 70) CarouselContainer.BackgroundTransparency = 1 CarouselContainer.ClipsDescendants = false CarouselContainer.Active = false CarouselContainer.Parent = DashboardRoot -- Global Swipe Gesture Listener local startX = 0 local isSwiping = false UserInputService.InputBegan:Connect(function(input) if not SystemState.MenuOpen or SystemState.IsLocked then return end if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then startX = input.Position.X isSwiping = true end end) UserInputService.InputEnded:Connect(function(input) if not SystemState.MenuOpen or not isSwiping or SystemState.IsLocked then return end if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then isSwiping = false local deltaX = input.Position.X - startX if math.abs(deltaX) > 25 then if deltaX < 0 then if SystemState.TargetIndex < #SystemState.TargetList then SystemState.CurrentIndex = SystemState.TargetIndex SystemState.TargetIndex = SystemState.TargetIndex + 1 SystemState.TransitionProgress = 0 end else if SystemState.TargetIndex > 1 then SystemState.CurrentIndex = SystemState.TargetIndex SystemState.TargetIndex = SystemState.TargetIndex - 1 SystemState.TransitionProgress = 0 end end end end end) local DetailsFrame = Instance.new("Frame") DetailsFrame.Name = "DetailsFrame" DetailsFrame.Size = UDim2.new(1, -40, 0, 180) DetailsFrame.Position = UDim2.new(0, 20, 0, 225) DetailsFrame.BackgroundTransparency = 1 DetailsFrame.Parent = DashboardRoot local TagBadge = Instance.new("TextLabel") TagBadge.Size = UDim2.new(0, 60, 0, 16) TagBadge.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TagBadge.TextColor3 = Color3.fromRGB(0, 0, 0) TagBadge.Text = "TARGET" TagBadge.TextSize = 9 TagBadge.Font = Enum.Font.GothamBold TagBadge.Parent = DetailsFrame local BadgeCorner = Instance.new("UICorner") BadgeCorner.CornerRadius = UDim.new(0, 4) BadgeCorner.Parent = TagBadge local FocusedTitle = Instance.new("TextLabel") FocusedTitle.Size = UDim2.new(1, 0, 0, 24) FocusedTitle.Position = UDim2.new(0, 0, 0, 20) FocusedTitle.BackgroundTransparency = 1 FocusedTitle.TextColor3 = Color3.fromRGB(255, 255, 255) FocusedTitle.TextSize = 20 FocusedTitle.Font = Enum.Font.GothamBold FocusedTitle.TextXAlignment = Enum.TextXAlignment.Left FocusedTitle.Text = "Select a Target" FocusedTitle.Parent = DetailsFrame local FocusedSub = Instance.new("TextLabel") FocusedSub.Size = UDim2.new(1, 0, 0, 16) FocusedSub.Position = UDim2.new(0, 0, 0, 44) FocusedSub.BackgroundTransparency = 1 FocusedSub.TextColor3 = Color3.fromRGB(180, 185, 200) FocusedSub.TextSize = 12 FocusedSub.Font = Enum.Font.GothamMedium FocusedSub.TextXAlignment = Enum.TextXAlignment.Left FocusedSub.Text = "@username" FocusedSub.Parent = DetailsFrame local MetaCard = Instance.new("Frame") MetaCard.Size = UDim2.new(1, 0, 0, 105) MetaCard.Position = UDim2.new(0, 0, 0, 65) MetaCard.BackgroundColor3 = Color3.fromRGB(18, 22, 32) MetaCard.BackgroundTransparency = 0.3 MetaCard.BorderSizePixel = 0 MetaCard.Parent = DetailsFrame local MetaCardCorner = Instance.new("UICorner") MetaCardCorner.CornerRadius = UDim.new(0, 8) MetaCardCorner.Parent = MetaCard local MetaAge = Instance.new("TextLabel") MetaAge.Size = UDim2.new(0.5, -10, 0, 18) MetaAge.Position = UDim2.new(0, 10, 0, 8) MetaAge.BackgroundTransparency = 1 MetaAge.TextColor3 = Color3.fromRGB(220, 225, 240) MetaAge.TextSize = 11 MetaAge.Font = Enum.Font.GothamMedium MetaAge.TextXAlignment = Enum.TextXAlignment.Left MetaAge.Text = "๐ŸŽ‚ Age: --" MetaAge.Parent = MetaCard local MetaLocation = Instance.new("TextLabel") MetaLocation.Size = UDim2.new(0.5, -10, 0, 18) MetaLocation.Position = UDim2.new(0.5, 5, 0, 8) MetaLocation.BackgroundTransparency = 1 MetaLocation.TextColor3 = Color3.fromRGB(220, 225, 240) MetaLocation.TextSize = 11 MetaLocation.Font = Enum.Font.GothamMedium MetaLocation.TextXAlignment = Enum.TextXAlignment.Left MetaLocation.Text = "๐ŸŒ Location: --" MetaLocation.Parent = MetaCard local MetaReason = Instance.new("TextLabel") MetaReason.Size = UDim2.new(1, -20, 0, 18) MetaReason.Position = UDim2.new(0, 10, 0, 30) MetaReason.BackgroundTransparency = 1 MetaReason.TextColor3 = Color3.fromRGB(255, 130, 130) MetaReason.TextSize = 11 MetaReason.Font = Enum.Font.GothamMedium MetaReason.TextXAlignment = Enum.TextXAlignment.Left MetaReason.Text = "๐ŸŽฏ Reason: --" MetaReason.Parent = MetaCard local MetaFPS = Instance.new("TextLabel") MetaFPS.Size = UDim2.new(0.5, -10, 0, 18) MetaFPS.Position = UDim2.new(0, 10, 0, 52) MetaFPS.BackgroundTransparency = 1 MetaFPS.TextColor3 = Color3.fromRGB(130, 255, 170) MetaFPS.TextSize = 11 MetaFPS.Font = Enum.Font.GothamMedium MetaFPS.TextXAlignment = Enum.TextXAlignment.Left MetaFPS.Text = "โšก FPS: --" MetaFPS.Parent = MetaCard local MetaDevice = Instance.new("TextLabel") MetaDevice.Size = UDim2.new(0.5, -10, 0, 18) MetaDevice.Position = UDim2.new(0.5, 5, 0, 52) MetaDevice.BackgroundTransparency = 1 MetaDevice.TextColor3 = Color3.fromRGB(160, 200, 255) MetaDevice.TextSize = 11 MetaDevice.Font = Enum.Font.GothamMedium MetaDevice.TextXAlignment = Enum.TextXAlignment.Left MetaDevice.Text = "๐Ÿ“ฑ Device: --" MetaDevice.Parent = MetaCard -- DRAGGABLE PARENT WIDGET local WidgetContainer = Instance.new("Frame") WidgetContainer.Name = "TopWidgetContainer" WidgetContainer.Size = UDim2.new(0, 88, 0, 42) WidgetContainer.Position = UDim2.new(0.5, -44, 0, 10) WidgetContainer.BackgroundTransparency = 1 WidgetContainer.ZIndex = 1000000 WidgetContainer.Active = true WidgetContainer.Parent = ScreenGui -- Script Logo Button local ToggleCircle = Instance.new("ImageButton") ToggleCircle.Name = "RuleBreakerToggle" ToggleCircle.Size = UDim2.new(0, 42, 0, 42) ToggleCircle.Position = UDim2.new(0, 0, 0, 0) ToggleCircle.BackgroundColor3 = Color3.fromRGB(20, 24, 34) ToggleCircle.BorderSizePixel = 0 ToggleCircle.ZIndex = 1000001 ToggleCircle.Parent = WidgetContainer local CircleCorner = Instance.new("UICorner") CircleCorner.CornerRadius = UDim.new(1, 0) CircleCorner.Parent = ToggleCircle local CircleStroke = Instance.new("UIStroke") CircleStroke.Color = Color3.fromRGB(255, 255, 255) CircleStroke.Thickness = 2 CircleStroke.Parent = ToggleCircle local CircleIcon = Instance.new("TextLabel") CircleIcon.Size = UDim2.new(1, 0, 1, 0) CircleIcon.BackgroundTransparency = 1 CircleIcon.Text = "๐Ÿ‘‘" CircleIcon.TextSize = 18 CircleIcon.Parent = ToggleCircle -- Lock / Unlock Toggle Button local LockButton = Instance.new("TextButton") LockButton.Name = "LockButton" LockButton.Size = UDim2.new(0, 42, 0, 42) LockButton.Position = UDim2.new(0, 46, 0, 0) LockButton.BackgroundColor3 = Color3.fromRGB(20, 24, 34) LockButton.BorderSizePixel = 0 LockButton.Text = "๐Ÿ”“" LockButton.TextSize = 16 LockButton.ZIndex = 1000001 LockButton.Parent = WidgetContainer local LockCorner = Instance.new("UICorner") LockCorner.CornerRadius = UDim.new(1, 0) LockCorner.Parent = LockButton local LockStroke = Instance.new("UIStroke") LockStroke.Color = Color3.fromRGB(255, 255, 255) LockStroke.Thickness = 2 LockStroke.Parent = LockButton -- Attach Drag Engine to Container EnableWidgetDragging(WidgetContainer) LockButton.MouseButton1Click:Connect(function() SystemState.IsLocked = not SystemState.IsLocked LockButton.Text = SystemState.IsLocked and "๐Ÿ”’" or "๐Ÿ”“" LockButton.BackgroundColor3 = SystemState.IsLocked and Color3.fromRGB(180, 40, 40) or Color3.fromRGB(20, 24, 34) end) local function SetMenuVisible(visible) SystemState.MenuOpen = visible local tweenInfo = TweenInfo.new(0.25, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out) if visible then DashboardRoot.Visible = true TweenService:Create(DashboardRoot, tweenInfo, { BackgroundTransparency = 0 }):Play() CommandBar:CaptureFocus() else local fadeOut = TweenService:Create(DashboardRoot, tweenInfo, { BackgroundTransparency = 1 }) fadeOut.Completed:Connect(function() if not SystemState.MenuOpen then DashboardRoot.Visible = false end end) fadeOut:Play() end end ToggleCircle.MouseButton1Click:Connect(function() SetMenuVisible(not SystemState.MenuOpen) end) return { ScreenGui = ScreenGui, DashboardRoot = DashboardRoot, AtmosphericBG = AtmosphericBG, CommandBar = CommandBar, CarouselContainer = CarouselContainer, FocusedTitle = FocusedTitle, FocusedSub = FocusedSub, MetaAge = MetaAge, MetaLocation = MetaLocation, MetaReason = MetaReason, MetaFPS = MetaFPS, MetaDevice = MetaDevice, SetMenuVisible = SetMenuVisible } end local UI = BuildUI() -- Card Renderer local CardInstances = {} local function RenderCarousel() if #SystemState.TargetList == 0 then return end local baseW, baseH = 100, 125 local spacing = 120 local startX = 20 local t = EaseOutCubic(math.clamp(SystemState.TransitionProgress, 0, 1)) local focus = SystemState.CurrentIndex + (SystemState.TargetIndex - SystemState.CurrentIndex) * t for i, targetPlayer in ipairs(SystemState.TargetList) do local Card = CardInstances[targetPlayer.UserId] if Card then local rel = (i - 1) - (focus - 1) local d = math.abs(rel) local scale = (d < 0.001) and 1.1 or math.max(0.8, 1.0 - 0.12 * math.min(d, 2.5)) local w, h = baseW * scale, baseH * scale local x = startX + (i - 1) * spacing - (focus - 1) * spacing local y = (baseH - h) / 2 local selected_amount = math.max(0, 1 - d) Card.Size = UDim2.new(0, w, 0, h) Card.Position = UDim2.new(0, x, 0, y) Card.ZIndex = math.floor(10 - d) local FrameBox = Card:FindFirstChild("FrameBox") local Stroke = FrameBox and FrameBox:FindFirstChildOfClass("UIStroke") if Stroke then if selected_amount > 0 then Stroke.Color = Color3.fromRGB(255, 255, 255) Stroke.Thickness = 2.5 Stroke.Transparency = 0 pcall(function() UI.AtmosphericBG.Image = Players:GetUserThumbnailAsync(targetPlayer.UserId, Enum.ThumbnailType.AvatarBust, Enum.ThumbnailSize.Size420x420) end) UI.FocusedTitle.Text = targetPlayer.DisplayName UI.FocusedSub.Text = "@" .. targetPlayer.Name local targetData = SystemState.Targets[targetPlayer] if targetData then UI.MetaAge.Text = "๐ŸŽ‚ Age: " .. GetSafeAccountAge(targetPlayer) UI.MetaLocation.Text = "๐ŸŒ Location: " .. (targetData.Location or "Fetching...") UI.MetaReason.Text = "๐ŸŽฏ Reason: " .. (targetData.Reason or "Manual Focus") UI.MetaFPS.Text = "โšก FPS: ~" .. tostring(CurrentFPS) .. " FPS" UI.MetaDevice.Text = "๐Ÿ“ฑ Device: " .. DetectDevice(targetPlayer) end else Stroke.Color = Color3.fromRGB(100, 110, 130) Stroke.Thickness = 1.0 Stroke.Transparency = 0.6 end end end end end -- Target List Synchronizer local function UpdateCarousel() SystemState.TargetList = {} for targetPlayer, _ in pairs(SystemState.Targets) do table.insert(SystemState.TargetList, targetPlayer) end for userId, card in pairs(CardInstances) do card:Destroy() CardInstances[userId] = nil end for i, targetPlayer in ipairs(SystemState.TargetList) do local Card = Instance.new("TextButton") Card.Name = "Card_" .. targetPlayer.UserId Card.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Card.BackgroundTransparency = 1 Card.Text = "" Card.AutoButtonColor = false Card.ClipsDescendants = false Card.Parent = UI.CarouselContainer local FrameBox = Instance.new("Frame") FrameBox.Name = "FrameBox" FrameBox.Size = UDim2.new(1, 0, 1, 0) FrameBox.BackgroundColor3 = Color3.fromRGB(20, 24, 34) FrameBox.ClipsDescendants = true FrameBox.Parent = Card local CardCorner = Instance.new("UICorner") CardCorner.CornerRadius = UDim.new(0, 10) CardCorner.Parent = FrameBox local CardStroke = Instance.new("UIStroke") CardStroke.Color = Color3.fromRGB(255, 255, 255) CardStroke.Thickness = 1.5 CardStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border CardStroke.Parent = FrameBox local CoverArt = Instance.new("ImageLabel") CoverArt.Size = UDim2.new(1, 0, 1, 0) CoverArt.BackgroundTransparency = 1 CoverArt.ScaleType = Enum.ScaleType.Crop pcall(function() CoverArt.Image = Players:GetUserThumbnailAsync(targetPlayer.UserId, Enum.ThumbnailType.AvatarBust, Enum.ThumbnailSize.Size420x420) end) CoverArt.Parent = FrameBox local DisplayLabel = Instance.new("TextLabel") DisplayLabel.Size = UDim2.new(1, -8, 0, 14) DisplayLabel.Position = UDim2.new(0, 4, 1, -18) DisplayLabel.BackgroundTransparency = 1 DisplayLabel.TextColor3 = Color3.fromRGB(255, 255, 255) DisplayLabel.TextSize = 10 DisplayLabel.Font = Enum.Font.GothamBold DisplayLabel.TextTruncate = Enum.TextTruncate.AtEnd DisplayLabel.TextXAlignment = Enum.TextXAlignment.Left DisplayLabel.Text = targetPlayer.DisplayName DisplayLabel.Parent = FrameBox Card.MouseButton1Click:Connect(function() if not SystemState.IsLocked and SystemState.TargetIndex ~= i then SystemState.CurrentIndex = SystemState.TargetIndex SystemState.TargetIndex = i SystemState.TransitionProgress = 0 end end) CardInstances[targetPlayer.UserId] = Card end if #SystemState.TargetList == 0 then UI.FocusedTitle.Text = "No Active Targets" UI.FocusedSub.Text = "Swipe cards or type ;roast " UI.MetaAge.Text = "๐ŸŽ‚ Age: --" UI.MetaLocation.Text = "๐ŸŒ Location: --" UI.MetaReason.Text = "๐ŸŽฏ Reason: --" UI.MetaFPS.Text = "โšก FPS: --" UI.MetaDevice.Text = "๐Ÿ“ฑ Device: --" end RenderCarousel() end -- Render Step Physics RunService.RenderStepped:Connect(function(dt) if SystemState.TransitionProgress < 1 then SystemState.TransitionProgress = math.min(1, SystemState.TransitionProgress + (dt / 0.25)) end if SystemState.MenuOpen then RenderCarousel() end end) -- Command Bar Reader UI.CommandBar.FocusLost:Connect(function(enterPressed) if enterPressed then local text = UI.CommandBar.Text UI.CommandBar.Text = "" local parts = {} for w in text:gmatch("%S+") do table.insert(parts, w) end if #parts > 0 then local cmd = parts[1]:lower() if (cmd == ";roast" or cmd == "roast") and parts[2] then local target = FindPlayerByPartialName(parts[2]) if target then local loc = FetchPlayerLocation(target) SystemState.Targets[target] = { Player = target, LastRoast = 0, Reason = "Manual Target", Location = loc } UpdateCarousel() end elseif cmd == ";stop" or cmd == "stop" then if parts[2] then local target = FindPlayerByPartialName(parts[2]) if target then SystemState.Targets[target] = nil end else SystemState.Targets = {} end UpdateCarousel() end end end end) -- Auto-targeting Chat Listener local function MonitorAutoTargeting(sender, message) if sender == LocalPlayer then return end local msgLower = message:lower() local myName = LocalPlayer.Name:lower() local myDisplay = LocalPlayer.DisplayName:lower() local mentionsMe = msgLower:find(myName) or msgLower:find(myDisplay) or msgLower:find("you") if SystemState.Targets[sender] then for _, apol in ipairs(ApologyKeywords) do if msgLower:find(apol) then SystemState.Targets[sender] = nil UpdateCarousel() SendChatMessage("Apology accepted " .. (sender.DisplayName or sender.Name) .. " ๐Ÿค") return end end end if mentionsMe then for _, nice in ipairs(NiceKeywords) do if msgLower:find(nice) then return end end for _, aggro in ipairs(AggroKeywords) do if msgLower:find(aggro) then if not SystemState.Targets[sender] then local loc = FetchPlayerLocation(sender) SystemState.Targets[sender] = { Player = sender, LastRoast = 0, Reason = "Trigger Keyword: '" .. aggro .. "'", Location = loc } UpdateCarousel() SendChatMessage("Auto-targeted " .. (sender.DisplayName or sender.Name) .. " ๐ŸŽฏ") end return end end end end -- Chat Hooks local function AttachChatListener(player) player.Chatted:Connect(function(msg) MonitorAutoTargeting(player, msg) if SystemState.Targets[player] then local now = os.time() if (now - (SystemState.Targets[player].LastRoast or 0)) >= 3 then SystemState.Targets[player].LastRoast = now task.delay(2, function() local response = GenerateDynamicComboResponse(player, msg) SendChatMessage(response) end) end end end) end for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer then AttachChatListener(p) end end Players.PlayerAdded:Connect(AttachChatListener) Players.PlayerRemoving:Connect(function(p) SystemState.Targets[p] = nil UpdateCarousel() end)