
KeylessUniversal

-- 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)



What does this even do..