-- Charles Hub — Blue Lock Edition (LocalScript) -- Tudo local / simulado. Coloque este LocalScript em StarterGui. -- Imagem por URL (substitua IMAGE_URL por outro link se quiser). local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer -- CONFIG (troque IMAGE_URL pelo link direto da imagem se quiser) local IMAGE_URL = "https://i.imgur.com/your-image.png" -- <-- substitua pelo link direto da imagem 2 local ADMIN_PASSWORD = "Charleszinho" -- Helper para criar objetos local function create(class, props) local obj = Instance.new(class) if props then for k, v in pairs(props) do if k ~= "Parent" then obj[k] = v end end if props.Parent then obj.Parent = props.Parent end end return obj end -- Root GUI local screen = create("ScreenGui", {Parent = LocalPlayer:WaitForChild("PlayerGui"), Name = "CharlesHub_BlueLock", ResetOnSpawn = false}) -- Main frame (Blue + Black theme) local main = create("Frame", { Parent = screen, Size = UDim2.new(0,560,0,420), Position = UDim2.new(0.5, -280, 0.5, -210), BackgroundColor3 = Color3.fromRGB(8,12,28), BorderSizePixel = 0, Name = "Main" }) -- Header local header = create("TextLabel", { Parent = main, Size = UDim2.new(1,0,0,56), BackgroundTransparency = 1, Text = "Charles Hub — Blue Lock", TextSize = 24, Font = Enum.Font.GothamBold, TextColor3 = Color3.fromRGB(210,230,255) }) -- Loading area container local loadingArea = create("Frame", { Parent = main, Size = UDim2.new(0,460,0,200), Position = UDim2.new(0.5,-230,0,64), BackgroundTransparency = 1, Name = "LoadingArea" }) -- Image (embaixo) local imageContainer = create("Frame", { Parent = loadingArea, Size = UDim2.new(1,0,1,0), Position = UDim2.new(0,0,0,0), BackgroundColor3 = Color3.fromRGB(12,18,36), BorderSizePixel = 0 }) local charImg = create("ImageLabel", { Parent = imageContainer, Size = UDim2.new(0,420,0,160), Position = UDim2.new(0.5,-210,0.5,-20), BackgroundTransparency = 1, Image = IMAGE_URL, ScaleType = Enum.ScaleType.Crop, Name = "CharlesImage" }) -- Overlay on image to make text readable (slight gradient effect simulated) local overlay = create("Frame", { Parent = charImg, Size = UDim2.new(1,0,0.35,0), Position = UDim2.new(0,0,0.65,0), BackgroundColor3 = Color3.fromRGB(6,8,16), BackgroundTransparency = 0.25, BorderSizePixel = 0 }) -- Loading bar (EM CIMA da imagem) local loadingBarBg = create("Frame", { Parent = loadingArea, Size = UDim2.new(0,420,0,24), Position = UDim2.new(0.5,-210,0,8), BackgroundColor3 = Color3.fromRGB(30,30,48), BorderSizePixel = 0, Name = "LoadingBG" }) local loadingBar = create("Frame", { Parent = loadingBarBg, Size = UDim2.new(0,0,1,0), Position = UDim2.new(0,0,0,0), BackgroundColor3 = Color3.fromRGB(40,160,255), BorderSizePixel = 0, Name = "LoadingBar" }) local loadingText = create("TextLabel", { Parent = loadingArea, Size = UDim2.new(0,420,0,20), Position = UDim2.new(0.5,-210,0,36), BackgroundTransparency = 1, Text = "Carregando 0%", TextSize = 16, Font = Enum.Font.SourceSans, TextColor3 = Color3.fromRGB(220,230,255), Name = "LoadingText" }) -- Simulated loader 0 -> 100 spawn(function() for i = 0, 100 do local percent = i / 100 loadingBar:TweenSize(UDim2.new(percent,0,1,0), "Out", "Quad", 0.03, true) loadingText.Text = "Carregando "..i.."%" wait(0.03) end loadingText.Text = "Pronto! Clique em Abrir Painel" end) -- Open Panel button local openBtn = create("TextButton", { Parent = main, Size = UDim2.new(0,160,0,36), Position = UDim2.new(0.5,-80,0,284), Text = "Abrir Painel", Font = Enum.Font.GothamBold, TextSize = 18, BackgroundColor3 = Color3.fromRGB(40,130,255), TextColor3 = Color3.fromRGB(255,255,255), BorderSizePixel = 0 }) -- Panel (hidden initially) local panel = create("Frame", { Parent = main, Size = UDim2.new(0,520,0,260), Position = UDim2.new(0.5,-260,0,328), BackgroundColor3 = Color3.fromRGB(6,8,20), BorderSizePixel = 0, Visible = false, Name = "Panel" }) -- Tabs local tabHolder = create("Frame", { Parent = panel, Size = UDim2.new(1,0,0,44), Position = UDim2.new(0,0,0,0), BackgroundTransparency = 1 }) local function tabButton(name, pos) local b = create("TextButton", { Parent = tabHolder, Size = UDim2.new(0,120,0,32), Position = UDim2.new(pos,0,0,6), Text = name, Font = Enum.Font.GothamBold, TextSize = 14, BackgroundColor3 = Color3.fromRGB(12,16,32), TextColor3 = Color3.fromRGB(220,230,255), BorderSizePixel = 0 }) return b end local t1 = tabButton("Clássicas", 0.02) local t2 = tabButton("Troll", 0.24) local t3 = tabButton("Avatar", 0.46) local t4 = tabButton("Admin", 0.68) local content = create("Frame", { Parent = panel, Position = UDim2.new(0,0,0,44), Size = UDim2.new(1,0,1,-44), BackgroundTransparency = 1 }) -- Create frames for each tab local frameClassic = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1}) local frameTroll = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Visible = false}) local frameAvatar = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Visible = false}) local frameAdmin = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Visible = false}) -- Players list (used in Classic & Avatar tabs) local function makePlayersList(parent, posX) local list = create("Frame", {Parent = parent, Position = UDim2.new(posX,8,0,8), Size = UDim2.new(0,0,1,-16)}) list.Size = UDim2.new(0.42,-16,1,-16) list.BackgroundTransparency = 1 return list end local classicList = makePlayersList(frameClassic, 0) local classicActions = create("Frame", {Parent = frameClassic, Position = UDim2.new(0.44,8,0,8), Size = UDim2.new(0.54,-16,1,-16), BackgroundTransparency = 1}) local avatarList = makePlayersList(frameAvatar, 0) -- Populate players local function refreshList(list, onSelect) for _,c in pairs(list:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local y = 0 for _,pl in pairs(Players:GetPlayers()) do local btn = create("TextButton", { Parent = list, Position = UDim2.new(0,8,0,y*34), Size = UDim2.new(1,-16,0,28), Text = pl.Name, Font = Enum.Font.SourceSans, TextSize = 16, TextXAlignment = Enum.TextXAlignment.Left, BackgroundColor3 = Color3.fromRGB(12,18,36), TextColor3 = Color3.fromRGB(220,230,255), BorderSizePixel = 0 }) y = y + 1 btn.MouseButton1Click:Connect(function() onSelect(pl) end) end end -- Selected target storage (client-side only) local SelectedTargetUserId = nil local SelectedTargetName = nil local function onSelectClassic(pl) SelectedTargetUserId = pl.UserId SelectedTargetName = pl.Name -- show actions for _,c in pairs(classicActions:GetChildren()) do if c.Name ~= "Header" then c:Destroy() end end local header = create("TextLabel",{Parent = classicActions, Name = "Header", Position = UDim2.new(0,8,0,8), Size = UDim2.new(1,-16,0,22), BackgroundTransparency = 1, Text = "Selecionado: "..pl.Name.." ("..pl.UserId..")", TextColor3 = Color3.fromRGB(220,230,255), TextSize = 16}) local kickBtn = create("TextButton",{Parent = classicActions, Position = UDim2.new(0,8,0,44), Size = UDim2.new(1,-16,0,32), Text = "Kick (simulado)", Font = Enum.Font.GothamBold}) local banBtn = create("TextButton",{Parent = classicActions, Position = UDim2.new(0,8,0,84), Size = UDim2.new(1,-16,0,32), Text = "Ban (simulado)"}) local banReason = create("TextBox",{Parent = classicActions, Position = UDim2.new(0,8,0,126), Size = UDim2.new(1,-16,0,28), Text = "Motivo (simulado)", ClearTextOnFocus = false}) kickBtn.MouseButton1Click:Connect(function() -- Visual simulated effect: message + small screen flash local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Kick simulado: "..pl.Name, TextColor3 = Color3.fromRGB(255,230,230), TextSize = 18, Font = Enum.Font.SourceSansBold}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) end) banBtn.MouseButton1Click:Connect(function() local reason = banReason.Text local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Ban simulado: "..pl.Name.." | "..reason, TextColor3 = Color3.fromRGB(255,230,230), TextSize = 16}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) end) end local function onSelectAvatar(pl) -- copy avatar to local player (simulado locally via HumanoidDescription if possible) local btn = create("TextButton",{Parent = avatarList, Position = UDim2.new(0,8,0,8), Size = UDim2.new(0.9,0,0,28), Text = "Copiar skin de "..pl.Name}) btn.MouseButton1Click:Connect(function() -- attempt to copy description (works only if allowed) local ok, err = pcall(function() local desc = Players:GetHumanoidDescriptionFromUserId(pl.UserId) local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if desc and hum then hum:ApplyDescription(desc) local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(20,70,20), Text = "Aparência copiada: "..pl.Name, TextColor3 = Color3.fromRGB(220,255,220), TextSize = 16}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) else error("Falha ao obter descrição") end end) if not ok then local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(80,20,20), Text = "Não foi possível copiar (restrição)", TextColor3 = Color3.fromRGB(255,200,200), TextSize = 14}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) end end) end -- Refresh lists initially refreshList(classicList, onSelectClassic) refreshList(avatarList, onSelectAvatar) -- Troll tab UI local tList = create("Frame", {Parent = frameTroll, Position = UDim2.new(0,8,0,8), Size = UDim2.new(0.42,-16,1,-16), BackgroundTransparency = 1}) local tActions = create("Frame", {Parent = frameTroll, Position = UDim2.new(0.44,8,0,8), Size = UDim2.new(0.54,-16,1,-16), BackgroundTransparency = 1}) local function refreshTList() for _,c in pairs(tList:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local y = 0 for _,pl in pairs(Players:GetPlayers()) do local btn = create("TextButton", {Parent = tList, Position = UDim2.new(0,8,0,y*34), Size = UDim2.new(1,-16,0,28), Text = pl.Name, TextXAlignment = Enum.TextXAlignment.Left, Font = Enum.Font.SourceSans, TextSize = 16, BackgroundColor3 = Color3.fromRGB(12,18,36), TextColor3 = Color3.fromRGB(220,230,255)}) y = y + 1 btn.MouseButton1Click:Connect(function() tActions:FindFirstChild("THeader") and tActions.THeader:Destroy() local h = create("TextLabel", {Parent = tActions, Name = "THeader", Position = UDim2.new(0,8,0,8), Size = UDim2.new(1,-16,0,22), BackgroundTransparency = 1, Text = "Selecionado: "..pl.Name, TextColor3 = Color3.fromRGB(220,230,255)}) tActions.TargetUserId = pl.UserId end) end end refreshTList() Players.PlayerAdded:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) Players.PlayerRemoving:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) -- Troll actions (simulados) local freezeBtn = create("TextButton", {Parent = tActions, Position = UDim2.new(0,8,0,44), Size = UDim2.new(1,-16,0,32), Text = "Congelar (simulado)", Font = Enum.Font.GothamBold}) local pushBtn = create("TextButton", {Parent = tActions, Position = UDim2.new(0,8,0,84), Size = UDim2.new(1,-16,0,32), Text = "Empurrar (simulado)"}) freezeBtn.MouseButton1Click:Connect(function() local t = tActions.TargetUserId if not t then return end -- Visual effect: particle-like burst (client-only) local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(20,40,80), Text = "Congelamento visual em: "..tostring(t), TextColor3 = Color3.fromRGB(200,230,255)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) pushBtn.MouseButton1Click:Connect(function() local t = tActions.TargetUserId if not t then return end local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(20,40,80), Text = "Empurrão visual em: "..tostring(t), TextColor3 = Color3.fromRGB(200,230,255)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) -- Admin tab (client-side modal, checks password locally before showing advanced buttons) local adminNotice = create("TextLabel",{Parent = frameAdmin, Position = UDim2.new(0,8,0,8), Size = UDim2.new(1,-16,0,36), BackgroundTransparency = 1, Text = "Painel Admin — digite a senha para desbloquear (apenas local).", TextWrapped = true, TextColor3 = Color3.fromRGB(200,220,255)}) local pwBox = create("TextBox", {Parent = frameAdmin, Position = UDim2.new(0,8,0,56), Size = UDim2.new(0.6,0,0,30), Text = "", ClearTextOnFocus = false}) local pwBtn = create("TextButton", {Parent = frameAdmin, Position = UDim2.new(0.62,8,0,56), Size = UDim2.new(0.34,0,0,30), Text = "Entrar (local)", Font = Enum.Font.GothamBold}) local adminControls = create("Frame",{Parent = frameAdmin, Position = UDim2.new(0,8,0,96), Size = UDim2.new(1,-16,0,140), BackgroundTransparency = 1, Visible = false}) pwBtn.MouseButton1Click:Connect(function() if pwBox.Text == ADMIN_PASSWORD then adminControls.Visible = true local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(30,80,30), Text = "Admin local desbloqueado", TextColor3 = Color3.fromRGB(220,255,220)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) else local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(80,20,20), Text = "Senha incorreta", TextColor3 = Color3.fromRGB(255,200,200)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end end) -- Admin control examples (local-only) local adminKickBtn = create("TextButton",{Parent = adminControls, Position = UDim2.new(0,8,0,8), Size = UDim2.new(0.46,-12,0,34), Text = "Kick real (NÃO: simulado)", Font = Enum.Font.GothamBold}) local adminBanBtn = create("TextButton",{Parent = adminControls, Position = UDim2.new(0.52,8,0,8), Size = UDim2.new(0.46,-12,0,34), Text = "Ban real (NÃO: simulado)"}) local adminNote = create("TextLabel",{Parent = adminControls, Position = UDim2.new(0,8,0,52), Size = UDim2.new(1,-16,0,34), BackgroundTransparency = 1, Text = "Estas ações são SIMULADAS neste script local. Para ações reais você precisa de um script server-side.", TextColor3 = Color3.fromRGB(200,200,220), TextWrapped = true}) adminKickBtn.MouseButton1Click:Connect(function() if not SelectedTargetUserId then local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(120,20,20), Text = "Nenhum alvo selecionado", TextColor3 = Color3.fromRGB(255,220,220)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) return end local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Kick REAL solicitado (simulado aqui): "..tostring(SelectedTargetName), TextColor3 = Color3.fromRGB(255,230,230)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) adminBanBtn.MouseButton1Click:Connect(function() if not SelectedTargetUserId then local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(120,20,20), Text = "Nenhum alvo selecionado", TextColor3 = Color3.fromRGB(255,220,220)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) return end local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Ban REAL solicitado (simulado aqui): "..tostring(SelectedTargetName), TextColor3 = Color3.fromRGB(255,230,230)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) -- Tabs switching behavior t1.MouseButton1Click:Connect(function() frameClassic.Visible = true; frameTroll.Visible = false; frameAvatar.Visible = false; frameAdmin.Visible = false end) t2.MouseButton1Click:Connect(function() frameClassic.Visible = false; frameTroll.Visible = true; frameAvatar.Visible = false; frameAdmin.Visible = false end) t3.MouseButton1Click:Connect(function() frameClassic.Visible = false; frameTroll.Visible = false; frameAvatar.Visible = true; frameAdmin.Visible = false end) t4.MouseButton1Click:Connect(function() frameClassic.Visible = false; frameTroll.Visible = false; frameAvatar.Visible = false; frameAdmin.Visible = true end) -- Open / Close panel flow openBtn.MouseButton1Click:Connect(function() if panel.Visible then panel.Visible = false return end panel.Visible = true end) -- Update lists on player join/leave Players.PlayerAdded:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) Players.PlayerRemoving:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) -- final message print("Charles Hub — Blue Lock Edition (Local) carregado. Senha admin: "..ADMIN_PASSWORD)-- Charles Hub — Blue Lock Edition (LocalScript) -- Tudo local / simulado. Coloque este LocalScript em StarterGui. -- Imagem por URL (substitua IMAGE_URL por outro link se quiser). local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer -- CONFIG (troque IMAGE_URL pelo link direto da imagem se quiser) local IMAGE_URL = "https://i.imgur.com/your-image.png" -- <-- substitua pelo link direto da imagem 2 local ADMIN_PASSWORD = "Charleszinho" -- Helper para criar objetos local function create(class, props) local obj = Instance.new(class) if props then for k, v in pairs(props) do if k ~= "Parent" then obj[k] = v end end if props.Parent then obj.Parent = props.Parent end end return obj end -- Root GUI local screen = create("ScreenGui", {Parent = LocalPlayer:WaitForChild("PlayerGui"), Name = "CharlesHub_BlueLock", ResetOnSpawn = false}) -- Main frame (Blue + Black theme) local main = create("Frame", { Parent = screen, Size = UDim2.new(0,560,0,420), Position = UDim2.new(0.5, -280, 0.5, -210), BackgroundColor3 = Color3.fromRGB(8,12,28), BorderSizePixel = 0, Name = "Main" }) -- Header local header = create("TextLabel", { Parent = main, Size = UDim2.new(1,0,0,56), BackgroundTransparency = 1, Text = "Charles Hub — Blue Lock", TextSize = 24, Font = Enum.Font.GothamBold, TextColor3 = Color3.fromRGB(210,230,255) }) -- Loading area container local loadingArea = create("Frame", { Parent = main, Size = UDim2.new(0,460,0,200), Position = UDim2.new(0.5,-230,0,64), BackgroundTransparency = 1, Name = "LoadingArea" }) -- Image (embaixo) local imageContainer = create("Frame", { Parent = loadingArea, Size = UDim2.new(1,0,1,0), Position = UDim2.new(0,0,0,0), BackgroundColor3 = Color3.fromRGB(12,18,36), BorderSizePixel = 0 }) local charImg = create("ImageLabel", { Parent = imageContainer, Size = UDim2.new(0,420,0,160), Position = UDim2.new(0.5,-210,0.5,-20), BackgroundTransparency = 1, Image = IMAGE_URL, ScaleType = Enum.ScaleType.Crop, Name = "CharlesImage" }) -- Overlay on image to make text readable (slight gradient effect simulated) local overlay = create("Frame", { Parent = charImg, Size = UDim2.new(1,0,0.35,0), Position = UDim2.new(0,0,0.65,0), BackgroundColor3 = Color3.fromRGB(6,8,16), BackgroundTransparency = 0.25, BorderSizePixel = 0 }) -- Loading bar (EM CIMA da imagem) local loadingBarBg = create("Frame", { Parent = loadingArea, Size = UDim2.new(0,420,0,24), Position = UDim2.new(0.5,-210,0,8), BackgroundColor3 = Color3.fromRGB(30,30,48), BorderSizePixel = 0, Name = "LoadingBG" }) local loadingBar = create("Frame", { Parent = loadingBarBg, Size = UDim2.new(0,0,1,0), Position = UDim2.new(0,0,0,0), BackgroundColor3 = Color3.fromRGB(40,160,255), BorderSizePixel = 0, Name = "LoadingBar" }) local loadingText = create("TextLabel", { Parent = loadingArea, Size = UDim2.new(0,420,0,20), Position = UDim2.new(0.5,-210,0,36), BackgroundTransparency = 1, Text = "Carregando 0%", TextSize = 16, Font = Enum.Font.SourceSans, TextColor3 = Color3.fromRGB(220,230,255), Name = "LoadingText" }) -- Simulated loader 0 -> 100 spawn(function() for i = 0, 100 do local percent = i / 100 loadingBar:TweenSize(UDim2.new(percent,0,1,0), "Out", "Quad", 0.03, true) loadingText.Text = "Carregando "..i.."%" wait(0.03) end loadingText.Text = "Pronto! Clique em Abrir Painel" end) -- Open Panel button local openBtn = create("TextButton", { Parent = main, Size = UDim2.new(0,160,0,36), Position = UDim2.new(0.5,-80,0,284), Text = "Abrir Painel", Font = Enum.Font.GothamBold, TextSize = 18, BackgroundColor3 = Color3.fromRGB(40,130,255), TextColor3 = Color3.fromRGB(255,255,255), BorderSizePixel = 0 }) -- Panel (hidden initially) local panel = create("Frame", { Parent = main, Size = UDim2.new(0,520,0,260), Position = UDim2.new(0.5,-260,0,328), BackgroundColor3 = Color3.fromRGB(6,8,20), BorderSizePixel = 0, Visible = false, Name = "Panel" }) -- Tabs local tabHolder = create("Frame", { Parent = panel, Size = UDim2.new(1,0,0,44), Position = UDim2.new(0,0,0,0), BackgroundTransparency = 1 }) local function tabButton(name, pos) local b = create("TextButton", { Parent = tabHolder, Size = UDim2.new(0,120,0,32), Position = UDim2.new(pos,0,0,6), Text = name, Font = Enum.Font.GothamBold, TextSize = 14, BackgroundColor3 = Color3.fromRGB(12,16,32), TextColor3 = Color3.fromRGB(220,230,255), BorderSizePixel = 0 }) return b end local t1 = tabButton("Clássicas", 0.02) local t2 = tabButton("Troll", 0.24) local t3 = tabButton("Avatar", 0.46) local t4 = tabButton("Admin", 0.68) local content = create("Frame", { Parent = panel, Position = UDim2.new(0,0,0,44), Size = UDim2.new(1,0,1,-44), BackgroundTransparency = 1 }) -- Create frames for each tab local frameClassic = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1}) local frameTroll = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Visible = false}) local frameAvatar = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Visible = false}) local frameAdmin = create("Frame", {Parent = content, Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Visible = false}) -- Players list (used in Classic & Avatar tabs) local function makePlayersList(parent, posX) local list = create("Frame", {Parent = parent, Position = UDim2.new(posX,8,0,8), Size = UDim2.new(0,0,1,-16)}) list.Size = UDim2.new(0.42,-16,1,-16) list.BackgroundTransparency = 1 return list end local classicList = makePlayersList(frameClassic, 0) local classicActions = create("Frame", {Parent = frameClassic, Position = UDim2.new(0.44,8,0,8), Size = UDim2.new(0.54,-16,1,-16), BackgroundTransparency = 1}) local avatarList = makePlayersList(frameAvatar, 0) -- Populate players local function refreshList(list, onSelect) for _,c in pairs(list:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local y = 0 for _,pl in pairs(Players:GetPlayers()) do local btn = create("TextButton", { Parent = list, Position = UDim2.new(0,8,0,y*34), Size = UDim2.new(1,-16,0,28), Text = pl.Name, Font = Enum.Font.SourceSans, TextSize = 16, TextXAlignment = Enum.TextXAlignment.Left, BackgroundColor3 = Color3.fromRGB(12,18,36), TextColor3 = Color3.fromRGB(220,230,255), BorderSizePixel = 0 }) y = y + 1 btn.MouseButton1Click:Connect(function() onSelect(pl) end) end end -- Selected target storage (client-side only) local SelectedTargetUserId = nil local SelectedTargetName = nil local function onSelectClassic(pl) SelectedTargetUserId = pl.UserId SelectedTargetName = pl.Name -- show actions for _,c in pairs(classicActions:GetChildren()) do if c.Name ~= "Header" then c:Destroy() end end local header = create("TextLabel",{Parent = classicActions, Name = "Header", Position = UDim2.new(0,8,0,8), Size = UDim2.new(1,-16,0,22), BackgroundTransparency = 1, Text = "Selecionado: "..pl.Name.." ("..pl.UserId..")", TextColor3 = Color3.fromRGB(220,230,255), TextSize = 16}) local kickBtn = create("TextButton",{Parent = classicActions, Position = UDim2.new(0,8,0,44), Size = UDim2.new(1,-16,0,32), Text = "Kick (simulado)", Font = Enum.Font.GothamBold}) local banBtn = create("TextButton",{Parent = classicActions, Position = UDim2.new(0,8,0,84), Size = UDim2.new(1,-16,0,32), Text = "Ban (simulado)"}) local banReason = create("TextBox",{Parent = classicActions, Position = UDim2.new(0,8,0,126), Size = UDim2.new(1,-16,0,28), Text = "Motivo (simulado)", ClearTextOnFocus = false}) kickBtn.MouseButton1Click:Connect(function() -- Visual simulated effect: message + small screen flash local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Kick simulado: "..pl.Name, TextColor3 = Color3.fromRGB(255,230,230), TextSize = 18, Font = Enum.Font.SourceSansBold}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) end) banBtn.MouseButton1Click:Connect(function() local reason = banReason.Text local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Ban simulado: "..pl.Name.." | "..reason, TextColor3 = Color3.fromRGB(255,230,230), TextSize = 16}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) end) end local function onSelectAvatar(pl) -- copy avatar to local player (simulado locally via HumanoidDescription if possible) local btn = create("TextButton",{Parent = avatarList, Position = UDim2.new(0,8,0,8), Size = UDim2.new(0.9,0,0,28), Text = "Copiar skin de "..pl.Name}) btn.MouseButton1Click:Connect(function() -- attempt to copy description (works only if allowed) local ok, err = pcall(function() local desc = Players:GetHumanoidDescriptionFromUserId(pl.UserId) local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if desc and hum then hum:ApplyDescription(desc) local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(20,70,20), Text = "Aparência copiada: "..pl.Name, TextColor3 = Color3.fromRGB(220,255,220), TextSize = 16}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) else error("Falha ao obter descrição") end end) if not ok then local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(80,20,20), Text = "Não foi possível copiar (restrição)", TextColor3 = Color3.fromRGB(255,200,200), TextSize = 14}) delay(2,function() if lbl and lbl.Parent then lbl:Destroy() end end) end end) end -- Refresh lists initially refreshList(classicList, onSelectClassic) refreshList(avatarList, onSelectAvatar) -- Troll tab UI local tList = create("Frame", {Parent = frameTroll, Position = UDim2.new(0,8,0,8), Size = UDim2.new(0.42,-16,1,-16), BackgroundTransparency = 1}) local tActions = create("Frame", {Parent = frameTroll, Position = UDim2.new(0.44,8,0,8), Size = UDim2.new(0.54,-16,1,-16), BackgroundTransparency = 1}) local function refreshTList() for _,c in pairs(tList:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local y = 0 for _,pl in pairs(Players:GetPlayers()) do local btn = create("TextButton", {Parent = tList, Position = UDim2.new(0,8,0,y*34), Size = UDim2.new(1,-16,0,28), Text = pl.Name, TextXAlignment = Enum.TextXAlignment.Left, Font = Enum.Font.SourceSans, TextSize = 16, BackgroundColor3 = Color3.fromRGB(12,18,36), TextColor3 = Color3.fromRGB(220,230,255)}) y = y + 1 btn.MouseButton1Click:Connect(function() tActions:FindFirstChild("THeader") and tActions.THeader:Destroy() local h = create("TextLabel", {Parent = tActions, Name = "THeader", Position = UDim2.new(0,8,0,8), Size = UDim2.new(1,-16,0,22), BackgroundTransparency = 1, Text = "Selecionado: "..pl.Name, TextColor3 = Color3.fromRGB(220,230,255)}) tActions.TargetUserId = pl.UserId end) end end refreshTList() Players.PlayerAdded:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) Players.PlayerRemoving:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) -- Troll actions (simulados) local freezeBtn = create("TextButton", {Parent = tActions, Position = UDim2.new(0,8,0,44), Size = UDim2.new(1,-16,0,32), Text = "Congelar (simulado)", Font = Enum.Font.GothamBold}) local pushBtn = create("TextButton", {Parent = tActions, Position = UDim2.new(0,8,0,84), Size = UDim2.new(1,-16,0,32), Text = "Empurrar (simulado)"}) freezeBtn.MouseButton1Click:Connect(function() local t = tActions.TargetUserId if not t then return end -- Visual effect: particle-like burst (client-only) local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(20,40,80), Text = "Congelamento visual em: "..tostring(t), TextColor3 = Color3.fromRGB(200,230,255)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) pushBtn.MouseButton1Click:Connect(function() local t = tActions.TargetUserId if not t then return end local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,26), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(20,40,80), Text = "Empurrão visual em: "..tostring(t), TextColor3 = Color3.fromRGB(200,230,255)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) -- Admin tab (client-side modal, checks password locally before showing advanced buttons) local adminNotice = create("TextLabel",{Parent = frameAdmin, Position = UDim2.new(0,8,0,8), Size = UDim2.new(1,-16,0,36), BackgroundTransparency = 1, Text = "Painel Admin — digite a senha para desbloquear (apenas local).", TextWrapped = true, TextColor3 = Color3.fromRGB(200,220,255)}) local pwBox = create("TextBox", {Parent = frameAdmin, Position = UDim2.new(0,8,0,56), Size = UDim2.new(0.6,0,0,30), Text = "", ClearTextOnFocus = false}) local pwBtn = create("TextButton", {Parent = frameAdmin, Position = UDim2.new(0.62,8,0,56), Size = UDim2.new(0.34,0,0,30), Text = "Entrar (local)", Font = Enum.Font.GothamBold}) local adminControls = create("Frame",{Parent = frameAdmin, Position = UDim2.new(0,8,0,96), Size = UDim2.new(1,-16,0,140), BackgroundTransparency = 1, Visible = false}) pwBtn.MouseButton1Click:Connect(function() if pwBox.Text == ADMIN_PASSWORD then adminControls.Visible = true local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(30,80,30), Text = "Admin local desbloqueado", TextColor3 = Color3.fromRGB(220,255,220)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) else local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(80,20,20), Text = "Senha incorreta", TextColor3 = Color3.fromRGB(255,200,200)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end end) -- Admin control examples (local-only) local adminKickBtn = create("TextButton",{Parent = adminControls, Position = UDim2.new(0,8,0,8), Size = UDim2.new(0.46,-12,0,34), Text = "Kick real (NÃO: simulado)", Font = Enum.Font.GothamBold}) local adminBanBtn = create("TextButton",{Parent = adminControls, Position = UDim2.new(0.52,8,0,8), Size = UDim2.new(0.46,-12,0,34), Text = "Ban real (NÃO: simulado)"}) local adminNote = create("TextLabel",{Parent = adminControls, Position = UDim2.new(0,8,0,52), Size = UDim2.new(1,-16,0,34), BackgroundTransparency = 1, Text = "Estas ações são SIMULADAS neste script local. Para ações reais você precisa de um script server-side.", TextColor3 = Color3.fromRGB(200,200,220), TextWrapped = true}) adminKickBtn.MouseButton1Click:Connect(function() if not SelectedTargetUserId then local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(120,20,20), Text = "Nenhum alvo selecionado", TextColor3 = Color3.fromRGB(255,220,220)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) return end local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Kick REAL solicitado (simulado aqui): "..tostring(SelectedTargetName), TextColor3 = Color3.fromRGB(255,230,230)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) adminBanBtn.MouseButton1Click:Connect(function() if not SelectedTargetUserId then local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(120,20,20), Text = "Nenhum alvo selecionado", TextColor3 = Color3.fromRGB(255,220,220)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) return end local lbl = create("TextLabel",{Parent = main, Position = UDim2.new(0.5,-160,0,16), Size = UDim2.new(0,320,0,24), BackgroundTransparency = 0.2, BackgroundColor3 = Color3.fromRGB(60,10,10), Text = "Ban REAL solicitado (simulado aqui): "..tostring(SelectedTargetName), TextColor3 = Color3.fromRGB(255,230,230)}) delay(2, function() if lbl and lbl.Parent then lbl:Destroy() end end) end) -- Tabs switching behavior t1.MouseButton1Click:Connect(function() frameClassic.Visible = true; frameTroll.Visible = false; frameAvatar.Visible = false; frameAdmin.Visible = false end) t2.MouseButton1Click:Connect(function() frameClassic.Visible = false; frameTroll.Visible = true; frameAvatar.Visible = false; frameAdmin.Visible = false end) t3.MouseButton1Click:Connect(function() frameClassic.Visible = false; frameTroll.Visible = false; frameAvatar.Visible = true; frameAdmin.Visible = false end) t4.MouseButton1Click:Connect(function() frameClassic.Visible = false; frameTroll.Visible = false; frameAvatar.Visible = false; frameAdmin.Visible = true end) -- Open / Close panel flow openBtn.MouseButton1Click:Connect(function() if panel.Visible then panel.Visible = false return end panel.Visible = true end) -- Update lists on player join/leave Players.PlayerAdded:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) Players.PlayerRemoving:Connect(function() refreshList(classicList, onSelectClassic); refreshList(avatarList, onSelectAvatar); refreshTList() end) -- final message print("Charles Hub — Blue Lock Edition (Local) carregado. Senha admin: "..ADMIN_PASSWORD)