
KeylessUniversal

--[[
Automated Response System - Ultimate Edition (Google Fixed & Expanded)
- Randomized Friendly Apology Pool (Girlfriend Approved ✅)
- Silent Auto-Targeting & Strict Whole-Word Apology Check
- Custom Whitelist/Ignore Commands (;wl, ;ignore, ;stop)
- Live Session Stats Tracker & PS5 Dashboard UI
]]
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")
local SystemState = {
Targets = {},
TargetList = {},
Whitelisted = {},
MenuOpen = false,
IsLocked = false,
CurrentIndex = 1,
TargetIndex = 1,
TransitionProgress = 1,
TotalSessionRoasts = 0
}
local CurrentFPS = 60
RunService.RenderStepped:Connect(function(dt)
if dt > 0 then CurrentFPS = math.floor(1 / dt) end
end)
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
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
local AggroKeywords = {"buns", "trash", "bad", "bot", "terrible", "horrible", "ez", "free kill", "sucks", "noob", "garb", "dog", "shut up", "shutup", "quiet", "ratio", "dumb", "idiot"}
local NiceKeywords = {"w", "gg", "nice", "clutch", "goat", "pro", "carry"}
local EmojiCombos = {" 💀😭✌️", " 🥀🙏😞💔", " 🤨👍😔", " 💀🥀", " 😭💀💔", " 🤨🤣👍", " 🤡💀", " 😭🙏", " 🥱🤫🧏♂️", " 💀", " 😭", " 🤡"}
local CustomApologies = {
"we good now (user), stay on the safe side 🤞",
"no worries at all (user), all love here ❤️",
"it's all good (user), we're just here to have fun ✨",
"water under the bridge (user), let's get it 🙌",
"all good (user), appreciate you stepping up 🤝",
"no hard feelings (user), let's keep the good vibes rolling 🌟"
}
local ContextualClapbacks = {
ShutUp = {
"bro's really trying to police the server chat",
"imagine typing shut up while playing like a training dummy",
"bro thinks he's the admin of the lobby",
"quiet down bro, your stats are embarrassing",
"bro's talking loud for someone getting carried",
"calm down, your keyboard is working harder than you are"
},
Trash = {
"bro is projecting his entire lobby performance right now",
"talking about trash with zero game sense is wild",
"bro's inventory is full of excuses",
"absolute lobby specimen calling others trash",
"bro's skill tree is completely empty"
},
DogOrBot = {
"bot behavior spotted in the wild",
"bro is moving like a tutorial NPC",
"running around like a lost training bot",
"bro got outplayed by physics itself",
"absolute zero mechanical skill"
}
}
local AdvancedFragments = {
Openers = {
"Bro %s", "Why is %s", "Imagine %s", "Look at %s", "Bro %s really thought",
"Absolute cinema watching %s", "Can someone check on %s?", "%s out here moving like", "Bro %s is genuinely acting like"
},
Actions = {
"trying to cook in public", "typing essays with zero game sense", "missing every single input",
"running around like a lost tutorial bot", "blaming their setup for being down bad", "fighting the air and losing",
"dodging skill checks like it's their job", "freezing up the second things get real", "spamming buttons with zero strategy"
},
Punchlines = {
"while getting carried by pure luck.", "and still ending up dead last on the board.", "like a literal training dummy.",
"with negative tactical awareness.", "while the entire server watches in pure silence.", "and expecting everyone to clap.",
"like they downloaded the game five minutes ago.", "and acting like they did something major."
}
}
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 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 IsTrueApology(message)
local exactApologies = {"mb", "my bad", "sorry", "sry", "forgive", "didn't mean to", "didnt mean to"}
local padded = " " .. message:lower() .. " "
for _, apol in ipairs(exactApologies) do
if padded:find(" " .. apol .. " ") then return true end
end
return false
end
local function GenerateDynamicComboResponse(player, message)
local name = player.DisplayName or player.Name
local msgLower = message:lower()
local baseRoast = ""
if msgLower:find("shut") or msgLower:find("quiet") or msgLower:find("ratio") then
local line = ContextualClapbacks.ShutUp[math.random(1, #ContextualClapbacks.ShutUp)]
baseRoast = string.format("Bro %s, %s", name, line)
elseif msgLower:find("trash") or msgLower:find("garb") or msgLower:find("buns") then
local line = ContextualClapbacks.Trash[math.random(1, #ContextualClapbacks.Trash)]
baseRoast = string.format("Look at %s, %s", name, line)
elseif msgLower:find("bot") or msgLower:find("dog") or msgLower:find("dumb") or msgLower:find("idiot") then
local line = ContextualClapbacks.DogOrBot[math.random(1, #ContextualClapbacks.DogOrBot)]
baseRoast = string.format("%s out here, %s", name, line)
else
local opener = AdvancedFragments.Openers[math.random(1, #AdvancedFragments.Openers)]
local action = AdvancedFragments.Actions[math.random(1, #AdvancedFragments.Actions)]
local punchline = AdvancedFragments.Punchlines[math.random(1, #AdvancedFragments.Punchlines)]
baseRoast = string.format("%s %s %s", opener, action, punchline)
baseRoast = string.format(baseRoast, name)
end
if math.random() <= 0.5 then
baseRoast = baseRoast .. EmojiCombos[math.random(1, #EmojiCombos)]
end
return baseRoast
end
local function EaseOutCubic(t) return 1 - math.pow(1 - t, 3) end
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
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.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, 260, 0, 32)
CommandFrame.Position = UDim2.new(1, -360, 0, 20)
CommandFrame.BackgroundColor3 = Color3.fromRGB(30, 34, 46)
CommandFrame.BackgroundTransparency = 0.25
CommandFrame.BorderSizePixel = 0
CommandFrame.Parent = DashboardRoot
Instance.new("UICorner", CommandFrame).CornerRadius = UDim.new(1, 0)
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, ;wl, ;ignore, ;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.Parent = DashboardRoot
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", DetailsFrame)
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
Instance.new("UICorner", TagBadge).CornerRadius = UDim.new(0, 4)
local FocusedTitle = Instance.new("TextLabel", DetailsFrame)
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"
local FocusedSub = Instance.new("TextLabel", DetailsFrame)
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"
local MetaCard = Instance.new("Frame", DetailsFrame)
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
Instance.new("UICorner", MetaCard).CornerRadius = UDim.new(0, 8)
local MetaAge = Instance.new("TextLabel", MetaCard)
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: --"
local MetaLocation = Instance.new("TextLabel", MetaCard)
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: --"
local MetaReason = Instance.new("TextLabel", MetaCard)
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: --"
local MetaShame = Instance.new("TextLabel", MetaCard)
MetaShame.Size = UDim2.new(0.5, -10, 0, 18)
MetaShame.Position = UDim2.new(0, 10, 0, 52)
MetaShame.BackgroundTransparency = 1
MetaShame.TextColor3 = Color3.fromRGB(255, 200, 100)
MetaShame.TextSize = 11
MetaShame.Font = Enum.Font.GothamMedium
MetaShame.TextXAlignment = Enum.TextXAlignment.Left
MetaShame.Text = "🔥 Roasts: 0"
local MetaDevice = Instance.new("TextLabel", MetaCard)
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: --"
local MetaSessionStats = Instance.new("TextLabel", MetaCard)
MetaSessionStats.Name = "MetaSessionStats"
MetaSessionStats.Size = UDim2.new(1, -20, 0, 18)
MetaSessionStats.Position = UDim2.new(0, 10, 0, 75)
MetaSessionStats.BackgroundTransparency = 1
MetaSessionStats.TextColor3 = Color3.fromRGB(130, 255, 160)
MetaSessionStats.TextSize = 11
MetaSessionStats.Font = Enum.Font.GothamBold
MetaSessionStats.TextXAlignment = Enum.TextXAlignment.Left
MetaSessionStats.Text = "⚡ Session Stats: 0 Total Combacks Fired"
local WidgetContainer = Instance.new("Frame", ScreenGui)
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
local ToggleCircle = Instance.new("ImageButton", WidgetContainer)
ToggleCircle.Name = "RuleBreakerToggle"
ToggleCircle.Size = UDim2.new(0, 42, 0, 42)
ToggleCircle.BackgroundColor3 = Color3.fromRGB(20, 24, 34)
ToggleCircle.BorderSizePixel = 0
ToggleCircle.ZIndex = 1000001
Instance.new("UICorner", ToggleCircle).CornerRadius = UDim.new(1, 0)
local CircleStroke = Instance.new("UIStroke", ToggleCircle)
CircleStroke.Color = Color3.fromRGB(255, 255, 255)
CircleStroke.Thickness = 2
local CircleIcon = Instance.new("TextLabel", ToggleCircle)
CircleIcon.Size = UDim2.new(1, 0, 1, 0)
CircleIcon.BackgroundTransparency = 1
CircleIcon.Text = "👑"
CircleIcon.TextSize = 18
local LockButton = Instance.new("TextButton", WidgetContainer)
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
Instance.new("UICorner", LockButton).CornerRadius = UDim.new(1, 0)
local LockStroke = Instance.new("UIStroke", LockButton)
LockStroke.Color = Color3.fromRGB(255, 255, 255)
LockStroke.Thickness = 2
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,
MetaShame = MetaShame,
MetaDevice = MetaDevice,
MetaSessionStats = MetaSessionStats,
SetMenuVisible = SetMenuVisible
}
end
local UI = BuildUI()
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.MetaShame.Text = "🔥 Roasts: " .. tostring(targetData.RoastCount or 0)
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
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.Parent = UI.CarouselContainer
local FrameBox = Instance.new("Frame", Card)
FrameBox.Name = "FrameBox"
FrameBox.Size = UDim2.new(1, 0, 1, 0)
FrameBox.BackgroundColor3 = Color3.fromRGB(20, 24, 34)
FrameBox.ClipsDescendants = true
Instance.new("UICorner", FrameBox).CornerRadius = UDim.new(0, 10)
local CardStroke = Instance.new("UIStroke", FrameBox)
CardStroke.Color = Color3.fromRGB(255, 255, 255)
CardStroke.Thickness = 1.5
local CoverArt = Instance.new("ImageLabel", FrameBox)
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)
local DisplayLabel = Instance.new("TextLabel", FrameBox)
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
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 <name>"
UI.MetaAge.Text = "🎂 Age: --"
UI.MetaLocation.Text = "🌐 Location: --"
UI.MetaReason.Text = "🎯 Reason: --"
UI.MetaShame.Text = "🔥 Roasts: 0"
UI.MetaDevice.Text = "📱 Device: --"
end
RenderCarousel()
end
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)
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 and not SystemState.Whitelisted[target] then
local loc = FetchPlayerLocation(target)
SystemState.Targets[target] = { Player = target, LastRoast = 0, RoastCount = 0, Reason = "Manual Target", Location = loc }
UpdateCarousel()
end
elseif (cmd == ";wl" or cmd == "wl" or cmd == ";friend" or cmd == "friend") and parts[2] then
local target = FindPlayerByPartialName(parts[2])
if target then
SystemState.Whitelisted[target] = true
SystemState.Targets[target] = nil
UpdateCarousel()
SendChatMessage("Whitelisted " .. (target.DisplayName or target.Name) .. " 🛡️ (Safe from targeting)")
end
elseif (cmd == ";unwl" or cmd == "unwl" or cmd == ";unfriend" or cmd == "unfriend") and parts[2] then
local target = FindPlayerByPartialName(parts[2])
if target then
SystemState.Whitelisted[target] = nil
SendChatMessage("Removed whitelist for " .. (target.DisplayName or target.Name) .. " 👀")
end
elseif (cmd == ";ignore" or cmd == "ignore") and parts[2] then
local target = FindPlayerByPartialName(parts[2])
if target then
SystemState.Whitelisted[target] = true
SystemState.Targets[target] = nil
UpdateCarousel()
SendChatMessage("Ignored " .. (target.DisplayName or target.Name) .. " 🛡️")
end
elseif (cmd == ";unignore" or cmd == "unignore") and parts[2] then
local target = FindPlayerByPartialName(parts[2])
if target then
SystemState.Whitelisted[target] = nil
SendChatMessage("Unignored " .. (target.DisplayName or target.Name) .. " 👀")
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)
local function MonitorAutoTargeting(sender, message)
if sender == LocalPlayer or SystemState.Whitelisted[sender] 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
if IsTrueApology(message) then
SystemState.Targets[sender] = nil
UpdateCarousel()
local template = CustomApologies[math.random(1, #CustomApologies)]
local finalApology = template:gsub("%(user%)", sender.DisplayName or sender.Name)
SendChatMessage(finalApology)
return
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, RoastCount = 0, Reason = "Trigger: '" .. aggro .. "'", Location = loc }
UpdateCarousel()
end
return
end
end
end
end
local function AttachChatListener(player)
player.Chatted:Connect(function(msg)
MonitorAutoTargeting(player, msg)
local targetData = SystemState.Targets[player]
if targetData and not SystemState.Whitelisted[player] then
local now = os.time()
if (now - (targetData.LastRoast or 0)) >= 3 then
targetData.LastRoast = now
targetData.RoastCount = (targetData.RoastCount or 0) + 1
SystemState.TotalSessionRoasts = SystemState.TotalSessionRoasts + 1
UI.MetaSessionStats.Text = string.format("⚡ Session Stats: %d Total Combacks Fired", SystemState.TotalSessionRoasts)
task.delay(2, function()
local response = GenerateDynamicComboResponse(player, msg)
SendChatMessage(response)
if SystemState.TargetList[SystemState.TargetIndex] == player then
UI.MetaShame.Text = "🔥 Roasts: " .. tostring(targetData.RoastCount)
end
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
SystemState.Whitelisted[p] = nil
UpdateCarousel()
end)



does the AI chats get flagged?