Helicopter Script (NOT FE)
Key RequiredUniversal

Helicopter Script (NOT FE)

Universal ScriptRSCRIPTS_FALSEBAN_MERSCRIPTS_FALSEBAN_ME 955 views 830 executesUpdated Feb 20, 2026
Unrated
00
Lua Script•667 lines (23283 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")

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

-- SETTINGS
local HELI_HEIGHT = 200
local RANGE_ZONE = 500
local FOLLOW_ZONE = 495
local SWEEP_ZONE = 1000
local PATROL_SPEED = 0.8
local FOLLOW_SPEED = 4.0
local SWEEP_SPEED = 10
local TURN_SPEED = 0.08
local U_TURN_CHANCE = 0.0015
local LIFETIME = 99999
local ESP_INTERVAL = 9
local ESP_DURATION = 7
local AMBIENT_GLOW = 0.6
local FIRE_RATE = 0.05           -- lower = faster fire (machine gun)
local TRACER_SPEED = 0.35        -- how long tracer lasts
local TRACER_WIDTH = 0.4
local AIM_INACCURACY = 5         -- degrees of random miss
local FIRE_DISTANCE_LIMIT = 900  -- max range to fire

local heliActive = false
local trackedPlayer = nil
local lockOn = false
local heliStartTime = 0
local lastESPToggle = 0
local currentESP = nil
local currentGlow = nil
local lastKnownPos = Vector3.new()
local patrolYaw = 0
local heliYaw = 0
local sweepTime = 0
local isPatrolOnSpawn = true
local isViewingHeli = false
local viewRotation = Vector2.new(0, 0)
local currentHeli = nil

local heli = Instance.new("Model")
heli.Name = "ClientHeli"
heli.Parent = workspace

local body = Instance.new("Part")
body.Name = "HeliBody"
body.Size = Vector3.new(12, 6, 24)
body.Position = Vector3.new(0, HELI_HEIGHT, 0)
body.Anchored = true
body.CanCollide = false
body.Color = Color3.fromRGB(60, 60, 60)
body.Material = Enum.Material.Metal
body.Parent = heli
heli.PrimaryPart = body

local detailParts = {}

local function createDetail(name, size, relativeCFrame, color, material, transparency, shape)
    local part = Instance.new("Part")
    part.Name = name
    part.Size = size
    part.Color = color
    part.Material = material or Enum.Material.Metal
    part.Transparency = transparency or 0
    part.CanCollide = false
    part.Anchored = true
    part.Parent = heli
    
    table.insert(detailParts, {part = part, offsetCFrame = relativeCFrame})
    
    part.CFrame = body.CFrame * relativeCFrame
    
    return part
end

createDetail("RotorHub",   Vector3.new(4, 4, 4),    CFrame.new(0, 8, 0),                     Color3.fromRGB(40, 40, 40),   nil, nil, Enum.PartType.Ball)

createDetail("Cockpit",    Vector3.new(10, 5, 8),   CFrame.new(0, 2, -10),                   Color3.fromRGB(0, 170, 255),  Enum.Material.ForceField, 0.3)

createDetail("TailFin",    Vector3.new(3, 8, 6),    CFrame.new(0, 4, 14) * CFrame.Angles(0, 0, math.rad(90)), Color3.fromRGB(50, 50, 50),   nil, nil, Enum.PartType.Wedge)

local bladeThickness = 0.4
local bladeLength = 28

for i = 0, 3 do
    local degrees = i * 90
    
    local extraTilt = (i % 2 == 0) and 4 or -3
    local relativeCFrame = CFrame.new(0, 8, 0)
                         * CFrame.Angles(0, math.rad(degrees), 0)
                         * CFrame.Angles(math.rad(extraTilt), 0, 0)

    local blade = createDetail(
        "Blade" .. i,
        Vector3.new(bladeThickness, bladeThickness, bladeLength),
        relativeCFrame,
        Color3.fromRGB(210, 210, 230),
        Enum.Material.Neon
    )
    
    blade.Transparency = 0.1
    blade.Reflectance = 0.15
    
    detailParts[#detailParts].spinOffset = degrees
end

for side = -1, 1, 2 do
    createDetail("Skid"..(side>0 and "R" or "L"), Vector3.new(2, 1, 22),
        CFrame.new(side * 6, -6, 0),
        Color3.fromRGB(30, 30, 30))
end

print("Helicopter ready – main body + " .. #detailParts .. " detail parts that follow")

local surfaceLight = Instance.new("SpotLight")
surfaceLight.Parent = body
surfaceLight.Angle = 60
surfaceLight.Range = 300
surfaceLight.Brightness = 0
surfaceLight.Face = Enum.NormalId.Bottom

local attachHeli = Instance.new("Attachment")
attachHeli.Position = Vector3.new(0,-body.Size.Y/2-0.1,0)
attachHeli.Parent = body

local attachTarget = Instance.new("Attachment")
attachTarget.Parent = workspace

local spotlightBeam = Instance.new("Beam")
spotlightBeam.Attachment0 = attachHeli
spotlightBeam.Attachment1 = attachTarget
spotlightBeam.Color = ColorSequence.new(Color3.fromRGB(255,255,180))
spotlightBeam.LightEmission = 1
spotlightBeam.Width0 = 8
spotlightBeam.Width1 = 25
spotlightBeam.Transparency = NumberSequence.new({
    NumberSequenceKeypoint.new(0,0.3), NumberSequenceKeypoint.new(1,0.85)
})
spotlightBeam.FaceCamera = true
spotlightBeam.Texture = "rbxassetid://9616406359"
spotlightBeam.TextureSpeed = 0
spotlightBeam.Enabled = false
spotlightBeam.Parent = body

local gui = Instance.new("ScreenGui")
gui.Name = "HeliGUI"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0,260,0,320)
frame.Position = UDim2.new(0.5,-130,0.5,-160)
frame.BackgroundColor3 = Color3.fromRGB(30,30,30)
frame.Active = true
frame.Draggable = true
frame.Parent = gui

local title = Instance.new("TextLabel",frame)
title.Size = UDim2.new(1,0,0,30)
title.Text = "🚁 HELICOPTER CONTROL"
title.TextColor3 = Color3.new(1,1,1)
title.TextScaled = true
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamBold

local activateButton = Instance.new("TextButton",frame)
activateButton.Size = UDim2.new(0.45,0,0,40)
activateButton.Position = UDim2.new(0.05,0,0.1,0)
activateButton.Text = "Activate Heli"
activateButton.TextScaled = true
activateButton.BackgroundColor3 = Color3.fromRGB(0,170,0)

local viewButton = Instance.new("TextButton",frame)
viewButton.Size = UDim2.new(0.45,0,0,40)
viewButton.Position = UDim2.new(0.5,0,0.1,0)
viewButton.Text = "View Heli"
viewButton.TextScaled = true
viewButton.BackgroundColor3 = Color3.fromRGB(100,100,255)

local switchButton = Instance.new("TextButton",frame)
switchButton.Size = UDim2.new(0.9,0,0,40)
switchButton.Position = UDim2.new(0.05,0,0.25,0)
switchButton.Text = "Switch Target (Nearest)"
switchButton.TextScaled = true
switchButton.BackgroundColor3 = Color3.fromRGB(0,120,255)

local lockButton = Instance.new("TextButton",frame)
lockButton.Size = UDim2.new(0.9,0,0,35)
lockButton.Position = UDim2.new(0.05,0,0.38,0)
lockButton.Text = "Lock: OFF"
lockButton.TextScaled = true
lockButton.BackgroundColor3 = Color3.fromRGB(255,100,0)

local targetInput = Instance.new("TextBox",frame)
targetInput.Size = UDim2.new(0.9,0,0,35)
targetInput.Position = UDim2.new(0.05,0,0.52,0)
targetInput.PlaceholderText = "Enter username or display name..."
targetInput.TextScaled = true
targetInput.BackgroundColor3 = Color3.fromRGB(50,50,50)
targetInput.TextColor3 = Color3.new(1,1,1)

local setTargetButton = Instance.new("TextButton",frame)
setTargetButton.Size = UDim2.new(0.9,0,0,35)
setTargetButton.Position = UDim2.new(0.05,0,0.65,0)
setTargetButton.Text = "Set Target by Name"
setTargetButton.TextScaled = true
setTargetButton.BackgroundColor3 = Color3.fromRGB(0,200,100)

local mgButton = Instance.new("TextButton", frame)
mgButton.Size = UDim2.new(0.45,0,0,40)
mgButton.Position = UDim2.new(0.05,0,0.78,0)
mgButton.Text = "Machine Gun Mode"
mgButton.TextScaled = true
mgButton.BackgroundColor3 = Color3.fromRGB(255,180,0)

local disableButton = Instance.new("TextButton", frame)
disableButton.Size = UDim2.new(0.9,0,0,35)
disableButton.Position = UDim2.new(0.05,0,0.90,0)
disableButton.Text = "Weapons: OFF"
disableButton.TextScaled = true
disableButton.BackgroundColor3 = Color3.fromRGB(150,50,50)

local function notify(title,text)
    StarterGui:SetCore("SendNotification",{Title=title,Text=text,Duration=3})
end

local function toggleESP(target,show)
    if currentESP then currentESP:Destroy() currentESP=nil end
    if show and target and target.Character then
        currentESP=Instance.new("Highlight")
        currentESP.FillColor=Color3.fromRGB(255,50,50)
        currentESP.OutlineColor=Color3.new(1,1,1)
        currentESP.FillTransparency=0.4
        currentESP.OutlineTransparency=0
        currentESP.Parent=target.Character
    end
end

local function addGlow(targetChar)
    if currentGlow then currentGlow:Destroy() currentGlow=nil end
    if targetChar and targetChar:FindFirstChild("HumanoidRootPart") then
        currentGlow=Instance.new("PointLight")
        currentGlow.Color=Color3.fromRGB(255,255,240)
        currentGlow.Brightness=AMBIENT_GLOW
        currentGlow.Range=18
        currentGlow.Shadows=false
        currentGlow.Parent=targetChar.HumanoidRootPart
    end
end

local function removeGlow()
    if currentGlow then currentGlow:Destroy() currentGlow=nil end
end

local function getPlayerByName(name)
    name = name:lower()
    for _,p in Players:GetPlayers() do
        if p.Name:lower():sub(1,#name)==name or (p.DisplayName and p.DisplayName:lower():sub(1,#name)==name) then
            return p
        end
    end
    return nil
end

local function getNearestPlayerToCaller()
    local char=player.Character
    if not char or not char:FindFirstChild("HumanoidRootPart") then return nil end
    local pos=char.HumanoidRootPart.Position
    local closest,minDist=nil,math.huge
    for _,plr in Players:GetPlayers() do
        if plr~=player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
            local mag=(plr.Character.HumanoidRootPart.Position-pos).Magnitude
            if mag<minDist and mag<=RANGE_ZONE*1.5 then
                minDist=mag
                closest=plr
            end
        end
    end
    return closest
end

local function getFlatDistance(target)
    if not target or not target.Character or not target.Character:FindFirstChild("HumanoidRootPart") then return math.huge end
    local tPos=target.Character.HumanoidRootPart.Position
    local hPos=body.Position
    return Vector3.new(tPos.X-hPos.X,0,tPos.Z-hPos.Z).Magnitude
end

local lastShotTime = 0

local function fireTracer(targetPos)
    local origin = body.Position 
        + body.CFrame.LookVector * 10   -- forward of heli
        + Vector3.new(0, -3, 0)         -- slightly under body
    
    local direction = (targetPos - origin).Unit

    -- Apply spread properly relative to heli orientation
    local spreadCF = CFrame.lookAt(origin, origin + direction)
        * CFrame.Angles(
            math.rad(math.random(-AIM_INACCURACY, AIM_INACCURACY)),
            math.rad(math.random(-AIM_INACCURACY, AIM_INACCURACY)),
            0
        )

    direction = spreadCF.LookVector

    -- Raycast to detect ground / player
    local rayParams = RaycastParams.new()
    rayParams.FilterDescendantsInstances = {heli}
    rayParams.FilterType = Enum.RaycastFilterType.Blacklist

    local result = workspace:Raycast(origin, direction * FIRE_DISTANCE_LIMIT, rayParams)

    local hitPosition
    if result then
        hitPosition = result.Position
    
        -- DAMAGE LOGIC (1 damage)
        local hitModel = result.Instance:FindFirstAncestorOfClass("Model")
        if hitModel then
            local humanoid = hitModel:FindFirstChildOfClass("Humanoid")
            if humanoid and humanoid.Health > 0 then
                humanoid:TakeDamage(3)
            end
        end
    else
        hitPosition = origin + direction * FIRE_DISTANCE_LIMIT
    end

    local distance = (hitPosition - origin).Magnitude

    -- Create tracer
    local tracer = Instance.new("Part")
    tracer.Anchored = true
    tracer.CanCollide = false
    tracer.Material = Enum.Material.Neon
    tracer.Color = Color3.fromRGB(255, 230, 80)
    tracer.Size = Vector3.new(TRACER_WIDTH, TRACER_WIDTH, distance)
    tracer.CFrame = CFrame.new(origin, hitPosition) * CFrame.new(0, 0, -distance/2)
    tracer.Parent = workspace

    task.delay(TRACER_SPEED, function()
        if tracer then tracer:Destroy() end
    end)

    -- 🔊 Machine gun firing sound
    if trackedPlayer and trackedPlayer.Character and trackedPlayer.Character:FindFirstChild("HumanoidRootPart") then
        local targetPart = trackedPlayer.Character.HumanoidRootPart
    
        local gunSound = targetPart:FindFirstChild("GunSound")
        if not gunSound then
            gunSound = Instance.new("Sound")
            gunSound.Name = "GunSound"
            gunSound.SoundId = "rbxassetid://112920286914467" -- example automatic gun sound
            gunSound.Volume = 1
            gunSound.RollOffMaxDistance = 200
            gunSound.Parent = targetPart
            gunSound:LoadAsync()
        end

        gunSound:Play()
    end
end

activateButton.MouseButton1Click:Connect(function()
    heliActive = not heliActive
    activateButton.Text = heliActive and "Deactivate Heli" or "Activate Heli"
    activateButton.BackgroundColor3 = heliActive and Color3.fromRGB(170,0,0) or Color3.fromRGB(0,170,0)
    if heliActive then
        heliStartTime = tick()
        local char = player.Character
        if char and char:FindFirstChild("HumanoidRootPart") then
            local spawnPos = char.HumanoidRootPart.Position + Vector3.new(0, HELI_HEIGHT + 20, 0)
            body.Position = spawnPos
            lastKnownPos = spawnPos
            notify("Helicopter","Inbound above you")
        else
            notify("Helicopter","Spawn failed – no character")
            heliActive = false
            activateButton.Text = "Activate Heli"
            activateButton.BackgroundColor3 = Color3.fromRGB(0,170,0)
            return
        end
        isPatrolOnSpawn = true
        trackedPlayer = getNearestPlayerToCaller()
        if trackedPlayer then
            lastKnownPos = trackedPlayer.Character.HumanoidRootPart.Position
            notify("Helicopter","Target Spotted: "..trackedPlayer.Name)
            addGlow(trackedPlayer.Character)
        else
            notify("Helicopter","No target found – patrolling")
        end
    else
        if currentHeli then currentHeli:Destroy() currentHeli = nil end
        surfaceLight.Brightness = 0
        spotlightBeam.Enabled = false
        toggleESP(trackedPlayer,false)
        removeGlow()
        trackedPlayer = nil
        lockOn = false
        lockButton.Text = "Lock: OFF"
        lockButton.BackgroundColor3 = Color3.fromRGB(255,100,0)
        notify("Helicopter","Deactivated")
        if isViewingHeli then
            isViewingHeli = false
            viewButton.Text = "View Heli"
            viewButton.BackgroundColor3 = Color3.fromRGB(100,100,255)
            camera.CameraType = Enum.CameraType.Custom
        end
    end
end)

switchButton.MouseButton1Click:Connect(function()
    if lockOn or not heliActive then 
        notify("Error","Cannot switch while locked!")
        return 
    end
    local nt = getNearestPlayerToCaller()
    if nt then
        removeGlow()
        trackedPlayer = nt
        lastKnownPos = nt.Character.HumanoidRootPart.Position
        notify("Helicopter","Switching Target: "..nt.Name)
        addGlow(nt.Character)
        isPatrolOnSpawn = false
    end
end)

lockButton.MouseButton1Click:Connect(function()
    if not heliActive then return end
    lockOn = not lockOn
    lockButton.Text = lockOn and "Lock: ON" or "Lock: OFF"
    lockButton.BackgroundColor3 = lockOn and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,100,0)
    notify("Lock", lockOn and "Locked – staying on target" or "Unlocked – auto-switching enabled")
end)

setTargetButton.MouseButton1Click:Connect(function()
    if not heliActive then 
        notify("Error","Heli not active")
        return 
    end
    local input = targetInput.Text
    if input == "" then 
        notify("Error","Enter a name")
        return 
    end
    local target = getPlayerByName(input)
    if target then
        removeGlow()
        trackedPlayer = target
        lastKnownPos = target.Character.HumanoidRootPart.Position
        notify("Helicopter","Target set: "..target.Name)
        addGlow(target.Character)
        isPatrolOnSpawn = false
    else
        notify("Error","Player not found: "..input)
    end
end)

local viewOffset = Vector3.new(0, 35, 70)
local viewRotation = Vector2.new(0, 0)

viewButton.MouseButton1Click:Connect(function()
    if not heliActive or not body then 
        notify("Error","Heli not active")
        return 
    end
    
    isViewingHeli = not isViewingHeli
    
    if isViewingHeli then
        viewButton.Text = "Back to Me"
        viewButton.BackgroundColor3 = Color3.fromRGB(255,150,50)
        camera.CameraType = Enum.CameraType.Scriptable
        notify("Camera", "Following Helicopter (drag to look)")
    else
        viewButton.Text = "View Heli"
        viewButton.BackgroundColor3 = Color3.fromRGB(100,100,255)
        camera.CameraType = Enum.CameraType.Custom
        notify("Camera", "Back to you")
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if not isViewingHeli then return end
    if input.UserInputType == Enum.UserInputType.Touch then
        local delta = input.Delta
        viewRotation = viewRotation + Vector2.new(-delta.X * 0.3, -delta.Y * 0.3)
        viewRotation = Vector2.new(viewRotation.X, math.clamp(viewRotation.Y, -80, 80))
    end
end)

local heliMode = "none"

mgButton.MouseButton1Click:Connect(function()
    heliMode = "machinegun"
    notify("Helicopter","Mode: Machine Gun")
    disableButton.Text = "Weapons: ON"
end)

disableButton.MouseButton1Click:Connect(function()
    heliMode = "none"
    notify("Helicopter","Weapons disabled")
    disableButton.Text = "Weapons: OFF"
end)

RunService.RenderStepped:Connect(function()
    if not heliActive then return end

for _, data in ipairs(detailParts) do
    local baseCFrame = body.CFrame * data.offsetCFrame
    
    if string.find(data.part.Name, "Blade") then
        local spinOffset = data.spinOffset or 0
        local totalRotation = (tick() * 720 + spinOffset) % 360
        local spin = CFrame.Angles(0, math.rad(totalRotation), 0)
        data.part.CFrame = baseCFrame * spin
    else
        data.part.CFrame = baseCFrame
    end
end

    if tick() - heliStartTime >= LIFETIME then
        heliActive = false
        if currentHeli then currentHeli:Destroy() currentHeli = nil end
        activateButton.Text = "Activate Heli"
        activateButton.BackgroundColor3 = Color3.fromRGB(0,170,0)
        surfaceLight.Brightness = 0
        spotlightBeam.Enabled = false
        toggleESP(trackedPlayer, false)
        removeGlow()
        notify("Helicopter", "Expired")
        if isViewingHeli then
            isViewingHeli = false
            viewButton.Text = "View Heli"
            viewButton.BackgroundColor3 = Color3.fromRGB(100,100,255)
            camera.CameraType = Enum.CameraType.Custom
        end
        return
    end

    local targetValid = trackedPlayer and trackedPlayer.Parent and trackedPlayer.Character and trackedPlayer.Character:FindFirstChild("HumanoidRootPart")
    
    if trackedPlayer and not targetValid then
        removeGlow()
        if lockOn then
            surfaceLight.Brightness = 0
            spotlightBeam.Enabled = false
            notify("Helicopter", "Target Eliminated / Left (locked) → Heli idle")
            return
        else
            trackedPlayer = getNearestPlayerToCaller()
            if trackedPlayer then
                lastKnownPos = trackedPlayer.Character.HumanoidRootPart.Position
                notify("Helicopter", "Target Eliminated / Left → New Target: " .. trackedPlayer.Name)
                addGlow(trackedPlayer.Character)
            else
                surfaceLight.Brightness = 0
                spotlightBeam.Enabled = false
                notify("Helicopter", "No targets nearby")
                return
            end
        end
    end

    if not targetValid then
        surfaceLight.Brightness = 0
        spotlightBeam.Enabled = false
        toggleESP(trackedPlayer, false)
        removeGlow()
        return
    end

    local root = trackedPlayer.Character.HumanoidRootPart
    local targetPos = root.Position
    lastKnownPos = targetPos
    local flatDist = getFlatDistance(trackedPlayer)

    local targetHeliPos, moveSpeed, isSweeping = Vector3.new(), 0, false
    
    if isPatrolOnSpawn or flatDist <= RANGE_ZONE then
        patrolYaw = patrolYaw + TURN_SPEED * 0.4
        local offset = Vector3.new(math.cos(patrolYaw)*35, HELI_HEIGHT, math.sin(patrolYaw)*35)
        targetHeliPos = targetPos + offset
        moveSpeed = PATROL_SPEED
        
        if math.random() < U_TURN_CHANCE then
            patrolYaw = patrolYaw + math.pi * 1.5
        end
        
        if flatDist <= RANGE_ZONE then isPatrolOnSpawn = false end
    elseif flatDist <= FOLLOW_ZONE then
        targetHeliPos = Vector3.new(targetPos.X, targetPos.Y + HELI_HEIGHT, targetPos.Z)
        moveSpeed = FOLLOW_SPEED
    else
        isSweeping = true
        sweepTime = tick()
        local offset = Vector3.new(math.sin(sweepTime*1.5)*70, HELI_HEIGHT, math.cos(sweepTime*1.5)*70)
        targetHeliPos = lastKnownPos + offset
        moveSpeed = SWEEP_SPEED
    end

    body.Position = body.Position:Lerp(targetHeliPos, moveSpeed * 0.018)

    local look = Vector3.new((targetPos - body.Position).X, 0, (targetPos - body.Position).Z).Unit
    local targetYaw = math.atan2(look.X, look.Z)
    heliYaw = heliYaw + (targetYaw - heliYaw) * TURN_SPEED
    body.CFrame = CFrame.new(body.Position) * CFrame.Angles(0, heliYaw, 0) * CFrame.Angles(math.rad(-8), 0, 0)
    surfaceLight.Brightness = 8
    spotlightBeam.Enabled = true

    surfaceLight.Brightness = 8
    
    local beamTarget
    if isSweeping then
        local angle = sweepTime * 4
        beamTarget = lastKnownPos + Vector3.new(math.cos(angle)*90, -20, math.sin(angle)*90)
    else
        beamTarget = Vector3.new(targetPos.X, targetPos.Y - 3, targetPos.Z)
    end
    
    attachTarget.WorldPosition = beamTarget
    spotlightBeam.Enabled = true
    local bDist = (targetPos - body.Position).Magnitude
    spotlightBeam.Width1 = math.clamp(15 + bDist * 0.12, 15, 50)

    if isViewingHeli then
        local baseOffset = Vector3.new(0, 35, 70)
        local yawRad = math.rad(viewRotation.X)
        local pitchRad = math.rad(viewRotation.Y)
        local rotatedX = math.cos(yawRad) * baseOffset.Z
        local rotatedZ = math.sin(yawRad) * baseOffset.Z
        local finalOffset = Vector3.new(rotatedX, baseOffset.Y + math.sin(pitchRad) * 30, rotatedZ * math.cos(pitchRad))
        local targetCFrame = CFrame.new(body.Position + finalOffset, body.Position)
        camera.CFrame = camera.CFrame:Lerp(targetCFrame, 0.12)
    end

    local now = tick()

    -- MACHINE GUN FIRE
    if trackedPlayer and flatDist <= FIRE_DISTANCE_LIMIT then
        if heliMode == "machinegun" and heliActive and trackedPlayer and flatDist <= FIRE_DISTANCE_LIMIT then
            if now - lastShotTime >= FIRE_RATE then
                lastShotTime = now
                local aimPos = trackedPlayer.Character.HumanoidRootPart.Position
                if math.random() < 0.2 then
                    aimPos = aimPos + Vector3.new(math.random(-20,20), math.random(-5,5), math.random(-20,20))
                end
                fireTracer(aimPos)
            end
        end
    end

    if now - lastESPToggle >= ESP_INTERVAL then
        lastESPToggle = now
        toggleESP(trackedPlayer, true)
        task.delay(ESP_DURATION, function()
            toggleESP(trackedPlayer, false)
        end)
    end
end)

Features & Information

This Script is made by AI Just a fancier realistic Locate player View heli is kinda bugged for Mobile and broken on PC You can change the Settings at Line 10 also at line 329 (yeah it's kinda long) you can change on how many damage the MG deals. It's humanoid:TakeDamage(3) -- change the number UPDATE: NOW INCLUDING A LIGHT MACHINE GUN

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts