purpgui
Key RequiredUniversal Patched

purpgui

Universal Scriptthekidthekid 1.1K views 10 executesUpdated Dec 19, 2025
Unrated
00
Lua Script•309 lines (9689 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local hrp = character:WaitForChild("HumanoidRootPart")

player.CharacterAdded:Connect(function(char)
	character = char
	humanoid = char:WaitForChild("Humanoid")
	hrp = char:WaitForChild("HumanoidRootPart")
end)

-- SCREEN GUI
local gui = Instance.new("ScreenGui")
gui.Name = "purpgui"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

-- THANK YOU LABEL
local thankLabel = Instance.new("TextLabel", gui)
thankLabel.Size = UDim2.new(0,400,0,50)
thankLabel.Position = UDim2.new(0.5,-200,0.3,0)
thankLabel.BackgroundTransparency = 1
thankLabel.TextScaled = true
thankLabel.TextWrapped = true
thankLabel.Font = Enum.Font.GothamBold
thankLabel.Text = "Thank you for using my GUI! :D"

-- Rainbow text every 0.5 sec
local colors = {
	Color3.fromRGB(255,0,0),
	Color3.fromRGB(255,127,0),
	Color3.fromRGB(255,255,0),
	Color3.fromRGB(0,255,0),
	Color3.fromRGB(0,0,255),
	Color3.fromRGB(75,0,130),
	Color3.fromRGB(148,0,211)
}
task.spawn(function()
	local idx = 1
	while thankLabel.Parent do
		thankLabel.TextColor3 = colors[idx]
		idx = idx + 1
		if idx > #colors then idx = 1 end
		task.wait(0.5)
	end
end)
task.delay(3,function() thankLabel:Destroy() end)

-- MAIN FRAME
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 260,0,510)
frame.Position = UDim2.new(0,20,0.35,0)
frame.BackgroundColor3 = Color3.fromRGB(90,40,140)
frame.Active = true
frame.Draggable = true
frame.BorderSizePixel = 0
Instance.new("UICorner", frame)

local grad = Instance.new("UIGradient", frame)
grad.Color = ColorSequence.new{
	ColorSequenceKeypoint.new(0, Color3.fromRGB(130,70,220)),
	ColorSequenceKeypoint.new(1, Color3.fromRGB(60,20,120))
}

local stroke = Instance.new("UIStroke", frame)
stroke.Color = Color3.fromRGB(200,150,255)
stroke.Thickness = 2

-- TITLE
local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1,-40,0,40)
title.Position = UDim2.new(0,10,0,0)
title.Text = "purpgui"
title.BackgroundTransparency = 1
title.TextColor3 = Color3.fromRGB(235,200,255)
title.Font = Enum.Font.GothamBlack
title.TextSize = 22

-- MINIMIZE BUTTON
local mini = Instance.new("TextButton", frame)
mini.Size = UDim2.new(0,30,0,30)
mini.Position = UDim2.new(1,-35,0,5)
mini.Text = "-"
mini.BackgroundColor3 = Color3.fromRGB(150,90,220)
mini.TextColor3 = Color3.new(1,1,1)
mini.Font = Enum.Font.GothamBold
mini.TextSize = 20
Instance.new("UICorner", mini)

local minimized = false
local guiElements = {}

-- HELPER: SLIDER CREATOR
local function makeSlider(text,y,maxValue,callback)
	local label = Instance.new("TextLabel", frame)
	label.Position = UDim2.new(0,15,0,y)
	label.Size = UDim2.new(1,-30,0,20)
	label.BackgroundTransparency = 1
	label.TextColor3 = Color3.fromRGB(240,220,255)
	label.Font = Enum.Font.GothamBold
	label.TextSize = 14
	label.Text = text..": 0"

	local bg = Instance.new("Frame", frame)
	bg.Position = UDim2.new(0,15,0,y+22)
	bg.Size = UDim2.new(0,230,0,10)
	bg.BackgroundColor3 = Color3.fromRGB(80,40,130)
	bg.BorderSizePixel = 0
	Instance.new("UICorner", bg)

	local fill = Instance.new("Frame", bg)
	fill.Size = UDim2.new(0,0,1,0)
	fill.BackgroundColor3 = Color3.fromRGB(200,150,255)
	fill.BorderSizePixel = 0
	Instance.new("UICorner", fill)

	local dragging = false
	bg.InputBegan:Connect(function(i)
		if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging=true end
	end)
	UserInputService.InputEnded:Connect(function(i)
		if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging=false end
	end)

	RunService.RenderStepped:Connect(function()
		if dragging then
			local x = math.clamp((UserInputService:GetMouseLocation().X-bg.AbsolutePosition.X)/bg.AbsoluteSize.X,0,1)
			fill.Size = UDim2.new(x,0,1,0)
			local value = math.floor(x*maxValue)
			label.Text = text..": "..value
			callback(value)
		end
	end)
	table.insert(guiElements,label)
	table.insert(guiElements,bg)
end

-- SLIDERS
makeSlider("WalkSpeed",50,1000,function(v) if humanoid then humanoid.WalkSpeed=v end end)
makeSlider("JumpPower",120,1000,function(v) if humanoid then humanoid.JumpPower=v end end)
local flySpeed = 60
makeSlider("Flight Speed Adjuster",280,300,function(v) flySpeed=v end)

-- BUTTON CREATOR
local function makeButton(text,y)
	local btn = Instance.new("TextButton", frame)
	btn.Position = UDim2.new(0,15,0,y)
	btn.Size = UDim2.new(0,230,0,36)
	btn.Text = text
	btn.BackgroundColor3 = Color3.fromRGB(140,80,220)
	btn.TextColor3 = Color3.new(1,1,1)
	btn.Font = Enum.Font.GothamBold
	btn.TextSize = 14
	Instance.new("UICorner", btn)
	table.insert(guiElements,btn)
	return btn
end

-- BUTTONS
local noclipBtn = makeButton("Noclip: OFF",190)
local flyBtn = makeButton("Fly: OFF",235)
local ragdollBtn = makeButton("Ragdoll + Respawn",325)
local destroyBtn = makeButton("GUI Self Destruct",370)
local tpToolBtn = makeButton("Give Teleport Tool",415)
local bringBtn = makeButton("Give Bring All Tool",460)

-- NOCOLIP
local noclip=false
RunService.Stepped:Connect(function()
	if noclip and character then
		for _,v in pairs(character:GetDescendants()) do
			if v:IsA("BasePart") then v.CanCollide=false end
		end
	end
end)
noclipBtn.MouseButton1Click:Connect(function()
	noclip = not noclip
	noclipBtn.Text = noclip and "Noclip: ON" or "Noclip: OFF"
end)

-- FLY
local flying=false
local bv,bgFly
local control={F=0,B=0,L=0,R=0,U=0,D=0}
local function startFly()
	bv = Instance.new("BodyVelocity",hrp)
	bgFly = Instance.new("BodyGyro",hrp)
	bv.MaxForce=Vector3.new(9e9,9e9,9e9)
	bgFly.MaxTorque=Vector3.new(9e9,9e9,9e9)
	RunService.RenderStepped:Connect(function()
		if flying then
			local cam = workspace.CurrentCamera
			local move = Vector3.new(control.R-control.L,control.U-control.D,control.F-control.B)
			bv.Velocity = cam.CFrame:VectorToWorldSpace(move*flySpeed)
			bgFly.CFrame = cam.CFrame
		end
	end)
end
flyBtn.MouseButton1Click:Connect(function()
	flying = not flying
	flyBtn.Text = flying and "Fly: ON" or "Fly: OFF"
	if humanoid then humanoid.PlatformStand=flying end
	if flying then startFly() else if bv then bv:Destroy() end if bgFly then bgFly:Destroy() end
end)
UserInputService.InputBegan:Connect(function(i,g)
	if g then return end
	if i.KeyCode==Enum.KeyCode.W then control.F=1 end
	if i.KeyCode==Enum.KeyCode.S then control.B=1 end
	if i.KeyCode==Enum.KeyCode.A then control.L=1 end
	if i.KeyCode==Enum.KeyCode.D then control.R=1 end
	if i.KeyCode==Enum.KeyCode.Space then control.U=1 end
	if i.KeyCode==Enum.KeyCode.LeftControl then control.D=1 end
end)
UserInputService.InputEnded:Connect(function(i)
	if i.KeyCode==Enum.KeyCode.W then control.F=0 end
	if i.KeyCode==Enum.KeyCode.S then control.B=0 end
	if i.KeyCode==Enum.KeyCode.A then control.L=0 end
	if i.KeyCode==Enum.KeyCode.D then control.R=0 end
	if i.KeyCode==Enum.KeyCode.Space then control.U=0 end
	if i.KeyCode==Enum.KeyCode.LeftControl then control.D=0 end
end)

-- RAGDOLL + RESPAWN
ragdollBtn.MouseButton1Click:Connect(function()
	if humanoid then
		humanoid:ChangeState(Enum.HumanoidStateType.Physics)
		humanoid.PlatformStand=true
		task.delay(3,function() if humanoid then humanoid.Health=0 end end)
	end
end)

-- SELF DESTRUCT
destroyBtn.MouseButton1Click:Connect(function()
	gui:Destroy()
end)

-- TELEPORT TOOL
tpToolBtn.MouseButton1Click:Connect(function()
	if player.Backpack:FindFirstChild("purps not so stable click to teleporter") then return end
	local tool=Instance.new("Tool")
	tool.Name="purps not so stable click to teleporter"
	tool.RequiresHandle=false
	tool.CanBeDropped=true
	tool.Parent=player.Backpack
	tool.Activated:Connect(function()
		local mouse = player:GetMouse()
		if mouse and mouse.Hit then
			hrp.CFrame=CFrame.new(mouse.Hit.Position+Vector3.new(0,3,0))
		end
	end)
end)

-- BRING ALL TOOL WITH PARTICLES
bringBtn.MouseButton1Click:Connect(function()
	if player.Backpack:FindFirstChild("Bring All") then return end
	local tool=Instance.new("Tool")
	tool.Name="Bring All"
	tool.RequiresHandle=false
	tool.CanBeDropped=true
	tool.Parent=player.Backpack
	tool.Activated:Connect(function()
		for _,plr in pairs(Players:GetPlayers()) do
			if plr~=player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
				local oldPos = plr.Character.HumanoidRootPart.Position
				local part = Instance.new("Part")
				part.Size=Vector3.new(1,1,1)
				part.Anchored=true
				part.CanCollide=false
				part.Transparency=1
				part.Position=oldPos
				part.Parent=workspace
				local emitter = Instance.new("ParticleEmitter")
				emitter.Texture="rbxassetid://244221613"
				emitter.Lifetime=NumberRange.new(0.5)
				emitter.Rate=100
				emitter.Speed=NumberRange.new(5)
				emitter.Parent=part
				Debris:AddItem(part,1)
				plr.Character.HumanoidRootPart.CFrame = hrp.CFrame + Vector3.new(0,0,3)
			end
		end
	end)
end)

-- MINIMIZE/MAXIMIZE
mini.MouseButton1Click:Connect(function()
	minimized = not minimized
	mini.Text = minimized and "+" or "-"
	for _,v in pairs(guiElements) do v.Visible=not minimized end
	local targetSize = minimized and UDim2.new(0,260,0,45) or UDim2.new(0,260,0,510)
	local tween = TweenService:Create(frame,TweenInfo.new(0.3),{Size=targetSize})
	tween:Play()
end)

-- GUI TOGGLE WITH M KEY
local visible=true
UserInputService.InputBegan:Connect(function(i,g)
	if g then return end
	if i.KeyCode==Enum.KeyCode.M then
		visible = not visible
		gui.Enabled = visible
	end
end)

Features & Information

purpgui is in v1.5 . expect bugs! :P this gui includes: walkspeed & jumppower sliders (0–1000) noclip button fly + flight speed adjuster a ragdoll + respawn button GUI self destruct button (it deletes the GUI) smooth minimize/maximize animation M key toggle rainbow welcome text (safe, changes color every 0.5 sec) a teleport tool: “purps not so stable click to teleporter” and a bring all tool. hope you enjoy!! :D (i didnt know how to make a flight script, so i asked chatgpt :P)

Community Comments (2)

BluududJRBluududJRDec 19, 2025

* so AI

thekidthekidDec 19, 2025

ts aint ai cro i js dont know how to script that well vro </3 ts is wip btw

More Scripts for Universal Scripts