local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local players = game:GetService("Players") local player = players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local HRP = character:WaitForChild("HumanoidRootPart") local humanoid = character:WaitForChild("Humanoid") local replicatedStorage = game:GetService("ReplicatedStorage") local gunRemote = replicatedStorage.Gun local TS = game:GetService("TweenService") local workspace = game:GetService("Workspace") local auto_farm = false local RunService = game:GetService("RunService") local zombieHeightOffset = 12 local gunDataPath = replicatedStorage:WaitForChild("GunData") local gunDataModule = require(gunDataPath) local antiAfk = false local weaponName local prevZombie = nil local blockedZombies = {} local zombieToCount = nil local zombieTimer = 0 local unfocusTimeZombie = 30 local unfocusTimeBoss = 100 local Window = Rayfield:CreateWindow({ Name = "Zombie Attack GUI", Icon = 0, LoadingTitle = "Rayfield Interface Suite", LoadingSubtitle = "by Sirius", Theme = "Default", ToggleUIKeybind = "G", DisableRayfieldPrompts = false, DisableBuildWarnings = false, ConfigurationSaving = { Enabled = true, FolderName = nil, FileName = "ZombieAttack" }, }) player.CharacterAdded:Connect(function(newCharacter) character = newCharacter HRP = character:WaitForChild("HumanoidRootPart") humanoid = character:WaitForChild("Humanoid") end) local function shootTarget(Zombie, Gun) local args = { [1] = { ["Normal"] = Vector3.new(0, 0, 0), ["Direction"] = Zombie.Head.Position, ["Name"] = Gun, ["Hit"] = Zombie.Head, ["Origin"] = Zombie.Head.Position, ["Pos"] = Zombie.Head.Position } } gunRemote:FireServer(unpack(args)) end local function getWeaponStats(Name : string) local result = gunDataModule[Name] if not result then warn("Didnt Find Result For: ",Name) end return gunDataModule[Name] end local VirtalInputService = game:GetService("VirtualInputManager") local autoFarmTab = Window:CreateTab("Auto Farm","rewind") autoFarmTab:CreateToggle({ Name = "Auto Kill Zombies", CurrentValue = false, Callback = function(state) auto_farm = state task.wait() print("Set auto_farm to",tostring(auto_farm)) end, }) autoFarmTab:CreateToggle({ Name = "Anti AFK", CurrentValue = false, Callback = function(state) antiAfk = state end, }) local function findWeapon() for _, container in pairs({player.Backpack, character}) do for _,item in pairs(container:GetChildren()) do if item:FindFirstChild("GunController") then if item.Name ~= "Guns" then return item.Name end end end end warn("Didnt Find Gun, possibly in lobby") return nil end local function equipWeapon(weaponName) warn("Equipping Gun!") local tool = player.Backpack:FindFirstChild(weaponName) or character:FindFirstChild(weaponName) if tool then tool.Parent = character end end local function getHighestZombie(zombieToCompare) local highestY = -9999999 local highestZombie = nil if zombieToCompare then for _,zombie in pairs(workspace.enemies:GetChildren()) do local Head = zombie:FindFirstChild("Head") local otherHead = zombieToCompare:FindFirstChild("Head") if Head and otherHead then if Head.Position.Y > highestY and Head.Position.Y < 1000 then if (zombie.Head.Position - zombieToCompare.Head.Position).Magnitude < 25 then if not(table.find(blockedZombies,zombie)) then highestY = Head.Position.Y highestZombie = zombie end end end end end elseif not highestZombie or not zombieToCompare then for _,zombie in pairs(workspace.enemies:GetChildren()) do local Head = zombie:FindFirstChild("Head") if Head then if Head.Position.Y > highestY then highestY = Head.Position.Y highestZombie = zombie end end end end return highestZombie end local testTab = Window:CreateTab("Test Tab", "rewind") testTab:CreateSection("Weapon") testTab:CreateButton({ Name = "Get Weapon", Callback = function() weaponName = findWeapon() if weaponName then warn("Weapon found:" , weaponName) Rayfield:Notify({ Title = "Weapon Found", Content = "Weapon:" , weaponName, " has been found.", Duration = 5, Image = 0 }) else warn("No weapon found, possibly in lobby?") end end, }) spawn(function() local lastTime = tick() while true do if auto_farm then local currentTime = tick() local deltaTime = currentTime - lastTime lastTime = currentTime weaponName = findWeapon() if weaponName then local autoFarmZombie if prevZombie then autoFarmZombie = getHighestZombie(prevZombie) else autoFarmZombie = getHighestZombie(nil) end zombieTimer += deltaTime zombieToCount = autoFarmZombie prevZombie = autoFarmZombie local boss = workspace.BossFolder:GetChildren()[1] if autoFarmZombie and not boss then if zombieTimer > unfocusTimeZombie then table.insert(blockedZombies,zombieToCount) zombieToCount = nil zombieTimer = 0 end end if boss then HRP.CFrame = boss.Head.CFrame + Vector3.new(math.random(0,10),zombieHeightOffset,math.random(0,10)) equipWeapon(weaponName) shootTarget(boss, weaponName) elseif autoFarmZombie then HRP.CFrame = autoFarmZombie.Head.CFrame + Vector3.new(0,zombieHeightOffset,0) equipWeapon(weaponName) shootTarget(autoFarmZombie, weaponName) else warn("Zombie or Boss Not Found") end end end if weaponName then task.wait(1/ (getWeaponStats(weaponName).Firerate)) else task.wait(1) end end end) local connection = RunService.Stepped:Connect(function() if auto_farm then HRP.Velocity = Vector3.zero character.Torso.Velocity = Vector3.zero end end) spawn(function() while wait(600) do if antiAfk then VirtalInputService:SendKeyEvent(true, Enum.KeyCode.M, false, nil) wait(0.1) VirtalInputService:SendKeyEvent(false, Enum.KeyCode.M, false, nil) end end end)