Swap Shot! Script (November 2026) – Test : Potassium

PUBLISHEDUPDATED
1 Available ScriptKeyless

Playing on mobile can feel super messy when everyone else is spinning around you, but using the Swap Shot! script helps even the odds.

You only get fifteen seconds with the gun before it swaps to someone else, so you have to run, hide, and shoot fast. Even if you die, you can use your abilities to mess with the living players.

If you want to track targets easily and see who’s holding the weapon, check out the working script below.

Swap Shot! Script – Test : Potassium & More

Test : Potassium & MoreFree
Test : Potassium
-- ESP Chams & NameTag System (Red = Has Gun or Knife, Blue = No Weapon)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

-- รายการคีย์เวิร์ดสำหรับตรวจสอบอาวุธ (ทั้งปืนและมีด/อาวุธประชิด)
local weaponKeywords = {
    -- ปืน
    "Gun", "Rifle", "Pistol", "Shotgun", "Sniper", "SMG", "Blaster", "Weapon", "Firearm", "AK47", "M4A1", "Glock",
    -- มีด / อาวุธประชิด
    "Knife", "Blade", "Dagger", "Sword", "Melee", "Karambit", "Bayonet", "Cutter"
}

local function isThreatWeapon(tool)
    if not tool or not tool:IsA("Tool") then return false end

    -- ตรวจสอบองค์ประกอบมาตรฐานของปืน (ถ้ามี)
    if tool:FindFirstChild("Ammo") or tool:FindFirstChild("Clip") or tool:FindFirstChild("GunScript") or tool:FindFirstChild("Muzzle") then
        return true
    end

    -- ตรวจสอบชื่อ Tool กับคีย์เวิร์ดของปืนและมีด
    local toolName = tool.Name:lower()
    for _, keyword in ipairs(weaponKeywords) do
        if string.find(toolName, keyword:lower()) then
            return true
        end
    end

    return false
end

local function setupESP(player)
    if player == LocalPlayer then return end

    local function hasWeapon(char)
        if not char then return false end
        for _, child in ipairs(char:GetChildren()) do
            if child:IsA("Tool") and isThreatWeapon(child) then
                return true
            end
        end
        return false
    end

    local function updateESP()
        local char = player.Character
        if not char or not char:FindFirstChild("HumanoidRootPart") or not char:FindFirstChild("Head") then
            if char then
                local hl = char:FindFirstChild("ChamsHighlight")
                if hl then hl:Destroy() end
                local tag = char.Head:FindFirstChild("ESPNameTag")
                if tag then tag:Destroy() end
            end
            return
        end

        local holdingWeapon = hasWeapon(char)
        local chamColor = holdingWeapon and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 0, 255)

        local highlight = char:FindFirstChild("ChamsHighlight")
        if not highlight then
            highlight = Instance.new("Highlight")
            highlight.Name = "ChamsHighlight"
            highlight.Adornee = char
            highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
            highlight.Parent = char
        end
        highlight.FillColor = chamColor
        highlight.OutlineColor = chamColor
        highlight.FillTransparency = 0.45
        highlight.OutlineTransparency = 0.1

        local head = char.Head
        local nameTag = head:FindFirstChild("ESPNameTag")
        if not nameTag then
            nameTag = Instance.new("BillboardGui")
            nameTag.Name = "ESPNameTag"
            nameTag.Size = UDim2.new(0, 120, 0, 50)
            nameTag.StudsOffset = Vector3.new(0, 2.5, 0)
            nameTag.AlwaysOnTop = true

            local textLabel = Instance.new("TextLabel")
            textLabel.Name = "NameText"
            textLabel.Size = UDim2.new(1, 0, 1, 0)
            textLabel.BackgroundTransparency = 1
            textLabel.TextScaled = true
            textLabel.Font = Enum.Font.FredokaOne
            textLabel.TextStrokeTransparency = 0
            textLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
            textLabel.Parent = nameTag

            nameTag.Parent = head
        end

        local textLabel = nameTag:FindFirstChild("NameText")
        if textLabel then
            textLabel.Text = player.Name
            textLabel.TextColor3 = chamColor
        end
    end

    RunService.RenderStepped:Connect(updateESP)
end

for _, player in ipairs(Players:GetPlayers()) do
    setupESP(player)
end

Players.PlayerAdded:Connect(function(player)
    setupESP(player)
end)

print("ESP Chams System (Gun & Knife) Loaded Successfully!")
Executor compatibility changes over time. Check current reports before testing.

Copy the code above into a compatible Roblox script executor if you choose to test it.

Swap Shot! Script Status

✓AvailabilityFree
$Price$0
◫CompatibilityDesktop & Mobile
★SafetyVerified

Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.

Frequently Asked Questions

What is a Swap Shot! script?

A Swap Shot! script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.

What features does this Swap Shot! script include?

Different scripts contain different code. This version includes: Test : Potassium.

How do you use the Swap Shot! script?

Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.

Can a Swap Shot! script get your Roblox account banned?

Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.

Does the Swap Shot! script work on mobile?

Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.

Check out our Roblox Scripts hub and Roblox Games Directory for more.

Leave a Comment