ride a pe.t
Key Required

ride a pe.t

[🎃EVENT] Ride A PetZixaZixa 4.2K views 9K executesUpdated Sep 18, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•856 lines (19065 chars)
--// RIDE A PET - UPDATED OPTIMIZED EGG ESP
--// For your own Roblox Studio test game
--// Put in StarterPlayer > StarterPlayerScripts

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local Player = Players.LocalPlayer

--==================================================
-- EGG DATABASE - UPDATED
--==================================================

local Eggs = {
	["White Egg"] = {luck = 1, rarity = "Common"},
	["Brown Egg"] = {luck = 5, rarity = "Common"},

	["Cracked Egg"] = {luck = 30, rarity = "Rare"},
	["Easter Egg"] = {luck = 50, rarity = "Rare"},
	["Stone Egg"] = {luck = 100, rarity = "Rare"},
	["Leaf Egg"] = {luck = 200, rarity = "Rare"},

	["Mushroom Egg"] = {luck = 500, rarity = "Epic"},
	["Flower Egg"] = {luck = 750, rarity = "Epic"},
	["Slime Egg"] = {luck = 1000, rarity = "Epic"},
	["Ice Egg"] = {luck = 3000, rarity = "Epic"},

	["Glass Egg"] = {luck = 10000, rarity = "Legendary"},
	["Golden Egg"] = {luck = 30000, rarity = "Legendary"},

	-- MYTHIC
	["Crystal Egg"] = {luck = 150000, rarity = "Mythic"},
	["Skull Egg"] = {luck = 250000, rarity = "Mythic"},
	["Dominus Egg"] = {luck = 700000, rarity = "Mythic"},
	["Flaming Egg"] = {luck = 1000000, rarity = "Mythic"},
	["Sinister Egg"] = {luck = 3000000, rarity = "Mythic"},
	["Soul Egg"] = {luck = 7000000, rarity = "Mythic"},

	-- DIVINE
	["Aurora Egg"] = {luck = 300000000, rarity = "Divine"},
	["Galaxy Egg"] = {luck = 1500000000, rarity = "Divine"},

	-- ETHEREAL
	["Black Hole Egg"] = {luck = 100000000000, rarity = "Ethereal"},
	["Cherub Egg"] = {luck = 1000000000000, rarity = "Ethereal"},
}

--==================================================
-- RARITY COLORS
--==================================================

local RarityColors = {
	Common = Color3.fromRGB(220,220,220),
	Rare = Color3.fromRGB(70,150,255),
	Epic = Color3.fromRGB(180,70,255),
	Legendary = Color3.fromRGB(255,190,40),
	Mythic = Color3.fromRGB(255,70,70),
	Divine = Color3.fromRGB(255,120,255),
	Ethereal = Color3.fromRGB(70,255,255),
}

--==================================================
-- SETTINGS
--==================================================

local ESPEnabled = true
local RadarEnabled = true
local FlyEnabled = false
local InfiniteJumpEnabled = false
local NoclipEnabled = false

local WalkSpeed = 16
local FlySpeed = 60
local JumpPower = 100

local EggESP = {}

--==================================================
-- HELPERS
--==================================================

local function GetCharacter()
	return Player.Character
end

local function GetRoot()
	local Character = GetCharacter()
	if not Character then return nil end

	return Character:FindFirstChild("HumanoidRootPart")
end

local function GetHumanoid()
	local Character = GetCharacter()
	if not Character then return nil end

	return Character:FindFirstChildOfClass("Humanoid")
end

local function FormatNumber(Number)
	if Number >= 1000000000000 then
		return string.format("%.1fT", Number / 1000000000000)
	elseif Number >= 1000000000 then
		return string.format("%.1fB", Number / 1000000000)
	elseif Number >= 1000000 then
		return string.format("%.1fM", Number / 1000000)
	elseif Number >= 1000 then
		return string.format("%.1fK", Number / 1000)
	end

	return tostring(Number)
end

local function GetObjectPosition(Object)
	if Object:IsA("BasePart") then
		return Object.Position
	end

	if Object:IsA("Model") then
		return Object:GetPivot().Position
	end

	return nil
end

--==================================================
-- EGG CHECK
--==================================================

local function IsEgg(Object)
	if not (Object:IsA("Model") or Object:IsA("BasePart")) then
		return false
	end

	return Eggs[Object.Name] ~= nil
end

--==================================================
-- FIND ADORNEE
--==================================================

local function GetAdornee(Egg)
	if Egg:IsA("BasePart") then
		return Egg
	end

	if Egg:IsA("Model") then
		return Egg.PrimaryPart
			or Egg:FindFirstChildWhichIsA("BasePart", true)
	end

	return nil
end

--==================================================
-- CREATE ESP
--==================================================

local function CreateESP(Egg)

	if EggESP[Egg] then
		return
	end

	if not IsEgg(Egg) then
		return
	end

	local Adornee = GetAdornee(Egg)

	if not Adornee then
		return
	end

	local Data = Eggs[Egg.Name]

	local Billboard = Instance.new("BillboardGui")
	Billboard.Name = "EggESP"
	Billboard.Adornee = Adornee
	Billboard.Size = UDim2.fromOffset(125,38)
	Billboard.StudsOffset = Vector3.new(0,2.2,0)
	Billboard.AlwaysOnTop = true
	Billboard.MaxDistance = 600
	Billboard.Enabled = ESPEnabled
	Billboard.Parent = Egg

	local Frame = Instance.new("Frame")
	Frame.Size = UDim2.fromScale(1,1)
	Frame.BackgroundColor3 = Color3.fromRGB(15,15,20)
	Frame.BackgroundTransparency = 0.3
	Frame.BorderSizePixel = 0
	Frame.Parent = Billboard

	local Corner = Instance.new("UICorner")
	Corner.CornerRadius = UDim.new(0,5)
	Corner.Parent = Frame

	local Stroke = Instance.new("UIStroke")
	Stroke.Color = RarityColors[Data.rarity]
	Stroke.Thickness = 1
	Stroke.Parent = Frame

	local Text = Instance.new("TextLabel")
	Text.Size = UDim2.new(1,-4,1,-2)
	Text.Position = UDim2.fromOffset(2,1)
	Text.BackgroundTransparency = 1
	Text.TextColor3 = Color3.fromRGB(255,255,255)
	Text.TextSize = 9
	Text.Font = Enum.Font.GothamBold
	Text.TextWrapped = true
	Text.Parent = Frame

	EggESP[Egg] = {
		gui = Billboard,
		text = Text,
	}
end

--==================================================
-- REMOVE ESP
--==================================================

local function RemoveESP(Egg)

	local Info = EggESP[Egg]

	if Info then
		if Info.gui then
			Info.gui:Destroy()
		end

		EggESP[Egg] = nil
	end
end

--==================================================
-- SCAN EGGS
--==================================================

local function ScanEggs()

	local Found = {}

	for _, Object in ipairs(workspace:GetDescendants()) do

		if IsEgg(Object) then

			Found[Object] = true

			if not EggESP[Object] then
				CreateESP(Object)
			end
		end
	end

	for Egg,_ in pairs(EggESP) do

		if not Found[Egg] or not Egg.Parent then
			RemoveESP(Egg)
		end
	end
end

ScanEggs()

workspace.DescendantAdded:Connect(function(Object)

	if IsEgg(Object) then
		task.wait()
		CreateESP(Object)
	end
end)

workspace.DescendantRemoving:Connect(function(Object)

	if EggESP[Object] then
		RemoveESP(Object)
	end
end)

--==================================================
-- UI
--==================================================

local GUI = Instance.new("ScreenGui")
GUI.Name = "RideAPetUpdatedUI"
GUI.ResetOnSpawn = false
GUI.Parent = Player:WaitForChild("PlayerGui")

local Main = Instance.new("Frame")
Main.Size = UDim2.fromOffset(300,430)
Main.Position = UDim2.new(0,25,0.5,-215)
Main.BackgroundColor3 = Color3.fromRGB(18,18,23)
Main.BorderSizePixel = 0
Main.Parent = GUI

Instance.new("UICorner",Main).CornerRadius = UDim.new(0,12)

--==================================================
-- TITLE
--==================================================

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1,-80,0,42)
Title.Position = UDim2.fromOffset(12,0)
Title.BackgroundTransparency = 1
Title.Text = "🥚 RIDE A PET"
Title.TextColor3 = Color3.new(1,1,1)
Title.TextSize = 16
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = Main

local Minimize = Instance.new("TextButton")
Minimize.Size = UDim2.fromOffset(30,27)
Minimize.Position = UDim2.new(1,-68,0,7)
Minimize.BackgroundColor3 = Color3.fromRGB(40,40,50)
Minimize.Text = "−"
Minimize.TextColor3 = Color3.new(1,1,1)
Minimize.TextSize = 18
Minimize.Parent = Main

local Close = Instance.new("TextButton")
Close.Size = UDim2.fromOffset(30,27)
Close.Position = UDim2.new(1,-34,0,7)
Close.BackgroundColor3 = Color3.fromRGB(60,35,40)
Close.Text = "×"
Close.TextColor3 = Color3.new(1,1,1)
Close.TextSize = 18
Close.Parent = Main

--==================================================
-- CONTENT
--==================================================

local Content = Instance.new("Frame")
Content.Position = UDim2.fromOffset(0,42)
Content.Size = UDim2.new(1,0,1,-42)
Content.BackgroundTransparency = 1
Content.Parent = Main

local function Button(Text, Y)

	local B = Instance.new("TextButton")
	B.Position = UDim2.fromOffset(15,Y)
	B.Size = UDim2.new(1,-30,0,35)
	B.BackgroundColor3 = Color3.fromRGB(34,34,43)
	B.Text = Text
	B.TextColor3 = Color3.new(1,1,1)
	B.TextSize = 13
	B.Font = Enum.Font.GothamSemibold
	B.BorderSizePixel = 0
	B.Parent = Content

	Instance.new("UICorner",B).CornerRadius = UDim.new(0,8)

	return B
end

local ESPButton = Button("ESP: ON",5)
local RadarButton = Button("RADAR: ON",45)
local FlyButton = Button("FLY: OFF",85)
local InfiniteButton = Button("INFINITE JUMP: OFF",125)
local NoclipButton = Button("NOCLIP: OFF",165)

--==================================================
-- SPEED INPUTS
--==================================================

local SpeedBox = Instance.new("TextBox")
SpeedBox.Position = UDim2.fromOffset(15,210)
SpeedBox.Size = UDim2.new(.48,-20,0,35)
SpeedBox.BackgroundColor3 = Color3.fromRGB(34,34,43)
SpeedBox.TextColor3 = Color3.new(1,1,1)
SpeedBox.Text = "16"
SpeedBox.PlaceholderText = "Walk Speed"
SpeedBox.TextSize = 13
SpeedBox.Parent = Content

Instance.new("UICorner",SpeedBox).CornerRadius = UDim.new(0,8)

local FlyBox = Instance.new("TextBox")
FlyBox.Position = UDim2.new(.52,5,0,210)
FlyBox.Size = UDim2.new(.48,-20,0,35)
FlyBox.BackgroundColor3 = Color3.fromRGB(34,34,43)
FlyBox.TextColor3 = Color3.new(1,1,1)
FlyBox.Text = "60"
FlyBox.PlaceholderText = "Fly Speed"
FlyBox.TextSize = 13
FlyBox.Parent = Content

Instance.new("UICorner",FlyBox).CornerRadius = UDim.new(0,8)

--==================================================
-- STATUS
--==================================================

local Status = Instance.new("TextLabel")
Status.Position = UDim2.fromOffset(15,255)
Status.Size = UDim2.new(1,-30,0,25)
Status.BackgroundTransparency = 1
Status.Text = "🔎 Scanning..."
Status.TextColor3 = Color3.fromRGB(160,160,170)
Status.TextSize = 12
Status.Parent = Content

local Nearest = Instance.new("TextLabel")
Nearest.Position = UDim2.fromOffset(15,285)
Nearest.Size = UDim2.new(1,-30,0,80)
Nearest.BackgroundColor3 = Color3.fromRGB(27,27,35)
Nearest.TextColor3 = Color3.new(1,1,1)
Nearest.TextSize = 12
Nearest.Font = Enum.Font.GothamSemibold
Nearest.TextWrapped = true
Nearest.TextXAlignment = Enum.TextXAlignment.Left
Nearest.TextYAlignment = Enum.TextYAlignment.Center
Nearest.Text = "🧭 NEAREST EGG\nSearching..."
Nearest.Parent = Content

Instance.new("UICorner",Nearest).CornerRadius = UDim.new(0,8)

--==================================================
-- REOPEN
--==================================================

local Reopen = Instance.new("TextButton")
Reopen.Size = UDim2.fromOffset(48,48)
Reopen.Position = UDim2.new(0,20,.5,-24)
Reopen.BackgroundColor3 = Color3.fromRGB(25,25,32)
Reopen.Text = "🥚"
Reopen.TextSize = 22
Reopen.Visible = false
Reopen.Parent = GUI

Instance.new("UICorner",Reopen).CornerRadius = UDim.new(1,0)

--==================================================
-- MINIMIZE / CLOSE
--==================================================

local Minimized = false

Minimize.MouseButton1Click:Connect(function()

	Minimized = not Minimized
	Content.Visible = not Minimized

	if Minimized then
		Main.Size = UDim2.fromOffset(300,48)
		Minimize.Text = "+"
	else
		Main.Size = UDim2.fromOffset(300,430)
		Minimize.Text = "−"
	end
end)

Close.MouseButton1Click:Connect(function()
	Main.Visible = false
	Reopen.Visible = true
end)

Reopen.MouseButton1Click:Connect(function()
	Main.Visible = true
	Reopen.Visible = false
end)

--==================================================
-- DRAG UI
--==================================================

local Dragging = false
local DragStart
local StartPos

Title.InputBegan:Connect(function(Input)

	if Input.UserInputType == Enum.UserInputType.MouseButton1 then

		Dragging = true
		DragStart = Input.Position
		StartPos = Main.Position

	end
end)

UserInputService.InputChanged:Connect(function(Input)

	if Dragging and Input.UserInputType == Enum.UserInputType.MouseMovement then

		local Delta = Input.Position - DragStart

		Main.Position = UDim2.new(
			StartPos.X.Scale,
			StartPos.X.Offset + Delta.X,
			StartPos.Y.Scale,
			StartPos.Y.Offset + Delta.Y
		)
	end
end)

UserInputService.InputEnded:Connect(function(Input)

	if Input.UserInputType == Enum.UserInputType.MouseButton1 then
		Dragging = false
	end
end)

--==================================================
-- ESP
--==================================================

ESPButton.MouseButton1Click:Connect(function()

	ESPEnabled = not ESPEnabled

	ESPButton.Text = "ESP: "..(ESPEnabled and "ON" or "OFF")

	for _,Info in pairs(EggESP) do
		Info.gui.Enabled = ESPEnabled
	end
end)

--==================================================
-- RADAR
--==================================================

RadarButton.MouseButton1Click:Connect(function()

	RadarEnabled = not RadarEnabled

	RadarButton.Text = "RADAR: "..(RadarEnabled and "ON" or "OFF")
end)

--==================================================
-- WALK SPEED
--==================================================

local function ApplySpeed()

	local Humanoid = GetHumanoid()

	if Humanoid and not FlyEnabled then
		Humanoid.WalkSpeed = WalkSpeed
	end
end

SpeedBox.FocusLost:Connect(function()

	local Value = tonumber(SpeedBox.Text)

	if Value then
		WalkSpeed = math.clamp(Value,1,500)
		SpeedBox.Text = tostring(WalkSpeed)
	else
		SpeedBox.Text = tostring(WalkSpeed)
	end

	ApplySpeed()
end)

--==================================================
-- FLY
--==================================================

local FlyVelocity

local function StartFly()

	local Root = GetRoot()

	if not Root then
		return
	end

	if FlyVelocity then
		FlyVelocity:Destroy()
	end

	FlyVelocity = Instance.new("BodyVelocity")
	FlyVelocity.MaxForce = Vector3.new(100000,100000,100000)
	FlyVelocity.Velocity = Vector3.zero
	FlyVelocity.Parent = Root
end

local function StopFly()

	if FlyVelocity then
		FlyVelocity:Destroy()
		FlyVelocity = nil
	end
end

FlyBox.FocusLost:Connect(function()

	local Value = tonumber(FlyBox.Text)

	if Value then
		FlySpeed = math.clamp(Value,1,500)
		FlyBox.Text = tostring(FlySpeed)
	else
		FlyBox.Text = tostring(FlySpeed)
	end
end)

FlyButton.MouseButton1Click:Connect(function()

	FlyEnabled = not FlyEnabled

	FlyButton.Text = "FLY: "..(FlyEnabled and "ON" or "OFF")

	if FlyEnabled then
		StartFly()
	else
		StopFly()
		ApplySpeed()
	end
end)

--==================================================
-- INFINITE JUMP
--==================================================

InfiniteButton.MouseButton1Click:Connect(function()

	InfiniteJumpEnabled = not InfiniteJumpEnabled

	InfiniteButton.Text =
		"INFINITE JUMP: "..(InfiniteJumpEnabled and "ON" or "OFF")

end)

UserInputService.JumpRequest:Connect(function()

	if not InfiniteJumpEnabled then
		return
	end

	local Humanoid = GetHumanoid()

	if Humanoid then
		Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
	end
end)

--==================================================
-- NOCLIP
--==================================================

local function ApplyNoclip()

	if not NoclipEnabled then
		return
	end

	local Character = GetCharacter()

	if not Character then
		return
	end

	for _,Object in ipairs(Character:GetDescendants()) do

		if Object:IsA("BasePart") then
			Object.CanCollide = false
		end

	end
end

NoclipButton.MouseButton1Click:Connect(function()

	NoclipEnabled = not NoclipEnabled

	NoclipButton.Text =
		"NOCLIP: "..(NoclipEnabled and "ON" or "OFF")

end)

--==================================================
-- MAIN UPDATE
--==================================================

local ScanTimer = 0

RunService.Heartbeat:Connect(function(DeltaTime)

	ApplyNoclip()

	if not FlyEnabled then
		ApplySpeed()
	end

	ScanTimer += DeltaTime

	if ScanTimer >= 0.5 then
		ScanTimer = 0
		ScanEggs()
	end
end)

--==================================================
-- ESP + RADAR UPDATE
--==================================================

RunService.RenderStepped:Connect(function()

	local Root = GetRoot()

	if not Root then
		return
	end

	local NearestEgg
	local NearestName
	local NearestDistance = math.huge

	for Egg,Info in pairs(EggESP) do

		if not Egg.Parent then

			RemoveESP(Egg)

		else

			Info.gui.Enabled = ESPEnabled

			local Position = GetObjectPosition(Egg)

			if Position then

				local Distance =
					(Root.Position - Position).Magnitude

				local Data = Eggs[Egg.Name]

				Info.text.Text =
					"🥚 "..Egg.Name..
					"\n"..Data.rarity..
					" • "..FormatNumber(Data.luck)..
					" • "..math.floor(Distance).." studs"

				if Distance < NearestDistance then

					NearestDistance = Distance
					NearestEgg = Egg
					NearestName = Egg.Name
				end
			end
		end
	end

	if RadarEnabled and NearestEgg then

		local Data = Eggs[NearestName]

		Status.Text = "🟢 "..NearestName.." detected"

		Nearest.Text =
			"🧭 NEAREST EGG\n"..
			"🥚 "..NearestName..
			"\n⭐ "..Data.rarity..
			" • Luck: "..FormatNumber(Data.luck)..
			"\n📏 "..math.floor(NearestDistance).." studs"

		Nearest.TextColor3 =
			RarityColors[Data.rarity]

	elseif RadarEnabled then

		Status.Text = "🔎 Searching for eggs..."
		Nearest.Text =
			"🧭 NEAREST EGG\nNo eggs detected"

	else

		Status.Text = "🔴 Radar OFF"
		Nearest.Text =
			"🧭 NEAREST EGG\nRadar disabled"
	end
end)

--==================================================
-- FLY MOVEMENT
--==================================================

RunService.RenderStepped:Connect(function()

	if not FlyEnabled then
		return
	end

	local Root = GetRoot()

	if not Root then
		return
	end

	if not FlyVelocity then
		StartFly()
	end

	if not FlyVelocity then
		return
	end

	local Camera = workspace.CurrentCamera
	local Direction = Vector3.zero

	if UserInputService:IsKeyDown(Enum.KeyCode.W) then
		Direction += Camera.CFrame.LookVector
	end

	if UserInputService:IsKeyDown(Enum.KeyCode.S) then
		Direction -= Camera.CFrame.LookVector
	end

	if UserInputService:IsKeyDown(Enum.KeyCode.A) then
		Direction -= Camera.CFrame.RightVector
	end

	if UserInputService:IsKeyDown(Enum.KeyCode.D) then
		Direction += Camera.CFrame.RightVector
	end

	if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
		Direction += Vector3.new(0,1,0)
	end

	if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
		Direction -= Vector3.new(0,1,0)
	end

	if Direction.Magnitude > 0 then
		Direction = Direction.Unit
	end

	FlyVelocity.Velocity = Direction * FlySpeed
end)

--==================================================
-- RESPAWN
--==================================================

Player.CharacterAdded:Connect(function()

	task.wait(1)

	ApplySpeed()

	if FlyEnabled then
		StartFly()
	end
end)

print("Ride A Pet - Updated Egg ESP loaded!")

Features & Information

🐾 Ride A Pet Script ✨ Egg ESP 📍 Teleport to Eggs 💾 Save & TP Checkpoint 🦘 Jump Boost ♾️ Infinite Jump 👻 NoClip 🪽 Fly 🖥️ Movable UI ➖ Minimize / ✕ Close 🔄 Reopen Menu ⚡ Lightweight & Easy to Use

Community Comments (2)

MocjEscanorMocjEscanormodOct 1, 2026

Hello! Please remove the game name in the title. Thankyou!

Replying to @MocjEscanor
ZixaZixaOct 4, 2026

@MocjEscanor why

More Scripts for [🎃EVENT] Ride A Pet