free features OPEN SOURCE
Key Required

free features OPEN SOURCE

Arsenalghfrgrq8y7tr4q32y7r7ghfrgrq8y7tr4q32y7r7 2.9K views 169 executesUpdated Apr 27, 2026
5.0/ 5(4 votes)
40100% Positive
Lua Script•276 lines (8775 chars)
local actor = getactors()[1]

run_on_actor(actor, [=[
    local Players = game:getService 'Players'
    local ReplicatedStorage = game:getService 'ReplicatedStorage'
    local LocalPlayer = Players . LocalPlayer
    local Character = LocalPlayer . Character or LocalPlayer . CharacterAdded:Wait()
    local Camera = workspace . CurrentCamera
    local UserInputService = game:getService 'UserInputService'
    local Characters = ReplicatedStorage . StreamedAssets . ChrModels
    local PlayerName = LocalPlayer . Name
    local Weapons = ReplicatedStorage . Weapons
    local RunService = game:getService 'RunService'

    local Event = ReplicatedStorage ["###zzz###"]
    local Items = ReplicatedStorage . ItemData . Images

    local functions = {
        effect=..., 
        shoot=...,
        shoot2=...,
    }

    local data = {
        Data=...,
        Inventory=...,
        Loadout=...,
    }

    local InventoryData=...
    local Loadout=...
    local EquippedSkin=...
    local EquippedKillEffect=...

    for i,v in next, getgc(true) do
        if typeof(v) == 'table' and rawget(v, 'Loadout') and typeof(v.Items) == 'table' then
            data . Data=v
            data . Inventory=v . Items
            data . Loadout=v . Loadout
            InventoryData=v . Items
            Loadout=v . Loadout
        end
    end

    for i,v in next, getgc() do
        if typeof(v) == 'function' and islclosure(v) then 
            if debug.info(v, 'l') == 54994 then
                functions . effect=v
            end
        end
    end

    for i,v in next, getgc() do
        if typeof(v) == 'function' and islclosure(v) then
            if #getupvalues(v) == 29 then
                local idekwhatthefuckthisis = getupvalue(v, 13)
                if typeof(idekwhatthefuckthisis) == "table" then
                    for a,b in next, idekwhatthefuckthisis do
                        if typeof(b) == "function" and #getconstants(b) ~= 76 and #debug.info(b, 'n') == 10 then 
                            functions . shoot=b
                        end
                    end
                end
            end
        end
    end

    for i,v in next, getgc() do
        if typeof(v) == 'function' and debug.info(v, 'n') == 'CreateProjectile' then
            functions . shoot2=v
        end
    end

    
    local KillEffect
    KillEffect = hookfunction(functions.killeffect, newcclosure(function(...)
        local args = {...}
            if args[11] and tostring(args[11]):find(PlayerName) then
                if not EquippedKillEffect then return end 
                args[12] = EquippedKillEffect
            end
        return KillEffect(unpack(args))
    end))

    local function GetClosest()
        local ClosestPlayer=nil
        local ClosestDistance=math.huge

        for _,player in next, Players:GetPlayers() do
            if player == LocalPlayer then continue end
            local character=player . Character
            if not character then continue end
            local root=character:findFirstChild("HumanoidRootPart")
            if not root then continue end
            local humanoid=character:findFirstChild("Humanoid")
            if not humanoid or humanoid . Health <= 0 then continue end

            local sp,os=Camera:WorldToScreenPoint(root . Position)
            if not os then continue end

            local MousePos=UserInputService:GetMouseLocation()
            local distance=(Vector2.new(sp . X, sp . Y) - MousePos).Magnitude

            if distance < ClosestDistance then
                ClosestDistance=distance
                ClosestPlayer=player
            end
        end

        return ClosestPlayer
    end

    local BulletTP
    BulletTP=hookfunction(functions . shoot2, newcclosure(function(...)
        local args={...}
        local target=GetClosest()
        if target and target . Character and args[1] and tostring(args[1]):find(PlayerName) then 
            local head=target . Character:findFirstChild("Head")
            if head then
                args[5]=head . Position
            end
        end
        return BulletTP(unpack(args))
    end))

    local SilentAim2
    SilentAim2=hookfunction(functions . shoot, function(...)
        local results={SilentAim2(...)}

        local target=GetClosest()
        if target and target . Character then
            local head=target . Character:findFirstChild("Head")
            if head then
                results[1]=head
                results[2]=head . Position
            end
        end

        return unpack(results)
    end)

    local function AddEveryItem()
        if not InventoryData then return end
        for i,v in next, Items:GetChildren() do
            if InventoryData[v . Name] then
                for a,f in next, v:GetChildren() do
                    if not InventoryData[v . Name][f . Name] then 
                        InventoryData[v . Name][f . Name]=1
                    end
                end
            end
        end
    end

    local function ChangeSkin(skinname)
        if LocalPlayer:findFirstChild("Data") and LocalPlayer.Data:findFirstChild("Skin") then
            LocalPlayer.Data.Skin.Value=skinname
        end
    end

    local function ChangeGunSkin(name) 
        if LocalPlayer:findFirstChild("Equipped") then
            LocalPlayer.Equipped.Value=name
        end
    end

    local function ChangeMelee(skinname)
        if LocalPlayer:findFirstChild("Data") and LocalPlayer.Data:findFirstChild("Melee") then
            LocalPlayer.Data.Melee.Value=skinname
        end
    end

    local function ChangeKillEffect(skinname)
        if LocalPlayer:findFirstChild("Data") and LocalPlayer.Data:findFirstChild("KillEffect") then
            LocalPlayer.Data.KillEffect.Value=skinname
        end
    end

    local function ChangeAnnouncer(skinname)
        if LocalPlayer:findFirstChild("Data") and LocalPlayer.Data:findFirstChild("Announcer") then
            LocalPlayer.Data.Announcer.Value=skinname
        end
    end

    local function InfiniteAmmo()
        if ReplicatedStorage:findFirstChild("wkspc") and ReplicatedStorage.wkspc:findFirstChild("CurrentCurse") then
            ReplicatedStorage.wkspc.CurrentCurse.Value='Infinite Ammo'
        end
    end

    local function NoRecoil() 
        for i,v in next, Weapons:GetChildren() do
            if v:findFirstChild("RecoilControl") then
                v.RecoilControl.Value=0
            end
        end
    end

    local function FireRate() 
        for i,v in next, Weapons:GetChildren() do
            if v:findFirstChild("FireRate") then
                v.FireRate.Value=0.01
            end
            if v:findFirstChild("BFireRate") then 
                v.BFireRate.Value=0.01
            end
        end
    end

    local function NoSpread() 
        for i,v in next, Weapons:GetChildren() do
            if v:findFirstChild("MaxSpread") then
                v.MaxSpread.Value=0.01
            end
            if v:findFirstChild("SpreadRecovery") then
                v.SpreadRecovery.Value=0.01
            end
        end
    end

    local function FastReload() 
        for i,v in next, Weapons:GetChildren() do
            if v:findFirstChild("ReloadTime") then
                v.ReloadTime.Value=0.01
            end
        end
    end

    if Loadout then
        local rl=table.clone(Loadout)
        setmetatable(Loadout,{
            __index=rl,
            __newindex=function(s,i,v)
                warn("changed " .. i:lower() .. " to " .. v:lower())
                if i == 'Skin' then 
                    EquippedSkin = v
                    ChangeSkin(v)
                elseif i == 'Melee' then 
                    ChangeMelee(v) 
                elseif i == 'WeaponSkins' then 
                    ChangeGunSkin(v) 
                elseif i == 'KillEffect' then 
                    EquippedKillEffect = v
                    ChangeKillEffect(v) 
                elseif i == 'Announcer' then 
                    ChangeAnnouncer(v) 
                end
                rl[i]=v
            end
        })
        table.clear(Loadout)
    end

    RunService . Heartbeat:Connect(function()
        if not InventoryData then return end
        for _,v in next, Items:GetChildren() do
            if InventoryData[v . Name] then
                for _,f in next, v:GetChildren() do
                    if not InventoryData[v . Name][f . Name] then
                        AddEveryItem()
                        return
                    end
                end
            end
        end
    end)

    if Character and game:IsLoaded() then 
        AddEveryItem()
        InfiniteAmmo()
        NoRecoil()
        FireRate()
        NoSpread()
        FastReload()
    end
]=])

Features & Information

before reading please like the post for more! arsenal script — open source / abandoned was gonna make an arsenal script but im lowk lazy lol, the client is 50k+ lines and most functions arent findable via getgc so its just kinda boring at that point. anyone who has knowledge and knows what they're doing can continue it :) current features: unlock all, everything works in the ui in game silent aim for normal guns and crossbows etc, theres 2 functions for it gun mods: fast reload, no spread, fire rate, no recoil, infinite ammo @mnmnmmnmnmnmmnmnmmnmm on discord if you need help with anything. https://jumpshare.com/s/hcdCd7UfQ2LzihekgPBe client source linked above, gl :)

Community Comments (0)

No comments yet for this script.

More Scripts for Arsenal