-- [[ 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 ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6af1dc8c1c966e67c2b83f48"))() end) end) --[[rscripts:analytics:end]] --[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] -- PepiGuzman | Throw Food For Animals -- discord.gg/pepiguzman local DISCORD = "https://discord.gg/pepiguzman" local KEY = "PepiGuzmanShop" if not game:IsLoaded() then game.Loaded:Wait() end local Players = game:GetService("Players") local RS = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local TeleportService = game:GetService("TeleportService") local HttpService = game:GetService("HttpService") local VirtualUser = game:GetService("VirtualUser") local LocalPlayer = Players.LocalPlayer if getgenv then local env = getgenv() if env.__PEPI_THROWFOOD then pcall(env.__PEPI_THROWFOOD) end end local ok, WindUI = pcall(function() return loadstring(game:HttpGet("https://raw.githubusercontent.com/Footagesus/WindUI/main/dist/main.lua"))() end) if not ok or not WindUI then warn("[PepiGuzman] could not load WindUI: " .. tostring(WindUI)) return end local Window = WindUI:CreateWindow({ Title = "PepiGuzman - Throw Food", Folder = "PepiGuzman", Author = "discord.gg/pepiguzman", Icon = "solar:bolt-bold", Theme = "Dark", ToggleKey = Enum.KeyCode.RightControl, KeySystem = { Key = {KEY}, Note = "Join our Discord to get the key: discord.gg/pepiguzman", URL = DISCORD, SaveKey = true, }, }) local alive = true local connections = {} local flags = {antiAfk = true, autoBonus = true} local cfg = { throwsPerCycle = 10, trainSeconds = 40, sellEvery = 8, upgradeEvery = 4, walkSpeed = 16, jumpPower = 50, } local stats = {throws = 0, failed = 0, sold = 0, perfect = 0, tapPoint = 0.9} local function notify(title, content) pcall(function() WindUI:Notify({Title = title, Content = content, Duration = 4}) end) end local function remote(name) local folder = RS:FindFirstChild("Remotes") return folder and folder:FindFirstChild(name) end local function invoke(name, ...) local r = remote(name) if not r or not r:IsA("RemoteFunction") then return nil end local args = table.pack(...) local s, res = pcall(function() return r:InvokeServer(table.unpack(args, 1, args.n)) end) if s then return res end return nil end local function isOk(res) return type(res) == "table" and res.Ok == true end local Data, Cfg = nil, {} task.spawn(function() pcall(function() local ctl = LocalPlayer:WaitForChild("PlayerScripts", 20):WaitForChild("Client", 20):WaitForChild("Controllers", 20) Data = require(ctl:WaitForChild("DataController", 20)) end) pcall(function() local c = RS:WaitForChild("Config", 20) for _, n in ipairs({"FoodsConfig", "StandsConfig", "FenceConfig"}) do Cfg[n] = require(c:WaitForChild(n, 20)) end end) end) local function get(key) if not Data then return nil end local s, v = pcall(function() return Data:Get(key) end) if s then return v end return nil end local function money() return tonumber(get("Money")) or 0 end local function root() local c = LocalPlayer.Character return c and c:FindFirstChild("HumanoidRootPart") end local function myPlot() local idx = LocalPlayer:GetAttribute("PlotIndex") local plots = workspace:FindFirstChild("Plots") return idx and plots and plots:FindFirstChild(tostring(idx)) end local function spawnLoop(flag, interval, fn) task.spawn(function() while alive do if flags[flag] then local s, e = pcall(fn) if not s then warn("[PepiGuzman] " .. flag .. ": " .. tostring(e)) end end task.wait(type(interval) == "function" and interval() or interval) end end) end local training = false local function startTraining() if training then return end training = isOk(invoke("Training_Start")) end local function stopTraining() if not training then return end invoke("Training_Stop") training = false end local ThrowController, ClientState task.spawn(function() pcall(function() local ctl = LocalPlayer:WaitForChild("PlayerScripts", 20):WaitForChild("Client", 20):WaitForChild("Controllers", 20) ThrowController = require(ctl:WaitForChild("ThrowController", 20)) ClientState = require(ctl:WaitForChild("ClientState", 20)) end) end) local function tapScreen() local vim = game:GetService("VirtualInputManager") local vp = workspace.CurrentCamera.ViewportSize local x, y = vp.X * 0.62, vp.Y * 0.42 vim:SendMouseButtonEvent(x, y, 0, true, game, 1) vim:SendMouseButtonEvent(x, y, 0, false, game, 1) end local function findMeter() local pg = LocalPlayer:FindFirstChild("PlayerGui") if not pg then return nil end for _, d in ipairs(pg:GetDescendants()) do if d.Name == "Meter" and d:FindFirstChild("Bar") and d.Bar:FindFirstChild("Marker") then return d end end return nil end do local meter, tapped, lastU, born = nil, false, 0, 0 table.insert(connections, RunService.RenderStepped:Connect(function() if not (flags.fullAuto or flags.autoThrow) or not ClientState or ClientState.Busy ~= "Throw" then meter = nil return end if not meter or not meter.Parent then meter = findMeter() if not meter then return end tapped, lastU, born = false, 0, os.clock() end if tapped then return end local marker = meter.Bar.Marker local u = 1 - marker.Position.Y.Scale local rising = u > lastU lastU = u if os.clock() - born > 0.45 and rising and u >= stats.tapPoint then tapped = true tapScreen() task.delay(0.2, function() local final = 1 - marker.Position.Y.Scale if final >= 0.92 then stats.perfect = stats.perfect + 1 else stats.tapPoint = math.min(0.97, stats.tapPoint + 0.015) end end) end end)) end local function throwOnce() if training then stopTraining() end if not ThrowController or not ThrowController.Start then task.wait(1) return false end if ClientState and (ClientState.Busy or ClientState.OfflineOpen) then task.wait(0.5) return false end local s, e = pcall(ThrowController.Start) if s then stats.throws = stats.throws + 1 else stats.failed = stats.failed + 1 warn("[PepiGuzman] throw: " .. tostring(e)) end task.wait(0.3) return s end task.spawn(function() local throwsDone, trainStart = 0, nil while alive do if flags.fullAuto then if throwsDone < cfg.throwsPerCycle then throwOnce() throwsDone = throwsDone + 1 trainStart = nil else trainStart = trainStart or os.clock() startTraining() task.wait(1) if os.clock() - trainStart >= cfg.trainSeconds then stopTraining() throwsDone = 0 end end elseif flags.autoThrow then throwOnce() throwsDone, trainStart = 0, nil elseif flags.autoTrain then startTraining() task.wait(1) else stopTraining() throwsDone, trainStart = 0, nil task.wait(0.5) end end end) do local ev = remote("Training_Bonus") if ev and ev:IsA("RemoteEvent") then table.insert(connections, ev.OnClientEvent:Connect(function(payload) if not flags.autoBonus then return end local id = type(payload) == "table" and payload.Id or payload if id ~= nil then task.spawn(invoke, "Training_TapBonus", id) end end)) end end local function animalCounts() local animals = get("Animals") local total, unplaced = 0, 0 if type(animals) == "table" then for _, e in pairs(animals) do total = total + 1 if type(e) == "table" and not e.Placed then unplaced = unplaced + 1 end end end return total, unplaced end local function placeSpot(plot, n) local size = plot.Size local x = ((n * 0.618) % 1 - 0.5) * (size.X - 8) local z = ((n * 0.382 + 0.17) % 1 - 0.5) * (size.Z - 8) return plot.Position + Vector3.new(x, size.Y / 2 + 0.5, z) end local lastSig, lastBest = nil, 0 spawnLoop("autoPlace", 2, function() local total = animalCounts() local sig = total .. ":" .. tostring(get("FenceLevel") or 0) if sig ~= lastSig or os.clock() - lastBest > 30 then lastSig, lastBest = sig, os.clock() invoke("Plot_EquipBest") end local plot, bp = myPlot(), LocalPlayer:FindFirstChildOfClass("Backpack") if plot and bp then local n = 0 for _, tool in ipairs(bp:GetChildren()) do local eggKey = tool:IsA("Tool") and tool:GetAttribute("EggKey") if eggKey then n = n + 1 local res = invoke("Egg_Place", eggKey, placeSpot(plot, n)) if type(res) == "table" and not res.Ok and (res.Reason == "Full" or res.Reason == "Outside") then break end task.wait(0.2) end end end end) spawnLoop("autoSell", function() return cfg.sellEvery end, function() local _, unplaced = animalCounts() if Data and unplaced == 0 then return end if flags.autoPlace then invoke("Plot_EquipBest") lastBest = os.clock() end if isOk(invoke("Plot_SellAll")) then stats.sold = stats.sold + 1 end end) spawnLoop("autoUpgrade", function() return cfg.upgradeEvery end, function() local cash = money() local stands, fence = Cfg.StandsConfig, Cfg.FenceConfig if stands and stands.Get then local nxt = stands.Get((get("Stand") or 0) + 1) if nxt and nxt.Price and cash >= nxt.Price and isOk(invoke("Stand_Upgrade")) then cash = money() end end if fence and fence.Upgrades then local up = fence.Upgrades[(get("FenceLevel") or 0) + 1] if up and up.Price and cash >= up.Price then invoke("Plot_UpgradeFence") end end end) spawnLoop("autoFood", 5, function() local foods = Cfg.FoodsConfig if not (Data and foods and foods.GetAny and foods.CountAll) then return end local cash = money() local equipped = tonumber(get("EquippedFood")) or 1 for i = foods.CountAll(), equipped + 1, -1 do local locked = false if foods.IsLocked then local s, r = pcall(foods.IsLocked, i) locked = s and r == true end if not locked then local food = foods.GetAny(i) local owned = false pcall(function() owned = Data:GetPath("OwnedFoods." .. i) == true end) if owned then invoke("Shop_Equip", i) break elseif food and food.Price and cash >= food.Price then if isOk(invoke("Shop_Buy", i)) then invoke("Shop_Equip", i) end break end end end end) spawnLoop("autoClaim", 20, function() invoke("Offline_Claim") if get("FreeAnimalClaimed") ~= true then invoke("Shop_ClaimFree") end end) table.insert(connections, LocalPlayer.Idled:Connect(function() if flags.antiAfk then pcall(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end) end end)) spawnLoop("antiAfk", 45, function() local vim = game:GetService("VirtualInputManager") vim:SendKeyEvent(true, Enum.KeyCode.LeftShift, false, game) task.wait(0.05) vim:SendKeyEvent(false, Enum.KeyCode.LeftShift, false, game) end) table.insert(connections, RunService.Stepped:Connect(function() local char = LocalPlayer.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then if flags.speed then hum.WalkSpeed = cfg.walkSpeed end if flags.jump then hum.UseJumpPower = true hum.JumpPower = cfg.jumpPower end end if flags.noclip and char then for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") and p.CanCollide then p.CanCollide = false end end end end)) table.insert(connections, UIS.JumpRequest:Connect(function() if flags.infJump then local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end)) do local s = pcall(function() local prompt = game:GetService("CoreGui"):WaitForChild("RobloxPromptGui", 10):WaitForChild("promptOverlay", 10) table.insert(connections, prompt.ChildAdded:Connect(function(child) if flags.autoRejoin and child.Name == "ErrorPrompt" then task.wait(2) TeleportService:Teleport(game.PlaceId, LocalPlayer) end end)) end) end local savedLighting local function setFullbright(on) if on then savedLighting = savedLighting or {Lighting.Brightness, Lighting.ClockTime, Lighting.FogEnd, Lighting.GlobalShadows, Lighting.Ambient} Lighting.Brightness, Lighting.ClockTime, Lighting.FogEnd, Lighting.GlobalShadows = 2, 14, 1e6, false Lighting.Ambient = Color3.new(1, 1, 1) elseif savedLighting then Lighting.Brightness, Lighting.ClockTime, Lighting.FogEnd, Lighting.GlobalShadows, Lighting.Ambient = table.unpack(savedLighting) savedLighting = nil end end local highlights = {} local function clearEsp() for _, h in pairs(highlights) do pcall(function() h:Destroy() end) end highlights = {} end spawnLoop("esp", 2, function() for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and not highlights[plr] then local h = Instance.new("Highlight") h.FillTransparency = 0.6 h.FillColor = Color3.fromRGB(255, 80, 200) h.OutlineColor = Color3.new(1, 1, 1) h.Adornee = plr.Character h.Parent = (gethui and gethui()) or game:GetService("CoreGui") highlights[plr] = h end end for plr, h in pairs(highlights) do if not plr.Parent or not plr.Character or h.Adornee ~= plr.Character then h:Destroy() highlights[plr] = nil end end end) local EVERYTHING = {"fullAuto", "autoPlace", "autoSell", "autoUpgrade", "autoFood", "autoClaim", "autoBonus", "antiAfk", "autoRejoin"} local Farm = Window:Tab({Title = "Farm", Icon = "solar:leaf-bold"}) Farm:Toggle({ Title = "EVERYTHING (one click)", Desc = "Turns on the farm and every auto feature.", Value = false, Callback = function(v) for _, k in ipairs(EVERYTHING) do flags[k] = v end if not v then flags.antiAfk, flags.autoBonus = true, true end end, }) Farm:Toggle({ Title = "Full auto farm", Desc = "Perfect throws, then training, over and over.", Value = false, Callback = function(v) flags.fullAuto = v end, }) Farm:Slider({ Title = "Throws before training", Value = {Min = 1, Max = 100, Default = 10}, Step = 1, Callback = function(v) cfg.throwsPerCycle = tonumber(v) or 10 end, }) Farm:Slider({ Title = "Training time (s)", Value = {Min = 5, Max = 300, Default = 40}, Step = 5, Callback = function(v) cfg.trainSeconds = tonumber(v) or 40 end, }) Farm:Toggle({ Title = "Auto perfect throw only", Value = false, Callback = function(v) flags.autoThrow = v end, }) Farm:Slider({ Title = "Meter tap point", Desc = "Marker height where it taps. 0.92+ is perfect.", Value = {Min = 0.8, Max = 0.97, Default = 0.9}, Step = 0.01, Callback = function(v) stats.tapPoint = tonumber(v) or 0.9 end, }) Farm:Toggle({ Title = "Auto train only", Value = false, Callback = function(v) flags.autoTrain = v end, }) Farm:Toggle({ Title = "Auto training bonus tap", Desc = "Takes the x2 rep bonus the moment it appears.", Value = true, Callback = function(v) flags.autoBonus = v end, }) local Eco = Window:Tab({Title = "Economy", Icon = "solar:wallet-bold"}) Eco:Toggle({Title = "Auto place best animals and eggs", Value = false, Callback = function(v) flags.autoPlace = v end}) Eco:Toggle({Title = "Auto sell", Value = false, Callback = function(v) flags.autoSell = v end}) Eco:Slider({ Title = "Sell check (s)", Value = {Min = 2, Max = 60, Default = 8}, Step = 1, Callback = function(v) cfg.sellEvery = tonumber(v) or 8 end, }) Eco:Toggle({Title = "Auto upgrade stand and fence", Value = false, Callback = function(v) flags.autoUpgrade = v end}) Eco:Slider({ Title = "Upgrade check (s)", Value = {Min = 1, Max = 30, Default = 4}, Step = 1, Callback = function(v) cfg.upgradeEvery = tonumber(v) or 4 end, }) Eco:Toggle({Title = "Auto buy and equip best food", Value = false, Callback = function(v) flags.autoFood = v end}) Eco:Toggle({Title = "Auto claim (offline earnings, free animal)", Value = false, Callback = function(v) flags.autoClaim = v end}) Eco:Button({ Title = "Equip best now", Callback = function() notify("Animals", isOk(invoke("Plot_EquipBest")) and "Best animals placed." or "Failed.") end, }) Eco:Button({ Title = "Sell now", Callback = function() notify("Sell", isOk(invoke("Plot_SellAll")) and "Sold." or "Nothing sold.") end, }) Eco:Button({ Title = "Claim now", Callback = function() invoke("Offline_Claim") invoke("Shop_ClaimFree") notify("Claim", "Tried offline earnings and the free animal.") end, }) local Player = Window:Tab({Title = "Player", Icon = "solar:user-bold"}) Player:Toggle({Title = "Anti AFK", Value = true, Callback = function(v) flags.antiAfk = v end}) Player:Toggle({Title = "Auto rejoin when kicked", Value = false, Callback = function(v) flags.autoRejoin = v end}) Player:Toggle({Title = "Walk speed", Value = false, Callback = function(v) flags.speed = v if not v then local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = 16 end end end}) Player:Slider({Title = "Speed", Value = {Min = 16, Max = 150, Default = 16}, Step = 1, Callback = function(v) cfg.walkSpeed = tonumber(v) or 16 end}) Player:Toggle({Title = "Jump power", Value = false, Callback = function(v) flags.jump = v end}) Player:Slider({Title = "Jump", Value = {Min = 50, Max = 250, Default = 50}, Step = 1, Callback = function(v) cfg.jumpPower = tonumber(v) or 50 end}) Player:Toggle({Title = "Infinite jump", Value = false, Callback = function(v) flags.infJump = v end}) Player:Toggle({Title = "Noclip", Value = false, Callback = function(v) flags.noclip = v end}) local Misc = Window:Tab({Title = "Misc", Icon = "solar:settings-bold"}) Misc:Toggle({Title = "Fullbright", Value = false, Callback = function(v) setFullbright(v) end}) Misc:Toggle({Title = "Player ESP", Value = false, Callback = function(v) flags.esp = v if not v then clearEsp() end end}) Misc:Button({ Title = "Teleport to my plot", Callback = function() local plot, hrp = myPlot(), root() if plot and hrp then hrp.CFrame = CFrame.new(plot.Position + Vector3.new(0, 6, 0)) else notify("Teleport", "Plot not found yet.") end end, }) Misc:Button({ Title = "Rejoin", Callback = function() TeleportService:Teleport(game.PlaceId, LocalPlayer) end, }) Misc:Button({ Title = "Server hop", Callback = function() local s, res = pcall(function() return HttpService:JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100")) end) if s and res and res.data then for _, sv in ipairs(res.data) do if sv.id ~= game.JobId and sv.playing < sv.maxPlayers then TeleportService:TeleportToPlaceInstance(game.PlaceId, sv.id, LocalPlayer) return end end end notify("Server hop", "No other server found.") end, }) local Info = Window:Tab({Title = "Info", Icon = "solar:info-circle-bold"}) local StatsPara = Info:Paragraph({Title = "Session", Desc = "Waiting..."}) task.spawn(function() while alive do task.wait(3) pcall(function() StatsPara:SetDesc(string.format("Throws: %d Perfect: %d Failed: %d Sells: %d\nTap point: %.2f Money: %s", stats.throws, stats.perfect, stats.failed, stats.sold, stats.tapPoint, Data and tostring(money()) or "?")) end) end end) Info:Paragraph({ Title = "PepiGuzman", Desc = "Join the Discord for updates, new scripts and the key.\n" .. DISCORD, }) Info:Button({ Title = "Copy Discord link", Callback = function() if setclipboard then setclipboard(DISCORD) notify("Discord", "Link copied: " .. DISCORD) else notify("Discord", DISCORD) end end, }) local function unload() alive = false for k in pairs(flags) do flags[k] = false end for _, c in ipairs(connections) do pcall(function() c:Disconnect() end) end pcall(stopTraining) pcall(clearEsp) pcall(setFullbright, false) pcall(function() Window:Destroy() end) end Info:Button({Title = "Unload script", Callback = unload}) if getgenv then getgenv().__PEPI_THROWFOOD = unload end notify("PepiGuzman", "Loaded. Right Ctrl hides the menu. discord.gg/pepiguzman")