local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") local HttpService = game:GetService("HttpService") local VirtualInputManager = game:GetService("VirtualInputManager") local LocalPlayer = Players.LocalPlayer -- Target text label path local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local GameGui = PlayerGui:WaitForChild("GameGui", 5) local TopFrame = GameGui and GameGui:WaitForChild("TopFrame", 5) local LeftLabel = TopFrame and TopFrame:WaitForChild("LeftLabel", 5) if not LeftLabel then warn("LeftLabel not found at Path: PlayerGui.GameGui.TopFrame.LeftLabel") return end -- Re-run cleanup if CoreGui:FindFirstChild("EmojiTrackerGui") then CoreGui.EmojiTrackerGui:Destroy() end -- State variables local autoAnswerEnabled = false local autoDelay = 0.2 local EMOJI_DB = {} local lastAnsweredText = "" local isSubmitting = false -- Compact UI Setup local screenGui = Instance.new("ScreenGui") screenGui.Name = "EmojiTrackerGui" screenGui.ResetOnSpawn = false screenGui.Parent = CoreGui local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 250, 0, 162) mainFrame.Position = UDim2.new(0.5, -125, 0.2, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = mainFrame local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, 0, 0, 22) titleLabel.Position = UDim2.new(0, 0, 0, 4) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "Emoji Detector" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.TextSize = 14 titleLabel.Font = Enum.Font.SourceSansBold titleLabel.Parent = mainFrame local foundLabel = Instance.new("TextLabel") foundLabel.Size = UDim2.new(1, -16, 0, 18) foundLabel.Position = UDim2.new(0, 8, 0, 26) foundLabel.BackgroundTransparency = 1 foundLabel.Text = "Found Emojis: None" foundLabel.TextColor3 = Color3.fromRGB(180, 180, 180) foundLabel.TextSize = 12 foundLabel.Font = Enum.Font.SourceSans foundLabel.TextWrapped = true foundLabel.Parent = mainFrame local resultLabel = Instance.new("TextLabel") resultLabel.Size = UDim2.new(1, -16, 0, 46) resultLabel.Position = UDim2.new(0, 8, 0, 46) resultLabel.BackgroundColor3 = Color3.fromRGB(35, 35, 50) resultLabel.Text = "Loading database..." resultLabel.TextColor3 = Color3.fromRGB(255, 200, 85) resultLabel.TextSize = 12 resultLabel.Font = Enum.Font.SourceSansBold resultLabel.TextWrapped = true resultLabel.Parent = mainFrame local resultCorner = Instance.new("UICorner") resultCorner.CornerRadius = UDim.new(0, 6) resultCorner.Parent = resultLabel -- Auto Answer Toggle Button local autoBtn = Instance.new("TextButton") autoBtn.Size = UDim2.new(1, -16, 0, 24) autoBtn.Position = UDim2.new(0, 8, 0, 98) autoBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50) autoBtn.Text = "Auto Answer: OFF" autoBtn.TextColor3 = Color3.fromRGB(255, 255, 255) autoBtn.TextSize = 13 autoBtn.Font = Enum.Font.SourceSansBold autoBtn.Parent = mainFrame local autoCorner = Instance.new("UICorner") autoCorner.CornerRadius = UDim.new(0, 6) autoCorner.Parent = autoBtn autoBtn.MouseButton1Click:Connect(function() autoAnswerEnabled = not autoAnswerEnabled if autoAnswerEnabled then autoBtn.BackgroundColor3 = Color3.fromRGB(40, 160, 80) autoBtn.Text = "Auto Answer: ON" lastAnsweredText = "" -- Force scan on current text else autoBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50) autoBtn.Text = "Auto Answer: OFF" end end) -- Delay Input Row local delayContainer = Instance.new("Frame") delayContainer.Size = UDim2.new(1, -16, 0, 24) delayContainer.Position = UDim2.new(0, 8, 0, 128) delayContainer.BackgroundTransparency = 1 delayContainer.Parent = mainFrame local delayLabel = Instance.new("TextLabel") delayLabel.Size = UDim2.new(0, 85, 1, 0) delayLabel.Position = UDim2.new(0, 0, 0, 0) delayLabel.BackgroundTransparency = 1 delayLabel.Text = "Delay (sec):" delayLabel.TextColor3 = Color3.fromRGB(200, 200, 200) delayLabel.TextSize = 12 delayLabel.Font = Enum.Font.SourceSansBold delayLabel.TextXAlignment = Enum.TextXAlignment.Left delayLabel.Parent = delayContainer local delayBox = Instance.new("TextBox") delayBox.Size = UDim2.new(1, -90, 1, 0) delayBox.Position = UDim2.new(0, 90, 0, 0) delayBox.BackgroundColor3 = Color3.fromRGB(35, 35, 50) delayBox.Text = "0.2" delayBox.PlaceholderText = "0.2" delayBox.TextColor3 = Color3.fromRGB(255, 255, 255) delayBox.TextSize = 12 delayBox.Font = Enum.Font.SourceSansBold delayBox.Parent = delayContainer local delayCorner = Instance.new("UICorner") delayCorner.CornerRadius = UDim.new(0, 6) delayCorner.Parent = delayBox delayBox:GetPropertyChangedSignal("Text"):Connect(function() local val = tonumber(delayBox.Text) if val and val >= 0 then autoDelay = val end end) -- Universal Button Clicker local function clickGuiElement(btn) if not btn then return false end -- Method 1: Executor firesignal if firesignal then pcall(function() firesignal(btn.MouseButton1Click) end) pcall(function() firesignal(btn.MouseButton1Down) end) pcall(function() firesignal(btn.Activated) end) return true end -- Method 2: Executor getconnections if getconnections then local clicked = false for _, conn in ipairs(getconnections(btn.MouseButton1Click)) do pcall(function() conn:Fire() end) clicked = true end for _, conn in ipairs(getconnections(btn.Activated)) do pcall(function() conn:Fire() end) clicked = true end if clicked then return true end end -- Method 3: VirtualInputManager physically clicks center of button if btn:IsA("GuiObject") and btn.AbsolutePosition and btn.AbsoluteSize then local x = btn.AbsolutePosition.X + (btn.AbsoluteSize.X / 2) local y = btn.AbsolutePosition.Y + (btn.AbsoluteSize.Y / 2) + 36 -- offset for inset top bar pcall(function() VirtualInputManager:SendMouseButtonEvent(x, y, 0, true, game, 0) task.wait(0.05) VirtualInputManager:SendMouseButtonEvent(x, y, 0, false, game, 0) end) return true end return false end -- Locates and clicks the specific option button inside EmojiFrame local function clickOptionButton(choiceIndex) local emojiGui = PlayerGui:FindFirstChild("GameGui") and PlayerGui.GameGui:FindFirstChild("EmojiGui") local emojiFrame = emojiGui and emojiGui:FindFirstChild("Frame") and emojiGui.Frame:FindFirstChild("EmojiFrame") if not emojiFrame then warn("EmojiFrame path not found: PlayerGui.GameGui.EmojiGui.Frame.EmojiFrame") return false end -- Find target frame by name ("1", "2", "3", "4") or by order local targetFrame = emojiFrame:FindFirstChild(tostring(choiceIndex)) if not targetFrame then local validFrames = {} for _, child in ipairs(emojiFrame:GetChildren()) do if child:IsA("GuiObject") then table.insert(validFrames, child) end end targetFrame = validFrames[choiceIndex] end if not targetFrame then warn("Could not find frame for index: " .. tostring(choiceIndex)) return false end -- Look for button inside target frame or use frame itself if it is a button local targetButton = targetFrame:FindFirstChildWhichIsA("GuiButton", true) if not targetButton and targetFrame:IsA("GuiButton") then targetButton = targetFrame end if targetButton then return clickGuiElement(targetButton) end return false end -- Robust HTTP GET function local function httpGet(url) local customRequest = (syn and syn.request) or (http and http.request) or request or http_request if customRequest then local success, res = pcall(customRequest, {Url = url, Method = "GET"}) if success and res and res.Body then return res.Body end end return game:HttpGet(url) end local MIRRORS = { "https://cdn.jsdelivr.net/npm/unicode-emoji-json@0.6.0/data-by-emoji.json", "https://unpkg.com/unicode-emoji-json@0.6.0/data-by-emoji.json", "https://raw.githubusercontent.com/github/unicode-emoji-json/main/data-by-emoji.json" } task.spawn(function() local responseData = nil for _, url in ipairs(MIRRORS) do local success, result = pcall(function() return httpGet(url) end) if success and result and #result > 1000 then responseData = result break end end if responseData then local success, rawData = pcall(function() return HttpService:JSONDecode(responseData) end) if success and rawData then for emojiChar, info in pairs(rawData) do EMOJI_DB[emojiChar] = info.name end resultLabel.TextColor3 = Color3.fromRGB(85, 255, 127) resultLabel.Text = "Database Loaded!" return end end resultLabel.TextColor3 = Color3.fromRGB(255, 85, 85) resultLabel.Text = "Failed to load Emoji DB." end) -- Unicode Helpers local function isEmojiCodePoint(cp) return (cp >= 0x1F600 and cp <= 0x1F64F) or (cp >= 0x1F300 and cp <= 0x1F5FF) or (cp >= 0x1F680 and cp <= 0x1F6FF) or (cp >= 0x1F900 and cp <= 0x1F9FF) or (cp >= 0x1FA70 and cp <= 0x1FAFF) or (cp >= 0x2600 and cp <= 0x26FF) or (cp >= 0x2700 and cp <= 0x27BF) or (cp >= 0x2300 and cp <= 0x23FF) end local function normalizeGrapheme(grapheme) local cleaned = "" for _, cp in utf8.codes(grapheme) do if cp ~= 0xFE0F and cp ~= 0xFE0E then cleaned = cleaned .. utf8.char(cp) end end return cleaned end local function getCharLength(str) return utf8.len(str) or #str end -- Main Check & Click Loop local function checkAndSubmit() if next(EMOJI_DB) == nil or isSubmitting then return end local rawText = LeftLabel.Text or "" local cleanText = rawText:gsub("<[^>]->", "") if cleanText == "" then foundLabel.Text = "Found: None" resultLabel.Text = "Waiting for game text..." return end local foundEmojis = {} local longestEmoji = nil local longestName = "" local maxLen = 0 local longestIndex = nil for startPos, endPos in utf8.graphemes(cleanText) do local rawGrapheme = string.sub(cleanText, startPos, endPos) local normGrapheme = normalizeGrapheme(rawGrapheme) local emojiName = EMOJI_DB[rawGrapheme] or EMOJI_DB[normGrapheme] if not emojiName then local success, firstCodePoint = pcall(utf8.codepoint, normGrapheme) if success and isEmojiCodePoint(firstCodePoint) then emojiName = "unnamed emoji" end end if emojiName then table.insert(foundEmojis, normGrapheme) local currentIndex = #foundEmojis local nameLen = getCharLength(emojiName) if nameLen > maxLen then maxLen = nameLen longestEmoji = normGrapheme longestName = emojiName longestIndex = currentIndex end end end if #foundEmojis > 0 then foundLabel.Text = "Found: " .. table.concat(foundEmojis, " ") resultLabel.Text = string.format("Longest: %s (#%d)\nName: %s (%d)", longestEmoji, longestIndex, longestName, maxLen) if autoAnswerEnabled and longestIndex and cleanText ~= lastAnsweredText then lastAnsweredText = cleanText isSubmitting = true task.spawn(function() if autoDelay > 0 then task.wait(autoDelay) end local clicked = clickOptionButton(longestIndex) if clicked then resultLabel.Text = string.format("CLICKED #%d: %s (%d)", longestIndex, longestName, maxLen) else resultLabel.Text = string.format("FAILED CLICK #%d", longestIndex) end task.wait(0.5) isSubmitting = false end) end else foundLabel.Text = "Found: None" resultLabel.Text = "No emojis detected." end end -- Continuous Polling task.spawn(function() while true do checkAndSubmit() task.wait(0.15) end end)