
Key RequiredUniversal

-- 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)No comments yet for this script.



