local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")

local LocalPlayer = Players.LocalPlayer
local HitRemote = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("Hit")

local CONFIG = {
    StareRadius = 15.0,
    EnterAttackRadius = 6.5,
    LeaveAttackRadius = 6.8,
    AttackDelay = 0.035,
    SwitchCooldown = 0.75,
    ZoneSwitchDelay = 0.1,
    
    ColorOn = Color3.fromRGB(0, 210, 120),
    ColorOff = Color3.fromRGB(235, 55, 55),
    ColorPanel = Color3.fromRGB(20, 20, 20)
}

local ActivePlayers = {}
local CharacterCache = {}
local LastZoneChangeTime = {} 

local AuraEnabled = false
local RenderConnection = nil

local singlePayload = {}
local innerPayloadData = {
    ["Victim"] = nil,
    ["Vector"] = Vector3.new(0, 0, 0)
}

local lockedTarget = nil
local lockedTargetRoot = nil
local cooldownUntil = 0

local function isInSafeZone(player)
    if not player then return false end
    local sz = player:FindFirstChild("SafeZone") or (player:FindFirstChild("GameStats") and player.GameStats:FindFirstChild("SafeZone"))
    
    if sz and sz:IsA("BoolValue") then
        if LastZoneChangeTime[player] == nil then
            LastZoneChangeTime[player] = {State = sz.Value, Time = 0}
        elseif LastZoneChangeTime[player].State ~= sz.Value then
            LastZoneChangeTime[player].State = sz.Value
            LastZoneChangeTime[player].Time = os.clock()
        end
        return sz.Value
    end
    return false
end

local function uncachePlayer(player)
    CharacterCache[player] = nil
    LastZoneChangeTime[player] = nil
    if lockedTarget == player then
        lockedTarget, lockedTargetRoot = nil, nil
        cooldownUntil = os.clock() + CONFIG.SwitchCooldown
    end
    local idx = table.find(ActivePlayers, player)
    if idx then table.remove(ActivePlayers, idx) end
end

local function cachePlayer(player)
    if player == LocalPlayer then return end
    if not table.find(ActivePlayers, player) then table.insert(ActivePlayers, player) end

    local function onCharacterAdded(char)
        local root = char:WaitForChild("HumanoidRootPart", 10)
        local hum = char:WaitForChild("Humanoid", 10)
        if root and hum then
            CharacterCache[player] = {Character = char, Root = root, Humanoid = hum}
            hum.Died:Connect(function()
                CharacterCache[player] = nil
                if lockedTarget == player then
                    lockedTarget, lockedTargetRoot = nil, nil
                    cooldownUntil = os.clock() + CONFIG.SwitchCooldown
                end
            end)
        end
    end
    player.CharacterAdded:Connect(onCharacterAdded)
    if player.Character then onCharacterAdded(player.Character) end
end

Players.PlayerAdded:Connect(cachePlayer)
Players.PlayerRemoving:Connect(uncachePlayer)
for _, p in ipairs(Players:GetPlayers()) do cachePlayer(p) end

local LocalCharacterData = nil
local function setupLocalPlayer(char)
    if not char then return end
    local root = char:WaitForChild("HumanoidRootPart", 10)
    local hum = char:WaitForChild("Humanoid", 10)
    if root and hum then LocalCharacterData = {Root = root, Humanoid = hum} end
end
LocalPlayer.CharacterAdded:Connect(setupLocalPlayer)
if LocalPlayer.Character then setupLocalPlayer(LocalPlayer.Character) end

local function validateTarget(player, root, maxRadius)
    if not player or not root or not root.Parent or isInSafeZone(player) then return false end
    local zoneTrack = LastZoneChangeTime[player]
    if zoneTrack and (os.clock() - zoneTrack.Time) < CONFIG.ZoneSwitchDelay then return false end
    return (root.Position - LocalCharacterData.Root.Position).Magnitude <= maxRadius
end

local function updateLockedTarget()
    local currentTime = os.clock()
    if currentTime < cooldownUntil then return nil, nil end

    if lockedTarget and lockedTargetRoot then
        if validateTarget(lockedTarget, lockedTargetRoot, CONFIG.LeaveAttackRadius) then
            return lockedTarget, lockedTargetRoot
        else
            lockedTarget, lockedTargetRoot = nil, nil
            cooldownUntil = currentTime + CONFIG.SwitchCooldown
            return nil, nil
        end
    end

    if not LocalCharacterData or isInSafeZone(LocalPlayer) then return nil, nil end

    local myPos = LocalCharacterData.Root.Position
    local closestPlayer, closestRoot, shortestDist = nil, nil, CONFIG.EnterAttackRadius

    for i = 1, #ActivePlayers do
        local p = ActivePlayers[i]
        local data = CharacterCache[p]
        if data and data.Character.Parent and validateTarget(p, data.Root, CONFIG.EnterAttackRadius) then
            local dist = (data.Root.Position - myPos).Magnitude
            if dist <= shortestDist then
                shortestDist = dist
                closestPlayer, closestRoot = p, data.Root
            end
        end
    end

    lockedTarget, lockedTargetRoot = closestPlayer, closestRoot
    return closestPlayer, closestRoot
end

local function onRenderStep()
    if not AuraEnabled or not LocalCharacterData then return end
    local target, targetRoot = updateLockedTarget()
    local myHum = LocalCharacterData.Humanoid

    if target and targetRoot then
        if myHum.AutoRotate then myHum.AutoRotate = false end
        local targetPos = targetRoot.Position
        LocalCharacterData.Root.CFrame = CFrame.lookAt(LocalCharacterData.Root.Position, Vector3.new(targetPos.X, LocalCharacterData.Root.Position.Y, targetPos.Z))
    else
        if not myHum.AutoRotate then myHum.AutoRotate = true end
    end
end

task.spawn(function()
    while true do
        task.wait(CONFIG.AttackDelay)
        if AuraEnabled and not isInSafeZone(LocalPlayer) and LocalCharacterData then
            local target, targetRoot = updateLockedTarget()
            local isBlocking = LocalPlayer:FindFirstChild("Blocking") and LocalPlayer.Blocking.Value == true

            if target and targetRoot and not isBlocking then
                innerPayloadData.Victim = target
                innerPayloadData.Vector = (targetRoot.Position - LocalCharacterData.Root.Position).Unit
                table.clear(singlePayload)
                singlePayload[target.Name] = innerPayloadData
                HitRemote:FireServer(singlePayload)
            end
        end
    end
end)

local UI_Parent = type(gethui) == "function" and gethui() or CoreGui
local OldGui = UI_Parent:FindFirstChild("SranyHubPanel")
if OldGui then OldGui:Destroy() end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SranyHubPanel"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = UI_Parent

local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 180, 0, 95)
MainFrame.Position = UDim2.new(0.75, 0, 0.35, 0)
MainFrame.BackgroundColor3 = CONFIG.ColorPanel
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Parent = ScreenGui

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

local TitleLabel = Instance.new("TextLabel")
TitleLabel.Size = UDim2.new(0, 120, 0, 30)
TitleLabel.Position = UDim2.new(0, 12, 0, 0)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Text = "hub"
TitleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
TitleLabel.Font = Enum.Font.GothamBold
TitleLabel.TextSize = 11
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left
TitleLabel.Parent = MainFrame

local CollapseButton = Instance.new("TextButton")
CollapseButton.Size = UDim2.new(0, 30, 0, 30)
CollapseButton.Position = UDim2.new(1, -35, 0, 0)
CollapseButton.BackgroundTransparency = 1
CollapseButton.Text = "â–²"
CollapseButton.TextColor3 = Color3.fromRGB(200, 200, 200)
CollapseButton.Font = Enum.Font.GothamBold
CollapseButton.TextSize = 14
CollapseButton.Parent = MainFrame

local Container = Instance.new("Frame")
Container.Name = "Container"
Container.Size = UDim2.new(1, 0, 1, -35)
Container.Position = UDim2.new(0, 0, 0, 35)
Container.BackgroundTransparency = 1
Container.Parent = MainFrame

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

local btn = Instance.new("TextButton")
btn.Name = "AuraToggle"
btn.Size = UDim2.new(0, 160, 0, 42)
btn.BackgroundColor3 = CONFIG.ColorOff
btn.Text = "AURA: OFF"
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 10
btn.Parent = Container

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 8)
corner.Parent = btn

btn.MouseButton1Click:Connect(function()
    AuraEnabled = not AuraEnabled
    btn.Text = "AURA: " .. (AuraEnabled and "ON" or "OFF")
    btn.BackgroundColor3 = AuraEnabled and CONFIG.ColorOn or CONFIG.ColorOff
    
    if AuraEnabled then
        if not RenderConnection then RenderConnection = RunService.RenderStepped:Connect(onRenderStep) end
    else
        if RenderConnection then RenderConnection:Disconnect() RenderConnection = nil end
        if LocalCharacterData and LocalCharacterData.Humanoid then LocalCharacterData.Humanoid.AutoRotate = true end
        lockedTarget, lockedTargetRoot, cooldownUntil = nil, nil, 0
    end
end)

local isCollapsed = false
CollapseButton.MouseButton1Click:Connect(function()
    isCollapsed = not isCollapsed
    Container.Visible = not isCollapsed
    MainFrame.Size = isCollapsed and UDim2.new(0, 180, 0, 30) or UDim2.new(0, 180, 0, 95)
    CollapseButton.Text = isCollapsed and "â–¼" or "â–²"
end)

local dragging, dragInput, dragStart, startPos = false, nil, nil, nil
MainFrame.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = MainFrame.Position
        input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)
    end
end)
MainFrame.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end
end)
UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragging then
        local delta = input.Position - dragStart
        MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)
Kill Streak   Aura, Auto Attack, Target Lock & Safe Zone Check
Mobile Friendly
1,214 views
3 weeks ago

Aura, Auto Attack, Target Lock & Safe Zone Check

WORKING
Free

Description

Kill Streak uses anti-cheat protections, so some attacks may occasionally fail to register. The script comes with carefully optimized hardcoded settings, though advanced users can adjust values to suit their preferences.

Smart Aura System

Automatic Target Detection

Closest Target Priority

Target Lock Mechanism

Auto Face Enemy

Fast Auto Attack

Safe Zone Detection

Blocking Status Check

Character Cache Optimization

Anti-Switch Cooldown

Smooth Target Tracking

Draggable GUI

One-Click Toggle

Optimized Hardcoded Settings

Features

  • Kill Aura
  • farm
  • Auto Attack
  • Target Lock

Related Scripts