Description

Goob Script For Murder Mystery Enjoy Goob!!

Features

  • + Fly
  • + Noclip
  • + ESP

Script

Add Xeno Scripts as a preferred source
local player = game.Players.LocalPlayer
local TweenService = game:GetService("TweenService")

local godModeEnabled = false
local godModeLoop = nil
local godModeConnections = {}

local function applyGodModeToHumanoid(humanoid)
	if not humanoid then return end
	-- Set health and max health to math.huge
	humanoid.MaxHealth = math.huge
	humanoid.Health = math.huge

	-- Disconnect previous connections
	if godModeConnections[humanoid] then
		for k, conn in godModeConnections[humanoid] do
			if conn then conn:Disconnect() end
		end
		godModeConnections[humanoid] = nil
	end

	godModeConnections[humanoid] = {}

	-- Prevent health from dropping
	table.insert(godModeConnections[humanoid], humanoid:GetPropertyChangedSignal("Health"):Connect(function()
		if godModeEnabled and humanoid.Health < math.huge then
			humanoid.Health = math.huge
		end
	end))

	-- Prevent death
	table.insert(godModeConnections[humanoid], humanoid.Died:Connect(function()
		if godModeEnabled then
			humanoid.Health = math.huge
			humanoid.MaxHealth = math.huge
		end
	end))
end

local function removeGodModeFromHumanoid(humanoid)
	if not humanoid then return end
	if godModeConnections[humanoid] then
		for k, conn in godModeConnections[humanoid] do
			if conn then conn:Disconnect() end
		end
		godModeConnections[humanoid] = nil
	end
end

local function startGodMode()
	if godModeLoop then return end
	godModeLoop = true
	task.spawn(function()
		while godModeLoop do
			if player.Character and player.Character:FindFirstChild("Humanoid") then
				local humanoid = player.Character.Humanoid
				applyGodModeToHumanoid(humanoid)
			end
			task.wait(0.1)
		end
	end)
end

local function stopGodMode()
	godModeLoop = false
	if player.Character and player.Character:FindFirstChild("Humanoid") then
		removeGodModeFromHumanoid(player.Character.Humanoid)
	end
end

local function updateGodModeButton()
	infiniteHealthButton.Text = godModeEnabled and "Infinite Health (ON)" or "Infinite Health (OFF)"
	infiniteHealthButton.BackgroundColor3 = godModeEnabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(170, 170, 170)
end

local function createGoobGui()
	-- Remove previous GUI if exists
	local oldGui = player.PlayerGui:FindFirstChild("ExploitGui")
	if oldGui then
		oldGui:Destroy()
	end

	local screenGui = Instance.new("ScreenGui")
	screenGui.Name = "ExploitGui"
	screenGui.Parent = player:WaitForChild("PlayerGui") -- Parent to PlayerGui so it appears for the player

	-- Open Button (middle top)
	local openButton = Instance.new("TextButton")
	openButton.Size = UDim2.new(0, 180, 0, 50)
	openButton.Position = UDim2.new(0.5, -90, 0.15, -25)
	openButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
	openButton.Text = "Open Goob"
	openButton.TextScaled = true
	openButton.TextColor3 = Color3.fromRGB(255,255,255)
	openButton.Font = Enum.Font.SourceSansBold
	openButton.TextSize = 24
	openButton.Parent = screenGui

	-- Main Frame
	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(0, 350, 0, 260)
	frame.Position = UDim2.new(0.5, -175, 0.5, -130)
	frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
	frame.BorderSizePixel = 0
	frame.Visible = false
	frame.Parent = screenGui

	local uiCorner = Instance.new("UICorner")
	uiCorner.CornerRadius = UDim.new(0, 16)
	uiCorner.Parent = frame

	local closeButton = Instance.new("TextButton")
	closeButton.Size = UDim2.new(0, 40, 0, 40)
	closeButton.Position = UDim2.new(1, -45, 0, 5)
	closeButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
	closeButton.Text = "X"
	closeButton.TextColor3 = Color3.fromRGB(255,255,255)
	closeButton.Font = Enum.Font.SourceSansBold
	closeButton.TextSize = 24
	closeButton.Parent = frame

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(1, -50, 0, 40)
	title.Position = UDim2.new(0, 0, 0, 0)
	title.BackgroundTransparency = 1
	title.Text = "Goob, Exploit For Murder Mystery 2"
	title.TextColor3 = Color3.fromRGB(255, 255, 0)
	title.Font = Enum.Font.SourceSansBold
	title.TextScaled = true
	title.TextStrokeTransparency = 0.5
	title.TextStrokeColor3 = Color3.fromRGB(0,0,0)
	title.TextSize = 24
	title.Parent = frame

	-- Speed Section
	local speedLabel = Instance.new("TextLabel")
	speedLabel.Size = UDim2.new(0, 120, 0, 30)
	speedLabel.Position = UDim2.new(0, 10, 0, 50)
	speedLabel.BackgroundTransparency = 1
	speedLabel.Text = "Speed Amount:"
	speedLabel.TextColor3 = Color3.fromRGB(255,255,255)
	speedLabel.Font = Enum.Font.SourceSans
	speedLabel.TextSize = 18
	speedLabel.Parent = frame

	local speedBox = Instance.new("TextBox")
	speedBox.Size = UDim2.new(0, 80, 0, 30)
	speedBox.Position = UDim2.new(0, 140, 0, 50)
	speedBox.BackgroundColor3 = Color3.fromRGB(50,50,50)
	speedBox.TextColor3 = Color3.fromRGB(255,255,255)
	speedBox.Font = Enum.Font.SourceSans
	speedBox.TextSize = 18
	speedBox.Text = "16"
	speedBox.Parent = frame

	local speedButton = Instance.new("TextButton")
	speedButton.Size = UDim2.new(0, 100, 0, 30)
	speedButton.Position = UDim2.new(0, 230, 0, 50)
	speedButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
	speedButton.Text = "Set Speed"
	speedButton.TextColor3 = Color3.fromRGB(255,255,255)
	speedButton.Font = Enum.Font.SourceSansBold
	speedButton.TextSize = 18
	speedButton.Parent = frame

	-- Jump Section
	local jumpLabel = Instance.new("TextLabel")
	jumpLabel.Size = UDim2.new(0, 120, 0, 30)
	jumpLabel.Position = UDim2.new(0, 10, 0, 100)
	jumpLabel.BackgroundTransparency = 1
	jumpLabel.Text = "JumpPower:"
	jumpLabel.TextColor3 = Color3.fromRGB(255,255,255)
	jumpLabel.Font = Enum.Font.SourceSans
	jumpLabel.TextSize = 18
	jumpLabel.Parent = frame

	local jumpBox = Instance.new("TextBox")
	jumpBox.Size = UDim2.new(0, 80, 0, 30)
	jumpBox.Position = UDim2.new(0, 140, 0, 100)
	jumpBox.BackgroundColor3 = Color3.fromRGB(50,50,50)
	jumpBox.TextColor3 = Color3.fromRGB(255,255,255)
	jumpBox.Font = Enum.Font.SourceSans
	jumpBox.TextSize = 18
	jumpBox.Text = "50"
	jumpBox.Parent = frame

	local jumpButton = Instance.new("TextButton")
	jumpButton.Size = UDim2.new(0, 100, 0, 30)
	jumpButton.Position = UDim2.new(0, 230, 0, 100)
	jumpButton.BackgroundColor3 = Color3.fromRGB(255, 85, 0)
	jumpButton.Text = "Set Jump"
	jumpButton.TextColor3 = Color3.fromRGB(255,255,255)
	jumpButton.Font = Enum.Font.SourceSansBold
	jumpButton.TextSize = 18
	jumpButton.Parent = frame

	-- Infinite Health Button (TOGGLE)
	infiniteHealthButton = Instance.new("TextButton")
	infiniteHealthButton.Size = UDim2.new(0, 320, 0, 35)
	infiniteHealthButton.Position = UDim2.new(0, 15, 0, 140)
	infiniteHealthButton.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
	infiniteHealthButton.Text = godModeEnabled and "Infinite Health (ON)" or "Infinite Health (OFF)"
	infiniteHealthButton.TextColor3 = Color3.fromRGB(0,0,0)
	infiniteHealthButton.Font = Enum.Font.SourceSansBold
	infiniteHealthButton.TextSize = 20
	infiniteHealthButton.Parent = frame

	-- Fly Button
	local flyButton = Instance.new("TextButton")
	flyButton.Size = UDim2.new(0, 320, 0, 40)
	flyButton.Position = UDim2.new(0, 15, 0, 185)
	flyButton.BackgroundColor3 = Color3.fromRGB(0, 255, 170)
	flyButton.Text = "Fly (OFF)"
	flyButton.TextColor3 = Color3.fromRGB(0,0,0)
	flyButton.Font = Enum.Font.SourceSansBold
	flyButton.TextSize = 22
	flyButton.Parent = frame

	-- Noclip Button (NEW)
	local noclipButton = Instance.new("TextButton")
	noclipButton.Size = UDim2.new(0, 320, 0, 40)
	noclipButton.Position = UDim2.new(0, 15, 0, 230)
	noclipButton.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
	noclipButton.Text = "Noclip (OFF)"
	noclipButton.TextColor3 = Color3.fromRGB(0,0,0)
	noclipButton.Font = Enum.Font.SourceSansBold
	noclipButton.TextSize = 22
	noclipButton.Parent = frame

	-- Frame2 Open Button
	local frame2Button = Instance.new("TextButton")
	frame2Button.Size = UDim2.new(0, 320, 0, 40)
	frame2Button.Position = UDim2.new(0, 15, 0, 275)
	frame2Button.BackgroundColor3 = Color3.fromRGB(170, 85, 255)
	frame2Button.Text = "Open Controls"
	frame2Button.TextColor3 = Color3.fromRGB(255,255,255)
	frame2Button.Font = Enum.Font.SourceSansBold
	frame2Button.TextSize = 22
	frame2Button.Parent = frame

	-- Frame2 (hidden by default, scaled to fit two buttons)
	local frame2 = Instance.new("Frame")
	frame2.Size = UDim2.new(0, 300, 0, 220)
	frame2.Position = UDim2.new(0.5, -150, 0.5, -110)
	frame2.BackgroundColor3 = Color3.fromRGB(50, 50, 120)
	frame2.BorderSizePixel = 0
	frame2.Visible = false
	frame2.Parent = screenGui

	local uiCorner2 = Instance.new("UICorner")
	uiCorner2.CornerRadius = UDim.new(0, 16)
	uiCorner2.Parent = frame2

	local frame2Label = Instance.new("TextLabel")
	frame2Label.Size = UDim2.new(1, -50, 0, 60)
	frame2Label.Position = UDim2.new(0, 25, 0, 20)
	frame2Label.BackgroundTransparency = 1
	frame2Label.Text = "Controls For Fly (PC): CTRL, W, S, A, D, Space"
	frame2Label.TextColor3 = Color3.fromRGB(0, 157, 255)
	frame2Label.Font = Enum.Font.SourceSansBold
	frame2Label.TextScaled = true
	frame2Label.TextSize = 28
	frame2Label.Parent = frame2

	local frame2Close = Instance.new("TextButton")
	frame2Close.Size = UDim2.new(0, 40, 0, 40)
	frame2Close.Position = UDim2.new(1, -45, 0, 5)
	frame2Close.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
	frame2Close.Text = "X"
	frame2Close.TextColor3 = Color3.fromRGB(255,255,255)
	frame2Close.Font = Enum.Font.SourceSansBold
	frame2Close.TextSize = 24
	frame2Close.Parent = frame2

	local espPlayersButton = Instance.new("TextButton")
	espPlayersButton.Size = UDim2.new(0, 220, 0, 40)
	espPlayersButton.Position = UDim2.new(0.5, -110, 0, 70)
	espPlayersButton.BackgroundColor3 = Color3.fromRGB(255, 85, 255)
	espPlayersButton.Text = "esp players"
	espPlayersButton.TextColor3 = Color3.fromRGB(255,255,255)
	espPlayersButton.Font = Enum.Font.SourceSansBold
	espPlayersButton.TextSize = 22
	espPlayersButton.Parent = frame2

	local decalSpamButton2 = Instance.new("TextButton")
	decalSpamButton2.Size = UDim2.new(0, 120, 0, 40)
	decalSpamButton2.Position = UDim2.new(0, 25, 0, 130)
	decalSpamButton2.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	decalSpamButton2.Text = "DECAL SPAM"
	decalSpamButton2.TextColor3 = Color3.fromRGB(0,0,0)
	decalSpamButton2.Font = Enum.Font.SourceSansBold
	decalSpamButton2.TextSize = 22
	decalSpamButton2.Parent = frame2

	local toolButton2 = Instance.new("TextButton")
	toolButton2.Size = UDim2.new(0, 120, 0, 40)
	toolButton2.Position = UDim2.new(0, 155, 0, 130)
	toolButton2.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	toolButton2.Text = "Goon"
	toolButton2.TextColor3 = Color3.fromRGB(0,0,0)
	toolButton2.Font = Enum.Font.SourceSansBold
	toolButton2.TextSize = 22
	toolButton2.Parent = frame2

	local musicButton = Instance.new("TextButton")
	musicButton.Size = UDim2.new(0, 220, 0, 40)
	musicButton.Position = UDim2.new(0.5, -110, 0, 180)
	musicButton.BackgroundColor3 = Color3.fromRGB(0, 200, 255)
	musicButton.Text = "Play Music"
	musicButton.TextColor3 = Color3.fromRGB(255,255,255)
	musicButton.Font = Enum.Font.SourceSansBold
	musicButton.TextSize = 22
	musicButton.Parent = frame2

	-- ESP Logic (MM2 Role Detection)
	local espEnabled = false
	local espBoxes = {}

	local roleColors = {
		Murderer = Color3.fromRGB(255, 0, 0),
		Sheriff = Color3.fromRGB(0, 255, 255),
		Innocent = Color3.fromRGB(0, 255, 0),
		Unknown = Color3.fromRGB(255, 255, 255)
	}

	local function getPlayerRole(targetPlayer)
		if targetPlayer.Character then
			local roleValue = targetPlayer.Character:FindFirstChild("Role")
			if roleValue and roleValue:IsA("StringValue") then
				return roleValue.Value
			end
			if targetPlayer.Character:GetAttribute("Role") then
				return targetPlayer.Character:GetAttribute("Role")
			end
		end
		local roleValue = targetPlayer:FindFirstChild("Role")
		if roleValue and roleValue:IsA("StringValue") then
			return roleValue.Value
		end
		if targetPlayer:GetAttribute("Role") then
			return targetPlayer:GetAttribute("Role")
		end
		return "Innocent"
	end

	local function getColorForRole(role)
		if roleColors[role] then
			return roleColors[role]
		end
		return roleColors["Unknown"]
	end

	local function createESPBoxForPlayer(targetPlayer)
		if targetPlayer == player then return end
		if not targetPlayer.Character then return end
		local rootPart = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
		if not rootPart then return end
		if espBoxes[targetPlayer] then return end

		local role = getPlayerRole(targetPlayer)
		local color = getColorForRole(role)

		local box = Instance.new("SelectionBox")
		box.Adornee = rootPart
		box.LineThickness = 0.12
		box.SurfaceTransparency = 0.4
		box.Color3 = color
		box.Parent = rootPart

		local nameTag = Instance.new("BillboardGui")
		nameTag.Name = "ESPNameTag"
		nameTag.Adornee = rootPart
		nameTag.Size = UDim2.new(0, 120, 0, 32)
		nameTag.StudsOffset = Vector3.new(0, 2.5, 0)
		nameTag.AlwaysOnTop = true
		nameTag.Parent = rootPart

		local nameLabel = Instance.new("TextLabel")
		nameLabel.Size = UDim2.new(1, 0, 1, 0)
		nameLabel.BackgroundTransparency = 1
		nameLabel.Text = targetPlayer.Name .. " [" .. role .. "]"
		nameLabel.TextColor3 = color
		nameLabel.Font = Enum.Font.SourceSansBold
		nameLabel.TextScaled = true
		nameLabel.TextStrokeTransparency = 0.5
		nameLabel.TextStrokeColor3 = Color3.fromRGB(0,0,0)
		nameLabel.Parent = nameTag

		espBoxes[targetPlayer] = {box = box, nameTag = nameTag}
	end

	local function removeESPBoxForPlayer(targetPlayer)
		if espBoxes[targetPlayer] then
			if espBoxes[targetPlayer].box then
				espBoxes[targetPlayer].box:Destroy()
			end
			if espBoxes[targetPlayer].nameTag then
				espBoxes[targetPlayer].nameTag:Destroy()
			end
			espBoxes[targetPlayer] = nil
		end
	end

	local function refreshESPBoxForPlayer(targetPlayer)
		removeESPBoxForPlayer(targetPlayer)
		createESPBoxForPlayer(targetPlayer)
	end

	local function enableESP()
		espEnabled = true
		espPlayersButton.Text = "esp players (ON)"
		for i, targetPlayer in game.Players:GetPlayers() do
			createESPBoxForPlayer(targetPlayer)
		end
	end

	local function disableESP()
		espEnabled = false
		espPlayersButton.Text = "esp players (OFF)"
		for k, v in espBoxes do
			if v.box then v.box:Destroy() end
			if v.nameTag then v.nameTag:Destroy() end
		end
		espBoxes = {}
	end

	game.Players.PlayerAdded:Connect(function(targetPlayer)
		targetPlayer.CharacterAdded:Connect(function(character)
			if espEnabled then
				task.wait(0.1)
				refreshESPBoxForPlayer(targetPlayer)
			end
			if character:FindFirstChild("Role") then
				character.Role.Changed:Connect(function()
					if espEnabled then
						refreshESPBoxForPlayer(targetPlayer)
					end
				end)
			end
			character:GetPropertyChangedSignal("Role"):Connect(function()
				if espEnabled then
					refreshESPBoxForPlayer(targetPlayer)
				end
			end)
		end)
	end)

	for i, targetPlayer in game.Players:GetPlayers() do
		targetPlayer.CharacterAdded:Connect(function(character)
			if espEnabled then
				task.wait(0.1)
				refreshESPBoxForPlayer(targetPlayer)
			end
			if character:FindFirstChild("Role") then
				character.Role.Changed:Connect(function()
					if espEnabled then
						refreshESPBoxForPlayer(targetPlayer)
					end
				end)
			end
			character:GetPropertyChangedSignal("Role"):Connect(function()
				if espEnabled then
					refreshESPBoxForPlayer(targetPlayer)
				end
			end)
		end)
	end

	game.Players.PlayerRemoving:Connect(function(targetPlayer)
		removeESPBoxForPlayer(targetPlayer)
	end)

	espPlayersButton.MouseButton1Click:Connect(function()
		espEnabled = not espEnabled
		if espEnabled then
			enableESP()
		else
			disableESP()
		end
	end)

	local desiredJumpPower = tonumber(jumpBox.Text) or 50
	local desiredSpeed = tonumber(speedBox.Text) or 16

	local function setSpeed()
		local speed = tonumber(speedBox.Text)
		if speed then
			desiredSpeed = speed
			if player.Character and player.Character:FindFirstChild("Humanoid") then
				player.Character.Humanoid.WalkSpeed = desiredSpeed
			end
		end
	end

	local function setJump()
		local jump = tonumber(jumpBox.Text)
		if jump then
			desiredJumpPower = jump
			if player.Character and player.Character:FindFirstChild("Humanoid") then
				player.Character.Humanoid.JumpPower = desiredJumpPower
			end
		end
	end

	speedButton.MouseButton1Click:Connect(setSpeed)
	jumpButton.MouseButton1Click:Connect(setJump)

	-- Infinite Health Logic (TOGGLE GOD MODE)
	infiniteHealthButton.MouseButton1Click:Connect(function()
		godModeEnabled = not godModeEnabled
		updateGodModeButton()
		if godModeEnabled then
			startGodMode()
			if player.Character and player.Character:FindFirstChild("Humanoid") then
				applyGodModeToHumanoid(player.Character.Humanoid)
			end
		else
			stopGodMode()
		end
	end)

	-- Stop god mode on respawn, but resume if enabled
	player.CharacterAdded:Connect(function(character)
		stopGodMode()
		if godModeEnabled then
			startGodMode()
			task.wait(0.1)
			if character and character:FindFirstChild("Humanoid") then
				applyGodModeToHumanoid(character.Humanoid)
			end
		end
	end)

	updateGodModeButton()

	local function animateOpenFrame()
		frame.Visible = true
		frame.BackgroundTransparency = 1
		frame.Size = UDim2.new(0, 0, 0, 0)
		frame.Position = UDim2.new(0.5, 0, 0.5, 0)
		local tweenInfo = TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
		local tween = TweenService:Create(frame, tweenInfo, {
			BackgroundTransparency = 0,
			Size = UDim2.new(0, 350, 0, 260),
			Position = UDim2.new(0.5, -175, 0.5, -130)
		})
		tween:Play()
	end

	local noclipping = false
	local noclipConnection = nil

	local function setNoclipState(state)
		if player.Character then
			for i, part in player.Character:GetChildren() do
				if part:IsA("BasePart") then
					part.CanCollide = not state
				end
			end
		end
	end

	local function enableNoclip()
		noclipping = true
		noclipButton.Text = "Noclip (ON)"
		if noclipConnection then
			noclipConnection:Disconnect()
			noclipConnection = nil
		end
		noclipConnection = game:GetService("RunService").Stepped:Connect(function()
			if noclipping and player.Character then
				setNoclipState(true)
			end
		end)
	end

	local function disableNoclip()
		noclipping = false
		noclipButton.Text = "Noclip (OFF)"
		if noclipConnection then
			noclipConnection:Disconnect()
			noclipConnection = nil
		end
		setNoclipState(false)
	end

	local function animateCloseFrame(callback)
		local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.In)
		local tween = TweenService:Create(frame, tweenInfo, {
			BackgroundTransparency = 1,
			Size = UDim2.new(0, 0, 0, 0),
			Position = UDim2.new(0.5, 0, 0.5, 0)
		})
		tween:Play()
		tween.Completed:Connect(function()
			frame.Visible = false
			frame.BackgroundTransparency = 0
			frame.Size = UDim2.new(0, 350, 0, 260)
			frame.Position = UDim2.new(0.5, -175, 0.5, -130)
			if callback then callback() end
		end)
	end

	openButton.MouseButton1Click:Connect(function()
		openButton.Visible = false
		animateOpenFrame()
	end)

	closeButton.MouseButton1Click:Connect(function()
		animateCloseFrame(function()
			openButton.Visible = true
		end)
	end)

	frame2Button.MouseButton1Click:Connect(function()
		frame2.Visible = true
	end)

	frame2Close.MouseButton1Click:Connect(function()
		frame2.Visible = false
	end)

	local function applyStatsToHumanoid(humanoid)
		if humanoid then
			humanoid.WalkSpeed = desiredSpeed
			humanoid.JumpPower = desiredJumpPower
		end
	end

	local function onCharacterAdded(character)
		local humanoid = character:FindFirstChild("Humanoid")
		if humanoid then
			applyStatsToHumanoid(humanoid)
		end
		character.ChildAdded:Connect(function(child)
			if child:IsA("Humanoid") then
				applyStatsToHumanoid(child)
			end
		end)
		disableNoclip()
	end

	if player.Character then
		onCharacterAdded(player.Character)
	end

	player.CharacterAdded:Connect(onCharacterAdded)

	local enforcing = true
	task.spawn(function()
		while enforcing do
			if frame.Visible and player.Character and player.Character:FindFirstChild("Humanoid") then
				local humanoid = player.Character.Humanoid
				humanoid.WalkSpeed = desiredSpeed
				humanoid.JumpPower = desiredJumpPower
			end
			task.wait()
		end
	end)

	local flying = false
	local flyVelocity = nil
	local flyConnection = nil

	local function enableFly()
		if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then return end
		local hrp = player.Character.HumanoidRootPart
		if flyVelocity then
			flyVelocity:Destroy()
			flyVelocity = nil
		end
		flyVelocity = Instance.new("BodyVelocity")
		flyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
		flyVelocity.Velocity = Vector3.new(0,0,0)
		flyVelocity.Parent = hrp

		if flyConnection then
			flyConnection:Disconnect()
			flyConnection = nil
		end
		flyConnection = game:GetService("RunService").RenderStepped:Connect(function()
			if not flying or not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then return end
			local moveDirection = Vector3.new(0,0,0)
			local humanoid = player.Character:FindFirstChild("Humanoid")
			if humanoid then
				moveDirection = humanoid.MoveDirection
			end
			local up = 0
			if game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.Space) then
				up = 50
			elseif game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.LeftControl) then
				up = -50
			end
			flyVelocity.Velocity = (moveDirection * 80) + Vector3.new(0, up, 0)
		end)
	end

	local function disableFly()
		flying = false
		flyButton.Text = "Fly (OFF)"
		if flyVelocity then
			flyVelocity:Destroy()
			flyVelocity = nil
		end
		if flyConnection then
			flyConnection:Disconnect()
			flyConnection = nil
		end
	end

	flyButton.MouseButton1Click:Connect(function()
		flying = not flying
		if flying then
			flyButton.Text = "Fly (ON)"
			enableFly()
		else
			disableFly()
		end
	end)

	player.CharacterAdded:Connect(function()
		disableFly()
	end)

	noclipButton.MouseButton1Click:Connect(function()
		noclipping = not noclipping
		if noclipping then
			enableNoclip()
		else
			disableNoclip()
		end
	end)

	player.CharacterAdded:Connect(function()
		disableNoclip()
	end)

	decalSpamButton2.MouseButton1Click:Connect(function()
		local decalSpamEvent = game:GetService("ReplicatedStorage"):FindFirstChild("Decal Spam Event")
		if decalSpamEvent then
			decalSpamEvent:FireServer()
		end
	end)

	toolButton2.MouseButton1Click:Connect(function()
		local tool = Instance.new("Tool")
		tool.Name = "Jerk Off"
		tool.RequiresHandle = false
		tool.CanBeDropped = true
		tool.Parent = player:WaitForChild("Backpack")

		local animationIdR15 = "rbxassetid://507771019"
		local animationIdR6 = "rbxassetid://33796059"

		local animation = Instance.new("Animation")
		local track = nil

		local function showMessage(msg)
			local messageLabel = Instance.new("TextLabel")
			messageLabel.Size = UDim2.new(0, 300, 0, 40)
			messageLabel.Position = UDim2.new(0.5, -150, 0.9, -20)
			messageLabel.BackgroundTransparency = 0.5
			messageLabel.BackgroundColor3 = Color3.fromRGB(0,0,0)
			messageLabel.TextColor3 = Color3.fromRGB(255,255,255)
			messageLabel.Font = Enum.Font.SourceSansBold
			messageLabel.TextSize = 22
			messageLabel.Text = msg
			messageLabel.Parent = screenGui
			task.delay(2, function()
				messageLabel:Destroy()
			end)
		end

		local function tryPlayDanceAnimation(humanoid)
			animation.AnimationId = animationIdR15
			local success, result = pcall(function()
				track = humanoid:LoadAnimation(animation)
			end)
			if success and track then
				track.Looped = true
				track:Play()
				return true
			else
				animation.AnimationId = animationIdR6
				success, result = pcall(function()
					track = humanoid:LoadAnimation(animation)
				end)
				if success and track then
					track.Looped = true
					track:Play()
					return true
				else
					return false
				end
			end
		end

		local function onEquipped()
			local character = player.Character or player.CharacterAdded:Wait()
			local humanoid = character:FindFirstChild("Humanoid")
			if humanoid then
				local played = tryPlayDanceAnimation(humanoid)
				if not played then
					showMessage("Failed to play dance animation!")
				end
			else
				showMessage("No humanoid found!")
			end
		end

		local function onUnequipped()
			if track then
				track:Stop()
				track:Destroy()
				track = nil
			end
		end

		tool.Equipped:Connect(onEquipped)
		tool.Unequipped:Connect(onUnequipped)
	end)

	local musicAssetId = "rbxassetid://9041745502"
	local ReplicatedStorage = game:GetService("ReplicatedStorage")
	local playGoobMusicEvent = ReplicatedStorage:FindFirstChild("PlayGoobMusic")
	local musicPlaying = false

	musicButton.MouseButton1Click:Connect(function()
		musicPlaying = not musicPlaying
		if playGoobMusicEvent then
			playGoobMusicEvent:FireServer(musicPlaying, musicAssetId)
		end
		musicButton.Text = musicPlaying and "Stop Music" or "Play Music"
	end)
end

-- Create GUI on script startup
createGoobGui()

-- Recreate GUI on every respawn
player.CharacterAdded:Connect(function()
	createGoobGui()
end)
Script worked? 🚀 Boost it to #1 so others find it too.

Comments (0)

Log in to add a comment.