MX script
Key RequiredUniversal

MX script

Universal ScriptStarGltichStarGltich 388 views 465 executesUpdated Feb 9, 2026
Unrated
00
Lua Script•426 lines (12120 chars)
local Player = game.Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Debris = game:GetService("Debris")

local ScreenGui = Player.PlayerGui:FindFirstChild("MxDurrMobile")
if ScreenGui then ScreenGui:Destroy() end

ScreenGui = Instance.new("ScreenGui", Player.PlayerGui)
ScreenGui.Name = "MxDurrMobile"
ScreenGui.ResetOnSpawn = false

-- UI de Status
local StatusLabel = Instance.new("TextLabel", ScreenGui)
StatusLabel.Size = UDim2.new(0, 150, 0, 40)
StatusLabel.Position = UDim2.new(0.85, 0, 0.1, 0)
StatusLabel.BackgroundTransparency = 0.5
StatusLabel.BackgroundColor3 = Color3.new(0, 0, 0)
StatusLabel.TextColor3 = Color3.fromRGB(255, 165, 0)
StatusLabel.Font = Enum.Font.SourceSansBold
StatusLabel.TextSize = 20
StatusLabel.Text = "Status: Idle"

local EffectsLabel = Instance.new("TextLabel", ScreenGui)
EffectsLabel.Size = UDim2.new(0, 200, 0, 30)
EffectsLabel.Position = UDim2.new(0.05, 0, 0.2, 0)
EffectsLabel.BackgroundTransparency = 0.5
EffectsLabel.BackgroundColor3 = Color3.new(0,0,0)
EffectsLabel.Text = "Efeito: Nenhum"
EffectsLabel.TextColor3 = Color3.new(1, 1, 1)
EffectsLabel.Font = Enum.Font.SourceSansBold
EffectsLabel.TextSize = 16

local GrabProgress = Instance.new("TextLabel", ScreenGui)
GrabProgress.Size = UDim2.new(0, 250, 0, 30)
GrabProgress.Position = UDim2.new(0.4, -25, 0.85, 0)
GrabProgress.BackgroundTransparency = 0.5
GrabProgress.BackgroundColor3 = Color3.new(0.1, 0, 0)
GrabProgress.TextColor3 = Color3.new(1, 1, 1)
GrabProgress.Text = "TARGET PROGRESS: 0/4"
GrabProgress.Font = Enum.Font.SourceSansBold
GrabProgress.TextSize = 18

local function updateStatus(text, color)
	StatusLabel.Text = "Status: " .. text
	StatusLabel.TextColor3 = color or Color3.fromRGB(255, 165, 0)
end

local function getChar()
	return Player.Character or Player.CharacterAdded:Wait()
end

local function ApplyScreenShake(intensity)
	local hum = getChar():FindFirstChild("Humanoid")
	if hum then
		local x = math.random(-intensity, intensity) / 100
		local y = math.random(-intensity, intensity) / 100
		local z = math.random(-intensity, intensity) / 100
		hum.CameraOffset = Vector3.new(x, y, z)
	end
end

local function playSound(id, volume, cutDelay)
	local char = getChar()
	local root = char:FindFirstChild("HumanoidRootPart")
	if root then
		local s = Instance.new("Sound")
		s.SoundId = "rbxassetid://" .. id
		s.Parent = root
		s.Volume = volume or 1
		s:Play()
		if cutDelay then
			task.delay(cutDelay, function() if s then s:Stop() s:Destroy() end end)
		else
			s.Ended:Connect(function() s:Destroy() end)
		end
		return s
	end
end

-- SISTEMA DE PASSOS
local lastStep = 0
RunService.Heartbeat:Connect(function()
	local char = Player.Character
	if not char then return end
	local hum = char:FindFirstChild("Humanoid")
	local root = char:FindFirstChild("HumanoidRootPart")
	if hum and root and hum.MoveDirection.Magnitude > 0 and hum.FloorMaterial ~= Enum.Material.Air and hum.Health > 0 then
		local velocity = root.Velocity.Magnitude
		local stepInterval = 10 / (velocity + 1)
		if tick() - lastStep > stepInterval then
			lastStep = tick()
			local s = Instance.new("Sound", root)
			s.SoundId = "rbxassetid://13550293121"
			s.Volume = 0.4
			s.PlaybackSpeed = math.clamp(velocity/16, 0.8, 1.6)
			s:Play()
			Debris:AddItem(s, 1)
		end
	end
end)

local playerProgress = {}
local m1GlobalCooldown = false
local isM1Active = false
local isGrabActive = false
local chargeBonusSpeed = 0

-- Bloqueia movimento se estiver no Grab
RunService.PreSimulation:Connect(function()
	if isGrabActive then
		local char = Player.Character
		if char then
			local hum = char:FindFirstChild("Humanoid")
			local root = char:FindFirstChild("HumanoidRootPart")
			if hum and root then
				hum.WalkSpeed = 0
				root.Velocity = Vector3.new(0, root.Velocity.Y, 0) -- Reseta velocidade horizontal
			end
		end
	end
end)

local function createGhostHitbox(size, cframe, duration)
	local hb = Instance.new("Part")
	hb.Size = size
	hb.CFrame = cframe
	hb.Transparency = 0.95
	hb.Color = Color3.new(1, 0, 0)
	hb.Material = Enum.Material.Neon
	hb.CanCollide = false
	hb.Anchored = true
	hb.Parent = workspace
	Debris:AddItem(hb, duration)
	return hb
end

local function PerformM1(char)
	if m1GlobalCooldown or isM1Active or isGrabActive then return end
	isM1Active = true
	local hum = char.Humanoid
	local root = char.HumanoidRootPart
	local hitThisClick = false
	
	task.spawn(function()
		for i = 1, 12 do
			if hitThisClick then break end
			local currentCF = root.CFrame * CFrame.new(0, 0, -2.5)
			local hb = createGhostHitbox(Vector3.new(5, 6, 6), currentCF, 1)

			local target = nil
			local results = workspace:GetPartBoundsInBox(currentCF, hb.Size)
			for _, p in pairs(results) do
				local m = p:FindFirstAncestorOfClass("Model")
				if m and m:FindFirstChild("Humanoid") and m ~= char then
					target = m
					break
				end
			end

			if target then
				hitThisClick = true
				hb.Color = Color3.new(0, 1, 0)
				playSound("128614958817223", 1.5, 3)
				
				task.spawn(function()
					local oldSpeed = hum.WalkSpeed
					hum.WalkSpeed = 19
					EffectsLabel.Text = "Efeito: M1 SPEED BUFF"
					task.wait(0.5)
					if not isGrabActive then hum.WalkSpeed = 10 end
					EffectsLabel.Text = "Efeito: Nenhum"
				end)
				
				local tName = target.Name
				playerProgress[tName] = (playerProgress[tName] or 0) + 1
				GrabProgress.Text = "TARGET ["..tName.."]: " .. playerProgress[tName] .. "/4"
				
				if playerProgress[tName] >= 4 then
					playerProgress[tName] = 0
					m1GlobalCooldown = true
					isGrabActive = true -- Ativa imobilização total
					hum.WalkSpeed = 0
					updateStatus("GRABBED", Color3.new(1,0,0))
					
					local grabSfx = playSound("131678559751488", 2)
					if grabSfx then
						if not grabSfx.IsLoaded then grabSfx.Loaded:Wait() end
						task.wait(grabSfx.TimeLength)
					else
						task.wait(4.5)
					end
					
					isGrabActive = false -- Libera movimento
					hum.WalkSpeed = 30
					updateStatus("BUFFED")
					task.wait(3)
					hum.WalkSpeed = 10
					m1GlobalCooldown = false
					updateStatus("Idle")
				end
			end
			task.wait(0.15)
		end
		
		if not hitThisClick then
			playerProgress = {}
			GrabProgress.Text = "PROGRESS RESET"
		end
		
		isM1Active = false
		m1GlobalCooldown = true
		task.wait(0.8)
		m1GlobalCooldown = false
	end)
end

local function createAbilityButton(name, pos, cooldown, callback)
	local btn = Instance.new("TextButton", ScreenGui)
	btn.Name = name
	btn.Size = UDim2.new(0, 75, 0, 75)
	btn.Position = pos
	btn.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
	btn.Text = name
	btn.TextColor3 = Color3.new(1, 1, 1)
	btn.Font = Enum.Font.SourceSansBold
	btn.TextSize = 15
	
	local corner = Instance.new("UICorner", btn)
	corner.CornerRadius = UDim.new(0.3, 0)
	local stroke = Instance.new("UIStroke", btn)
	stroke.Thickness = 2
	stroke.Color = Color3.new(0.5, 0.5, 0.5)

	local cdLabel = Instance.new("TextLabel", btn)
	cdLabel.Size = UDim2.new(1, 0, 1, 0)
	cdLabel.BackgroundTransparency = 1
	cdLabel.Text = ""
	cdLabel.TextColor3 = Color3.new(1, 0, 0)
	cdLabel.Font = Enum.Font.SourceSansBold
	cdLabel.TextSize = 25

	local onCooldown = false
	btn.MouseButton1Click:Connect(function()
		if onCooldown or isGrabActive or (name == "M1" and (m1GlobalCooldown or isM1Active)) then return end
		local char = getChar()
		if cooldown > 0 then
			onCooldown = true
			callback(char)
			task.spawn(function()
				for i = cooldown, 1, -1 do
					cdLabel.Text = i
					task.wait(1)
				end
				cdLabel.Text = ""
				onCooldown = false
			end)
		else
			callback(char)
		end
	end)
end

createAbilityButton("M1", UDim2.new(0.6, 0, 0.5, 0), 0, PerformM1)

createAbilityButton("CHARGE", UDim2.new(0.7, 0, 0.5, 0), 20, function(char)
	local hum = char.Humanoid
	local root = char.HumanoidRootPart
	
	chargeBonusSpeed = 0
	playSound("79933042822660", 1, 3)
	hum.WalkSpeed = 0
	updateStatus("PREPARING", Color3.new(1, 0.5, 0))
	task.wait(2)
	
	local chargeAudio = playSound("119778978041636", 1)
	local duration = 4
	if chargeAudio then
		if not chargeAudio.IsLoaded then chargeAudio.Loaded:Wait() end
		duration = chargeAudio.TimeLength
	end
	
	local start = tick()
	local lastHb = 0
	local isCharging = true
	local hitList = {}
	local hasHitAnyone = false

	local connection
	connection = RunService.Heartbeat:Connect(function()
		if not isCharging then 
			hum.CameraOffset = Vector3.new(0,0,0)
			connection:Disconnect() 
			return 
		end
		
		if tick() - start < duration then
			ApplyScreenShake(10)
			
			local currentSpeed = math.min(30 + chargeBonusSpeed, 45)
			hum.WalkSpeed = currentSpeed
			hum:Move(Vector3.new(0,0,-1), true)
			updateStatus("CHARGE: " .. currentSpeed, Color3.new(1, 0, 0))
			
			if tick() - lastHb > 0.15 then
				lastHb = tick()
				local hbCF = root.CFrame * CFrame.new(0,0,-2)
				local hb = createGhostHitbox(Vector3.new(5, 6, 6), hbCF, 1)
				
				local results = workspace:GetPartBoundsInBox(hbCF, hb.Size)
				for _, p in pairs(results) do
					local m = p:FindFirstAncestorOfClass("Model")
					if m and m:FindFirstChild("Humanoid") and m ~= char and not hitList[m] then
						hitList[m] = true
						hasHitAnyone = true
						chargeBonusSpeed = chargeBonusSpeed + 5
						playSound("128614958817223", 1, 1)
					end
				end
			end
			
			local rayParams = RaycastParams.new()
			rayParams.FilterDescendantsInstances = {char}
			local ray = workspace:Raycast(root.Position, root.CFrame.LookVector * 4, rayParams)
			
			if ray and ray.Instance and ray.Instance.CanCollide then
				isCharging = false
				chargeBonusSpeed = 0
				if chargeAudio then chargeAudio:Stop() end
				playSound("89196971466013", 1.5)
				updateStatus("STUNNED", Color3.new(1,1,1))
				hum.WalkSpeed = 0
				task.wait(3)
				hum.WalkSpeed = 10
				updateStatus("Idle")
			end
		else
			isCharging = false
			if not hasHitAnyone then
				updateStatus("FATIGUED", Color3.new(0.5,0.5,0.5))
				hum.WalkSpeed = 10
				task.wait(3)
			end
			hum.WalkSpeed = 10
			updateStatus("Idle")
		end
	end)
end)

createAbilityButton("JUMP", UDim2.new(0.8, 0, 0.5, 0), 20, function(char)
	local hum = char.Humanoid
	local root = char.HumanoidRootPart
	updateStatus("READYING JUMP")
	task.wait(0.5)
	playSound("131465282091340", 2, 3)
	
	local originalJumpPower = hum.JumpPower
	hum.JumpPower = 120
	hum:ChangeState(Enum.HumanoidStateType.Jumping)
	
	local inAir = true
	task.spawn(function()
		while inAir do
			hum.WalkSpeed = 50
			if hum:GetState() == Enum.HumanoidStateType.Landed then
				inAir = false
				hum.JumpPower = originalJumpPower
				hum.WalkSpeed = 0
				playSound("93815419052244", 1.5, 2)
				local jumpCF = root.CFrame * CFrame.new(0, -3, 0)
				local hbSize = Vector3.new(30, 8, 30)
				local hb = createGhostHitbox(hbSize, jumpCF, 0.5)
				
				local hit = false
				local results = workspace:GetPartBoundsInBox(jumpCF, hbSize)
				for _, p in pairs(results) do
					local m = p:FindFirstAncestorOfClass("Model")
					if m and m:FindFirstChild("Humanoid") and m ~= char then
						hit = true
						break
					end
				end
				
				if hit then
					hum.WalkSpeed = 19
					EffectsLabel.Text = "Efeito: JUMP BUFF (19)"
					task.wait(6)
					EffectsLabel.Text = "Efeito: Nenhum"
				else
					task.wait(1)
				end
				hum.WalkSpeed = 10
				updateStatus("Idle")
			end
			task.wait()
		end
	end)
end)

createAbilityButton("INNOCENCE", UDim2.new(0.9, 0, 0.5, 0), 20, function(char)
	local hum = char.Humanoid
	playSound("120152607511520", 1, 3)
	hum.WalkSpeed = 0
	updateStatus("AURA VISION", Color3.new(1, 1, 0))
	
	local auras = {}
	for _, p in pairs(game.Players:GetPlayers()) do
		if p ~= Player and p.Character then
			local hl = Instance.new("Highlight", p.Character)
			hl.FillColor = Color3.fromRGB(255, 0, 0)
			hl.OutlineColor = Color3.new(1, 1, 1)
			hl.FillTransparency = 0.5
			table.insert(auras, hl)
		end
	end
	
	task.wait(3)
	for _, hl in pairs(auras) do hl:Destroy() end
	
	hum.WalkSpeed = 22
	EffectsLabel.Text = "Efeito: SPEED BUFF (22)"
	task.wait(9)
	hum.WalkSpeed = 10
	EffectsLabel.Text = "Efeito: Nenhum"
	updateStatus("Idle")
end)

Features & Information

Rework charge Add M1 mechanic And idk

Community Comments (1)

ClurryfriClurryfriFeb 14, 2026

Not saying it needs animations but is it suppose to have custom animations, or is it just the abilities with the voicelines and that's it?

More Scripts for Universal Scripts