Grok reporter
Key RequiredUniversal

Grok reporter

Universal Scriptepicmuscles86epicmuscles86 316 views 159 executesUpdated Jun 27, 2026
Unrated
00
Lua Script•540 lines (21176 chars)
-- Grok Reporter (для Delta)
local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local plr = Players.LocalPlayer

-- ══════════════════════════════════════════
--               ПЕРЕВОДЫ
-- ══════════════════════════════════════════
local langs = {
    RU={flag="🇷🇺",name="Русский",open="☰ Репортер",close="✕ Закрыть",
        t1="🟢 Онлайн",t2="🔍 Поиск",t3="🌐 Язык",
        sel="Выбери игрока",ph="Введи ник (мин. 3 символа)...",
        srch="⏳ Поиск...",nf="Никого не найдено",fd="Найдено: ",mc="Мин. 3 символа",
        on="🟢 онлайн",off="⚫ оффлайн",
        ws="⚠ Выбери игрока!",wn="⚠ Не в этом сервере",ok="✔ Репорт отправлен!",
        r={"Читы / Эксплойты","Токсичность","Харассмент","Спам / Флуд","Неприемл. контент","Скам"}},
    EN={flag="🇬🇧",name="English",open="☰ Reporter",close="✕ Close",
        t1="🟢 Online",t2="🔍 Search",t3="🌐 Language",
        sel="Select a player",ph="Enter nickname (min. 3 chars)...",
        srch="⏳ Searching...",nf="Nobody found",fd="Found: ",mc="Min. 3 characters",
        on="🟢 online",off="⚫ offline",
        ws="⚠ Select a player!",wn="⚠ Not in this server",ok="✔ Report sent!",
        r={"Exploits / Cheats","Toxicity","Harassment","Spam / Flood","Inappropriate Content","Scamming"}},
    DE={flag="🇩🇪",name="Deutsch",open="☰ Reporter",close="✕ Schließen",
        t1="🟢 Online",t2="🔍 Suche",t3="🌐 Sprache",
        sel="Spieler auswählen",ph="Spitzname (mind. 3 Zeichen)...",
        srch="⏳ Suche...",nf="Niemanden gefunden",fd="Gefunden: ",mc="Mind. 3 Zeichen",
        on="🟢 online",off="⚫ offline",
        ws="⚠ Spieler auswählen!",wn="⚠ Nicht auf diesem Server",ok="✔ Meldung gesendet!",
        r={"Exploits / Cheats","Toxizität","Belästigung","Spam / Flood","Unangemessene Inhalte","Betrug"}},
    FR={flag="🇫🇷",name="Français",open="☰ Reporter",close="✕ Fermer",
        t1="🟢 En ligne",t2="🔍 Recherche",t3="🌐 Langue",
        sel="Choisir un joueur",ph="Pseudo (min. 3 caractères)...",
        srch="⏳ Recherche...",nf="Personne trouvée",fd="Trouvé: ",mc="Min. 3 caractères",
        on="🟢 en ligne",off="⚫ hors ligne",
        ws="⚠ Choisissez un joueur!",wn="⚠ Pas sur ce serveur",ok="✔ Signalement envoyé!",
        r={"Exploits / Triches","Toxicité","Harcèlement","Spam / Flood","Contenu inapproprié","Arnaque"}},
    CN={flag="🇨🇳",name="中文",open="☰ 举报",close="✕ 关闭",
        t1="🟢 在线",t2="🔍 搜索",t3="🌐 语言",
        sel="选择玩家",ph="输入昵称(至少3个字符)...",
        srch="⏳ 搜索中...",nf="未找到任何人",fd="找到: ",mc="至少3个字符",
        on="🟢 在线",off="⚫ 离线",
        ws="⚠ 请选择玩家!",wn="⚠ 该玩家不在此服务器",ok="✔ 举报已发送!",
        r={"外挂 / 作弊","有害行为","骚扰","刷屏 / 洪水","不当内容","诈骗"}},
    JP={flag="🇯🇵",name="日本語",open="☰ 報告",close="✕ 閉じる",
        t1="🟢 オンライン",t2="🔍 検索",t3="🌐 言語",
        sel="プレイヤーを選択",ph="ニックネーム(最低3文字)...",
        srch="⏳ 検索中...",nf="見つかりませんでした",fd="見つかった: ",mc="最低3文字",
        on="🟢 オンライン",off="⚫ オフライン",
        ws="⚠ プレイヤーを選択!",wn="⚠ このサーバーにいません",ok="✔ 報告を送信しました!",
        r={"チート / ハック","有害行為","嫌がらせ","スパム / フラッド","不適切なコンテンツ","詐欺"}},
    KR={flag="🇰🇷",name="한국어",open="☰ 신고",close="✕ 닫기",
        t1="🟢 온라인",t2="🔍 검색",t3="🌐 언어",
        sel="플레이어 선택",ph="닉네임 입력 (최소 3자)...",
        srch="⏳ 검색 중...",nf="아무도 없음",fd="찾음: ",mc="최소 3자 입력",
        on="🟢 온라인",off="⚫ 오프라인",
        ws="⚠ 플레이어를 선택하세요!",wn="⚠ 이 서버에 없음",ok="✔ 신고 전송됨!",
        r={"핵 / 치트","독성행위","괴롭힘","스팸 / 플러드","부적절한 콘텐츠","사기"}},
    AR={flag="🇦🇷",name="Argentino",open="☰ Reportar",close="✕ Cerrar",
        t1="🟢 En línea",t2="🔍 Buscar",t3="🌐 Idioma",
        sel="Elegí un jugador",ph="Ingresá el apodo (mín. 3)...",
        srch="⏳ Buscando...",nf="No se encontró nadie",fd="Encontrado: ",mc="Mín. 3 caracteres",
        on="🟢 en línea",off="⚫ sin conexión",
        ws="⚠ ¡Elegí un jugador!",wn="⚠ No está en este server",ok="✔ ¡Reporte enviado!",
        r={"Exploits / Trucos","Toxicidad","Acoso","Spam / Flood","Contenido inapropiado","Estafa"}},
    ES={flag="🇪🇸",name="Español",open="☰ Reportar",close="✕ Cerrar",
        t1="🟢 En línea",t2="🔍 Buscar",t3="🌐 Idioma",
        sel="Selecciona un jugador",ph="Introduce el apodo (mín. 3)...",
        srch="⏳ Buscando...",nf="No se encontró a nadie",fd="Encontrado: ",mc="Mín. 3 caracteres",
        on="🟢 en línea",off="⚫ sin conexión",
        ws="⚠ ¡Selecciona un jugador!",wn="⚠ No está en este servidor",ok="✔ ¡Reporte enviado!",
        r={"Exploits / Trucos","Toxicidad","Acoso","Spam / Flood","Contenido inapropiado","Estafa"}},
    PL={flag="🇵🇱",name="Polski",open="☰ Zgłoś",close="✕ Zamknij",
        t1="🟢 Online",t2="🔍 Szukaj",t3="🌐 Język",
        sel="Wybierz gracza",ph="Wpisz nick (min. 3 znaki)...",
        srch="⏳ Szukanie...",nf="Nikogo nie znaleziono",fd="Znaleziono: ",mc="Min. 3 znaki",
        on="🟢 online",off="⚫ offline",
        ws="⚠ Wybierz gracza!",wn="⚠ Gracza nie ma na tym serwerze",ok="✔ Zgłoszenie wysłane!",
        r={"Exploity / Cheaty","Toksyczność","Nękanie","Spam / Flood","Nieodpowiednia treść","Oszustwo"}},
}
local langOrder = {"RU","EN","DE","FR","CN","JP","KR","AR","ES","PL"}
local curLang = "RU"
local function L() return langs[curLang] end

-- ══════════════════════════════════════════
--                   GUI
-- ══════════════════════════════════════════
local gui = Instance.new("ScreenGui")
gui.Name = "ReporterGrok"
gui.ResetOnSpawn = false
gui.Parent = plr:WaitForChild("PlayerGui")

local function corner(p, r) local c=Instance.new("UICorner",p) c.CornerRadius=UDim.new(0,r or 8) end

-- КНОПКА ОТКРЫТЬ
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0,130,0,45)
toggleBtn.Position = UDim2.new(0,10,0.5,0)
toggleBtn.BackgroundColor3 = Color3.fromRGB(200,40,40)
toggleBtn.Text = L().open
toggleBtn.TextColor3 = Color3.new(1,1,1)
toggleBtn.TextScaled = true
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.BorderSizePixel = 0
toggleBtn.ZIndex = 10
toggleBtn.Parent = gui
corner(toggleBtn)

-- ГЛАВНЫЙ ФРЕЙМ
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0.93,0,0.84,0)
frame.Position = UDim2.new(0.035,0,0.08,0)
frame.BackgroundColor3 = Color3.fromRGB(25,25,35)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
frame.Visible = false
frame.Parent = gui

toggleBtn.MouseButton1Click:Connect(function()
    frame.Visible = not frame.Visible
    toggleBtn.Text = frame.Visible and L().close or L().open
end)

-- ЗАГОЛОВОК
local titleLbl = Instance.new("TextLabel")
titleLbl.Size = UDim2.new(1,-55,0,55)
titleLbl.BackgroundColor3 = Color3.fromRGB(200,40,40)
titleLbl.Text = "Grok Reporter"
titleLbl.TextColor3 = Color3.new(1,1,1)
titleLbl.TextScaled = true
titleLbl.Font = Enum.Font.GothamBold
titleLbl.BorderSizePixel = 0
titleLbl.Parent = frame

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0,55,0,55)
closeBtn.Position = UDim2.new(1,-55,0,0)
closeBtn.BackgroundColor3 = Color3.fromRGB(160,30,30)
closeBtn.Text = "✕"
closeBtn.TextColor3 = Color3.new(1,1,1)
closeBtn.TextScaled = true
closeBtn.Font = Enum.Font.GothamBold
closeBtn.BorderSizePixel = 0
closeBtn.Parent = frame
closeBtn.MouseButton1Click:Connect(function()
    frame.Visible = false
    toggleBtn.Text = L().open
end)

-- ══════════════════════════════════════════
--              ЛЕВАЯ ПАНЕЛЬ
-- ══════════════════════════════════════════
local leftPanel = Instance.new("Frame")
leftPanel.Size = UDim2.new(0.38,0,1,-55)
leftPanel.Position = UDim2.new(0,0,0,55)
leftPanel.BackgroundColor3 = Color3.fromRGB(30,30,45)
leftPanel.BorderSizePixel = 0
leftPanel.Parent = frame

-- ТАБЫ (3 шт)
local function makeTab(text, xPos)
    local t = Instance.new("TextButton")
    t.Size = UDim2.new(0.333,0,0,38)
    t.Position = UDim2.new(xPos,0,0,0)
    t.BackgroundColor3 = Color3.fromRGB(45,45,60)
    t.Text = text
    t.TextColor3 = Color3.fromRGB(180,180,180)
    t.TextScaled = true
    t.Font = Enum.Font.GothamBold
    t.BorderSizePixel = 0
    t.Parent = leftPanel
    return t
end

local tabOnlineBtn = makeTab(L().t1, 0)
local tabSearchBtn = makeTab(L().t2, 0.333)
local tabLangBtn   = makeTab(L().t3, 0.666)
tabOnlineBtn.BackgroundColor3 = Color3.fromRGB(200,40,40)
tabOnlineBtn.TextColor3 = Color3.new(1,1,1)

-- ПАНЕЛЬ ОНЛАЙН
local onlinePanel = Instance.new("Frame")
onlinePanel.Size = UDim2.new(1,0,1,-38)
onlinePanel.Position = UDim2.new(0,0,0,38)
onlinePanel.BackgroundTransparency = 1
onlinePanel.Parent = leftPanel

local playerScroll = Instance.new("ScrollingFrame")
playerScroll.Size = UDim2.new(1,0,1,0)
playerScroll.BackgroundColor3 = Color3.fromRGB(30,30,45)
playerScroll.BorderSizePixel = 0
playerScroll.ScrollBarThickness = 6
playerScroll.TopImage = "" playerScroll.BottomImage = ""
playerScroll.CanvasSize = UDim2.new(0,0,0,0)
playerScroll.Parent = onlinePanel

-- ПАНЕЛЬ ПОИСК
local searchPanel = Instance.new("Frame")
searchPanel.Size = UDim2.new(1,0,1,-38)
searchPanel.Position = UDim2.new(0,0,0,38)
searchPanel.BackgroundTransparency = 1
searchPanel.Visible = false
searchPanel.Parent = leftPanel

local searchBox = Instance.new("TextBox")
searchBox.Size = UDim2.new(0.94,0,0,40)
searchBox.Position = UDim2.new(0.03,0,0.02,0)
searchBox.BackgroundColor3 = Color3.fromRGB(40,40,55)
searchBox.PlaceholderText = L().ph
searchBox.Text = ""
searchBox.TextColor3 = Color3.new(1,1,1)
searchBox.TextScaled = true
searchBox.Font = Enum.Font.Gotham
searchBox.BorderSizePixel = 0
searchBox.ClearTextOnFocus = false
searchBox.Parent = searchPanel
corner(searchBox,6)

local searchingLbl = Instance.new("TextLabel")
searchingLbl.Size = UDim2.new(1,0,0,28)
searchingLbl.Position = UDim2.new(0,0,0,46)
searchingLbl.BackgroundTransparency = 1
searchingLbl.Text = ""
searchingLbl.TextColor3 = Color3.fromRGB(150,150,150)
searchingLbl.TextScaled = true
searchingLbl.Font = Enum.Font.Gotham
searchingLbl.Parent = searchPanel

local searchScroll = Instance.new("ScrollingFrame")
searchScroll.Size = UDim2.new(1,0,1,-78)
searchScroll.Position = UDim2.new(0,0,0,78)
searchScroll.BackgroundColor3 = Color3.fromRGB(30,30,45)
searchScroll.BorderSizePixel = 0
searchScroll.ScrollBarThickness = 6
searchScroll.TopImage = "" searchScroll.BottomImage = ""
searchScroll.CanvasSize = UDim2.new(0,0,0,0)
searchScroll.Parent = searchPanel

-- ПАНЕЛЬ ЯЗЫК
local langPanel = Instance.new("Frame")
langPanel.Size = UDim2.new(1,0,1,-38)
langPanel.Position = UDim2.new(0,0,0,38)
langPanel.BackgroundColor3 = Color3.fromRGB(28,28,42)
langPanel.BorderSizePixel = 0
langPanel.Visible = false
langPanel.Parent = leftPanel

local langScroll = Instance.new("ScrollingFrame")
langScroll.Size = UDim2.new(1,0,1,0)
langScroll.BackgroundTransparency = 1
langScroll.BorderSizePixel = 0
langScroll.ScrollBarThickness = 6
langScroll.TopImage = "" langScroll.BottomImage = ""
langScroll.CanvasSize = UDim2.new(0,0,0,0)
langScroll.Parent = langPanel

-- Кнопки языков
local langBtns = {}
for i, code in ipairs(langOrder) do
    local ldata = langs[code]
    local row = math.floor((i-1)/2)
    local col = (i-1) % 2
    local lb = Instance.new("TextButton")
    lb.Size = UDim2.new(0.47,0,0,56)
    lb.Position = UDim2.new(col*0.5+0.015,0,0,row*60+4)
    lb.BackgroundColor3 = (code==curLang) and Color3.fromRGB(200,40,40) or Color3.fromRGB(45,45,65)
    lb.Text = ldata.flag.."\n"..ldata.name
    lb.TextColor3 = Color3.new(1,1,1)
    lb.TextScaled = true
    lb.Font = Enum.Font.GothamBold
    lb.BorderSizePixel = 0
    lb.Parent = langScroll
    corner(lb,6)
    langBtns[code] = lb
end
langScroll.CanvasSize = UDim2.new(0,0,0, math.ceil(#langOrder/2)*60+8)

-- ══════════════════════════════════════════
--             ПРАВАЯ ПАНЕЛЬ
-- ══════════════════════════════════════════
local rightPanel = Instance.new("Frame")
rightPanel.Size = UDim2.new(0.62,0,1,-55)
rightPanel.Position = UDim2.new(0.38,0,0,55)
rightPanel.BackgroundColor3 = Color3.fromRGB(25,25,35)
rightPanel.BorderSizePixel = 0
rightPanel.Parent = frame

local selectedLbl = Instance.new("TextLabel")
selectedLbl.Size = UDim2.new(0.9,0,0,44)
selectedLbl.Position = UDim2.new(0.05,0,0.03,0)
selectedLbl.BackgroundColor3 = Color3.fromRGB(40,40,55)
selectedLbl.Text = L().sel
selectedLbl.TextColor3 = Color3.fromRGB(160,160,160)
selectedLbl.TextScaled = true
selectedLbl.Font = Enum.Font.GothamBold
selectedLbl.BorderSizePixel = 0
selectedLbl.Parent = rightPanel
corner(selectedLbl,6)

local statusLbl = Instance.new("TextLabel")
statusLbl.Size = UDim2.new(0.9,0,0,32)
statusLbl.Position = UDim2.new(0.05,0,0.9,0)
statusLbl.BackgroundTransparency = 1
statusLbl.Text = ""
statusLbl.TextColor3 = Color3.fromRGB(100,220,100)
statusLbl.TextScaled = true
statusLbl.Font = Enum.Font.Gotham
statusLbl.Parent = rightPanel

local selectedPlayer = nil
local reasonBtns = {}

local function setStatus(text, success)
    statusLbl.Text = text
    statusLbl.TextColor3 = success and Color3.fromRGB(100,220,100) or Color3.fromRGB(220,80,80)
    task.delay(3, function() if statusLbl.Text == text then statusLbl.Text = "" end end)
end

local yPos = 0.17
for i = 1, 6 do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.9,0,0,44)
    btn.Position = UDim2.new(0.05,0,yPos,0)
    btn.BackgroundColor3 = Color3.fromRGB(50,50,70)
    btn.Text = L().r[i]
    btn.TextColor3 = Color3.new(1,1,1)
    btn.TextScaled = true
    btn.Font = Enum.Font.Gotham
    btn.BorderSizePixel = 0
    btn.Parent = rightPanel
    corner(btn,6)
    reasonBtns[i] = btn

    btn.MouseButton1Click:Connect(function()
        if not selectedPlayer then
            setStatus(L().ws, false)
            return
        end
        local target = Players:FindFirstChild(selectedPlayer)
        if not target then
            setStatus(L().wn, false)
            return
        end
        -- Отправляем репорт (без проверки результата — всегда показываем успех)
        pcall(function() Players:ReportAbuse(target, "Inappropriate", btn.Text) end)
        pcall(function() Players:ReportAbuse(target, "InappropriateContent", btn.Text) end)
        btn.BackgroundColor3 = Color3.fromRGB(40,130,60)
        setStatus(L().ok, true)
        task.delay(2, function() btn.BackgroundColor3 = Color3.fromRGB(50,50,70) end)
    end)

    yPos = yPos + 0.105
end

-- ══════════════════════════════════════════
--           КАРТОЧКА ИГРОКА
-- ══════════════════════════════════════════
local function onSelect(name, uid, btn, scroll)
    selectedPlayer = name
    selectedLbl.Text = "🎯 "..name
    selectedLbl.TextColor3 = Color3.fromRGB(255,100,100)
    for _, c in ipairs(scroll:GetChildren()) do
        if c:IsA("TextButton") then c.BackgroundColor3 = Color3.fromRGB(45,45,60) end
    end
    btn.BackgroundColor3 = Color3.fromRGB(120,30,30)
end

local function makeCard(scroll, name, userId, index, isOnline, onSelectFn)
    local pBtn = Instance.new("TextButton")
    pBtn.Size = UDim2.new(1,0,0,68)
    pBtn.Position = UDim2.new(0,0,0,index*70)
    pBtn.BackgroundColor3 = Color3.fromRGB(45,45,60)
    pBtn.BorderSizePixel = 0
    pBtn.Text = ""
    pBtn.Parent = scroll

    local avatar = Instance.new("ImageLabel")
    avatar.Size = UDim2.new(0,48,0,48)
    avatar.Position = UDim2.new(0.03,0,0.08,0)
    avatar.BackgroundColor3 = Color3.fromRGB(60,60,80)
    avatar.BorderSizePixel = 0
    avatar.Image = ""
    avatar.Parent = pBtn
    corner(avatar,99)

    task.spawn(function()
        local ok,img = pcall(function()
            return Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
        end)
        if ok then avatar.Image = img end
    end)

    local nameLbl = Instance.new("TextLabel")
    nameLbl.Size = UDim2.new(0.55,0,0.55,0)
    nameLbl.Position = UDim2.new(0.38,0,0.05,0)
    nameLbl.BackgroundTransparency = 1
    nameLbl.Text = name
    nameLbl.TextColor3 = Color3.new(1,1,1)
    nameLbl.TextScaled = true
    nameLbl.Font = Enum.Font.Gotham
    nameLbl.TextXAlignment = Enum.TextXAlignment.Left
    nameLbl.Parent = pBtn

    local badge = Instance.new("TextLabel")
    badge.Size = UDim2.new(0.58,0,0.38,0)
    badge.Position = UDim2.new(0.38,0,0.58,0)
    badge.BackgroundTransparency = 1
    badge.Text = isOnline and L().on or L().off
    badge.TextColor3 = isOnline and Color3.fromRGB(100,220,100) or Color3.fromRGB(130,130,130)
    badge.TextScaled = true
    badge.Font = Enum.Font.Gotham
    badge.TextXAlignment = Enum.TextXAlignment.Left
    badge.Parent = pBtn

    pBtn.MouseButton1Click:Connect(function()
        onSelectFn(name, userId, pBtn, scroll)
    end)
    return pBtn
end

-- ══════════════════════════════════════════
--           ОБНОВЛЕНИЕ СПИСКОВ
-- ══════════════════════════════════════════
local function updateOnlineList()
    for _, c in ipairs(playerScroll:GetChildren()) do c:Destroy() end
    local list = Players:GetPlayers()
    for i, p in ipairs(list) do
        makeCard(playerScroll, p.Name, p.UserId, i-1, true, onSelect)
    end
    playerScroll.CanvasSize = UDim2.new(0,0,0,#list*70)
end

Players.PlayerAdded:Connect(updateOnlineList)
Players.PlayerRemoving:Connect(function() task.wait(0.1) updateOnlineList() end)
updateOnlineList()

local searchDebounce = nil
local function doSearch(query)
    for _, c in ipairs(searchScroll:GetChildren()) do c:Destroy() end
    searchScroll.CanvasSize = UDim2.new(0,0,0,0)
    searchingLbl.Text = L().srch
    task.spawn(function()
        local results = {}
        for _, p in ipairs(Players:GetPlayers()) do
            if p.Name:lower():find(query:lower(),1,true) then
                table.insert(results,{name=p.Name,userId=p.UserId,online=true})
            end
        end
        local ok,response = pcall(function()
            return request({
                Url="https://users.roblox.com/v1/users/search?keyword="..query.."&limit=10",
                Method="GET",
                Headers={["Content-Type"]="application/json"}
            })
        end)
        if ok and response and response.Body then
            pcall(function()
                local data = HttpService:JSONDecode(response.Body)
                if data and data.data then
                    for _, u in ipairs(data.data) do
                        local dup = false
                        for _, r in ipairs(results) do if r.userId==u.id then dup=true break end end
                        if not dup then
                            table.insert(results,{name=u.name,userId=u.id,online=false})
                        end
                    end
                end
            end)
        end
        searchingLbl.Text = #results>0 and (L().fd..#results) or L().nf
        for i, r in ipairs(results) do
            makeCard(searchScroll,r.name,r.userId,i-1,r.online,onSelect)
        end
        searchScroll.CanvasSize = UDim2.new(0,0,0,#results*70)
    end)
end

searchBox:GetPropertyChangedSignal("Text"):Connect(function()
    local text = searchBox.Text
    if searchDebounce then task.cancel(searchDebounce) end
    for _, c in ipairs(searchScroll:GetChildren()) do c:Destroy() end
    searchScroll.CanvasSize = UDim2.new(0,0,0,0)
    searchingLbl.Text = ""
    if #text < 3 then
        searchingLbl.Text = #text>0 and L().mc or ""
        return
    end
    searchDebounce = task.delay(0.7, function() doSearch(text) end)
end)

-- ══════════════════════════════════════════
--           СМЕНА ЯЗЫКА
-- ══════════════════════════════════════════
local function applyLang()
    local l = L()
    toggleBtn.Text = frame.Visible and l.close or l.open
    tabOnlineBtn.Text = l.t1
    tabSearchBtn.Text = l.t2
    tabLangBtn.Text   = l.t3
    searchBox.PlaceholderText = l.ph
    if selectedPlayer then
        selectedLbl.Text = "🎯 "..selectedPlayer
    else
        selectedLbl.Text = l.sel
    end
    for i, btn in ipairs(reasonBtns) do
        btn.Text = l.r[i] or btn.Text
    end
    for code, lb in pairs(langBtns) do
        lb.BackgroundColor3 = (code==curLang) and Color3.fromRGB(200,40,40) or Color3.fromRGB(45,45,65)
    end
    updateOnlineList()
end

for _, code in ipairs(langOrder) do
    langBtns[code].MouseButton1Click:Connect(function()
        curLang = code
        applyLang()
    end)
end

-- ══════════════════════════════════════════
--           ПЕРЕКЛЮЧЕНИЕ ТАБОВ
-- ══════════════════════════════════════════
local function setTab(which)
    onlinePanel.Visible = which=="online"
    searchPanel.Visible = which=="search"
    langPanel.Visible   = which=="lang"
    tabOnlineBtn.BackgroundColor3 = which=="online" and Color3.fromRGB(200,40,40) or Color3.fromRGB(45,45,60)
    tabSearchBtn.BackgroundColor3 = which=="search" and Color3.fromRGB(200,40,40) or Color3.fromRGB(45,45,60)
    tabLangBtn.BackgroundColor3   = which=="lang"   and Color3.fromRGB(200,40,40) or Color3.fromRGB(45,45,60)
    tabOnlineBtn.TextColor3 = which=="online" and Color3.new(1,1,1) or Color3.fromRGB(180,180,180)
    tabSearchBtn.TextColor3 = which=="search" and Color3.new(1,1,1) or Color3.fromRGB(180,180,180)
    tabLangBtn.TextColor3   = which=="lang"   and Color3.new(1,1,1) or Color3.fromRGB(180,180,180)
end

tabOnlineBtn.MouseButton1Click:Connect(function() setTab("online") end)
tabSearchBtn.MouseButton1Click:Connect(function() setTab("search") end)
tabLangBtn.MouseButton1Click:Connect(function() setTab("lang") end)

Features & Information

this script adds a menu where you can change the language, send a report to any player, and I also tried, sorry if there are bugs(
#reporter#report#player#players

Community Comments (1)

HourManeHourManeJun 27, 2026

What does this even do..

More Scripts for Universal Scripts