Undetected Aim+Esp+Skin Changer Blox Strike
BloxStrike Keyless
Undetected Aim+Esp+Skin Changer Blox Strike
👤 alexriderr 👁 10 views ❤️ 0 likes ⏱ May 13, 2026
This BloxStrike script is keyless and includes features like aim lock, head aim only, and several skin-related functions. **Note:** Knife and glove skins are currently non-functional in the menu; only gun skins are working at the moment.
📋 Script Code
--[[
   Aimbot and ESP logic by korpsebunny and Skin Changer and enhanced feutures by ZipDip!
    🌸 Please do not re-upload or redistribute without credit. 🌸
]]

local themeColor = Color3.fromRGB(255, 182, 193)
local visibleColor = Color3.fromRGB(0, 255, 0)
local hiddenColor = Color3.fromRGB(255, 0, 0)
local EquippedSkins = {}
local connections = {}

-- Combat Settings (V17.1 Defaults)
local teamCheck = true 
local fov = 120
local aimbotEnabled = false
local espEnabled = true
local headAimEnabled = false
local wallCheckEnabled = true
local currentTarget = nil
local currentTargetDistance = 0

local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local HttpService = game:GetService("HttpService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

local visCache = {}

-- [[ 1. V17.1 UNIVERSAL TEAM CHECK ]]
local function isTeammate(player)
    if player.Team and LocalPlayer.Team and player.Team == LocalPlayer.Team then return true end
    if player.Team and LocalPlayer.Team and player.Team.Name == LocalPlayer.Team.Name then return true end
    if player.TeamColor == LocalPlayer.TeamColor and player.TeamColor.Name ~= "White" then return true end
    if player:GetAttribute("Team") and player:GetAttribute("Team") == LocalPlayer:GetAttribute("Team") then return true end
    return false
end

-- [[ 2. V17.1 HEALTH BAR SYSTEM ]]
local function applyHealth(char)
    if char:FindFirstChild("HealthBar") then return end
    local head = char:WaitForChild("Head", 5)
    if not head then return end
    local bb = Instance.new("BillboardGui", char)
    bb.Name = "HealthBar"; bb.Adornee = head; bb.Size = UDim2.new(0, 40, 0, 4); bb.StudsOffset = Vector3.new(0, 2, 0); bb.AlwaysOnTop = true
    local bg = Instance.new("Frame", bb); bg.Size = UDim2.new(1, 0, 1, 0); bg.BackgroundColor3 = Color3.new(0,0,0); bg.BorderSizePixel = 0
    local fill = Instance.new("Frame", bg); fill.Name = "Fill"; fill.Size = UDim2.new(1, 0, 1, 0); fill.BackgroundColor3 = Color3.new(0,1,0); fill.BorderSizePixel = 0
    local hum = char:WaitForChild("Humanoid")
    hum.HealthChanged:Connect(function()
        local p = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
        fill.Size = UDim2.new(p, 0, 1, 0)
        fill.BackgroundColor3 = Color3.fromHSV(p * 0.3, 1, 1)
    end)
end

-- [[ 3. V17.1 VISIBILITY CHECK ]]
local function isVisibleImmortal(player)
    local char = player.Character
    if not char then return false end
    local head = char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart")
    if not head then return false end
    local parts = Camera:GetPartsObscuringTarget({head.Position}, {LocalPlayer.Character, char})
    local anyVisible = (#parts == 0)
    if anyVisible then visCache[player] = tick() return true
    elseif visCache[player] and (tick() - visCache[player]) < 0.25 then return true end
    return false
end

-- [[ 4. CORE ENGINE (COMBAT + SKINS) ]]
connections.Main = RunService.RenderStepped:Connect(function()
    -- ESP & HEALTH
    for _, player in pairs(Players:GetPlayers()) do
        if player == LocalPlayer then continue end
        local char = player.Character
        if char and char:FindFirstChild("HumanoidRootPart") then
            local h = char:FindFirstChild("Highlight_Elite")
            local shouldShow = espEnabled and (not teamCheck or not isTeammate(player))
            
            if shouldShow then
                if not h then
                    h = Instance.new("Highlight", char)
                    h.Name = "Highlight_Elite"; h.FillTransparency = 0; h.OutlineColor = Color3.new(1,1,1)
                end
                h.Enabled = true
                h.FillColor = isVisibleImmortal(player) and visibleColor or hiddenColor
                applyHealth(char)
                if char:FindFirstChild("HealthBar") then char.HealthBar.Enabled = true end
            else
                if h then h.Enabled = false end
                if char:FindFirstChild("HealthBar") then char.HealthBar.Enabled = false end
            end
        end
    end

    -- AIMBOT (V17.1 REFINED)
    if aimbotEnabled and UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then
        local center = Camera.ViewportSize / 2
        
        -- Target Validation
        if currentTarget then
            local char = currentTarget.Character
            local hum = char and char:FindFirstChild("Humanoid")
            local part = char and (headAimEnabled and char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart"))
            
            if not char or not hum or hum.Health  fov * 1.5 then 
                    currentTarget = nil
                end
            end
        end

        -- Target Selection
        if not currentTarget then
            local closest, dist = nil, math.huge
            for _, p in pairs(Players:GetPlayers()) do
                if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then
                    if not teamCheck or not isTeammate(p) then
                        local part = headAimEnabled and p.Character:FindFirstChild("Head") or p.Character:FindFirstChild("HumanoidRootPart")
                        if part then 
                            if wallCheckEnabled and not isVisibleImmortal(p) then continue end
                            local pos, on = Camera:WorldToViewportPoint(part.Position)
                            local d = (Vector2.new(pos.X, pos.Y) - center).Magnitude
                            if on and d <= fov and d < dist then 
                                closest = p
                                dist = d 
                            end
                        end
                    end
                end
            end
            currentTarget = closest
        end

        -- Lock On
        if currentTarget and currentTarget.Character then
            local part = headAimEnabled and currentTarget.Character:FindFirstChild("Head") or currentTarget.Character:FindFirstChild("HumanoidRootPart")
            if part then
                local playerPos = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")) and LocalPlayer.Character.HumanoidRootPart.Position or Camera.CFrame.Position
                currentTargetDistance = (part.Position - playerPos).Magnitude
                
                local predictionFactor = math.clamp(0.05 + (currentTargetDistance / 2000), 0.02, 0.12)
                local predictedPosition = part.Position + (part.Velocity * predictionFactor)
                
                Camera.CFrame = Camera.CFrame:Lerp(CFrame.lookAt(Camera.CFrame.Position, predictedPosition), 0.2)
            end
        end
    else
        currentTarget = nil
    end

    -- SKIN CHANGER
    pcall(function()
        local vm = Camera:FindFirstChild("Viewmodel") or Camera:FindFirstChildOfClass("Model")
        if vm and EquippedSkins[vm.Name] then
            local weapon = vm:FindFirstChild("Weapon")
            if weapon then
                local skinName = EquippedSkins[vm.Name]
                local folder = ReplicatedStorage.Assets.Skins[vm.Name][skinName].Camera["Factory New"]
                for _, d in pairs(folder:GetChildren()) do
                    local part = weapon:FindFirstChild(d.Name, true)
                    if part and part:IsA("MeshPart") and not part:FindFirstChild("EliteSkin") then
                        for _, o in pairs(part:GetChildren()) do if o:IsA("SurfaceAppearance") then o:Destroy() end end
                        local n = d:Clone(); n.Name = "EliteSkin"; n.Parent = part; part.TextureID = ""
                    end
                end
            end
        end
    end)
end)

-- [[ 5. UI CONSTRUCTION ]]
local SkinMap = {}
pcall(function() SkinMap = HttpService:JSONDecode(readfile("SkinLibrary_Map.json")) end)

local function build()
    if game.CoreGui:FindFirstChild("Crystal_Legacy") then game.CoreGui.Crystal_Legacy:Destroy() end
    local sg = Instance.new("ScreenGui", game.CoreGui); sg.Name = "Crystal_Legacy"
    local main = Instance.new("Frame", sg); main.Size = UDim2.new(0, 480, 0, 350); main.Position = UDim2.new(0.5, -240, 0.5, -175); main.BackgroundColor3 = Color3.fromRGB(15,15,15); main.Active = true; main.Draggable = true
    Instance.new("UICorner", main); Instance.new("UIStroke", main).Color = themeColor
    
    local sidebar = Instance.new("Frame", main); sidebar.Size = UDim2.new(0, 110, 1, 0); sidebar.BackgroundColor3 = Color3.fromRGB(10,10,10); Instance.new("UICorner", sidebar)
    local container = Instance.new("Frame", main); container.Size = UDim2.new(1, -120, 1, -10); container.Position = UDim2.new(0, 115, 0, 5); container.BackgroundTransparency = 1
    
    local pages = {}
    local function createPage(name)
        local p = Instance.new("ScrollingFrame", container); p.Size = UDim2.new(1,0,1,0); p.BackgroundTransparency = 1; p.Visible = false; p.CanvasSize = UDim2.new(0,0,10,0); p.ScrollBarThickness = 2; pages[name] = p
        local b = Instance.new("TextButton", sidebar); b.Size = UDim2.new(1,0,0,35); b.Text = name:upper(); b.BackgroundColor3 = Color3.fromRGB(20,20,20); b.TextColor3 = Color3.new(1,1,1); b.Font = Enum.Font.GothamBold
        b.MouseButton1Click:Connect(function() for _, pg in pairs(pages) do pg.Visible = false end p.Visible = true end)
        Instance.new("UIListLayout", p).Padding = UDim.new(0, 2)
    end

    createPage("Combat"); createPage("Skins"); createPage("Inventory")
    pages.Combat.Visible = true; Instance.new("UIListLayout", sidebar).Padding = UDim.new(0,5)

    -- COMBAT
    local function tgl(txt, val, cb)
        local b = Instance.new("TextButton", pages.Combat); b.Size = UDim2.new(1,-10,0,32); b.BackgroundColor3 = Color3.fromRGB(25,25,25); b.Text = txt .. ": " .. (val and "ON" or "OFF"); b.TextColor3 = val and Color3.new(0,1,0) or Color3.new(1,0,0); b.Font = Enum.Font.GothamBold
        b.MouseButton1Click:Connect(function() val = not val; cb(val); b.Text = txt .. ": " .. (val and "ON" or "OFF"); b.TextColor3 = val and Color3.new(0,1,0) or Color3.new(1,0,0) end)
        Instance.new("UICorner", b)
    end
    tgl("AIMLOCK MASTER", aimbotEnabled, function(v) aimbotEnabled = v end)
    tgl("HEAD AIM ONLY", headAimEnabled, function(v) headAimEnabled = v end)
    tgl("WALL CHECK (VIS)", wallCheckEnabled, function(v) wallCheckEnabled = v end)
    tgl("SOLID ESP SYSTEM", espEnabled, function(v) espEnabled = v end)
    tgl("TEAM CHECK (CLEAN)", teamCheck, function(v) teamCheck = v end)
    
    local dLabel = Instance.new("TextLabel", pages.Combat); dLabel.Size = UDim2.new(1,-10,0,20); dLabel.BackgroundTransparency = 1; dLabel.TextColor3 = themeColor; dLabel.Font = Enum.Font.GothamBold; dLabel.TextSize = 12; dLabel.Text = "TARGET DISTANCE: N/A"
    spawn(function()
        while wait(0.1) do
            if currentTarget and currentTargetDistance then
                dLabel.Text = "TARGET DISTANCE: " .. math.floor(currentTargetDistance) .. "m"
            else
                dLabel.Text = "TARGET DISTANCE: N/A"
            end
        end
    end)

    local exit = Instance.new("TextButton", pages.Combat); exit.Size = UDim2.new(1,-10,0,32); exit.BackgroundColor3 = Color3.fromRGB(60,20,20); exit.Text = "TERMINATE SCRIPT"; exit.TextColor3 = Color3.new(1,1,1); exit.Font = Enum.Font.GothamBold
    exit.MouseButton1Click:Connect(function() for _, c in pairs(connections) do c:Disconnect() end sg:Destroy() end); Instance.new("UICorner", exit)

    -- SKINS (Accordion)
    local openCat = nil
    for weaponName, skins in pairs(SkinMap) do
        local catBtn = Instance.new("TextButton", pages.Skins); catBtn.Size = UDim2.new(1, -10, 0, 30); catBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30); catBtn.Text = weaponName; catBtn.TextColor3 = themeColor; catBtn.Font = Enum.Font.GothamBold; Instance.new("UICorner", catBtn)
        local skinList = Instance.new("Frame", pages.Skins); skinList.Size = UDim2.new(1, -10, 0, 0); skinList.Visible = false; Instance.new("UIListLayout", skinList).Padding = UDim.new(0, 2)
        catBtn.MouseButton1Click:Connect(function()
            if openCat and openCat ~= skinList then openCat.Visible = false; openCat.Size = UDim2.new(1, -10, 0, 0) end
            skinList.Visible = not skinList.Visible; skinList.Size = skinList.Visible and UDim2.new(1, -10, 0, #skins * 27) or UDim2.new(1, -10, 0, 0); openCat = skinList.Visible and skinList or nil
        end)
        for _, skin in pairs(skins) do
            local sBtn = Instance.new("TextButton", skinList); sBtn.Size = UDim2.new(1, 0, 0, 25); sBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20); sBtn.Text = "   + " .. skin.Name; sBtn.TextColor3 = Color3.new(1, 1, 1); sBtn.Font = Enum.Font.GothamMedium; sBtn.TextSize = 10
            sBtn.MouseButton1Click:Connect(function() EquippedSkins[weaponName] = skin.Name end)
        end
    end

    connections.K = UserInputService.InputBegan:Connect(function(i) if i.KeyCode == Enum.KeyCode.K then main.Visible = not main.Visible end end)
end

build()
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game BloxStrike
TypeKeyless
Authoralexriderr
Views10
Likes0
PublishedMay 13, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
Zombie Uprising, Aimbot, ESP, No Fog, Collect Powerups
Zombie Uprising, Aimbot, ESP, No Fog, Collect Powerups
Zombie Uprising • 👁 1
Keyless
AMBER Project Delta Script (No Keys) – Combat & Movement
AMBER Project Delta Script (No Keys) – Combat & Movement
Project Delta • 👁 2
Keyless
Silent Aim Rivals Script OP Keyless
Silent Aim Rivals Script OP Keyless
RIVALS • 👁 3
Keyless
Auto Farm Blox Fruits Scripts – Xeno Supported
Auto Farm Blox Fruits Scripts – Xeno Supported
Blox Fruits • 👁 6
Keyless
Kaiju Alpha Nexit Hub Auto Farm Buidlings Script
Kaiju Alpha Nexit Hub Auto Farm Buidlings Script
Kaiju Alpha • 👁 8
Keyless