
Key RequiredUniversal

-- m1gxx c00lify v3 - versão "visual multiplayer" (somente local)
-- Tudo é local: cria guis/partículas que seguem os outros jogadores, sem alterar o servidor.
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local SoundService = game:GetService("SoundService")
local localPlayer = Players.LocalPlayer
local playerGui = localPlayer:WaitForChild("PlayerGui")
-- IDs
local SKY_ID = 158118263
local DECAL_ID = 158118263
local PARTICLE_ID = 158118263
local MUSIC_ID = 1839246711
local function aid(id) return "rbxassetid://" .. tostring(id) end
-- Container para visuais locais (no workspace)
local VIS_ROOT = Instance.new("Folder")
VIS_ROOT.Name = "m1gxx_v3_visroot"
VIS_ROOT.Parent = workspace
-- Container para guis locais
local GUI_ROOT = Instance.new("Folder")
GUI_ROOT.Name = "m1gxx_v3_guiroot"
GUI_ROOT.Parent = playerGui
-- ===== GUI principal (m1gxx c00lify v3) =====
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "m1gxx_c00lify_v3"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 320, 0, 200)
frame.Position = UDim2.new(0.35, 0, 0.3, 0)
frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
frame.BackgroundTransparency = 0.15
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
frame.Parent = screenGui
local uiStroke = Instance.new("UIStroke", frame)
uiStroke.Thickness = 3
local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1,0,0,40)
title.Position = UDim2.new(0,0,0,0)
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamBold
title.TextSize = 20
title.TextScaled = true
title.Text = "🌈 m1gxx c00lify v3 🌈"
title.TextColor3 = Color3.fromRGB(255,255,255)
local button = Instance.new("TextButton", frame)
button.Size = UDim2.new(0, 200, 0, 50)
button.Position = UDim2.new(0.125, 0, 0.55, 0)
button.Text = "💫 c00lify 💫"
button.Font = Enum.Font.GothamBold
button.TextScaled = true
button.Parent = frame
local status = Instance.new("TextLabel", frame)
status.Size = UDim2.new(1,0,0,20)
status.Position = UDim2.new(0,0,1,-22)
status.BackgroundTransparency = 1
status.Text = "Desligado"
status.Font = Enum.Font.Gotham
status.TextColor3 = Color3.fromRGB(200,200,200)
status.TextScaled = false
status.TextSize = 16
status.Parent = frame
-- animações de cor
task.spawn(function()
while frame.Parent do
for h = 0, 1, 0.01 do
uiStroke.Color = Color3.fromHSV(h, 1, 1)
title.TextColor3 = Color3.fromHSV((h+0.15)%1, 1, 1)
button.BackgroundColor3 = Color3.fromHSV((h+0.3)%1, 0.9, 0.9)
task.wait(0.03)
end
end
end)
-- ===== helpers e estado =====
local active = false
local created = {
-- sky = Sky, sound = Sound, decals = {Decal}, localParticles = {Part/Emitter}, remoteVisuals = {player = {part, emitter, billboardGui}}
decals = {},
localParticles = {},
remoteVisuals = {} -- map player -> {visPart, emitter, billboard}
}
local function clearDecals()
for _, d in ipairs(created.decals) do
if d and d.Parent then pcall(d.Destroy, d) end
end
created.decals = {}
end
local function clearLocalParticles()
for _, e in ipairs(created.localParticles) do
if e and e.Parent then pcall(e.Destroy, e) end
end
created.localParticles = {}
end
local function clearRemoteVisuals()
for plr, v in pairs(created.remoteVisuals) do
if v.billboard and v.billboard.Parent then pcall(v.billboard.Destroy, v.billboard) end
if v.part and v.part.Parent then pcall(v.part.Destroy, v.part) end
created.remoteVisuals[plr] = nil
end
end
local function aidstr(id) return aid(id) end
-- cria sky local
local function createLocalSky()
-- remove sky local anterior com mesmo nome
for _, c in ipairs(Lighting:GetChildren()) do
if c:IsA("Sky") and c.Name == "m1gxx_sky_v3" then c:Destroy() end
end
local sky = Instance.new("Sky")
sky.Name = "m1gxx_sky_v3"
local tex = aidstr(SKY_ID)
sky.SkyboxBk = tex
sky.SkyboxDn = tex
sky.SkyboxFt = tex
sky.SkyboxLf = tex
sky.SkyboxRt = tex
sky.SkyboxUp = tex
sky.Parent = Lighting
return sky
end
-- cria música local
local function createLocalMusic()
local s = Instance.new("Sound")
s.Name = "m1gxx_sound_v3"
s.SoundId = aidstr(MUSIC_ID)
s.Looped = true
s.Volume = 2
s.PlayOnRemove = false
s.Parent = workspace -- mantemos no workspace para executores
pcall(function() s:Play() end)
return s
end
-- aplica decal em todas as partes (em todas as faces)
local function applyDecalToAllParts()
for _, obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") and obj ~= workspace.Terrain then
for _, face in ipairs(Enum.NormalId:GetEnumItems()) do
local d = Instance.new("Decal")
d.Name = "m1gxx_v3_decal"
d.Face = face
d.Texture = aidstr(DECAL_ID)
-- guardamos para deletar depois
d.Parent = obj
table.insert(created.decals, d)
end
end
end
end
-- cria partículas locais no meu personagem
local function createParticlesOnLocalCharacter()
if not localPlayer.Character then return end
for _, part in ipairs(localPlayer.Character:GetDescendants()) do
if part:IsA("BasePart") then
local emitter = Instance.new("ParticleEmitter")
emitter.Name = "m1gxx_local_particle"
emitter.Texture = aidstr(PARTICLE_ID)
emitter.Rate = 30
emitter.Lifetime = NumberRange.new(1, 2)
emitter.Speed = NumberRange.new(0.5, 2)
emitter.Size = NumberSequence.new(0.5)
emitter.LightEmission = 0.6
emitter.Parent = part
table.insert(created.localParticles, emitter)
end
end
end
-- cria para um jogador VISUAL local: uma part invisível que segue a cabeça + particle emitter + billboard GUI
local function createRemoteVisualForPlayer(plr)
if not plr.Character then return end
local head = plr.Character:FindFirstChild("Head")
if not head then return end
-- já existe?
if created.remoteVisuals[plr] then return end
-- invisível part que seguirá a cabeça
local vpart = Instance.new("Part")
vpart.Name = "m1gxx_v3_vispart_" .. plr.Name
vpart.Size = Vector3.new(0.5,0.5,0.5)
vpart.Transparency = 1
vpart.Anchored = true
vpart.CanCollide = false
vpart.Parent = VIS_ROOT
-- particle emitter no vpart
local emitter = Instance.new("ParticleEmitter")
emitter.Name = "m1gxx_v3_remoteEmitter"
emitter.Texture = aidstr(PARTICLE_ID)
emitter.Rate = 40
emitter.Lifetime = NumberRange.new(1,2)
emitter.Speed = NumberRange.new(0.5,2)
emitter.Size = NumberSequence.new(0.5)
emitter.LightEmission = 0.6
emitter.Parent = vpart
-- BillboardGui para colocar a imagem "máscara"
local billboard = Instance.new("BillboardGui")
billboard.Name = "m1gxx_v3_faceBillboard_" .. plr.Name
billboard.Adornee = vpart
billboard.Size = UDim2.new(0, 140, 0, 140) -- ajuste conforme necessário
billboard.StudsOffset = Vector3.new(0, 0, 0)
billboard.AlwaysOnTop = true
billboard.Parent = GUI_ROOT
local img = Instance.new("ImageLabel")
img.Size = UDim2.new(1,0,1,0)
img.BackgroundTransparency = 1
img.Image = aidstr(DECAL_ID)
img.Parent = billboard
-- guardar referência
created.remoteVisuals[plr] = {
part = vpart,
emitter = emitter,
billboard = billboard
}
end
-- atualiza posições dos visParts para seguir a cabeça do respectivo jogador
local function updateRemoteVisuals()
for plr, v in pairs(created.remoteVisuals) do
-- se player saiu ou character nil, limpar
if not plr.Parent or not plr.Character or not plr.Character:FindFirstChild("Head") then
if v.billboard and v.billboard.Parent then pcall(v.billboard.Destroy, v.billboard) end
if v.part and v.part.Parent then pcall(v.part.Destroy, v.part) end
created.remoteVisuals[plr] = nil
else
local head = plr.Character:FindFirstChild("Head")
if head then
-- posicionar o v.part exatamente onde a face está (um pouco à frente)
local cf = head.CFrame * CFrame.new(0, 0, -0.1) -- ligeiramente à frente da face
v.part.CFrame = cf
-- ajustar billboard offset para cobrir a face: studs offset pode ser zero porque Adornee é a part
v.billboard.StudsOffset = Vector3.new(0, 0, 0)
end
end
end
end
-- cria visuals locais para TODOS os players (inclui você também se quiser máscara em você)
local function createRemoteVisualsForAllPlayers()
for _, plr in ipairs(Players:GetPlayers()) do
-- ignorar o seu próprio personagem se já tem face decal local (mas podemos opcionalmente criar também)
if plr ~= localPlayer then
createRemoteVisualForPlayer(plr)
else
-- manter máscara também no seu player via billboard (opcional)
createRemoteVisualForPlayer(plr)
end
end
end
-- remove visuals para um jogador específico (quando sair)
local function removeRemoteVisualForPlayer(plr)
local v = created.remoteVisuals[plr]
if v then
if v.billboard and v.billboard.Parent then pcall(v.billboard.Destroy, v.billboard) end
if v.part and v.part.Parent then pcall(v.part.Destroy, v.part) end
created.remoteVisuals[plr] = nil
end
end
-- conexões para players entrarem/sairem/respawnarem
Players.PlayerAdded:Connect(function(plr)
-- aguardar character
plr.CharacterAdded:Connect(function()
if active then createRemoteVisualForPlayer(plr) end
end)
end)
Players.PlayerRemoving:Connect(function(plr)
removeRemoteVisualForPlayer(plr)
end)
-- RenderStepped para atualizar posições
local updateConn
local function startUpdating()
if updateConn then return end
updateConn = RunService.RenderStepped:Connect(function()
if active then
updateRemoteVisuals()
end
end)
end
local function stopUpdating()
if updateConn then
updateConn:Disconnect()
updateConn = nil
end
end
-- função principal ligar/desligar
local function activate()
if active then return end
active = true
status.Text = "Ligado"
-- sky
created.sky = createLocalSky()
-- music
created.sound = createLocalMusic()
-- decals no mapa
applyDecalToAllParts()
-- partículas no meu personagem
createParticlesOnLocalCharacter()
-- criar visuals locais para todos os players (máscaras e partículas)
createRemoteVisualsForAllPlayers()
-- iniciar atualização contínua
startUpdating()
end
local function deactivate()
if not active then return end
active = false
status.Text = "Desligado"
-- remover sky
if created.sky and created.sky.Parent then pcall(created.sky.Destroy, created.sky) end
-- remover música
if created.sound and created.sound.Parent then
pcall(function() created.sound:Stop() end)
pcall(created.sound.Destroy, created.sound)
end
-- limpar decals/particles locais
clearDecals()
clearLocalParticles()
clearRemoteVisuals()
-- stop update
stopUpdating()
end
-- botão alterna
button.MouseButton1Click:Connect(function()
if active then
deactivate()
button.Text = "💫 c00lify 💫"
else
activate()
button.Text = "✅ c00lify Ativado!"
end
end)
-- limpar caso o jogador saia / reinicie client
local function cleanupAll()
deactivate()
if VIS_ROOT and VIS_ROOT.Parent then pcall(VIS_ROOT.Destroy, VIS_ROOT) end
if GUI_ROOT and GUI_ROOT.Parent then pcall(GUI_ROOT.Destroy, GUI_ROOT) end
if screenGui and screenGui.Parent then pcall(screenGui.Destroy, screenGui) end
end
local closeConn
local playerAncestry = localPlayer:GetPropertyChangedSignal("Parent")
playerAncestry:Connect(function()
if not localPlayer.Parent then
cleanupAll()
end
end)
-- mensagem
print("m1gxx c00lify v3 (visual local) pronto. Clique no botão para ativar os efeitos (apenas visível para você).")No comments yet for this script.



