Script for hop my friend
Key RequiredUniversal

Script for hop my friend

Universal ScriptKhansuldtamirKhansuldtamir 138 views 246 executesUpdated Aug 16, 2026
Unrated
00
Lua Script•445 lines (14935 chars)
-- // Services
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local localPlayer = Players.LocalPlayer
local camera = workspace.CurrentCamera

-- // State Variables
local guiVisible = true
local flyEnabled = false
local noclipEnabled = false
local bypassActive = true
local flySpeed = 50
local activeConnections = {}

-- // UI Creation
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "MM2AdvancedSuiteUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = localPlayer:WaitForChild("PlayerGui")

-- // Floating Toggle Button with Image
local ToggleButton = Instance.new("ImageButton")
ToggleButton.Name = "ToggleButton"
ToggleButton.Size = UDim2.new(0, 50, 0, 50)
ToggleButton.Position = UDim2.new(0, 15, 0, 15)
ToggleButton.BackgroundColor3 = Color3.fromRGB(245, 130, 32)
ToggleButton.Image = "rbxassetid://0" -- Replace with your uploaded decal asset ID if needed
ToggleButton.Parent = ScreenGui

local ToggleCorner = Instance.new("UICorner")
ToggleCorner.CornerRadius = UDim.new(1, 0)
ToggleCorner.Parent = ToggleButton

-- // Advanced Mobile Fly Control Pad
local FlyPad = Instance.new("Frame")
FlyPad.Name = "FlyPad"
FlyPad.Size = UDim2.new(0, 140, 0, 140)
FlyPad.Position = UDim2.new(1, -150, 0.5, -70)
FlyPad.BackgroundTransparency = 1
FlyPad.Visible = false
FlyPad.Parent = ScreenGui

local FlyUpBtn = Instance.new("TextButton")
FlyUpBtn.Size = UDim2.new(0, 140, 0, 42)
FlyUpBtn.Position = UDim2.new(0, 0, 0, 0)
FlyUpBtn.BackgroundColor3 = Color3.fromRGB(245, 130, 32)
FlyUpBtn.Text = "▲ UP"
FlyUpBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
FlyUpBtn.TextSize = 13
FlyUpBtn.Font = Enum.Font.GothamBold
FlyUpBtn.Parent = FlyPad
Instance.new("UICorner", FlyUpBtn).CornerRadius = UDim.new(0, 6)

local FlyDownBtn = Instance.new("TextButton")
FlyDownBtn.Size = UDim2.new(0, 140, 0, 42)
FlyDownBtn.Position = UDim2.new(0, 0, 0, 48)
FlyDownBtn.BackgroundColor3 = Color3.fromRGB(245, 130, 32)
FlyDownBtn.Text = "▼ DOWN"
FlyDownBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
FlyDownBtn.TextSize = 13
FlyDownBtn.Font = Enum.Font.GothamBold
FlyDownBtn.Parent = FlyPad
Instance.new("UICorner", FlyDownBtn).CornerRadius = UDim.new(0, 6)

local SpeedToggleBtn = Instance.new("TextButton")
SpeedToggleBtn.Size = UDim2.new(0, 140, 0, 36)
SpeedToggleBtn.Position = UDim2.new(0, 0, 0, 96)
SpeedToggleBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
SpeedToggleBtn.Text = "Speed: 50"
SpeedToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
SpeedToggleBtn.TextSize = 12
SpeedToggleBtn.Font = Enum.Font.GothamSemibold
SpeedToggleBtn.Parent = FlyPad
Instance.new("UICorner", SpeedToggleBtn).CornerRadius = UDim.new(0, 6)

-- Main Frame (Compact Height)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 320, 0, 420)
MainFrame.Position = UDim2.new(0.5, -160, 0.5, -210)
MainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui

local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 10)
UICorner.Parent = MainFrame

-- MM2 Header Bar
local Header = Instance.new("Frame")
Header.Size = UDim2.new(1, 0, 0, 38)
Header.BackgroundColor3 = Color3.fromRGB(245, 130, 32)
Header.Parent = MainFrame

local HeaderCorner = Instance.new("UICorner")
HeaderCorner.CornerRadius = UDim.new(0, 10)
HeaderCorner.Parent = Header

local HeaderFix = Instance.new("Frame")
HeaderFix.Size = UDim2.new(1, 0, 0, 8)
HeaderFix.Position = UDim2.new(0, 0, 1, -8)
HeaderFix.BackgroundColor3 = Color3.fromRGB(245, 130, 32)
HeaderFix.BorderSizePixel = 0
HeaderFix.Parent = Header

local HeaderTitle = Instance.new("TextLabel")
HeaderTitle.Size = UDim2.new(1, -20, 1, 0)
HeaderTitle.Position = UDim2.new(0, 12, 0, 0)
HeaderTitle.BackgroundTransparency = 1
HeaderTitle.Text = "MM2 ADVANCED SUITE"
HeaderTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
HeaderTitle.TextSize = 13
HeaderTitle.Font = Enum.Font.GothamBold
HeaderTitle.TextXAlignment = Enum.TextXAlignment.Left
HeaderTitle.Parent = Header

-- Scrolling Container
local Container = Instance.new("ScrollingFrame")
Container.Size = UDim2.new(1, -16, 1, -48)
Container.Position = UDim2.new(0, 8, 0, 44)
Container.BackgroundTransparency = 1
Container.BorderSizePixel = 0
Container.CanvasSize = UDim2.new(0, 0, 0, 440)
Container.ScrollBarThickness = 3
Container.ScrollBarImageColor3 = Color3.fromRGB(245, 130, 32)
Container.Parent = MainFrame

local UIListLayout = Instance.new("UIListLayout")
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 6)
UIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
UIListLayout.Parent = Container

-- Helper Builders
local function createButton(name, text, layoutOrder)
	local btn = Instance.new("TextButton")
	btn.Name = name
	btn.Size = UDim2.new(1, 0, 0, 32)
	btn.BackgroundColor3 = Color3.fromRGB(28, 28, 35)
	btn.Text = text
	btn.TextColor3 = Color3.fromRGB(225, 225, 235)
	btn.TextSize = 12
	btn.Font = Enum.Font.GothamSemibold
	btn.LayoutOrder = layoutOrder
	btn.Parent = Container
	
	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 6)
	corner.Parent = btn
	
	return btn
end

-- Controls List
local ShootMurdererBtn = createButton("ShootMurdererBtn", "Shoot Murderer", 1)
local KillAllBtn = createButton("KillAllBtn", "Kill All (Murderer)", 2)
local FlingSheriffBtn = createButton("FlingSheriffBtn", "Fling Sheriff", 3)
local FlingMurdererBtn = createButton("FlingMurdererBtn", "Fling Murderer", 4)
local FlingInnocentBtn = createButton("FlingInnocentBtn", "Fling Innocents", 5)
local FlingAllBtn = createButton("FlingAllBtn", "Fling All Players", 6)
local FlyBtn = createButton("FlyBtn", "Fly: OFF", 7)
local NoclipBtn = createButton("NoclipBtn", "Noclip: OFF", 8)
local BypassKickBtn = createButton("BypassKickBtn", "Anti-Kick: ACTIVE", 9)

-- // TOGGLE UI FUNCTIONALITY
ToggleButton.MouseButton1Click:Connect(function()
	guiVisible = not guiVisible
	MainFrame.Visible = guiVisible
end)

-- // ROLE DETECTOR UTILITIES
local function getPlayerRole(player)
	local char = player.Character
	if not char then return "Innocent" end
	
	if player.Backpack:FindFirstChild("Knife") or char:FindFirstChild("Knife") then
		return "Murderer"
	elseif player.Backpack:FindFirstChild("Gun") or char:FindFirstChild("Gun") or player.Backpack:FindFirstChild("Revolver") then
		return "Sheriff"
	end
	return "Innocent"
end

-- // SHOOT MURDERER
ShootMurdererBtn.MouseButton1Click:Connect(function()
	local myChar = localPlayer.Character
	if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then return end
	
	local gun = localPlayer.Backpack:FindFirstChild("Gun") or localPlayer.Backpack:FindFirstChild("Revolver")
	if gun then gun.Parent = myChar end

	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= localPlayer and getPlayerRole(player) == "Murderer" then
			local targetChar = player.Character
			if targetChar and targetChar:FindFirstChild("HumanoidRootPart") then
				myChar.HumanoidRootPart.CFrame = targetChar.HumanoidRootPart.CFrame + Vector3.new(0, 0, 3)
				if targetChar:FindFirstChild("Humanoid") then
					targetChar.Humanoid.Health = 0
				end
			end
			break
		end
	end
end)

-- // KILL ALL (MURDERER FEATURE)
KillAllBtn.MouseButton1Click:Connect(function()
	local myChar = localPlayer.Character
	if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then return end
	
	local knife = localPlayer.Backpack:FindFirstChild("Knife") or myChar:FindFirstChild("Knife")
	if knife then knife.Parent = myChar end

	local originalCFrame = myChar.HumanoidRootPart.CFrame

	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= localPlayer and player.Character then
			local targetChar = player.Character
			if targetChar and targetChar:FindFirstChild("HumanoidRootPart") and targetChar:FindFirstChild("Humanoid") and targetChar.Humanoid.Health > 0 then
				myChar.HumanoidRootPart.CFrame = targetChar.HumanoidRootPart.CFrame + Vector3.new(0, 0, 2)
				task.wait(0.15)
				targetChar.Humanoid.Health = 0
			end
		end
	end

	task.wait(0.1)
	if myChar and myChar:FindFirstChild("HumanoidRootPart") then
		myChar.HumanoidRootPart.CFrame = originalCFrame
	end
end)

-- // CORE FLING FUNCTION WITH EXACT POSITION RESTORATION
local function executeFlingOnTarget(targetChar)
	local myChar = localPlayer.Character
	if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then return end
	if not targetChar or not targetChar:FindFirstChild("HumanoidRootPart") then return end

	local myRoot = myChar.HumanoidRootPart
	local targetRoot = targetChar.HumanoidRootPart
	local originalCFrame = myRoot.CFrame

	for _, part in ipairs(myChar:GetDescendants()) do
		if part:IsA("BasePart") then part.CanCollide = false end
	end

	local bav = Instance.new("BodyAngularVelocity")
	bav.Name = "MM2SpinFling"
	bav.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
	bav.AngularVelocity = Vector3.new(0, 99999, 0)
	bav.Parent = myRoot

	local bv = Instance.new("BodyVelocity")
	bv.Name = "MM2HoldFling"
	bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
	bv.Velocity = Vector3.new(0, 50, 0)
	bv.Parent = myRoot

	local connection
	local startTime = tick()
	connection = RunService.RenderStepped:Connect(function()
		if targetRoot and myRoot then
			myRoot.CFrame = targetRoot.CFrame + Vector3.new(0, 1, 0)
		end
		if tick() - startTime > 0.4 then
			connection:Disconnect()
		end
	end)

	task.delay(0.4, function()
		if bav then bav:Destroy() end
		if bv then bv:Destroy() end
		
		for _, part in ipairs(myChar:GetDescendants()) do
			if part:IsA("BasePart") then part.CanCollide = true end
		end
		
		myRoot.CFrame = originalCFrame
		
		if targetChar:FindFirstChild("Humanoid") then
			targetChar.Humanoid.Health = 0
		end
	end)
end

-- // FLING BUTTON EVENTS
FlingSheriffBtn.MouseButton1Click:Connect(function()
	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= localPlayer and getPlayerRole(player) == "Sheriff" then
			if player.Character then
				executeFlingOnTarget(player.Character)
			end
			break
		end
	end
end)

FlingMurdererBtn.MouseButton1Click:Connect(function()
	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= localPlayer and getPlayerRole(player) == "Murderer" then
			if player.Character then
				executeFlingOnTarget(player.Character)
			end
			break
		end
	end
end)

FlingInnocentBtn.MouseButton1Click:Connect(function()
	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= localPlayer and getPlayerRole(player) == "Innocent" then
			if player.Character then
				executeFlingOnTarget(player.Character)
				task.wait(0.5)
			end
		end
	end
end)

FlingAllBtn.MouseButton1Click:Connect(function()
	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= localPlayer and player.Character then
			executeFlingOnTarget(player.Character)
			task.wait(0.5)
		end
	end
end)

-- // NOCLIP FEATURE
NoclipBtn.MouseButton1Click:Connect(function()
	noclipEnabled = not noclipEnabled
	NoclipBtn.Text = "Noclip: " .. (noclipEnabled and "ON" or "OFF")
	NoclipBtn.BackgroundColor3 = noclipEnabled and Color3.fromRGB(245, 130, 32) or Color3.fromRGB(28, 28, 35)
end)

RunService.Stepped:Connect(function()
	if noclipEnabled then
		local char = localPlayer.Character
		if char then
			for _, part in ipairs(char:GetDescendants()) do
				if part:IsA("BasePart") then part.CanCollide = false end
			end
		end
	end
end)

-- // ANTI-KICK FEATURE
BypassKickBtn.MouseButton1Click:Connect(function()
	bypassActive = not bypassActive
	BypassKickBtn.Text = "Anti-Kick: " .. (bypassActive and "ACTIVE" or "DISABLED")
	BypassKickBtn.BackgroundColor3 = bypassActive and Color3.fromRGB(245, 130, 32) or Color3.fromRGB(28, 28, 35)
end)

local mt = getrawmetatable(game)
local oldNamecall = mt.__namecall
setreadonly(mt, false)
mt.__namecall = newcclosure(function(self, ...)
	local method = getnamecallmethod()
	if bypassActive and method == "Kick" and self == localPlayer then
		return
	end
	return oldNamecall(self, ...)
end)
setreadonly(mt, true)

-- // ADVANCED CONTROLLABLE FLY (MOBILE & PC)
local flyingUp = false
local flyingDown = false

FlyUpBtn.MouseButton1Down:Connect(function() flyingUp = true end)
FlyUpBtn.MouseButton1Up:Connect(function() flyingUp = false end)
FlyDownBtn.MouseButton1Down:Connect(function() flyingDown = true end)
FlyDownBtn.MouseButton1Up:Connect(function() flyingDown = false end)

SpeedToggleBtn.MouseButton1Click:Connect(function()
	if flySpeed == 50 then
		flySpeed = 100
	elseif flySpeed == 100 then
		flySpeed = 150
	else
		flySpeed = 50
	end
	SpeedToggleBtn.Text = "Speed: " .. flySpeed
end)

local function toggleFly()
	flyEnabled = not flyEnabled
	FlyBtn.Text = "Fly: " .. (flyEnabled and "ON" or "OFF")
	FlyBtn.BackgroundColor3 = flyEnabled and Color3.fromRGB(245, 130, 32) or Color3.fromRGB(28, 28, 35)
	FlyPad.Visible = flyEnabled

	local char = localPlayer.Character
	if not char or not char:FindFirstChild("HumanoidRootPart") then return end
	local rootPart = char.HumanoidRootPart
	local humanoid = char:FindFirstChildOfClass("Humanoid")

	if flyEnabled then
		local bv = Instance.new("BodyVelocity")
		bv.Name = "MM2FlyVel"
		bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
		bv.Velocity = Vector3.new(0, 0, 0)
		bv.Parent = rootPart

		local bg = Instance.new("BodyGyro")
		bg.Name = "MM2FlyGyro"
		bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
		bg.CFrame = rootPart.CFrame
		bg.Parent = rootPart

		activeConnections["Fly"] = RunService.RenderStepped:Connect(function()
			if not flyEnabled then return end
			local camCFrame = camera.CFrame
			local moveDir = Vector3.new(0, 0, 0)

			if humanoid then
				moveDir = (camCFrame.LookVector * humanoid.MoveDirection.Z) + (camCFrame.RightVector * humanoid.MoveDirection.X)
			end

			-- Keyboard movement support for PC as well
			if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDir = moveDir + camCFrame.LookVector end
			if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDir = moveDir - camCFrame.LookVector end
			if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir = moveDir - camCFrame.RightVector end
			if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir = moveDir + camCFrame.RightVector end

			if flyingUp then moveDir = moveDir + Vector3.new(0, 1, 0) end
			if flyingDown then moveDir = moveDir - Vector3.new(0, 1, 0) end

			bv.Velocity = moveDir * flySpeed
			bg.CFrame = camCFrame
		end)
	else
		flyingUp = false
		flyingDown = false
		if activeConnections["Fly"] then activeConnections["Fly"]:Disconnect() end
		if rootPart:FindFirstChild("MM2FlyVel") then rootPart.MM2FlyVel:Destroy() end
		if rootPart:FindFirstChild("MM2FlyGyro") then rootPart.MM2FlyGyro:Destroy() end
	end
end

FlyBtn.MouseButton1Click:Connect(toggleFly)

Features & Information

Uhhh you need to figure it self yourself so byeee

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts