Military Bot V2 FE r15
Key RequiredUniversal

Military Bot V2 FE r15

Universal ScriptJuanito_juega_XDJuanito_juega_XD 1.3K views 1.3K executesUpdated Jun 27, 2026
Unrated
00
Lua Script•492 lines (14001 chars)
-- GUNBOT FINAL V2.6 - TRANSFORM + DE-TRANSFORM
if getgenv().GunbotLoaded then return end
getgenv().GunbotLoaded = true

local player = game.Players.LocalPlayer
local cam = workspace.CurrentCamera

-- PON TUS ANIM IDS AQUÍ
local GUNSHOT_ANIM_ID = "rbxassetid://121573002971812"
local MINIGUN_ANIM_ID = "rbxassetid://131501910953361"
local IDLE_ANIM_ID = "rbxassetid://78286929778597" -- ANIM CUANDO ESTÁS QUIETO
local RUN_ANIM_ID = "rbxassetid://90220723448748" -- ANIM CUANDO CORRES
local DEATH_ANIM_ID = "rbxassetid://134871895179279" -- ANIM DE MUERTE
local TRANSFORM_ANIM_ID = "rbxassetid://101155521231914" -- ANIM DE TRANSFORMACIÓN
local TRANSFORMED_IDLE_ID = "rbxassetid://107822660492695" -- IDLE TRANSFORMADO
local TRANSFORMED_RUN_ID = "rbxassetid://73379618463325" -- RUN TRANSFORMADO
local TRANSFORMED_SHOT_ID = "rbxassetid://133488754387819" -- SHOT TRANSFORMADO
-- =====================================

local function setup()
	local char = player.Character or player.CharacterAdded:Wait()
	local hum = char:WaitForChild("Humanoid")
	
	-- Cargar anims de botones
	local anim1 = Instance.new("Animation")
	anim1.AnimationId = GUNSHOT_ANIM_ID
	local gunTrack = hum:LoadAnimation(anim1)
	gunTrack.Looped = false
	
	local anim2 = Instance.new("Animation")
	anim2.AnimationId = MINIGUN_ANIM_ID
	local miniTrack = hum:LoadAnimation(anim2)
	miniTrack.Looped = true
	
	local anim3 = Instance.new("Animation")
	anim3.AnimationId = DEATH_ANIM_ID
	local deathTrack = hum:LoadAnimation(anim3)
	deathTrack.Looped = false
	
	local transformAnim = Instance.new("Animation")
	transformAnim.AnimationId = TRANSFORM_ANIM_ID
	local transformTrack = hum:LoadAnimation(transformAnim)
	transformTrack.Looped = false
	
	local transformedShotAnim = Instance.new("Animation")
	transformedShotAnim.AnimationId = TRANSFORMED_SHOT_ID
	local transformedShotTrack = hum:LoadAnimation(transformedShotAnim)
	transformedShotTrack.Looped = true
	
	-- Cargar anims IDLE y RUN
	local idleTrack, runTrack
	local currentIdleId = IDLE_ANIM_ID
	local currentRunId = RUN_ANIM_ID
	
	local function loadMovementAnims()
		if idleTrack then idleTrack:Stop() end
		if runTrack then runTrack:Stop() end
		
		local idleAnim = Instance.new("Animation")
		idleAnim.AnimationId = currentIdleId
		idleTrack = hum:LoadAnimation(idleAnim)
		idleTrack.Looped = true
		idleTrack.Priority = Enum.AnimationPriority.Movement
		
		local runAnim = Instance.new("Animation")
		runAnim.AnimationId = currentRunId
		runTrack = hum:LoadAnimation(runAnim)
		runTrack.Looped = true
		runTrack.Priority = Enum.AnimationPriority.Movement
	end
	
	loadMovementAnims()
	
	-- Quitar anims default de Roblox
	local function stopDefaultAnims()
		for _, track in pairs(hum:GetPlayingAnimationTracks()) do
			if track.Name == "WalkAnim" or track.Name == "RunAnim" or track.Name == "IdleAnim" then
				track:Stop()
			end
		end
	end
	
	-- Detectar si está corriendo o quieto
	local isMoving = false
	local runningConnection = hum.Running:Connect(function(speed)
		stopDefaultAnims()
		
		if speed > 0.1 then
			if not isMoving and runTrack then
				isMoving = true
				if idleTrack then idleTrack:Stop() end
				runTrack:Play()
			end
		else
			if isMoving and idleTrack then
				isMoving = false
				if runTrack then runTrack:Stop() end
				idleTrack:Play()
			end
		end
	end)
	
	-- Empezar con idle si existe
	if idleTrack then
		task.wait(0.5)
		idleTrack:Play()
	end
	
	-- GUI
	local gui = player.PlayerGui:FindFirstChild("GunbotGUI")
	if gui then gui:Destroy() end
	
	gui = Instance.new("ScreenGui")
	gui.Name = "GunbotGUI"
	gui.ResetOnSpawn = false
	gui.Parent = player.PlayerGui
	
	-- Función para texto arcoiris
	local function rainbowText(btn)
		task.spawn(function()
			local hue = 0
			while btn.Parent do
				hue = (hue + 2) % 360
				btn.TextColor3 = Color3.fromHSV(hue/360, 1, 1)
				task.wait(0.05)
			end
		end)
	end
	
	-- Botón CIRCULAR RELEASE - 70px pegado a la derecha
	local shootBtn = Instance.new("TextButton")
	shootBtn.Name = "NormalBtn"
	shootBtn.Size = UDim2.new(0, 70, 0, 70)
	shootBtn.Position = UDim2.new(1, -80, 0.7, -80)
	shootBtn.Text = "RELEASE\nGUN\nAND SHOT"
	shootBtn.Font = Enum.Font.GothamBold
	shootBtn.TextScaled = true
	shootBtn.BackgroundColor3 = Color3.fromRGB(200, 30, 70)
	shootBtn.BorderSizePixel = 0
	shootBtn.ZIndex = 10
	shootBtn.Parent = gui
	
	local corner1 = Instance.new("UICorner")
	corner1.CornerRadius = UDim.new(1, 0)
	corner1.Parent = shootBtn
	rainbowText(shootBtn)
	
	-- Botón CIRCULAR MINIGUN - 70px arriba del RELEASE
	local miniBtn = Instance.new("TextButton")
	miniBtn.Name = "NormalBtn"
	miniBtn.Size = UDim2.new(0, 70, 0, 70)
	miniBtn.Position = UDim2.new(1, -80, 0.7, -160)
	miniBtn.Text = "MINIGUN"
	miniBtn.Font = Enum.Font.GothamBold
	miniBtn.TextScaled = true
	miniBtn.BackgroundColor3 = Color3.fromRGB(30, 100, 200)
	miniBtn.BorderSizePixel = 0
	miniBtn.ZIndex = 10
	miniBtn.Parent = gui
	
	local corner2 = Instance.new("UICorner")
	corner2.CornerRadius = UDim.new(1, 0)
	corner2.Parent = miniBtn
	rainbowText(miniBtn)
	
	-- Botón CIRCULAR DEATH(RESET) - 70px arriba del MINIGUN
	local deathBtn = Instance.new("TextButton")
	deathBtn.Name = "NormalBtn"
	deathBtn.Size = UDim2.new(0, 70, 0, 70)
	deathBtn.Position = UDim2.new(1, -80, 0.7, -240)
	deathBtn.Text = "DEATH\n(RESET)"
	deathBtn.Font = Enum.Font.GothamBold
	deathBtn.TextScaled = true
	deathBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
	deathBtn.BorderSizePixel = 0
	deathBtn.ZIndex = 10
	deathBtn.Parent = gui
	
	local corner3 = Instance.new("UICorner")
	corner3.CornerRadius = UDim.new(1, 0)
	corner3.Parent = deathBtn
	rainbowText(deathBtn)
	
	-- Botón TRANSFORM - A LA IZQUIERDA DEL SALTO
	local transformBtn = Instance.new("TextButton")
	transformBtn.Name = "TransformBtn"
	transformBtn.Size = UDim2.new(0, 70, 0, 70)
	transformBtn.Position = UDim2.new(1, -160, 1, -80)
	transformBtn.Text = "TRANSFORM"
	transformBtn.Font = Enum.Font.GothamBold
	transformBtn.TextScaled = true
	transformBtn.BackgroundColor3 = Color3.fromRGB(255, 215, 0)
	transformBtn.BorderSizePixel = 0
	transformBtn.ZIndex = 10
	transformBtn.Parent = gui
	
	local corner4 = Instance.new("UICorner")
	corner4.CornerRadius = UDim.new(1, 0)
	corner4.Parent = transformBtn
	rainbowText(transformBtn)
	
	-- Botón SHOT TRANSFORMADO - APARECE DESPUÉS DE TRANSFORM
	local transformedShotBtn = Instance.new("TextButton")
	transformedShotBtn.Size = UDim2.new(0, 70, 0, 70)
	transformedShotBtn.Position = UDim2.new(1, -80, 0.7, -80)
	transformedShotBtn.Text = "SHOT"
	transformedShotBtn.Font = Enum.Font.GothamBold
	transformedShotBtn.TextScaled = true
	transformedShotBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
	transformedShotBtn.BorderSizePixel = 0
	transformedShotBtn.ZIndex = 10
	transformedShotBtn.Visible = false
	transformedShotBtn.Parent = gui
	
	local corner5 = Instance.new("UICorner")
	corner5.CornerRadius = UDim.new(1, 0)
	corner5.Parent = transformedShotBtn
	rainbowText(transformedShotBtn)
	
	-- Botón TRANSFORM NORMAL - APARECE CON EL SHOT
	local normalTransformBtn = Instance.new("TextButton")
	normalTransformBtn.Size = UDim2.new(0, 70, 0, 70)
	normalTransformBtn.Position = UDim2.new(1, -160, 1, -80) -- MISMA POSICIÓN QUE TRANSFORM
	normalTransformBtn.Text = "TRANSFORM\nNORMAL"
	normalTransformBtn.Font = Enum.Font.GothamBold
	normalTransformBtn.TextScaled = true
	normalTransformBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 255)
	normalTransformBtn.BorderSizePixel = 0
	normalTransformBtn.ZIndex = 10
	normalTransformBtn.Visible = false
	normalTransformBtn.Parent = gui
	
	local corner6 = Instance.new("UICorner")
	corner6.CornerRadius = UDim.new(1, 0)
	corner6.Parent = normalTransformBtn
	rainbowText(normalTransformBtn)
	
	local shooting = false
	local minigunActive = false
	local isDying = false
	local isTransforming = false
	local transformed = false
	local transformedShooting = false
	
	-- RELEASE GUN AND SHOT
	shootBtn.TouchTap:Connect(function()
		if shooting or minigunActive or isDying or isTransforming or transformed then return end
		shooting = true
		
		print("[GUNBOT] RELEASE AND SHOT activado")
		
		if runTrack then runTrack:Stop() end
		if idleTrack then idleTrack:Stop() end
		
		hum.WalkSpeed = 5
		
		local ok, err = pcall(function()
			gunTrack:Play()
			gunTrack.Stopped:Wait()
		end)
		
		if not ok then
			warn("[GUNBOT] Error anim: "..err)
		end
		
		hum.WalkSpeed = 15
		shooting = false
		
		if hum.MoveDirection.Magnitude > 0 and runTrack then
			runTrack:Play()
		elseif idleTrack then
			idleTrack:Play()
		end
	end)
	
	-- MINIGUN TOGGLE EN BUCLE
	miniBtn.TouchTap:Connect(function()
		if shooting or isDying or isTransforming or transformed then return end
		
		if minigunActive then
			print("[GUNBOT] MINIGUN desactivado")
			minigunActive = false
			miniTrack:Stop()
			hum.WalkSpeed = 15
			miniBtn.BackgroundColor3 = Color3.fromRGB(30, 100, 200)
			miniBtn.Text = "MINIGUN"
			
			if hum.MoveDirection.Magnitude > 0 and runTrack then
				runTrack:Play()
			elseif idleTrack then
				idleTrack:Play()
			end
		else
			print("[GUNBOT] MINIGUN activado")
			minigunActive = true
			
			if runTrack then runTrack:Stop() end
			if idleTrack then idleTrack:Stop() end
			
			hum.WalkSpeed = 0
			miniBtn.BackgroundColor3 = Color3.fromRGB(200, 30, 30)
			miniBtn.Text = "STOP"
			
			local ok, err = pcall(function()
				miniTrack:Play()
			end)
			
			if not ok then
				warn("[GUNBOT] Error anim: "..err)
				minigunActive = false
				hum.WalkSpeed = 15
				miniBtn.BackgroundColor3 = Color3.fromRGB(30, 100, 200)
				miniBtn.Text = "MINIGUN"
			end
		end
	end)
	
	-- DEATH(RESET) - REPRODUCE ANIM Y MATA
	deathBtn.TouchTap:Connect(function()
		if isDying or shooting or minigunActive or isTransforming then return end
		isDying = true
		
		print("[GUNBOT] DEATH(RESET) activado")
		
		if runTrack then runTrack:Stop() end
		if idleTrack then idleTrack:Stop() end
		if miniTrack then miniTrack:Stop() end
		if transformedShotTrack then transformedShotTrack:Stop() end
		
		hum.WalkSpeed = 0
		hum.JumpPower = 0
		
		local ok, err = pcall(function()
			deathTrack:Play()
			deathTrack.Stopped:Wait()
		end)
		
		if not ok then
			warn("[GUNBOT] Error anim muerte: "..err)
		end
		
		hum.Health = 0
	end)
	
	-- TRANSFORM - CAMBIA A MODO TRANSFORMADO
	transformBtn.TouchTap:Connect(function()
		if isTransforming or shooting or minigunActive or isDying or transformed then return end
		isTransforming = true
		
		print("[GUNBOT] TRANSFORM activado")
		
		if runTrack then runTrack:Stop() end
		if idleTrack then idleTrack:Stop() end
		if miniTrack then miniTrack:Stop() end
		
		hum.WalkSpeed = 0
		
		local ok, err = pcall(function()
			transformTrack:Play()
			transformTrack.Stopped:Wait()
		end)
		
		if not ok then
			warn("[GUNBOT] Error anim transform: "..err)
		end
		
		-- Cambiar a modo transformado
		transformed = true
		currentIdleId = TRANSFORMED_IDLE_ID
		currentRunId = TRANSFORMED_RUN_ID
		loadMovementAnims()
		
		-- Quitar botones normales
		for _, btn in pairs(gui:GetChildren()) do
			if btn.Name == "NormalBtn" then
				btn.Visible = false
			end
		end
		transformBtn.Visible = false
		
		-- Mostrar botón SHOT y TRANSFORM NORMAL
		transformedShotBtn.Visible = true
		normalTransformBtn.Visible = true
		
		hum.WalkSpeed = 15
		
		if idleTrack then
			task.wait(0.1)
			idleTrack:Play()
		end
		
		isTransforming = false
	end)
	
	-- TRANSFORM NORMAL - VUELVE A FORMA BASE CON ANIM INVERTIDA
	normalTransformBtn.TouchTap:Connect(function()
		if isTransforming or shooting or minigunActive or isDying or not transformed then return end
		isTransforming = true
		
		print("[GUNBOT] TRANSFORM NORMAL activado")
		
		if runTrack then runTrack:Stop() end
		if idleTrack then idleTrack:Stop() end
		if transformedShotTrack then transformedShotTrack:Stop() end
		transformedShooting = false
		
		hum.WalkSpeed = 0
		
		-- Reproducir anim de transformación INVERTIDA
		local ok, err = pcall(function()
			transformTrack:Play()
			transformTrack:AdjustSpeed(-1) -- VELOCIDAD NEGATIVA = ANIM EN REVERSA
			transformTrack.Stopped:Wait()
			transformTrack:AdjustSpeed(1) -- RESETEAR VELOCIDAD
		end)
		
		if not ok then
			warn("[GUNBOT] Error anim transform normal: "..err)
		end
		
		-- Volver a modo normal
		transformed = false
		currentIdleId = IDLE_ANIM_ID
		currentRunId = RUN_ANIM_ID
		loadMovementAnims()
		
		-- Mostrar botones normales
		for _, btn in pairs(gui:GetChildren()) do
			if btn.Name == "NormalBtn" then
				btn.Visible = true
			end
		end
		transformBtn.Visible = true
		
		-- Quitar botones transformados
		transformedShotBtn.Visible = false
		normalTransformBtn.Visible = false
		transformedShotBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
		transformedShotBtn.Text = "SHOT"
		
		hum.WalkSpeed = 15
		
		if idleTrack then
			task.wait(0.1)
			idleTrack:Play()
		end
		
		isTransforming = false
	end)
	
	-- SHOT TRANSFORMADO - TOGGLE EN BUCLE
	transformedShotBtn.TouchTap:Connect(function()
		if isTransforming or isDying then return end
		
		if transformedShooting then
			print("[GUNBOT] SHOT TRANSFORMADO desactivado")
			transformedShooting = false
			transformedShotTrack:Stop()
			transformedShotBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
			transformedShotBtn.Text = "SHOT"
			
			if hum.MoveDirection.Magnitude > 0 and runTrack then
				runTrack:Play()
			elseif idleTrack then
				idleTrack:Play()
			end
		else
			print("[GUNBOT] SHOT TRANSFORMADO activado")
			transformedShooting = true
			
			if runTrack then runTrack:Stop() end
			if idleTrack then idleTrack:Stop() end
			
			transformedShotBtn.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
			transformedShotBtn.Text = "STOP"
			
			local ok, err = pcall(function()
				transformedShotTrack:Play()
			end)
			
			if not ok then
				warn("[GUNBOT] Error anim shot transformado: "..err)
				transformedShooting = false
				transformedShotBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
				transformedShotBtn.Text = "SHOT"
			end
		end
	end)
end

setup()
player.CharacterAdded:Connect(setup)

Features & Information

It's the same military bot, only I added a few other things, as promised.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts