-- [[ 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 ]] --[[ ZOMBIE FARM HUB v3.1 — ULTIMATE FINAL FIX (Real) FIX: GetRayCast nggak pernah return nil (crash shotgun loop) FIX: target MB = searah crosshair (bukan terdekat) ]] local Players = game:GetService("Players") local LP = Players.LocalPlayer local Workspace = game:GetService("Workspace") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") print("========== [ZOMBIE FARM HUB v3.1] ==========") -- ═══════════════════ CONFIG ═══════════════════ local CFG_FILE = "zombiefarm_cfg.txt" local CFG = { silent = true, fov = 90, dist = 400, aimHead = true, esp = true, aim360 = true, bigDmg = true, dmg = 999999, hs = 99, infAmmo = true, noRecoil = true, magicBullet = true, mbGap = 300, mbRange = 1000, aimAll = true, noSplit = true, expander = true, expandSize = 3, godMode = true, autoFire = false, uavSpeed = true, fpsBoost = true, fly = false, flySpeed = 60, flyBoost = 150, noclip = false, walkSpeed = 60, infJump = true, } local kills = 0 local unloadToken = false local conns = {} local ammoRegistry = {} local boostedSet = {} local expandedParts = {} local shotgunForced = {} local fireHooked = {} local gunSkills = {} local espCache = {} local flyKeys = {} local flying = false local flyConn = nil local noclipConn = nil local uavFolder = nil local scanQueued = true local pelletNum = 0 local modulesReady = false local godHooked = false local origSetAttr, origHurt = nil, nil -- ═══════════════════ SAVE / LOAD ═══════════════════ local function saveCFG() return pcall(function() local parts = {} for k, v in pairs(CFG) do local vs if type(v) == "string" then vs = '"' .. v .. '"' elseif type(v) == "boolean" then vs = tostring(v) else vs = tostring(v) end table.insert(parts, k .. "=" .. vs) end writefile(CFG_FILE, table.concat(parts, "\n")) end) end local function loadCFG() local ok, content = pcall(readfile, CFG_FILE) if not ok or type(content) ~= "string" then return end for line in string.gmatch(content, "[^\n]+") do local k, v = string.match(line, "^(%w+)=(.+)$") if k and v then if v == "true" then CFG[k] = true elseif v == "false" then CFG[k] = false elseif string.sub(v, 1, 1) == '"' then CFG[k] = string.sub(v, 2, -2) else CFG[k] = tonumber(v) or CFG[k] end end end end loadCFG() -- ═══════════════════ HELPERS ═══════════════════ local function track(conn) table.insert(conns, conn) return conn end local function sg(t, k) local ok, v = pcall(function() return t[k] end) if ok then return v end return nil end local function getChar() return LP.Character or (Workspace:FindFirstChild("Characters") and Workspace.Characters:FindFirstChild(LP.Name)) end local function getAimPart() return CFG.aimHead and "Head" or "Torso" end -- ═══════════════════ CORE: FPS BOOSTER ═══════════════════ local function applyFPSBoost() pcall(function() settings().Rendering.QualityLevel = Enum.QualityLevel.Level01 end) pcall(function() Lighting.GlobalShadows = false end) pcall(function() Lighting.FogEnd = 9e9 end) for _, v in ipairs(Lighting:GetChildren()) do if v:IsA("PostEffect") then pcall(function() v.Enabled = false end) end end for _, d in ipairs(Workspace:GetDescendants()) do if d:IsA("ParticleEmitter") or d:IsA("Trail") or d:IsA("Smoke") or d:IsA("Fire") or d:IsA("Sparkles") then pcall(function() d.Enabled = false end) end end end if CFG.fpsBoost then applyFPSBoost() print(">> [CORE] FPS booster: ON") end Workspace.DescendantAdded:Connect(function(d) if not CFG.fpsBoost then return end pcall(function() if d:IsA("ParticleEmitter") or d:IsA("Trail") or d:IsA("Smoke") or d:IsA("Fire") or d:IsA("Sparkles") then d.Enabled = false end end) end) task.spawn(function() while not unloadToken do if CFG.fpsBoost then pcall(function() Lighting.GlobalShadows = false end) end task.wait(3) end end) -- ═══════════════════ CORE: EXPANDER ═══════════════════ local function expandPart(part) if expandedParts[part] then return end if part.CanCollide then return end local ok, orig = pcall(function() return part.Size end) if not ok then return end expandedParts[part] = orig pcall(function() part.Size = orig * CFG.expandSize end) end local function restoreExpander() for part, orig in pairs(expandedParts) do pcall(function() part.Size = orig end) end expandedParts = {} end task.spawn(function() while not unloadToken do if CFG.expander then local entity = Workspace:FindFirstChild("Entity") if entity then for _, z in ipairs(entity:GetChildren()) do for _, p in ipairs(z:GetDescendants()) do if p:IsA("BasePart") then expandPart(p) end end end end for part, orig in pairs(expandedParts) do pcall(function() if part.Parent and part.Size ~= orig * CFG.expandSize then part.Size = orig * CFG.expandSize end end) end end task.wait(2) end end) -- ═══════════════════ CORE: TARGET FINDERS ═══════════════════ -- silent aim: cone-based local function getTargetSA(camPos, camLook) local entity = Workspace:FindFirstChild("Entity") if not entity then return nil end local best, bestScore = nil, math.huge for _, z in ipairs(entity:GetChildren()) do local hum = z:FindFirstChildWhichIsA("Humanoid") local part = z:FindFirstChild(getAimPart()) or z:FindFirstChild("Head") if hum and hum.Health > 0 and part then local toPart = part.Position - camPos local d = toPart.Magnitude if d <= CFG.dist and d > 2 then local score if CFG.aim360 then score = d else local angle = math.deg(math.acos(math.clamp(camLook:Dot(toPart.Unit), -1, 1))) if angle <= CFG.fov then score = angle * 2 + d * 0.05 end end if score and score < bestScore then bestScore = score best = part end end end end return best end -- magic bullet: paling SEARAH crosshair (45°), fallback terdekat local function getTargetMB(camPos, camLook) local entity = Workspace:FindFirstChild("Entity") if not entity then return nil end local target, bestAngle = nil, 45 for _, z in ipairs(entity:GetChildren()) do local hum = z:FindFirstChildWhichIsA("Humanoid") local head = z:FindFirstChild("Head") if hum and hum.Health > 0 and head then local to = head.Position - camPos local d = to.Magnitude if d <= CFG.mbRange and d > 2 then local angle = math.deg(math.acos(math.clamp(camLook:Dot(to.Unit), -1, 1))) if angle < bestAngle then bestAngle = angle target = head end end end end if not target then local bestDist = 300 for _, z in ipairs(entity:GetChildren()) do local hum = z:FindFirstChildWhichIsA("Humanoid") local head = z:FindFirstChild("Head") if hum and hum.Health > 0 and head then local d = (head.Position - camPos).Magnitude if d < bestDist then bestDist = d target = head end end end end return target end -- ═══════════════════ MODULE LOADER (retry) ═══════════════════ local GameMgr, CP, GunFire = nil, nil, nil local origGetRayCast, GunFireAtk = nil, nil local function tryLoadModules() if GunFireAtk then return true end for _, m in ipairs(getloadedmodules()) do local fn = m:GetFullName() if not GameMgr and m.Name == "GameMgr" and string.find(fn, "BaseManager", 1, true) then GameMgr = require(m) origGetRayCast = sg(GameMgr, "GetRayCast") end if not CP and m.Name == "ClientPlayer" and string.find(fn, "Object.ClientPlayer", 1, true) then CP = require(m) end if not GunFire and m.Name == "GunFire" then GunFire = require(m) GunFireAtk = sg(GunFire, "Atk") end end return GunFireAtk ~= nil end task.spawn(function() for i = 1, 60 do if tryLoadModules() then modulesReady = true print(">> [CORE] Modules loaded! (attempt #" .. i .. ")") if GameMgr and origGetRayCast then GameMgr.GetRayCast = function(self, useMouse, spread, ...) local cam = Workspace.CurrentCamera if not cam then return origGetRayCast(self, useMouse, spread, ...) end local camCF = cam.CFrame local entity = Workspace:FindFirstChild("Entity") if not entity then return origGetRayCast(self, useMouse, spread, ...) end local modeMB = CFG.magicBullet local modeSA = CFG.silent and not CFG.magicBullet if not modeMB and not modeSA then return origGetRayCast(self, useMouse, spread, ...) end -- TARGET PILIH local target = nil if CFG.aimAll and spread then -- shotgun pellet: rotasi pelletNum = pelletNum + 1 local list = {} for _, z in ipairs(entity:GetChildren()) do local hum = z:FindFirstChildWhichIsA("Humanoid") local head = z:FindFirstChild("Head") if hum and hum.Health > 0 and head then table.insert(list, {head = head, d = (head.Position - camCF.Position).Magnitude}) end end table.sort(list, function(a, b) return a.d < b.d end) if #list > 0 then local idx = ((pelletNum - 1) % math.min(8, #list)) + 1 target = list[idx].head end elseif modeMB then target = getTargetMB(camCF.Position, camCF.LookVector) else target = getTargetSA(camCF.Position, camCF.LookVector) end if not target then return origGetRayCast(self, useMouse, spread, ...) end pcall(function() cam.CFrame = CFrame.lookAt(camCF.Position, target.Position) end) local result = origGetRayCast(self, useMouse, spread, ...) pcall(function() cam.CFrame = camCF end) -- kena zombie langsung if result and result.Instance then local hm = result.Instance:FindFirstAncestorWhichIsA("Model") if hm and hm.Parent == entity then return result end end -- MAGIC PENETRATION if modeMB then local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Include params.FilterDescendantsInstances = {entity} local dir = (target.Position - camCF.Position).Unit local r2 = Workspace:Raycast(camCF.Position + dir * 0.3, dir * 10000, params) if r2 and r2.Instance then local m2 = r2.Instance:FindFirstAncestorWhichIsA("Model") if m2 and m2.Parent == entity then local vPos = (result and result.Position) or camCF.Position if (r2.Position - vPos).Magnitude <= CFG.mbGap then if result then result.Instance = r2.Instance result.Position = r2.Position result.Normal = r2.Normal result.Distance = r2.Distance return result else return {Position=r2.Position, Normal=r2.Normal, Instance=r2.Instance, Distance=r2.Distance, Material=r2.Material} end end end end end -- SAFE FALLBACKS — nggak pernah return nil ke shotgun loop if result then return result end if spread then return CFrame.lookAt(camCF.Position, target.Position) end return nil end print(">> [CORE] Aim system: OK") end scanQueued = true break end task.wait(1) end if not modulesReady then print(">> [CORE] Modules TIDAK ketemu — rejoin & run lagi") end end) -- ═══════════════════ CORE: GOD MODE ═══════════════════ local function applyGodMode() if godHooked then return end local cPlayer = CP and sg(CP, "cPlayer") or nil if not cPlayer then return end local sa = sg(cPlayer, "SetAttribute") if type(sa) ~= "function" then return end origSetAttr = sa pcall(function() cPlayer.maxHp = 999999 end) cPlayer.SetAttribute = function(self, key, value) if CFG.godMode then if key == "hp" then value = sg(self, "maxHp") or 999999 elseif key == "maxHp" then value = 999999 end end return origSetAttr(self, key, value) end local hu = sg(cPlayer, "Hurt") if type(hu) == "function" then origHurt = hu cPlayer.Hurt = function(self, ...) if CFG.godMode then return end return origHurt(self, ...) end end local netMsg = Workspace:FindFirstChild("Characters") and Workspace.Characters:FindFirstChild(LP.Name) and Workspace.Characters[LP.Name]:FindFirstChild("NetMessage") if netMsg then local setAttr = netMsg:FindFirstChild("SetAttribute") if setAttr then pcall(function() local cconns = getconnections(setAttr.OnClientEvent) for _, conn in ipairs(cconns) do local fn = conn.Function if type(fn) == "function" then conn:Disable() setAttr.OnClientEvent:Connect(function(...) local args = {...} local n = select("#", ...) if args[1] == "hp" then return end return fn(unpack(args, 1, n)) end) end end end) end end godHooked = true print(">> [CORE] God mode: OK") end task.spawn(function() for i = 1, 30 do applyGodMode() if godHooked then break end task.wait(1) end end) task.spawn(function() while not unloadToken do if CFG.godMode and CP then local cPlayer = sg(CP, "cPlayer") if cPlayer then pcall(function() if sg(cPlayer, "maxHp") ~= 999999 then cPlayer.maxHp = 999999 end if sg(cPlayer, "hp") and sg(cPlayer, "hp") < 999999 then cPlayer.hp = 999999 end end) end local char = getChar() if char then local hum = char:FindFirstChildWhichIsA("Humanoid") if hum and hum.Health < hum.MaxHealth then pcall(function() hum.Health = hum.MaxHealth end) end end end task.wait(0.5) end end) -- ═══════════════════ CORE: WEAPON SCAN ═══════════════════ local function hookWeapon(v) local detail = sg(v, "detail") local orig = sg(v, "RemoveBullet") if type(orig) ~= "function" or type(detail) ~= "table" then return end if ammoRegistry[v] then return end ammoRegistry[v] = orig v.RemoveBullet = function(self, n) if CFG.infAmmo then pcall(function() self.detail.ammo = 99999 end) return true end return orig(self, n) end end local function boostWeapon(v) local data = sg(v, "data") local detail = sg(v, "detail") if CFG.bigDmg then pcall(function() data.atk = CFG.dmg data.headshotMultiplier = CFG.hs v.level = 60 detail.rate = 10 if CFG.infAmmo then detail.ammo = 99999 end end) end if CFG.noRecoil then pcall(function() data.recoilVal = 0 end) pcall(function() data.vmRecoil = Vector3.zero end) pcall(function() data.recoilReduce = 0 end) local recoil = sg(data, "recoil") if type(recoil) == "table" then for _, key in ipairs({"AngleX_Min","AngleX_Max","AngleY_Min","AngleY_Max","AngleZ_Min","AngleZ_Max"}) do pcall(function() recoil[key] = 0 end) end end pcall(function() v.BSpread = 0 end) end if CFG.aimAll then if not rawget(v, "__origWT") then rawset(v, "__origWT", sg(data, "weaponType")) end pcall(function() data.weaponType = "Shotgun" end) shotgunForced[v] = true end end local function restoreShotgun() for v, _ in pairs(shotgunForced) do local orig = rawget(v, "__origWT") local data = sg(v, "data") if orig and type(data) == "table" then pcall(function() data.weaponType = orig end) end end shotgunForced = {} end local function hookFire(s) if rawget(s, "__fireHooked") then return end local origFire = sg(s, "Fire") if type(origFire) ~= "function" then return end rawset(s, "__fireHooked", true) fireHooked[s] = origFire s.Fire = function(self, event, a, b, ratio, ...) if CFG.noSplit and event == "Atk" and type(ratio) == "number" then ratio = 1 end return origFire(self, event, a, b, ratio, ...) end end local function restoreFire() for s, orig in pairs(fireHooked) do pcall(function() s.Fire = orig end) end fireHooked = {} end local function scanOnce() for _, v in pairs(getgc(true)) do if type(v) == "table" then if not boostedSet[v] then local ok, isWeapon = pcall(function() local data = sg(v, "data") local detail = sg(v, "detail") return type(data) == "table" and type(detail) == "table" and type(sg(detail, "bullet")) == "number" and type(sg(data, "atk")) == "number" end) if ok and isWeapon then boostedSet[v] = true pcall(hookWeapon, v) pcall(boostWeapon, v) end end if GunFireAtk and sg(v, "Atk") == GunFireAtk then gunSkills[v] = true if CFG.noSplit then pcall(hookFire, v) end end end end end task.spawn(function() while not unloadToken do if scanQueued then scanQueued = false pcall(scanOnce) end task.wait(8) scanQueued = true end end) -- ═══════════════════ CORE: AUTO-FIRE ═══════════════════ local function setAutoFire(on) CFG.autoFire = on if on then local found = false for s in pairs(gunSkills) do pcall(function() rawset(s, "isEnter", true) s:OnEnter() end) found = true end print("[AUTO-FIRE] " .. (found and "ON" or "ON (tunggu skill...)")) else for s in pairs(gunSkills) do pcall(function() rawset(s, "isEnter", false) end) end print("[AUTO-FIRE] OFF") end end task.spawn(function() while not unloadToken do if CFG.autoFire and modulesReady then for s in pairs(gunSkills) do pcall(function() rawset(s, "isEnter", true) s:OnEnter() end) end end task.wait(0.4) end end) -- ═══════════════════ CORE: FLY ═══════════════════ local function startFly() local char = getChar() local hrp = char and char:FindFirstChild("HumanoidRootPart") if not hrp then print("[FLY] HRP tidak ketemu") CFG.fly = false return end flying = true for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then pcall(function() p.CanCollide = false end) end end local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(9e9, 9e9, 9e9) bv.Velocity = Vector3.zero bv.Name = "__fly" bv.Parent = hrp flyConn = RunService.Heartbeat:Connect(function() if not flying then return end local cam = Workspace.CurrentCamera if not cam then return end local move = Vector3.zero if flyKeys[Enum.KeyCode.W] then move = move + cam.CFrame.LookVector end if flyKeys[Enum.KeyCode.S] then move = move - cam.CFrame.LookVector end if flyKeys[Enum.KeyCode.D] then move = move + cam.CFrame.RightVector end if flyKeys[Enum.KeyCode.A] then move = move - cam.CFrame.RightVector end if flyKeys[Enum.KeyCode.Space] then move = move + Vector3.new(0, 1, 0) end if flyKeys[Enum.KeyCode.LeftControl] or flyKeys[Enum.KeyCode.C] then move = move - Vector3.new(0, 1, 0) end local speed = UIS:IsKeyDown(Enum.KeyCode.LeftShift) and CFG.flyBoost or CFG.flySpeed bv.Velocity = move.Magnitude > 0 and move.Unit * speed or Vector3.zero end) end local function stopFly() flying = false if flyConn then flyConn:Disconnect() flyConn = nil end local char = getChar() if char then local hrp = char:FindFirstChild("HumanoidRootPart") if hrp then local bv = hrp:FindFirstChild("__fly") if bv then bv:Destroy() end if not CFG.noclip then pcall(function() hrp.CanCollide = true end) end end end end -- ═══════════════════ CORE: NOCLIP ═══════════════════ local function setNoclipParts(on) local char = getChar() if not char then return end for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then pcall(function() p.CanCollide = not on end) end end end local function startNoclip() if noclipConn then return end noclipConn = RunService.Stepped:Connect(function() if CFG.noclip then setNoclipParts(true) end end) track(noclipConn) end local function stopNoclip() if noclipConn then pcall(function() noclipConn:Disconnect() end) noclipConn = nil end setNoclipParts(false) local char = getChar() if char and not CFG.fly then local hrp = char:FindFirstChild("HumanoidRootPart") if hrp then pcall(function() hrp.CanCollide = true end) end end end local function setNoclipState(on) CFG.noclip = on if on then startNoclip() else stopNoclip() end print("[NOCLIP] " .. (on and "ON" or "OFF")) end -- ═══════════════════ CORE: ESP ═══════════════════ local function addESP(z) if espCache[z] then return end if not z:FindFirstChild("HumanoidRootPart") and not z:FindFirstChild("Head") then return end local hl = Instance.new("Highlight") hl.FillTransparency = 0.75 hl.OutlineTransparency = 0 hl.FillColor = Color3.fromRGB(255, 60, 60) hl.OutlineColor = Color3.fromRGB(255, 0, 0) hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Parent = z espCache[z] = hl end local function removeESP(z) if espCache[z] then pcall(function() espCache[z]:Destroy() end) espCache[z] = nil end end task.spawn(function() while not unloadToken do local entity = Workspace:FindFirstChild("Entity") if entity then for _, z in ipairs(entity:GetChildren()) do if CFG.esp then addESP(z) else removeESP(z) end end end for z, _ in pairs(espCache) do if not z.Parent then removeESP(z) end end task.wait(2) end end) -- ═══════════════════ CORE: WALK SPEED ═══════════════════ task.spawn(function() while not unloadToken do local char = getChar() if char then local hum = char:FindFirstChildWhichIsA("Humanoid") if hum then pcall(function() hum.WalkSpeed = CFG.walkSpeed end) end end task.wait(0.5) end end) -- ═══════════════════ CORE: UAV SPEED ═══════════════════ task.spawn(function() uavFolder = Workspace:WaitForChild("UAV", 15) local uavPatched = {} while not unloadToken do if CFG.uavSpeed and uavFolder then for _, v in pairs(getgc(true)) do if type(v) == "table" and not uavPatched[v] then local obj = sg(v, "obj") local speed = sg(v, "speed") if typeof(obj) == "Instance" and obj:IsA("Model") and type(speed) == "number" then local cur = obj.Parent local inUAV = false while cur do if cur == uavFolder then inUAV = true break end cur = cur.Parent end if inUAV then uavPatched[v] = true pcall(function() v.speed = 500 end) local cfg = sg(v, "config") if type(cfg) == "table" then pcall(function() cfg.range = 50 end) end end end end end end task.wait(2) end end) print(">> [CORE] UAV speed: OK") -- ═══════════════════ GUI ═══════════════════ local guiParent = (gethui and pcall(gethui) and gethui()) or game:GetService("CoreGui") local screenGui = Instance.new("ScreenGui") screenGui.Name = "ZombieFarmHub" screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = guiParent local COLORS = { bg = Color3.fromRGB(16,16,20), sidebar = Color3.fromRGB(24,24,30), btn = Color3.fromRGB(38,38,48), btnActive = Color3.fromRGB(0,150,95), accent = Color3.fromRGB(0,255,150), text = Color3.fromRGB(215,215,220), textDim = Color3.fromRGB(140,140,150), sliderBar = Color3.fromRGB(48,48,60), danger = Color3.fromRGB(200,60,60), } local main = Instance.new("Frame") main.Size = UDim2.new(0, 580, 0, 460) main.Position = UDim2.new(0.5, -290, 0.5, -230) main.BackgroundColor3 = COLORS.bg main.BorderSizePixel = 0 main.Active = true main.Draggable = true main.Parent = screenGui local mc = Instance.new("UICorner") mc.CornerRadius = UDim.new(0, 12) mc.Parent = main local sidebar, content local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 40) titleBar.BackgroundColor3 = COLORS.sidebar titleBar.BorderSizePixel = 0 titleBar.Parent = main local tbc = Instance.new("UICorner") tbc.CornerRadius = UDim.new(0, 12) tbc.Parent = titleBar local titleLbl = Instance.new("TextLabel") titleLbl.Size = UDim2.new(1, -50, 1, 0) titleLbl.Position = UDim2.new(0, 14, 0, 0) titleLbl.BackgroundTransparency = 1 titleLbl.Text = "🧟 ZOMBIE FARM HUB v3.1" titleLbl.TextColor3 = COLORS.accent titleLbl.Font = Enum.Font.GothamBold titleLbl.TextSize = 15 titleLbl.TextXAlignment = Enum.TextXAlignment.Left titleLbl.Parent = titleBar local minBtn = Instance.new("TextButton") minBtn.Size = UDim2.new(0, 28, 0, 22) minBtn.Position = UDim2.new(1, -36, 0.5, -11) minBtn.BackgroundColor3 = COLORS.btn minBtn.Text = "—" minBtn.TextColor3 = COLORS.text minBtn.Font = Enum.Font.GothamBold minBtn.TextSize = 13 minBtn.BorderSizePixel = 0 local mbc = Instance.new("UICorner") mbc.CornerRadius = UDim.new(0, 6) mbc.Parent = minBtn minBtn.Parent = titleBar local bodyHidden = false local function setBodyHidden(hide) bodyHidden = hide sidebar.Visible = not hide content.Visible = not hide main.Size = hide and UDim2.new(0, 580, 0, 40) or UDim2.new(0, 580, 0, 460) end minBtn.MouseButton1Click:Connect(function() setBodyHidden(not bodyHidden) end) sidebar = Instance.new("Frame") sidebar.Size = UDim2.new(0, 132, 1, -50) sidebar.Position = UDim2.new(0, 8, 0, 46) sidebar.BackgroundColor3 = COLORS.sidebar sidebar.BorderSizePixel = 0 sidebar.Parent = main local sbc = Instance.new("UICorner") sbc.CornerRadius = UDim.new(0, 8) sbc.Parent = sidebar content = Instance.new("Frame") content.Size = UDim2.new(1, -156, 1, -50) content.Position = UDim2.new(0, 148, 0, 46) content.BackgroundTransparency = 1 content.Parent = main local function mkSidebarBtn(text, order) local b = Instance.new("TextButton") b.Size = UDim2.new(1, -12, 0, 36) b.Position = UDim2.new(0, 6, 0, 6 + (order - 1) * 42) b.BackgroundColor3 = COLORS.btn b.TextColor3 = COLORS.text b.Font = Enum.Font.GothamSemibold b.TextSize = 13 b.Text = text b.BorderSizePixel = 0 local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 6) c.Parent = b b.Parent = sidebar return b end local function mkToggle(parent, labelText, order, default, cb) local row = Instance.new("Frame") row.Size = UDim2.new(1, -12, 0, 40) row.Position = UDim2.new(0, 6, 0, 6 + (order - 1) * 46) row.BackgroundTransparency = 1 row.Parent = parent local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, -64, 1, 0) lbl.BackgroundTransparency = 1 lbl.Text = labelText lbl.TextColor3 = COLORS.text lbl.Font = Enum.Font.Gotham lbl.TextSize = 13 lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = row local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 56, 0, 26) btn.Position = UDim2.new(1, -56, 0.5, -13) btn.BackgroundColor3 = default and COLORS.btnActive or COLORS.btn btn.Text = default and "ON" or "OFF" btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.GothamBold btn.TextSize = 12 btn.BorderSizePixel = 0 local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 13) c.Parent = btn btn.Parent = row btn.MouseButton1Click:Connect(function() default = not default btn.BackgroundColor3 = default and COLORS.btnActive or COLORS.btn btn.Text = default and "ON" or "OFF" cb(default) saveCFG() end) end local function mkSlider(parent, labelText, order, min, max, default, cb) local row = Instance.new("Frame") row.Size = UDim2.new(1, -12, 0, 42) row.Position = UDim2.new(0, 6, 0, 6 + (order - 1) * 46) row.BackgroundTransparency = 1 row.Parent = parent local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, 0, 0, 16) lbl.BackgroundTransparency = 1 lbl.Text = labelText .. ": " .. default lbl.TextColor3 = COLORS.text lbl.Font = Enum.Font.Gotham lbl.TextSize = 12 lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = row local bar = Instance.new("Frame") bar.Size = UDim2.new(1, 0, 0, 8) bar.Position = UDim2.new(0, 0, 0, 24) bar.BackgroundColor3 = COLORS.sliderBar bar.BorderSizePixel = 0 local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 4) c.Parent = bar bar.Parent = row local knob = Instance.new("Frame") knob.Size = UDim2.new(0, 16, 0, 16) knob.BackgroundColor3 = COLORS.accent knob.BorderSizePixel = 0 local c2 = Instance.new("UICorner") c2.CornerRadius = UDim.new(1, 0) c2.Parent = knob knob.Parent = bar local value = default local dragging = false local function setFromX(x) local rel = math.clamp((x - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1) value = math.floor(min + rel * (max - min) + 0.5) knob.Position = UDim2.new(rel, -8, 0.5, -8) lbl.Text = labelText .. ": " .. value cb(value) end knob.Position = UDim2.new((default - min) / (max - min), -8, 0.5, -8) local function onDown(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true setFromX(input.Position.X) end end bar.InputBegan:Connect(onDown) knob.InputBegan:Connect(onDown) track(UIS.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then setFromX(input.Position.X) end end)) track(UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 and dragging then dragging = false saveCFG() end end)) end local function mkPageBtn(parent, text, order, cb) local b = Instance.new("TextButton") b.Size = UDim2.new(1, -12, 0, 38) b.Position = UDim2.new(0, 6, 0, 6 + (order - 1) * 46) b.BackgroundColor3 = COLORS.btn b.TextColor3 = COLORS.text b.Font = Enum.Font.GothamSemibold b.TextSize = 14 b.Text = text b.BorderSizePixel = 0 local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 8) c.Parent = b b.Parent = parent b.MouseButton1Click:Connect(cb) return b end local pages = {} local function newPage(name) local f = Instance.new("Frame") f.Size = UDim2.new(1, 0, 1, 0) f.BackgroundTransparency = 1 f.Visible = false f.Parent = content pages[name] = f return f end local function showPage(name) for n, f in pairs(pages) do f.Visible = (n == name) end end -- PAGES local pCombat = newPage("combat") mkToggle(pCombat, "Silent Aim (K)", 1, CFG.silent, function(v) CFG.silent = v end) mkSlider(pCombat, "FOV", 2, 5, 180, CFG.fov, function(v) CFG.fov = v end) mkSlider(pCombat, "Max Distance", 3, 50, 800, CFG.dist, function(v) CFG.dist = v end) mkToggle(pCombat, "Aim Head (OFF=Torso)", 4, CFG.aimHead, function(v) CFG.aimHead = v end) mkToggle(pCombat, "ESP Zombie (P)", 5, CFG.esp, function(v) CFG.esp = v end) mkToggle(pCombat, "360° Aim (belakang kena)", 6, CFG.aim360, function(v) CFG.aim360 = v end) local pDmg = newPage("dmg") mkToggle(pDmg, "Big Damage", 1, CFG.bigDmg, function(v) CFG.bigDmg = v end) mkSlider(pDmg, "Damage", 2, 100, 999999, CFG.dmg, function(v) CFG.dmg = v end) mkSlider(pDmg, "Headshot x", 3, 2, 99, CFG.hs, function(v) CFG.hs = v end) mkToggle(pDmg, "Unlimited Ammo", 4, CFG.infAmmo, function(v) CFG.infAmmo = v end) mkToggle(pDmg, "No Recoil/Spread", 5, CFG.noRecoil, function(v) CFG.noRecoil = v end) local pBrutal = newPage("brutal") mkToggle(pBrutal, "Magic Bullet (tembus all)", 1, CFG.magicBullet, function(v) CFG.magicBullet = v end) mkSlider(pBrutal, "MB Gap", 2, 50, 2000, CFG.mbGap, function(v) CFG.mbGap = v end) mkSlider(pBrutal, "MB Range", 3, 250, 3000, CFG.mbRange, function(v) CFG.mbRange = v end) mkToggle(pBrutal, "AIM ALL (8 zombie/shot)", 4, CFG.aimAll, function(v) CFG.aimAll = v if not v then restoreShotgun() end end) mkToggle(pBrutal, "No Split DMG (full 8x)", 5, CFG.noSplit, function(v) CFG.noSplit = v end) mkToggle(pBrutal, "Hitbox Expander", 6, CFG.expander, function(v) CFG.expander = v if not v then restoreExpander() end end) mkSlider(pBrutal, "Expand Size", 7, 2, 10, CFG.expandSize, function(v) CFG.expandSize = v end) mkToggle(pBrutal, "God Mode (G)", 8, CFG.godMode, function(v) CFG.godMode = v end) local pFarm = newPage("farm") mkToggle(pFarm, "Auto-Fire (9)", 1, CFG.autoFire, function(v) setAutoFire(v) end) mkToggle(pFarm, "UAV Speed Hack", 2, CFG.uavSpeed, function(v) CFG.uavSpeed = v end) mkToggle(pFarm, "FPS Booster", 3, CFG.fpsBoost, function(v) CFG.fpsBoost = v if v then applyFPSBoost() end end) local killLbl = Instance.new("TextLabel") killLbl.Size = UDim2.new(1, -12, 0, 28) killLbl.Position = UDim2.new(0, 6, 0, 146) killLbl.BackgroundTransparency = 1 killLbl.Text = "Kills: 0" killLbl.TextColor3 = COLORS.accent killLbl.Font = Enum.Font.GothamBold killLbl.TextSize = 16 killLbl.TextXAlignment = Enum.TextXAlignment.Left killLbl.Parent = pFarm local hintLbl = Instance.new("TextLabel") hintLbl.Size = UDim2.new(1, -12, 0, 120) hintLbl.Position = UDim2.new(0, 6, 0, 184) hintLbl.BackgroundTransparency = 1 hintLbl.Text = "CARA NEMBUS JAUH:\n1. Bidik TEMBOK yang ada\n zombie di baliknya (ESP)\n2. Magic Bullet pilih target\n paling searah crosshair\n3. Tembak — nembus sampai\n 1000 studs" hintLbl.TextColor3 = COLORS.textDim hintLbl.Font = Enum.Font.Gotham hintLbl.TextSize = 12 hintLbl.TextXAlignment = Enum.TextXAlignment.Left hintLbl.TextYAlignment = Enum.TextYAlignment.Top hintLbl.Parent = pFarm local pMove = newPage("move") mkToggle(pMove, "Fly (F)", 1, CFG.fly, function(v) CFG.fly = v if v then startFly() else stopFly() end end) mkSlider(pMove, "Fly Speed", 2, 20, 200, CFG.flySpeed, function(v) CFG.flySpeed = v end) mkSlider(pMove, "Boost (Shift)", 3, 50, 500, CFG.flyBoost, function(v) CFG.flyBoost = v end) mkToggle(pMove, "Noclip (N)", 4, CFG.noclip, function(v) setNoclipState(v) end) mkSlider(pMove, "Walk Speed (+/-)", 5, 16, 200, CFG.walkSpeed, function(v) CFG.walkSpeed = v end) mkToggle(pMove, "Infinite Jump", 6, CFG.infJump, function(v) CFG.infJump = v end) local pMisc = newPage("misc") local saveBtn = mkPageBtn(pMisc, "💾 SAVE CONFIG", 1, function() local ok = saveCFG() saveBtn.Text = ok and "✅ SAVED!" or "❌ FAILED" task.delay(1.2, function() saveBtn.Text = "💾 SAVE CONFIG" end) end) local unloadBtn = mkPageBtn(pMisc, "🗑 UNLOAD GUI", 2, function() unload() end) unloadBtn.BackgroundColor3 = COLORS.danger local infoLbl = Instance.new("TextLabel") infoLbl.Size = UDim2.new(1, -12, 0, 140) infoLbl.Position = UDim2.new(0, 6, 0, 104) infoLbl.BackgroundTransparency = 1 infoLbl.Text = "Hotkeys:\nK = Silent | 9 = Auto-Fire | P = ESP\nF = Fly | N = Noclip | G = God | +/- = Speed\nRightShift = Hide GUI\n\nConfig: " .. CFG_FILE infoLbl.TextColor3 = COLORS.textDim infoLbl.Font = Enum.Font.Gotham infoLbl.TextSize = 12 infoLbl.TextXAlignment = Enum.TextXAlignment.Left infoLbl.TextYAlignment = Enum.TextYAlignment.Top infoLbl.Parent = pMisc local navBtns = {} local function addNav(name, label, order) local btn = mkSidebarBtn(label, order) navBtns[name] = btn btn.MouseButton1Click:Connect(function() showPage(name) for _, b in pairs(navBtns) do b.BackgroundColor3 = COLORS.btn end btn.BackgroundColor3 = COLORS.btnActive end) end addNav("combat", "🔫 COMBAT", 1) addNav("dmg", "💥 DAMAGE", 2) addNav("brutal", "😈 BRUTAL", 3) addNav("farm", "🌾 FARM", 4) addNav("move", "🕊 MOVE", 5) addNav("misc", "⚙️ MISC", 6) showPage("brutal") navBtns.brutal.BackgroundColor3 = COLORS.btnActive -- ═══════════════════ UNLOAD ═══════════════════ function unload() unloadToken = true setAutoFire(false) stopFly() stopNoclip() for z, _ in pairs(espCache) do removeESP(z) end restoreExpander() restoreShotgun() restoreFire() if godHooked and CP then local cPlayer = sg(CP, "cPlayer") if cPlayer then if origSetAttr then pcall(function() cPlayer.SetAttribute = origSetAttr end) end if origHurt then pcall(function() cPlayer.Hurt = origHurt end) end end end if GameMgr and origGetRayCast then pcall(function() GameMgr.GetRayCast = origGetRayCast end) end for t, orig in pairs(ammoRegistry) do pcall(function() t.RemoveBullet = orig end) end for _, c in ipairs(conns) do pcall(function() c:Disconnect() end) end screenGui:Destroy() print("========== [UNLOADED] ==========") end -- ═══════════════════ HOTKEYS ═══════════════════ track(UIS.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.K then CFG.silent = not CFG.silent print("[SILENT] " .. (CFG.silent and "ON" or "OFF")) saveCFG() elseif input.KeyCode == Enum.KeyCode.Nine then setAutoFire(not CFG.autoFire) saveCFG() elseif input.KeyCode == Enum.KeyCode.F then CFG.fly = not CFG.fly if CFG.fly then startFly() else stopFly() end print("[FLY] " .. (CFG.fly and "ON" or "OFF")) saveCFG() elseif input.KeyCode == Enum.KeyCode.N then setNoclipState(not CFG.noclip) saveCFG() elseif input.KeyCode == Enum.KeyCode.P then CFG.esp = not CFG.esp print("[ESP] " .. (CFG.esp and "ON" or "OFF")) saveCFG() elseif input.KeyCode == Enum.KeyCode.G then CFG.godMode = not CFG.godMode print("[GOD] " .. (CFG.godMode and "ON" or "OFF")) saveCFG() elseif input.KeyCode == Enum.KeyCode.Equals then CFG.walkSpeed = math.min(200, CFG.walkSpeed + 10) print("[WALK] " .. CFG.walkSpeed) saveCFG() elseif input.KeyCode == Enum.KeyCode.Minus then CFG.walkSpeed = math.max(16, CFG.walkSpeed - 10) print("[WALK] " .. CFG.walkSpeed) saveCFG() elseif input.KeyCode == Enum.KeyCode.RightShift then main.Visible = not main.Visible end flyKeys[input.KeyCode] = true end)) track(UIS.InputEnded:Connect(function(input) flyKeys[input.KeyCode] = nil end)) track(UIS.InputBegan:Connect(function(input, gpe) if gpe then return end if CFG.infJump and input.KeyCode == Enum.KeyCode.Space then local char = getChar() local hum = char and char:FindFirstChildWhichIsA("Humanoid") if hum then pcall(function() hum:ChangeState(Enum.HumanoidStateType.Jumping) end) end end end)) -- ═══════════════════ KILL TRACKER ═══════════════════ local entity = Workspace:FindFirstChild("Entity") local hookedZ = {} local function hookZombie(z) if hookedZ[z] then return end hookedZ[z] = true local hum = z:FindFirstChildWhichIsA("Humanoid") if not hum then return end hum.Died:Connect(function() kills = kills + 1 killLbl.Text = "Kills: " .. kills print("[KILL #" .. kills .. "] " .. z.Name) end) end if entity then for _, z in ipairs(entity:GetChildren()) do hookZombie(z) end entity.ChildAdded:Connect(function(z) task.wait(0.5) hookZombie(z) end) end local char0 = getChar() if char0 then char0.ChildAdded:Connect(function() scanQueued = true end) end LP.CharacterAdded:Connect(function(char) if flying then stopFly() end if CFG.noclip then setNoclipState(false) end scanQueued = true char.ChildAdded:Connect(function() scanQueued = true end) end) scanQueued = true if CFG.fly then task.delay(1, function() if not flying then startFly() end end) end print("========== [READY] ==========") print("v3.1: nembus jarak jauh (bidik tembok, target searah), no crash shotgun, GOD MODE")