-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[ Combat Surf Script — uses ai made DrawingUI lib ]] local ReplicatedStorage = game:GetService("ReplicatedStorage") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local ClientInventory = require(ReplicatedStorage.ClientInventory) local inv = ClientInventory.Inventory local UI = loadstring(game:HttpGet("https://lilslinger.neocities.org/docs/DrawingLib"))() -- ai fuck making a lib normally local win = UI:Window("Combat Surf", Vector2.new(300, 180)) local main = win:Tab("Weapon Modifications") local cfg = win:Tab("Config") -- Toggle UI visibility win:Keybind("Toggle UI", Enum.KeyCode.RightShift, function() win:SetVisible(not win._vis) end) -- ── Helpers ─────────────────────────────────────────── local function getWeapons() return { inv[LocalPlayer:GetAttribute("Primary")], inv[LocalPlayer:GetAttribute("Secondary")], inv[LocalPlayer:GetAttribute("Knife")], } end local function statChange(stat, val) for _, weapon in ipairs(getWeapons()) do if weapon and weapon.GunStats then weapon.GunStats[stat] = val end end end local function statChangeTable(tbl, values) if not tbl then return end for stat, val in pairs(values) do tbl[stat] = val end end -- ── Toggle states (used to break loops on disable) ─── local states = { infiniteAmmo = false, instantFire = false, noSpread = false, noRecoil = false, } -- ── Main tab ────────────────────────────────────────── main:Label("Weapon Modifications") main:Separator("features") main:Toggle("Infinite Ammo", false, function(bool) states.infiniteAmmo = bool if not bool then return end task.spawn(function() while states.infiniteAmmo do task.wait() statChange("Ammo", 999) statChange("CurrentAmmo", 999) end end) end) main:Toggle("Instant FireRate", false, function(bool) states.instantFire = bool if not bool then return end task.spawn(function() while states.instantFire do task.wait() statChange("FireRate", 0) end end) end) main:Toggle("No Spread", false, function(bool) states.noSpread = bool if not bool then return end task.spawn(function() while states.noSpread do task.wait() statChange("SprayPattern", {CFrame.new()}) for _, weapon in ipairs(getWeapons()) do if weapon and weapon.GunStats then statChangeTable(weapon.GunStats.Bloom, { MinBloom = 0, MaxBloom = 0, Snappiness = 100000, StableSpeed = 10000, }) end end end end) end) main:Toggle("No Recoil", false, function(bool) states.noRecoil = bool if not bool then return end task.spawn(function() while states.noRecoil do task.wait() for _, weapon in ipairs(getWeapons()) do if weapon and weapon.GunStats then statChangeTable(weapon.GunStats.Recoil, { RecoilY = 0, RecoilX = 0, RecoilZ = 0, ReturnSpeed = 1000, Snappiness = 0, }) end end end end) end) -- ── Config tab ──────────────────────────────────────── cfg:Keybind("Toggle UI", Enum.KeyCode.Insert, function() win:SetVisible(not win._vis) end)