
Key Required VerifiedUniversal

-- Project RIGHTWHRITE Server-Side (Fix ClipsDescendants)
local Players = game:GetService("Players")
local LogService = game:GetService("LogService")
-- 🔒
local ALLOWED_USERID = 9897783769
-- 🎨 COLORE CONTORNI (VERDE OLIVA)
local BORDER_COLOR = Color3.fromRGB(85, 107, 47)
local function CreateProjectRW(player)
if player.UserId ~= ALLOWED_USERID then
return
end
if player.PlayerGui:FindFirstChild("RIGHTWHRITEGUI_SS") then return end
local sg = Instance.new("ScreenGui")
sg.Name = "RIGHTWHRITEGUI_SS"
sg.Parent = player.PlayerGui
sg.ResetOnSpawn = false
-- Main Frame (Rettangolare, Nero, Contorno Rosso)
local Main = Instance.new("Frame")
Main.Name = "Main"
Main.Size = UDim2.new(0, 580, 0, 380)
Main.Position = UDim2.new(0.5, -290, 0.5, -190)
Main.BackgroundColor3 = Color3.new(0, 0, 0)
Main.BorderColor3 = BORDER_COLOR
Main.BorderSizePixel = 2
Main.ClipsDescendants = true -- EVITA CHE IL TESTO ESCA FUORI
Main.Active = true
Main.Draggable = true
Main.Parent = sg
-- Title Bar
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 30)
Title.BackgroundColor3 = Color3.new(0, 0, 0)
Title.BorderColor3 = BORDER_COLOR
Title.Text = "RIGHTGUI"
Title.TextColor3 = Color3.new(1, 1, 1)
Title.Font = Enum.Font.SourceSansBold
Title.TextSize = 18
Title.Parent = Main
-- Tasto Apri/Chiudi (- / +)
local MinBtn = Instance.new("TextButton")
MinBtn.Size = UDim2.new(0, 30, 0, 30)
MinBtn.Position = UDim2.new(1, -30, 0, 0)
MinBtn.BackgroundColor3 = Color3.new(0, 0, 0)
MinBtn.BorderColor3 = BORDER_COLOR
MinBtn.Text = "(:"
MinBtn.TextColor3 = Color3.new(1, 1, 1)
MinBtn.Parent = Main
-- Tabs Container
local TabHome = Instance.new("TextButton")
TabHome.Size = UDim2.new(0, 80, 0, 25)
TabHome.Position = UDim2.new(0, 5, 0, 35)
TabHome.BackgroundColor3 = Color3.new(0,0,0)
TabHome.BorderColor3 = BORDER_COLOR
TabHome.Text = "Editor >_"
TabHome.TextColor3 = Color3.new(1,1,1)
TabHome.Parent = Main
local TabConsole = Instance.new("TextButton")
TabConsole.Size = UDim2.new(0, 80, 0, 25)
TabConsole.Position = UDim2.new(0, 90, 0, 35)
TabConsole.BackgroundColor3 = Color3.new(0,0,0)
TabConsole.BorderColor3 = BORDER_COLOR
TabConsole.Text = "Console"
TabConsole.TextColor3 = Color3.new(1,1,1)
TabConsole.Parent = Main
-- PAGINA HOME
local HomePage = Instance.new("Frame")
HomePage.Size = UDim2.new(1, 0, 1, -65)
HomePage.Position = UDim2.new(0, 0, 0, 65)
HomePage.BackgroundTransparency = 1
HomePage.Parent = Main
-- TextBox Style Executor con ClipsDescendants
local ExecBox = Instance.new("TextBox")
ExecBox.Size = UDim2.new(0, 380, 0, 250)
ExecBox.Position = UDim2.new(0, 10, 0, 5)
ExecBox.BackgroundColor3 = Color3.new(0,0,0)
ExecBox.BorderColor3 = BORDER_COLOR
ExecBox.TextColor3 = Color3.new(1,1,1)
ExecBox.Text = ""
ExecBox.PlaceholderText = "--Project RIGHTWHRITE"
ExecBox.MultiLine = true
ExecBox.ClearTextOnFocus = false
ExecBox.ClipsDescendants = true -- PROTEZIONE EXTRA
ExecBox.TextXAlignment = Enum.TextXAlignment.Left
ExecBox.TextYAlignment = Enum.TextYAlignment.Top
ExecBox.Parent = HomePage
-- Bottoni Sotto la TextBox
local function CreateActionBtn(txt, pos)
local b = Instance.new("TextButton")
b.Size = UDim2.new(0, 120, 0, 30)
b.Position = pos
b.BackgroundColor3 = Color3.new(0,0,0)
b.BorderColor3 = BORDER_COLOR
b.Text = txt
b.TextColor3 = Color3.new(1,1,1)
b.Parent = HomePage
return b
end
local BExecute = CreateActionBtn("Execute", UDim2.new(0, 10, 0, 260))
local BClear = CreateActionBtn("Clear", UDim2.new(0, 140, 0, 260))
local BCopy = CreateActionBtn("Copy", UDim2.new(0, 270, 0, 260))
-- LISTA BOTTONI A DESTRA (VERTICALE)
local ScrollList = Instance.new("ScrollingFrame")
ScrollList.Size = UDim2.new(0, 160, 0, 285)
ScrollList.Position = UDim2.new(0, 405, 0, 5)
ScrollList.BackgroundColor3 = Color3.new(0,0,0)
ScrollList.BorderColor3 = BORDER_COLOR
ScrollList.CanvasSize = UDim2.new(0, 0, 0, 500)
ScrollList.ScrollBarThickness = 4
ScrollList.Parent = HomePage
local listLayout = Instance.new("UIListLayout")
listLayout.Parent = ScrollList
listLayout.Padding = UDim.new(0, 5)
local function AddBtn(name, fn)
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, -10, 0, 40)
b.BackgroundColor3 = Color3.new(0,0,0)
b.BorderColor3 = BORDER_COLOR
b.TextColor3 = Color3.new(1,1,1)
b.Text = name
b.Parent = ScrollList
b.MouseButton1Click:Connect(fn)
end
-- AZIONI BOTTONI
AddBtn("Skybox", function()
local s = Instance.new("Sky", game.Lighting)
local id = "rbxassetid://90703417242017"
s.SkyboxBk, s.SkyboxDn, s.SkyboxFt, s.SkyboxLf, s.SkyboxRt, s.SkyboxUp = id, id, id, id, id, id
end)
AddBtn("Skybox 2", function()
local s = Instance.new("Sky", game.Lighting)
local id = "rbxassetid://80529788688635"
s.SkyboxBk, s.SkyboxDn, s.SkyboxFt, s.SkyboxLf, s.SkyboxRt, s.SkyboxUp = id, id, id, id, id, id
end)
AddBtn("Decal spam", function()
for _, p in pairs(workspace:GetDescendants()) do
if p:IsA("BasePart") then
for i=0,5 do
local d = Instance.new("Decal", p)
d.Texture = "rbxassetid://90703417242017"
d.Face = Enum.NormalId:GetEnumItems()[i+1]
end
end
end
end)
AddBtn("Decal spam 2", function()
for _, p in pairs(workspace:GetDescendants()) do
if p:IsA("BasePart") then
for i=0,5 do
local d = Instance.new("Decal", p)
d.Texture = "rbxassetid://80529788688635"
d.Face = Enum.NormalId:GetEnumItems()[i+1]
end
end
end
end)
AddBtn("Music", function()
local snd = Instance.new("Sound", workspace)
snd.SoundId = "rbxassetid://18974101814"
snd:Play()
end)
AddBtn("Jumpscare", function()
for _, plr in pairs(Players:GetPlayers()) do
local jg = Instance.new("ScreenGui", plr.PlayerGui)
local img = Instance.new("ImageLabel", jg)
img.Size = UDim2.new(1,0,1,0)
img.Image = "rbxassetid://90703417242017"
local s = Instance.new("Sound", workspace)
s.SoundId = "rbxassetid://6129291390"
s:Play()
task.delay(3, function() jg:Destroy() end)
end
end)
AddBtn("Fire", function()
for _, p in pairs(workspace:GetDescendants()) do
if p:IsA("BasePart") then Instance.new("Fire", p).Size = 30 end
end
end)
AddBtn("Enter message", function()
local msgs = {"I am RIGHTWHRITE", "HAHAHAAHHAHHAHA", "I am KING!!!"}
for _, text in pairs(msgs) do
local h = Instance.new("Hint", workspace)
h.Text = text
task.wait(2.5)
h:Destroy()
end
end)
AddBtn("Collapse World", function()
-- Identifica i personaggi dei player per proteggerli
local protected = {}
for _, p in pairs(Players:GetPlayers()) do
if p.Character then
protected[p.Character] = true
end
end
-- Scansiona tutto il Workspace
for _, obj in pairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") then
-- Controlla che l'oggetto non appartenga a un player
local isSafe = false
for char, _ in pairs(protected) do
if obj:IsDescendantOf(char) then
isSafe = true
break
end
end
if not isSafe then
-- L'EFFETTO COLLAPSE:
obj.Anchored = false -- Toglie il blocco
obj:BreakJoints() -- Rompe le saldature (fondamentale per far crollare i palazzi)
-- Applica una piccola forza casuale per far "vibrare" e cadere meglio i pezzi
obj.Velocity = Vector3.new(math.random(-1,1), -5, math.random(-1,1))
end
end
end
end)
AddBtn("Particles", function()
-- 🔽🔽🔽 INCOLLA QUI IL TUO SCRIPT 🔽🔽🔽
local imageId = "rbxassetid://80529788688635"
local desiredSpeed = 10
local ratePerPart = 20
local function applyParticles(obj)
if obj:IsA("BasePart") then
-- Rimuove particelle vecchie per evitare sovrapposizioni
for _, old in pairs(obj:GetChildren()) do
if old:IsA("ParticleEmitter") and old.Name == "C00lEffect" then
old:Destroy()
end
end
local pe = Instance.new("ParticleEmitter")
pe.Name = "C00lEffect"
pe.Texture = imageId
pe.Transparency = NumberSequence.new(0) -- Solide
pe.LightEmission = 0 -- Niente effetto fantasma
pe.Size = NumberSequence.new(2)
pe.Lifetime = NumberRange.new(3, 5)
-- Impostazioni per salire verso l'alto
pe.Speed = NumberRange.new(desiredSpeed, desiredSpeed) -- Velocità fissa 10
pe.EmissionDirection = Enum.NormalId.Top -- Emette verso l'alto
pe.Acceleration = Vector3.new(0, 0, 0) -- Nessuna gravità, salgono dritte
pe.Rate = ratePerPart -- 20 per ogni parte
pe.Parent = obj
end
end
-- Applica a tutti i blocchi esistenti nella piattaforma (Workspace)
for _, v in pairs(workspace:GetDescendants()) do
applyParticles(v)
end
-- Applica a tutti i Players attuali e futuri (per ogni parte del corpo)
for _, player in pairs(game.Players:GetPlayers()) do
if player.Character then
for _, part in pairs(player.Character:GetDescendants()) do
applyParticles(part)
end
end
end
print("RIGHTWHRITE IS BETTER AHAHAHHAHA!")
-- 🔼🔼🔼 FINE SCRIPT 🔼🔼🔼
end)
AddBtn("Disco", function()
local lighting = game:GetService("Lighting")
-- Crea l'effetto sulla visuale
local cc = Instance.new("ColorCorrectionEffect", lighting)
cc.Name = "DiscoVisual"
cc.Saturation = 0.5 -- Mantiene i colori della mappa visibili
cc.Brightness = 0.1 -- Non esagera con la luce
-- Tabella colori vivaci (senza bianco, nero, grigio)
local c = {
Color3.fromRGB(255, 0, 0), -- Rosso
Color3.fromRGB(255, 255, 0), -- Giallo
Color3.fromRGB(255, 0, 255), -- Rosa/Viola
Color3.fromRGB(0, 255, 0), -- Verde
Color3.fromRGB(0, 255, 255), -- Azzurro
Color3.fromRGB(255, 100, 0), -- Arancione
Color3.fromRGB(150, 0, 255) -- Viola scuro
}
-- Loop infinito che riparte sempre da solo
task.spawn(function()
while true do
for i = 1, #c do
-- Cambia colore con una sfumatura leggera (transparente)
cc.TintColor = c[i]
task.wait(0.2) -- Velocità moderata per vedere la piattaforma
end
-- Qui il ciclo ricomincia da solo dal primo colore
end
end)
end)
-- PAGINA CONSOLE
local ConsolePage = Instance.new("Frame")
ConsolePage.Size = UDim2.new(1, 0, 1, -65)
ConsolePage.Position = UDim2.new(0, 0, 0, 65)
ConsolePage.BackgroundTransparency = 1
ConsolePage.Visible = false
ConsolePage.Parent = Main
local ConsoleBox = Instance.new("ScrollingFrame")
ConsoleBox.Size = UDim2.new(0, 380, 0, 300)
ConsoleBox.Position = UDim2.new(0, 10, 0, 5)
ConsoleBox.BackgroundColor3 = Color3.new(0,0,0)
ConsoleBox.BorderColor3 = BORDER_COLOR
ConsoleBox.CanvasSize = UDim2.new(0,0,0,5000)
ConsoleBox.Parent = ConsolePage
Instance.new("UIListLayout", ConsoleBox)
local PlayerList = Instance.new("ScrollingFrame")
PlayerList.Size = UDim2.new(0, 160, 0, 300)
PlayerList.Position = UDim2.new(0, 405, 0, 5)
PlayerList.BackgroundColor3 = Color3.new(0,0,0)
PlayerList.BorderColor3 = BORDER_COLOR
PlayerList.Parent = ConsolePage
Instance.new("UIListLayout", PlayerList)
-- Logica
LogService.MessageOut:Connect(function(msg)
local t = Instance.new("TextLabel", ConsoleBox)
t.Size = UDim2.new(1,0,0,20)
t.BackgroundTransparency = 1
t.TextColor3 = Color3.new(1,1,1)
t.Text = msg
t.TextXAlignment = Enum.TextXAlignment.Left
end)
local function Refresh()
for _, v in pairs(PlayerList:GetChildren()) do if v:IsA("TextLabel") then v:Destroy() end end
for _, p in pairs(Players:GetPlayers()) do
local l = Instance.new("TextLabel", PlayerList)
l.Size = UDim2.new(1,0,0,25)
l.BackgroundTransparency = 1
l.TextColor3 = Color3.new(1,1,1)
l.Text = p.Name
end
end
Players.PlayerAdded:Connect(Refresh) Players.PlayerRemoving:Connect(Refresh) Refresh()
TabHome.MouseButton1Click:Connect(function() HomePage.Visible = true ConsolePage.Visible = false end)
TabConsole.MouseButton1Click:Connect(function() HomePage.Visible = false ConsolePage.Visible = true end)
BClear.MouseButton1Click:Connect(function() ExecBox.Text = "" end)
BExecute.MouseButton1Click:Connect(function()
local f, err = loadstring(ExecBox.Text)
if f then f() else warn(err) end
end)
BCopy.MouseButton1Click:Connect(function()
if setclipboard then
setclipboard(ExecBox.Text)
-- Optional: a small visual feedback
BCopy.Text = "Copy"
task.wait(1)
BCopy.Text = "Copy"
else
warn("Your executor does not support setclipboard")
end
end)
-- Funzione Contrai/Espandi
local isMin = false
MinBtn.MouseButton1Click:Connect(function()
isMin = not isMin
if isMin then
HomePage.Visible = false ConsolePage.Visible = false
TabHome.Visible = false TabConsole.Visible = false
Main:TweenSize(UDim2.new(0, 180, 0, 30), "Out", "Quad", 0.2, true)
MinBtn.Text = "):"
else
Main:TweenSize(UDim2.new(0, 580, 0, 380), "Out", "Quad", 0.2, true)
task.wait(0.2)
HomePage.Visible = true TabHome.Visible = true TabConsole.Visible = true
MinBtn.Text = "(:"
end
end)
end
for _, p in pairs(Players:GetPlayers()) do CreateProjectRW(p) end
Players.PlayerAdded:Connect(CreateGUIRW)



Pls Change the yours id for seeing this script by local Allowed_Userid= yours id
G