
KeylessUniversal

-- 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)No comments yet for this script.

![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)

