Charleszinho
Key RequiredUniversal

Charleszinho

Universal ScriptCharleszinhoCharleszinho 7.1K views 371 executesUpdated Nov 10, 2025
Unrated
00
Lua Script•777 lines (36922 chars)
-- 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)

Features & Information

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

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts