Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- repeat task.wait(0.5) until game:IsLoaded()
- getgenv().Star = "⭐"
- getgenv().Danger = "⚠️"
- getgenv().ExploitSpecific = "📜"
- -- API Calls
- local library = loadstring(game:HttpGet("https://pastebin.com/raw/kk6TYGLU", true))() -- Make sure the URL is valid
- getgenv().api = loadstring(game:HttpGet("https://pastebin.com/raw/ppB0aP2V", true))()
- local bssapi = loadstring(game:HttpGet("https://pastebin.com/raw/fb42MMty", true))() -- Ensure the correct library
- -- Ensure folder existence
- if not isfolder("ZenX") then
- makefolder("ZenX")
- end
- -- Script temporary variables
- local playerstatsevent = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("RetrievePlayerStats")
- local statstable = playerstatsevent:InvokeServer()
- local monsterspawners = game:GetService("Workspace"):WaitForChild("MonsterSpawners")
- local rarename
- -- Function to retrieve player stats
- function rtsg()
- return playerstatsevent:InvokeServer()
- end
- -- Function to equip a mask
- function maskequip(mask)
- local ohString1 = "Equip"
- local ohTable2 = {
- ["Mute"] = false,
- ["Type"] = mask,
- ["Category"] = "Accessory"
- }
- game:GetService("ReplicatedStorage").Events.ItemPackageEvent:InvokeServer(ohString1, ohTable2)
- end
- local lasttouched = nil
- local done = true
- local hi = false
- -- Load item types and stats cache
- local Items = require(game:GetService("ReplicatedStorage"):WaitForChild("EggTypes")).GetTypes()
- local v1 = require(game:GetService("ReplicatedStorage"):WaitForChild("ClientStatCache")):Get()
- -- Automatically claim an unoccupied hive
- local hives = game:GetService("Workspace"):WaitForChild("Honeycombs"):GetChildren()
- for i = #hives, 1, -1 do
- local hive = hives[i]
- if hive:FindFirstChild("Owner") and hive.Owner.Value == nil then
- game:GetService("ReplicatedStorage").Events.ClaimHive:FireServer(hive.HiveID.Value)
- end
- end
- -- Cleanup ZenX UI
- for _, v in pairs(game:GetService("CoreGui"):GetDescendants()) do
- if v:IsA("TextLabel") and string.find(v.Text, "ZenX v") then
- v.Parent.Parent:Destroy()
- end
- end
- -- Global table to manage script settings and states
- getgenv().temptable = {
- version = "3.4.0",
- blackfield = "Sunflower Field",
- redfields = {},
- bluefields = {},
- whitefields = {},
- shouldiconvertballoonnow = false,
- balloondetected = false,
- puffshroomdetected = false,
- magnitude = 60,
- blacklist = {""},
- running = false,
- configname = "",
- tokenpath = game:GetService("Workspace"):WaitForChild("Collectibles"),
- started = {
- vicious = false,
- mondo = false,
- windy = false,
- ant = false,
- monsters = false
- },
- detected = {
- vicious = false,
- windy = false
- },
- tokensfarm = false,
- converting = false,
- consideringautoconverting = false,
- honeystart = 0,
- grib = nil,
- gribpos = CFrame.new(0, 0, 0),
- honeycurrent = statstable.Totals.Honey,
- dead = false,
- float = false,
- pepsigodmode = false,
- pepsiautodig = false,
- alpha = false,
- beta = false,
- myhiveis = false,
- invis = false,
- windy = nil,
- sprouts = {
- detected = false,
- coords = {}
- },
- cache = {
- autofarm = false,
- killmondo = false,
- vicious = false,
- windy = false
- },
- allplanters = {},
- planters = {
- planter = {},
- cframe = {},
- activeplanters = {
- type = {},
- id = {}
- }
- },
- monstertypes = {"Ladybug", "Rhino", "Spider", "Scorpion", "Mantis", "Werewolf"},
- -- Find the closest planter bulb
- ["stopapypa"] = function(path, part)
- local closest
- for _, v in pairs(path:GetChildren()) do
- if v.Name ~= "PlanterBulb" and v:FindFirstChild("Soil") then
- if not closest or (part.Position - v.Soil.Position).magnitude < (part.Position - closest.Position).magnitude then
- closest = v.Soil
- end
- end
- end
- return closest
- end,
- coconuts = {},
- crosshairs = {},
- crosshair = false,
- coconut = false,
- act = 0,
- act2 = 0,
- -- Handle touched function
- ['touchedfunction'] = function(v)
- if lasttouched ~= v then
- if v.Parent.Name == "FlowerZones" then
- if v:FindFirstChild("ColorGroup") then
- local colorGroup = tostring(v.ColorGroup.Value)
- if colorGroup == "Red" then
- maskequip("Demon Mask")
- elseif colorGroup == "Blue" then
- maskequip("Diamond Mask")
- end
- else
- maskequip("Gummy Mask")
- end
- lasttouched = v
- end
- end
- end,
- runningfor = 0,
- oldtool = rtsg()["EquippedCollector"],
- -- Generate a CFrame offset
- ['gacf'] = function(part, st)
- return CFrame.new(part.Position.X, part.Position.Y + st, part.Position.Z)
- end
- }
- local planterst = {
- plantername = {},
- planterid = {}
- }
- -- Check if the player is blacklisted
- for _, v in pairs(temptable.blacklist) do
- if v == api.nickname then
- game.Players.LocalPlayer:Kick("You're blacklisted! Get clapped!")
- return -- Ensures script stops executing
- end
- end
- -- Initialize honeystart if it hasn't been set yet
- if temptable.honeystart == 0 then
- temptable.honeystart = statstable.Totals.Honey
- end
- -- Rename "TimerAttachment" to "Attachment" in MonsterSpawners
- for _, v in pairs(game:GetService("Workspace").MonsterSpawners:GetDescendants()) do
- if v.Name == "TimerAttachment" then
- v.Name = "Attachment"
- end
- end
- -- Rename specific MonsterSpawner objects for consistency
- for _, v in pairs(game:GetService("Workspace").MonsterSpawners:GetChildren()) do
- if v.Name == "RoseBush" then
- v.Name = "ScorpionBush"
- elseif v.Name == "RoseBush2" then
- v.Name = "ScorpionBush2"
- end
- end
- -- Categorize FlowerZones into red, blue, and white fields
- for _, v in pairs(game:GetService("Workspace").FlowerZones:GetChildren()) do
- if v:FindFirstChild("ColorGroup") then
- local colorGroup = v:FindFirstChild("ColorGroup").Value
- if colorGroup == "Red" then
- table.insert(temptable.redfields, v.Name)
- elseif colorGroup == "Blue" then
- table.insert(temptable.bluefields, v.Name)
- end
- else
- table.insert(temptable.whitefields, v.Name)
- end
- end
- local flowertable = {}
- -- Populate flowertable with the positions of all flowers
- for _, flower in pairs(game:GetService("Workspace").Flowers:GetChildren()) do
- table.insert(flowertable, flower.Position)
- end
- local masktable = {}
- -- Populate masktable with all masks in the Accessories folder
- for _, accessory in pairs(game:GetService("ReplicatedStorage").Accessories:GetChildren()) do
- if string.match(accessory.Name, "Mask") then
- table.insert(masktable, accessory.Name)
- end
- end
- local collectorstable = {}
- -- Populate collectorstable with the names of all collectors
- for _, collector in pairs(getupvalues(require(game:GetService("ReplicatedStorage").Collectors).Exists)) do
- for collectorName, _ in pairs(collector) do
- table.insert(collectorstable, collectorName)
- end
- end
- local fieldstable = {}
- -- Populate fieldstable with the names of all FlowerZones
- for _, field in pairs(game:GetService("Workspace").FlowerZones:GetChildren()) do
- table.insert(fieldstable, field.Name)
- end
- local toystable = {}
- -- Populate toystable with the names of all Toys
- for _, toy in pairs(game:GetService("Workspace").Toys:GetChildren()) do
- table.insert(toystable, toy.Name)
- end
- local spawnerstable = {}
- -- Populate spawnerstable with the names of all MonsterSpawners
- for _, spawner in pairs(game:GetService("Workspace").MonsterSpawners:GetChildren()) do
- table.insert(spawnerstable, spawner.Name)
- end
- local accesoriestable = {}
- -- Populate accesoriestable with the names of all accessories excluding "UpdateMeter"
- for _, accessory in pairs(game:GetService("ReplicatedStorage").Accessories:GetChildren()) do
- if accessory.Name ~= "UpdateMeter" then
- table.insert(accesoriestable, accessory.Name)
- end
- end
- -- Populate temptable.allplanters with the names of all planters from PlanterTypes
- for _, planterType in pairs(getupvalues(require(game:GetService("ReplicatedStorage").PlanterTypes).GetTypes)) do
- for planterName, _ in pairs(planterType) do
- table.insert(temptable.allplanters, planterName)
- end
- end
- local donatableItemsTable = {}
- local treatsTable = {}
- -- Populate donatableItemsTable with items that can be donated to Wind Shrine
- for itemName, item in pairs(Items) do
- if item.DonatableToWindShrine then
- table.insert(donatableItemsTable, itemName)
- end
- end
- -- Populate treatsTable with items that have TreatValue
- for itemName, item in pairs(Items) do
- if item.TreatValue then
- table.insert(treatsTable, itemName)
- end
- end
- -- Buff table with items and their decal IDs
- local buffTable = {
- ["Blue Extract"] = {b = false, DecalID = "2495936060"},
- ["Red Extract"] = {b = false, DecalID = "2495935291"},
- ["Oil"] = {b = false, DecalID = "2545746569"},
- ["Enzymes"] = {b = false, DecalID = "2584584968"},
- ["Glue"] = {b = false, DecalID = "2504978518"},
- ["Glitter"] = {b = false, DecalID = "2542899798"},
- ["Tropical Drink"] = {b = false, DecalID = "3835877932"}
- }
- -- Get accessory types and mask names
- local AccessoryTypes = require(game:GetService("ReplicatedStorage").Accessories).GetTypes()
- local MasksTable = {}
- for maskName, _ in pairs(AccessoryTypes) do
- if string.find(maskName, "Mask") and maskName ~= "Honey Mask" then
- table.insert(MasksTable, maskName)
- end
- end
- -- Sort the various tables
- table.sort(fieldstable)
- table.sort(accesoriestable)
- table.sort(toystable)
- table.sort(spawnerstable)
- table.sort(masktable)
- table.sort(temptable.allplanters)
- table.sort(collectorstable)
- table.sort(donatableItemsTable)
- table.sort(buffTable)
- table.sort(MasksTable)
- -- Function to convert honey
- function converthoney()
- task.wait(0)
- if temptable.converting then
- local playerGui = game.Players.LocalPlayer.PlayerGui.ScreenGui
- local activateButton = playerGui.ActivateButton
- local playerPosition = game.Players.LocalPlayer.SpawnPos.Value.Position
- local characterPosition = game.Players.LocalPlayer.Character.HumanoidRootPart.Position
- -- Check if honey making is active and if conditions are met to toggle it
- if activateButton.TextBox.Text ~= "Stop Making Honey" and activateButton.BackgroundColor3 ~= Color3.new(201, 39, 28)
- or (playerPosition - characterPosition).magnitude > 13 then
- api.tween(1, playerPosition * CFrame.fromEulerAnglesXYZ(0, 110, 0) + Vector3.new(0, 0, 9))
- task.wait(0.9)
- if activateButton.TextBox.Text ~= "Stop Making Honey" and activateButton.BackgroundColor3 ~= Color3.new(201, 39, 28)
- or (playerPosition - characterPosition).magnitude > 13 then
- game:GetService("ReplicatedStorage").Events.PlayerHiveCommand:FireServer("ToggleHoneyMaking")
- end
- task.wait(0.1)
- end
- end
- end
- -- Function to find and farm the closest flower
- function closestleaf()
- for _, flower in pairs(game.Workspace.Flowers:GetChildren()) do
- if not temptable.running and (flower.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude < temptable.magnitude / 1.4 then
- farm(flower)
- break
- end
- end
- end
- -- Float Pad
- local floatpad = Instance.new("Part")
- floatpad.Name = "FloatPad"
- floatpad.Parent = game:GetService("Workspace")
- floatpad.CanCollide = false
- floatpad.Anchored = true
- floatpad.Transparency = 1
- floatpad.Size = Vector3.new(10, 1, 10) -- You can adjust the size if needed
- -- Coconut Part
- local cocopad = Instance.new("Part")
- cocopad.Name = "Coconut Part"
- cocopad.Parent = game:GetService("Workspace")
- cocopad.Anchored = true
- cocopad.Transparency = 1
- cocopad.Size = Vector3.new(10, 1, 10) -- Adjust size if necessary
- cocopad.Position = Vector3.new(-307.52117919922, 105.91863250732, 467.86791992188)
- -- Ant Autofarm Part
- local antpart = Instance.new("Part")
- antpart.Name = "Ant Autofarm Part"
- antpart.Parent = workspace
- antpart.Position = Vector3.new(96, 47, 553)
- antpart.Anchored = true
- antpart.Size = Vector3.new(128, 1, 50)
- antpart.Transparency = 1
- antpart.CanCollide = false
- -- ZenX Configuration Table
- getgenv().ZenX = {
- rares = {}, -- Store rare items or collectibles
- priority = {}, -- Items or fields with priority
- bestfields = {
- red = "Pepper Patch", -- Best field for red items
- white = "Coconut Field", -- Best field for white items
- blue = "Stump Field" -- Best field for blue items
- },
- blacklistedfields = {}, -- Fields that are blacklisted
- killerZenX = {}, -- Custom ZenX killers
- bltokens = {}, -- Blacklisted tokens
- toggles = {
- farmduped = false, -- Toggle for farming duplicated items
- autofarm = false, -- Toggle for automatic farming
- farmclosestleaf = false, -- Toggle for farming the closest leaf
- farmbubbles = false, -- Toggle for farming bubbles
- autodig = false, -- Toggle for auto-digging
- farmrares = false, -- Toggle for farming rare items
- rgbui = false, -- Toggle for RGB UI
- farmflower = false, -- Toggle for farming flowers
- farmfuzzy = false, -- Toggle for farming fuzzy items
- farmcoco = false, -- Toggle for farming coconuts
- farmflame = false, -- Toggle for farming flame items
- farmclouds = false, -- Toggle for farming clouds
- killmondo = false, -- Toggle for killing Mondo
- killvicious = false, -- Toggle for killing Vicious
- loopspeed = false, -- Toggle for loop speed
- loopjump = false, -- Toggle for loop jump
- autoquest = false, -- Toggle for auto quests
- autoboosters = false, -- Toggle for auto boosters
- autodispense = false, -- Toggle for auto dispensing
- clock = false, -- Toggle for clock-related features
- freeantpass = false, -- Toggle for free ant pass
- honeystorm = false, -- Toggle for honey storm
- autodoquest = false, -- Toggle for auto doing quests
- disableseperators = false, -- Disable separators
- npctoggle = false, -- Toggle NPC actions
- loopfarmspeed = false, -- Toggle for farming speed
- mobquests = false, -- Toggle for mob quests
- traincrab = false, -- Toggle for crab training
- avoidmobs = false, -- Toggle for avoiding mobs
- farmsprouts = false, -- Toggle for farming sprouts
- enabletokenblacklisting = false, -- Enable token blacklisting
- farmunderballoons = false, -- Toggle for farming under balloons
- farmsnowflakes = false, -- Toggle for farming snowflakes
- collectgingerbreads = false, -- Toggle for collecting gingerbreads
- collectcrosshairs = false, -- Toggle for collecting crosshairs
- farmpuffshrooms = false, -- Toggle for farming puffshrooms
- tptonpc = false, -- Toggle for teleporting to NPCs
- donotfarmtokens = false, -- Toggle to avoid farming tokens
- convertballoons = false, -- Toggle for converting balloons
- autostockings = false, -- Toggle for auto stockings
- autosamovar = false, -- Toggle for auto samovars
- autoonettart = false, -- Toggle for auto onettarts
- autocandles = false, -- Toggle for auto candles
- autofeast = false, -- Toggle for auto feasts
- autoplanters = false, -- Toggle for auto planters
- autokillmobs = false, -- Toggle for killing mobs
- autoant = false, -- Toggle for auto-ant
- killwindy = false, -- Toggle for killing Windy
- godmode = false, -- Toggle for godmode
- disableconversion = false, -- Disable honey conversion
- autodonate = false, -- Toggle for auto donation
- autouseconvertors = false, -- Auto use converters
- honeymaskconv = false, -- Toggle for honey mask conversion
- resetbeeenergy = false, -- Reset bee energy
- enablestatuspanel = false, -- Enable status panel
- },
- vars = {
- field = "Ant Field", -- Default field
- convertat = 100, -- Conversion threshold
- farmspeed = 60, -- Farming speed
- prefer = "Tokens", -- Preferred item to farm
- walkspeed = 70, -- Walk speed
- jumppower = 70, -- Jump power
- npcprefer = "All Quests", -- Preferred NPC quests
- farmtype = "Walk", -- Farm type (e.g., walk or teleport)
- monstertimer = 3, -- Timer for monster spawns
- autodigmode = "Normal", -- Auto-dig mode
- donoItem = "Coconut", -- Donation item
- donoAmount = 25, -- Donation amount
- selectedTreat = "Treat", -- Selected treat
- selectedTreatAmount = 0, -- Amount of selected treat
- autouseMode = "Just Tickets", -- Auto-use mode for items
- autoconvertWaitTime = 10, -- Wait time before auto-conversion
- defmask = "Bubble", -- Default mask
- resettimer = 3, -- Timer to reset settings
- },
- dispensesettings = {
- blub = false, -- Dispense blue items
- straw = false, -- Dispense straw
- treat = false, -- Dispense treats
- coconut = false, -- Dispense coconuts
- glue = false, -- Dispense glue
- rj = false, -- Dispense royal jelly
- white = false, -- Dispense white items
- red = false, -- Dispense red items
- blue = false, -- Dispense blue items
- }
- }
- -- Save the default ZenX configuration
- local defaultZenX = ZenX
- -- Functions
- -- Get player stats from the StatCache
- function statsget()
- local StatCache = require(game.ReplicatedStorage.ClientStatCache)
- local stats = StatCache:Get()
- return stats
- end
- -- Function to farm a given position (usually a token or collectible)
- function farm(trying)
- -- Set the walk speed for farming if enabled in settings
- if ZenX.toggles.loopfarmspeed then
- game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = ZenX.vars.farmspeed
- end
- -- Move the character to the target position
- api.humanoid():MoveTo(trying.Position)
- -- Wait until the player reaches the target position or a condition is met
- repeat
- task.wait()
- until (trying.Position - api.humanoidrootpart().Position).magnitude <= 4 or not IsToken(trying) or not temptable.running
- end
- -- Disable all active toggles when needed
- function disableall()
- -- Disable autofarm if it's enabled and not currently converting
- if ZenX.toggles.autofarm and not temptable.converting then
- temptable.cache.autofarm = true
- ZenX.toggles.autofarm = false
- end
- -- Disable kill toggles for Mondo, Vicious, and Windy if they haven't started
- if ZenX.toggles.killmondo and not temptable.started.mondo then
- ZenX.toggles.killmondo = false
- temptable.cache.killmondo = true
- end
- if ZenX.toggles.killvicious and not temptable.started.vicious then
- ZenX.toggles.killvicious = false
- temptable.cache.vicious = true
- end
- if ZenX.toggles.killwindy and not temptable.started.windy then
- ZenX.toggles.killwindy = false
- temptable.cache.windy = true
- end
- end
- -- Enable all toggles that were previously disabled
- function enableall()
- -- Restore previous settings for toggles
- if temptable.cache.autofarm then
- ZenX.toggles.autofarm = true
- temptable.cache.autofarm = false
- end
- if temptable.cache.killmondo then
- ZenX.toggles.killmondo = true
- temptable.cache.killmondo = false
- end
- if temptable.cache.vicious then
- ZenX.toggles.killvicious = true
- temptable.cache.vicious = false
- end
- if temptable.cache.windy then
- ZenX.toggles.killwindy = true
- temptable.cache.windy = false
- end
- end
- -- Function to get tokens within a specified range (default is `fieldposition`)
- function gettoken(v3)
- if not v3 then
- v3 = fieldposition -- Use a default field position if none is provided
- end
- task.wait()
- -- Iterate through all collectibles in the workspace
- for e, r in next, game:GetService("Workspace").Collectibles:GetChildren() do
- local itb = false
- -- Check if the token has a blacklisted decal
- if r:FindFirstChildOfClass("Decal") and ZenX.toggles.enabletokenblacklisting then
- local decalId = string.split(r:FindFirstChildOfClass("Decal").Texture, 'rbxassetid://')[2]
- if api.findvalue(ZenX.bltokens, decalId) then
- itb = true
- end
- end
- -- If the token is within range and not blacklisted, farm it
- if tonumber((r.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude) <= temptable.magnitude / 1.4
- and not itb
- and (v3 - r.Position).magnitude <= temptable.magnitude then
- farm(r)
- end
- end
- end
- -- Function to handle sprinkler usage
- function makesprinklers()
- local sprinkler = rtsg().EquippedSprinkler -- Get the equipped sprinkler type
- local e = 1 -- Default number of sprinklers to use
- -- Determine the number of sprinklers based on the equipped type
- if sprinkler == "Basic Sprinkler" or sprinkler == "The Supreme Saturator" then
- e = 1
- elseif sprinkler == "Silver Soakers" then
- e = 2
- elseif sprinkler == "Golden Gushers" then
- e = 3
- elseif sprinkler == "Diamond Drenchers" then
- e = 4
- end
- -- Use the sprinklers (if more than 1, adjust jump power and wait)
- for i = 1, e do
- local k = api.humanoid().JumpPower -- Save current jump power
- if e ~= 1 then
- api.humanoid().JumpPower = 70 -- Set jump power for sprinkler use
- api.humanoid().Jump = true -- Make the character jump
- task.wait(.2) -- Wait for a moment
- end
- -- Trigger the sprinkler action
- game.ReplicatedStorage.Events.PlayerActivesCommand:FireServer({["Name"] = "Sprinkler Builder"})
- -- Restore jump power if it was modified
- if e ~= 1 then
- api.humanoid().JumpPower = k
- task.wait(1) -- Wait for a moment after restoring jump power
- end
- end
- end
- -- Function to kill mobs at specific locations
- function killmobs()
- -- Loop through all monster spawners
- for i, v in pairs(game:GetService("Workspace").MonsterSpawners:GetChildren()) do
- if v:FindFirstChild("Territory") then
- -- Skip certain monster names
- if v.Name ~= "Commando Chick" and v.Name ~= "CoconutCrab" and v.Name ~= "StumpSnail" and
- v.Name ~= "TunnelBear" and v.Name ~= "King Beetle Cave" and not v.Name:match("CaveMonster") and
- not v:FindFirstChild("TimerLabel", true).Visible then
- local monsterpart
- -- Identify the correct monster part to teleport to
- if v.Name:match("Werewolf") then
- monsterpart = game:GetService("Workspace").Territories.WerewolfPlateau.w
- elseif v.Name:match("Mushroom") then
- monsterpart = game:GetService("Workspace").Territories.MushroomZone.Part
- else
- monsterpart = v.Territory.Value
- end
- -- Move to the monster's territory and avoid mobs
- api.humanoidrootpart().CFrame = monsterpart.CFrame
- repeat
- api.humanoidrootpart().CFrame = monsterpart.CFrame -- Keep moving to the monster's position
- avoidmob() -- Avoid mobs
- task.wait(1) -- Wait before checking again
- until v:FindFirstChild("TimerLabel", true).Visible -- Wait until the mob's timer is visible
- -- Collect tokens after the mob has been killed
- for i = 1, 4 do
- gettoken(monsterpart.Position)
- end
- end
- end
- end
- end
- -- Function to check if a given token is valid
- function IsToken(token)
- -- Return false if token doesn't exist or doesn't meet necessary conditions
- if not token or not token.Parent then
- return false
- end
- -- Ensure the token has a valid orientation and a "FrontDecal" (specific to certain tokens)
- if token.Orientation.Z ~= 0 then
- return false
- end
- if not token:FindFirstChild("FrontDecal") then
- return false
- end
- -- Ensure token is a "Part" and not something else
- if not token:IsA("Part") then
- return false
- end
- return true -- If all conditions are met, the token is valid
- end
- -- Generic check function to ensure an object exists and is valid
- function check(ok)
- if not ok or not ok.Parent then -- Return false if the object or its parent doesn't exist
- return false
- end
- return true -- If the object exists, return true
- end
- -- Function to get planters that are fully grown and belong to the player
- function getplanters()
- table.clear(planterst.plantername) -- Clear the planter name table
- table.clear(planterst.planterid) -- Clear the planter ID table
- -- Loop through planters and collect the ones that are fully grown and owned by the player
- for i, v in pairs(debug.getupvalues(require(game:GetService("ReplicatedStorage").LocalPlanters).LoadPlanter)[4]) do
- if v.GrowthPercent == 1 and v.IsMine then -- Check if the planter is fully grown and belongs to the player
- table.insert(planterst.plantername, v.Type) -- Add the planter type to the list
- table.insert(planterst.planterid, v.ActorID) -- Add the planter ID to the list
- end
- end
- end
- -- Function to farm the Ant Challenge by switching tools and moving the character
- function farmant()
- -- Enable collision and start the Ant Challenge
- antpart.CanCollide = true
- temptable.started.ant = true
- anttable = {left = true, right = false} -- Track which side of the challenge the player is on
- -- Switch to the Spark Staff for the Ant Challenge
- temptable.oldtool = rtsg()['EquippedCollector']
- game.ReplicatedStorage.Events.ItemPackageEvent:InvokeServer("Equip", {["Mute"] = true, ["Type"] = "Spark Staff", ["Category"] = "Collector"})
- game.ReplicatedStorage.Events.ToyEvent:FireServer("Ant Challenge") -- Start the Ant Challenge
- ZenX.toggles.autodig = true -- Enable autodig for the Ant Challenge
- -- Set CFrames for left and right positions in the Ant Challenge
- local acl = CFrame.new(127, 48, 547)
- local acr = CFrame.new(65, 48, 534)
- task.wait(1) -- Wait a moment before continuing
- -- Activate the sprinkler to prepare for farming
- game.ReplicatedStorage.Events.PlayerActivesCommand:FireServer({["Name"] = "Sprinkler Builder"})
- -- Move the character upwards to avoid obstacles
- api.humanoidrootpart().CFrame = api.humanoidrootpart().CFrame + Vector3.new(0, 15, 0)
- task.wait(3) -- Wait for the sprinkler and character movement to settle
- -- Main loop to navigate between two positions in the Ant Challenge based on obstacle positions
- repeat
- task.wait()
- for _, v in next, game.Workspace.Toys["Ant Challenge"].Obstacles:GetChildren() do
- if v:FindFirstChild("Root") then
- if (v.Root.Position - api.humanoidrootpart().Position).magnitude <= 40 and anttable.left then
- api.humanoidrootpart().CFrame = acr -- Move to the right position
- anttable.left = false
- anttable.right = true
- wait(.1)
- elseif (v.Root.Position - api.humanoidrootpart().Position).magnitude <= 40 and anttable.right then
- api.humanoidrootpart().CFrame = acl -- Move to the left position
- anttable.left = true
- anttable.right = false
- wait(.1)
- end
- end
- end
- until game:GetService("Workspace").Toys["Ant Challenge"].Busy.Value == false -- Wait until the challenge is complete
- task.wait(1) -- Wait before resetting tool
- -- Restore the original tool and stop the Ant Challenge
- game.ReplicatedStorage.Events.ItemPackageEvent:InvokeServer("Equip", {["Mute"] = true, ["Type"] = temptable.oldtool, ["Category"] = "Collector"})
- temptable.started.ant = false
- antpart.CanCollide = false -- Disable collision for the Ant part after farming
- end
- -- Function to collect fully grown planters
- function collectplanters()
- getplanters() -- Get the list of fully grown planters
- for i, v in pairs(planterst.plantername) do
- -- Check if the planter exists and has soil
- local planterPart = api.partwithnamepart(v, game:GetService("Workspace").Planters)
- if planterPart and planterPart:FindFirstChild("Soil") then
- local soil = planterPart.Soil
- api.humanoidrootpart().CFrame = soil.CFrame -- Move the character to the planter's soil position
- -- Collect the planter's items
- game:GetService("ReplicatedStorage").Events.PlanterModelCollect:FireServer(planterst.planterid[i])
- task.wait(0.5) -- Wait before continuing
- -- Activate the planter's action (e.g., watering)
- game:GetService("ReplicatedStorage").Events.PlayerActivesCommand:FireServer({["Name"] = v .. " Planter"})
- -- Collect tokens from the planter
- for i = 1, 5 do
- gettoken(soil.Position)
- end
- task.wait(2) -- Wait before collecting the next planter
- end
- end
- end
- function getprioritytokens()
- task.wait() -- Allow for other processes to run, but use sparingly
- if not temptable.running then -- Proceed only if not already running
- for _, r in next, game:GetService("Workspace").Collectibles:GetChildren() do
- if r:FindFirstChildOfClass("Decal") then -- Ensure the object is a decal
- local textureId = string.split(r:FindFirstChildOfClass("Decal").Texture, 'rbxassetid://')[2]
- if textureId and api.findvalue(ZenX.priority, textureId) then -- Check for priority tokens
- -- Check if the token belongs to the player and isn't already collected, or if it's within range
- if (r.Name == game.Players.LocalPlayer.Name and not r:FindFirstChild("got it")) or
- (tonumber((r.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude) <= temptable.magnitude / 1.4 and not r:FindFirstChild("got it")) then
- farm(r) -- Collect the token
- local val = Instance.new("IntValue", r) -- Mark it as collected
- val.Name = "got it"
- break -- Exit after collecting the first valid token
- end
- end
- end
- end
- end
- end
- function getprioritytokens()
- task.wait() -- Allow for other processes to run, but use sparingly
- if not temptable.running then -- Proceed only if not already running
- for _, r in next, game:GetService("Workspace").Collectibles:GetChildren() do
- if r:FindFirstChildOfClass("Decal") then -- Ensure the object is a decal
- local textureId = string.split(r:FindFirstChildOfClass("Decal").Texture, 'rbxassetid://')[2]
- if textureId and api.findvalue(ZenX.priority, textureId) then -- Check for priority tokens
- -- Check if the token belongs to the player and isn't already collected, or if it's within range
- if (r.Name == game.Players.LocalPlayer.Name and not r:FindFirstChild("got it")) or
- (tonumber((r.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude) <= temptable.magnitude / 1.4 and not r:FindFirstChild("got it")) then
- farm(r) -- Collect the token
- local val = Instance.new("IntValue", r) -- Mark it as collected
- val.Name = "got it"
- break -- Exit after collecting the first valid token
- end
- end
- end
- end
- end
- end
- function getbubble()
- -- Loop through particles to find "Bubble" objects
- for _, v in next, game.Workspace.Particles:GetChildren() do
- if v.Name:match("Bubble") and not temptable.running then -- Check if the particle is a bubble and not running
- local distance = (v.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude
- if distance < temptable.magnitude / 1.4 then -- Check if bubble is within range
- farm(v) -- Collect the bubble
- break -- Exit once a bubble is collected
- end
- end
- end
- end
- function getballoons()
- -- Loop through all field balloons
- for _, v in next, game:GetService("Workspace").Balloons.FieldBalloons:GetChildren() do
- local balloonRoot = v:FindFirstChild("BalloonRoot")
- local playerName = v:FindFirstChild("PlayerName")
- if balloonRoot and playerName then -- Ensure both BalloonRoot and PlayerName exist
- if playerName.Value == game.Players.LocalPlayer.Name then -- Check if balloon belongs to the player
- local distance = (balloonRoot.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude
- if distance < temptable.magnitude / 1.4 then -- Check if balloon is within range
- api.walkTo(balloonRoot.Position) -- Move towards the balloon
- end
- end
- end
- end
- end
- function getflower()
- -- Ensure flowertable and fieldposition are valid
- if #flowertable == 0 or not fieldposition then
- return
- end
- -- Randomly pick a flower from the flower table
- local flowerrrr = flowertable[math.random(#flowertable)]
- -- Calculate distances from the flower to the player and to the field position
- local flowerToPlayerDistance = (flowerrrr - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude
- local flowerToFieldDistance = (flowerrrr - fieldposition).magnitude
- -- Check if flower is within range of the player and field
- if flowerToPlayerDistance <= temptable.magnitude / 1.4 and flowerToFieldDistance <= temptable.magnitude / 1.4 then
- -- Only move if not already running
- if not temptable.running then
- -- Adjust walk speed if the toggle is enabled
- if ZenX.toggles.loopfarmspeed then
- game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = ZenX.vars.farmspeed
- end
- -- Move towards the flower
- api.walkTo(flowerrrr)
- end
- end
- end
- function getcloud()
- -- Ensure temptable.magnitude is valid
- if not temptable.magnitude then
- return
- end
- -- Loop through all clouds in the workspace
- for _, v in next, game:GetService("Workspace").Clouds:GetChildren() do
- local plane = v:FindFirstChild("Plane")
- -- Only proceed if the Plane exists and the distance is within range
- if plane then
- local distanceToPlane = (plane.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude
- if distanceToPlane < temptable.magnitude / 1.4 then
- -- Move towards the plane's position
- api.walkTo(plane.Position)
- return -- Exit the loop after finding and moving to the cloud
- end
- end
- end
- end
- function getcoco(v)
- -- If coconut is being processed, wait until it's free
- if temptable.coconut then
- repeat task.wait() until not temptable.coconut
- end
- -- Mark coconut as being processed
- temptable.coconut = true
- -- Move to the coconut's position with a smooth transition
- api.tween(0.1, v.CFrame)
- -- Wait until the player reaches the coconut's position, checking if the coconut is still valid
- repeat
- task.wait()
- api.walkTo(v.Position)
- until not v.Parent -- Exit if coconut is no longer in the game
- -- Wait a small period before resetting
- task.wait(0.1)
- -- Mark coconut as processed
- temptable.coconut = false
- -- Remove coconut from the list
- local coconutIndex = table.find(temptable.coconuts, v)
- if coconutIndex then
- table.remove(temptable.coconuts, coconutIndex)
- end
- end
- function getfuzzy()
- pcall(function()
- -- Loop through all particles
- for _, v in next, game.Workspace.Particles:GetChildren() do
- -- Check for DustBunnyInstance and if conditions match
- if v.Name == "DustBunnyInstance" and not temptable.running then
- local plane = v:FindFirstChild("Plane")
- if plane and tonumber((plane.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude) < temptable.magnitude / 1.4 then
- -- Call farm function on the plane
- farm(plane)
- break
- end
- end
- end
- end)
- end
- function getflame()
- pcall(function()
- -- Loop through all PlayerFlames
- for _, v in next, game:GetService("Workspace").PlayerFlames:GetChildren() do
- -- Check if the flame is within range
- if tonumber((v.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude) < temptable.magnitude / 1.4 then
- -- Call farm function on the flame
- farm(v)
- break
- end
- end
- end)
- end
- function getdupe()
- for _, v in next, game:GetService("Workspace").Camera.DupedTokens:GetChildren() do
- -- Check if the token is within a 25 stud radius
- if tonumber((v.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude) < 25 then
- -- Check for specific texture IDs
- if string.find(v.FrontDecal.Texture, "5877939956") or string.find(v.FrontDecal.Texture, "1629547638") then
- -- Move the token downward and give it a unique hash name
- v.CFrame = v.CFrame - Vector3.new(0, 5, 0)
- local hash = tostring(math.random(1, 10000))
- v.Name = hash
- -- Keep the player floating on the token's position
- repeat
- wait(0.05)
- getgenv().temptable.float = true
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = v.CFrame
- until not game:GetService("Workspace").Camera.DupedTokens:FindFirstChild(hash)
- -- Stop floating once the token is removed
- getgenv().temptable.float = false
- break
- else
- -- If not a special token, call the farm function
- farm(v)
- end
- end
- end
- end
- local lastJumpTime = 0
- function avoidmob()
- local currentTime = tick()
- if currentTime - lastJumpTime < 1 then return end -- Avoid spamming jumps, 1 second cooldown
- lastJumpTime = currentTime
- for _, v in next, game:GetService("Workspace").Monsters:GetChildren() do
- if v:FindFirstChild("Head") then
- if (v.Head.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude < 30
- and api.humanoid():GetState() ~= Enum.HumanoidStateType.Freefall then
- game.Players.LocalPlayer.Character.Humanoid.Jump = true
- end
- end
- end
- end
- function getcrosshairs(v)
- -- Check if the object is not the 'Lime green' or 'Flint' color
- if v.BrickColor ~= BrickColor.new("Lime green") and v.BrickColor ~= BrickColor.new("Flint") then
- if temptable.crosshair then
- repeat task.wait() until not temptable.crosshair
- end
- temptable.crosshair = true
- -- Walk to the object
- api.walkTo(v.Position)
- -- Continue walking as long as the object is valid and its color is not "Forest green"
- repeat task.wait() api.walkTo(v.Position) until not v.Parent or v.BrickColor == BrickColor.new("Forest green")
- -- Cleanup and reset the state
- task.wait(.1)
- temptable.crosshair = false
- -- Remove the object from the crosshairs table if it is no longer valid
- local index = table.find(temptable.crosshairs, v)
- if index then
- table.remove(temptable.crosshairs, index)
- end
- else
- -- If it's "Lime green" or "Flint", remove it directly from the crosshairs table
- local index = table.find(temptable.crosshairs, v)
- if index then
- table.remove(temptable.crosshairs, index)
- end
- end
- end
- function makequests()
- for _, v in next, game:GetService("Workspace").NPCs:GetChildren() do
- -- Skip specific NPCs
- if v.Name ~= "Ant Challenge Info" and v.Name ~= "Bubble Bee Man 2" and v.Name ~= "Wind Shrine" and v.Name ~= "Gummy Bear" then
- if v:FindFirstChild("Platform") and v.Platform:FindFirstChild("AlertPos") then
- local alertPos = v.Platform.AlertPos
- local alertGui = alertPos:FindFirstChild("AlertGui")
- local imageLabel = alertGui and alertGui:FindFirstChild("ImageLabel")
- -- Proceed if image label is found and is visible
- if imageLabel and imageLabel.ImageTransparency == 0 then
- -- Teleport or tween to platform
- local platformPosition = v.Platform.Position + Vector3.new(0, 3, 0)
- if ZenX.toggles.tptonpc then
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(platformPosition)
- task.wait(1)
- else
- api.tween(2, CFrame.new(platformPosition))
- task.wait(3)
- end
- -- Activate the button (first click)
- local button = game.Players.LocalPlayer.PlayerGui.ScreenGui.ActivateButton
- for _, conn in next, getconnections(button.MouseButton1Click) do
- conn.Function()
- end
- task.wait(8)
- -- Re-check and activate again if still visible
- if imageLabel.ImageTransparency == 0 then
- for _, conn in next, getconnections(button.MouseButton1Click) do
- conn.Function()
- end
- end
- task.wait(2)
- end
- end
- end
- end
- end
- getgenv().Tvk1 = {true, "💖"}
- local function donateToShrine(item, qnt)
- print(qnt)
- local s, e = pcall(function()
- -- Trigger donation event
- game:GetService("ReplicatedStorage").Events.WindShrineDonation:InvokeServer(item, qnt)
- wait(0.5)
- -- Trigger shrine interaction event
- game.ReplicatedStorage.Events.WindShrineTrigger:FireServer()
- -- Retrieve shrine platform and teleport player
- local UsePlatform = game:GetService("Workspace").NPCs["Wind Shrine"]:FindFirstChild("Stage")
- if UsePlatform then
- game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame = UsePlatform.CFrame + Vector3.new(0, 5, 0)
- -- Look for nearby collectibles
- local startTime = tick()
- while tick() - startTime < 6 and game.Players.LocalPlayer.Character:FindFirstChild("HumanoidRootPart") do
- for _, v in pairs(game.Workspace.Collectibles:GetChildren()) do
- if (v.Position - UsePlatform.Position).magnitude < 60 and v.CFrame.YVector.Y == 1 then
- game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame = v.CFrame
- return -- Exit after collecting the first valid collectible
- end
- end
- wait(0.05) -- Wait briefly before checking again
- end
- end
- end)
- if not s then
- print(e) -- Log any errors
- end
- end
- local function isWindshrineOnCooldown()
- -- Retrieve the current time and the last cooldown time from StatTools
- local currentTime = require(game.ReplicatedStorage.OsTime)() -- Current time
- local lastCooldownTime = require(game.ReplicatedStorage.StatTools).GetLastCooldownTime(v1, "WindShrine")
- -- If either the current time or last cooldown time is unavailable, return false
- if not currentTime or not lastCooldownTime then
- return false
- end
- -- Calculate the cooldown time remaining
- local cooldown = 3600 - (currentTime - lastCooldownTime)
- -- Return whether the Wind Shrine is on cooldown
- return cooldown > 0
- end
- local function canToyBeUsed(toy)
- local timeleft = getTimeUntilToyAvailable(toy)
- return timeleft <= 0
- end
- local function canToyBeUsed(toy)
- local timeleft = getTimeUntilToyAvailable(toy)
- return timeleft <= 0 -- Return true if the cooldown is complete or negative
- end
- function GetItemListWithValue()
- local StatCache = require(game.ReplicatedStorage.ClientStatCache)
- local data = StatCache.Get()
- return data.Eggs or {} -- Return an empty table if Eggs is missing
- end
- local function useConvertors()
- local conv = {"Instant Converter", "Instant Converter B", "Instant Converter C"}
- local lastWithoutCooldown = nil
- local converted = false
- -- Find the first converter that can be used
- for i, v in pairs(conv) do
- if canToyBeUsed(v) then
- lastWithoutCooldown = v
- break -- Exit after finding the first available converter
- end
- end
- -- Use the last available converter if possible
- if lastWithoutCooldown and (string.match(ZenX.vars.autouseMode, "Ticket") or string.match(ZenX.vars.autouseMode, "All")) then
- if not converted then
- game:GetService("ReplicatedStorage").Events.ToyEvent:FireServer(lastWithoutCooldown)
- converted = true
- end
- end
- -- Use Snowflake if available
- local itemList = GetItemListWithValue()
- if itemList["Snowflake"] and itemList["Snowflake"] > 0 and (string.match(ZenX.vars.autouseMode, "Snowflak") or string.match(ZenX.vars.autouseMode, "All")) then
- game:GetService("ReplicatedStorage").Events.PlayerActivesCommand:FireServer({["Name"] = "Snowflake"})
- end
- -- Use Coconut if available
- if itemList["Coconut"] and itemList["Coconut"] > 0 and (string.match(ZenX.vars.autouseMode, "Coconut") or string.match(ZenX.vars.autouseMode, "All")) then
- game:GetService("ReplicatedStorage").Events.PlayerActivesCommand:FireServer({["Name"] = "Coconut"})
- end
- -- Use Stinger if available
- if itemList["Stinger"] and itemList["Stinger"] > 0 and (string.match(ZenX.vars.autouseMode, "Stinger") or string.match(ZenX.vars.autouseMode, "All")) then
- game:GetService("ReplicatedStorage").Events.PlayerActivesCommand:FireServer({["Name"] = "Stinger"})
- end
- end
- local function fetchBuffTable(stats)
- local stTab = {}
- local player = game:GetService("Players").LocalPlayer
- local playerGui = player and player.PlayerGui
- local screenGui = playerGui and playerGui.ScreenGui
- if screenGui then
- local tileGrid = screenGui:FindFirstChild("TileGrid")
- if tileGrid then
- -- Iterate through the tiles in TileGrid
- for _, tile in pairs(tileGrid:GetChildren()) do
- local bg = tile:FindFirstChild("BG")
- if bg then
- local icon = bg:FindFirstChild("Icon")
- if icon then
- -- Check each stat for matching DecalID
- for field, fdata in pairs(stats) do
- if fdata["DecalID"] and string.find(icon.Image, fdata["DecalID"]) then
- local text = bg:FindFirstChild("Text")
- if text then
- -- If the Text is empty, assume the buff is at 1
- if text.Text == "" then
- stTab[field] = 1
- else
- -- Extract the number, remove "x" and add 1
- local count = tonumber(string.gsub(text.Text, "x", ""))
- stTab[field] = (count and count + 1) or 1
- end
- end
- end
- end
- end
- end
- end
- end
- end
- return stTab
- end
- local Config = { WindowName = "ZenX v" .. temptable.version .. " Remastered", Color = Color3.fromRGB(164, 84, 255), Keybind = Enum.KeyCode.Semicolon }
- local Window = library:CreateWindow(Config, game:GetService("CoreGui"))
- local hometab = Window:CreateTab("Home")
- local farmtab = Window:CreateTab("Farming")
- local combtab = Window:CreateTab("Combat")
- local itemstab = Window:CreateTab("Items")
- local misctab = Window:CreateTab("Misc")
- local setttab = Window:CreateTab("Settings")
- local loadingInfo = hometab:CreateSection("Startup")
- local loadingFunctions = loadingInfo:CreateLabel("Loading Functions..")
- wait(1)
- loadingFunctions:UpdateText("Loaded Functions")
- local loadingBackend = loadingInfo:CreateLabel("Loading Backend..")
- loadingBackend:UpdateText("Loaded Backend")
- local information = hometab:CreateSection("Information")
- information:CreateLabel("Welcome, " .. api.nickname .. "!")
- information:CreateLabel("Script version: " .. temptable.version)
- information:CreateLabel("Place version: " .. game.PlaceVersion)
- information:CreateLabel(" - Not Safe Function")
- information:CreateLabel("⚙ - Configurable Function")
- information:CreateLabel("📜 - May be exploit specific")
- information:CreateLabel("Place version: " .. game.PlaceVersion)
- information:CreateLabel("Script by Boxking776 and Schervi")
- information:CreateLabel("Originally by weuz_ and mrdevl")
- information:CreateButton("Discord Invite", function() setclipboard("https://discord.gg/pVACsQxAqZ") end)
- information:CreateButton("Donation", function() setclipboard("https://discord.gg/pVACsQxAqZ") end)
- local gainedhoneylabel = information:CreateLabel("Gained Honey: 0")
- information:CreateToggle("Status Panel", true, function(bool)
- ZenX.toggles.enablestatuspanel = bool
- local coreGui = game:GetService("CoreGui")
- for i, v in pairs(coreGui:GetDescendants()) do
- if string.find(v.Name, "Mob Panel") or string.find(v.Name, "Utility Panel") then
- v.Visible = bool
- end
- end
- end)
- -- Farming Section
- local farmo = farmtab:CreateSection("Farming")
- -- Field Dropdown
- local fielddropdown = farmo:CreateDropdown("Field", fieldstable, function(selectedField)
- ZenX.vars.field = selectedField
- end)
- fielddropdown:SetOption(fieldstable[1])
- -- Convert At Slider
- convertatslider = farmo:CreateSlider("Convert At", 0, 100, 100, false, function(value)
- ZenX.vars.convertat = value
- end)
- -- Autofarm Toggle
- local autofarmtoggle = farmo:CreateToggle("Autofarm [⚙]", nil, function(state)
- ZenX.toggles.autofarm = state
- end)
- autofarmtoggle:CreateKeybind("U", function() end) -- Placeholder for keybind action
- -- Autodig Toggle
- farmo:CreateToggle("Autodig", nil, function(state)
- ZenX.toggles.autodig = state
- end)
- -- Autodig Mode Dropdown
- farmo:CreateDropdown("Autodig Mode", {"Normal", "Collector Steal"}, function(selectedMode)
- ZenX.vars.autodigmode = selectedMode
- end)
- -- Container Tools Section
- local contt = farmtab:CreateSection("Container Tools")
- -- Don't Convert Pollen Toggle
- contt:CreateToggle("Don't Convert Pollen", nil, function(state)
- ZenX.toggles.disableconversion = state
- end)
- -- Auto Bag Reduction Toggle
- contt:CreateToggle("Auto Bag Reduction", nil, function(state)
- ZenX.toggles.autouseconvertors = state
- end)
- -- Bag Reduction Mode Dropdown
- contt:CreateDropdown("Bag Reduction Mode", {
- "Ticket Converters", "Just Snowflakes", "Just Coconuts", "Stingers",
- "Snowflakes and Coconuts", "Tickets and Snowflakes", "Tickets and Coconuts", "All"
- }, function(selectedMode)
- ZenX.vars.autouseMode = selectedMode
- end)
- -- Reduction Confirmation Time Slider
- contt:CreateSlider("Reduction Confirmation Time", 3, 20, 10, false, function(value)
- ZenX.vars.autoconvertWaitTime = tonumber(value)
- end)
- -- Additional Farming Options
- farmo:CreateToggle("Auto Sprinkler", nil, function(state)
- ZenX.toggles.autosprinkler = state
- end)
- farmo:CreateToggle("Farm Bubbles", nil, function(state)
- ZenX.toggles.farmbubbles = state
- end)
- farmo:CreateToggle("Farm Flames", nil, function(state)
- ZenX.toggles.farmflame = state
- end)
- farmo:CreateToggle("Farm Coconuts & Shower", nil, function(state)
- ZenX.toggles.farmcoco = state
- end)
- farmo:CreateToggle("Farm Precise Crosshairs", nil, function(state)
- ZenX.toggles.collectcrosshairs = state
- end)
- farmo:CreateToggle("Farm Fuzzy Bombs", nil, function(state)
- ZenX.toggles.farmfuzzy = state
- end)
- farmo:CreateToggle("Farm Under Balloons", nil, function(state)
- ZenX.toggles.farmunderballoons = state
- end)
- farmo:CreateToggle("Farm Under Clouds", nil, function(state)
- ZenX.toggles.farmclouds = state
- end)
- farmo:CreateToggle("Farm Duped Tokens", nil, function(state)
- ZenX.toggles.farmduped = state
- end)
- farmo:CreateToggle("Auto Honey Mask", nil, function(bool)
- ZenX.toggles.honeymaskconv = bool
- end)
- farmo:CreateDropdown("Default Mask", MasksTable, function(val)
- ZenX.vars.defmask = val
- end)
- -- Farming Tools
- local farmt = farmtab:CreateSection("Farming")
- -- Automation Toggles
- farmt:CreateToggle("Auto Dispenser [⚙]", nil, function(state)
- ZenX.toggles.autodispense = state
- end)
- farmt:CreateToggle("Auto Field Boosters [⚙]", nil, function(state)
- ZenX.toggles.autoboosters = state
- end)
- farmt:CreateToggle("Auto Wealth Clock", nil, function(state)
- ZenX.toggles.clock = state
- end)
- farmt:CreateToggle("Auto Gingerbread Bears [B]", nil, function(state)
- ZenX.toggles.collectgingerbreads = state
- end)
- farmt:CreateToggle("Auto Samovar [B]", nil, function(state)
- ZenX.toggles.autosamovar = state
- end)
- farmt:CreateToggle("Auto Snow Machine [B]", nil, function(state)
- ZenX.toggles.autosnowmachines = state
- end)
- farmt:CreateToggle("Auto Stockings [B]", nil, function(state)
- ZenX.toggles.autostockings = state
- end)
- farmt:CreateToggle("Auto Honey Wreath [B]", nil, function(state)
- ZenX.toggles.autowreath = state
- end)
- farmt:CreateToggle("Auto Planters", nil, function(state)
- ZenX.toggles.autoplanters = state
- end):AddToolTip("Will re-plant your planters after converting, if they hit 100%")
- farmt:CreateToggle("Auto Honey Candles [B]", nil, function(state)
- ZenX.toggles.autocandles = state
- end)
- farmt:CreateToggle("Auto Beesmas Feast [B]", nil, function(state)
- ZenX.toggles.autofeast = state
- end)
- farmt:CreateToggle("Auto Onett's Lid Art [B]", nil, function(state)
- ZenX.toggles.autoonettart = state
- end)
- farmt:CreateToggle("Auto Free Antpasses", nil, function(state)
- ZenX.toggles.freeantpass = state
- end)
- -- Farming Toggles
- farmt:CreateToggle("Farm Sprouts", nil, function(state)
- ZenX.toggles.farmsprouts = state
- end)
- farmt:CreateToggle("Farm Puffshrooms", nil, function(state)
- ZenX.toggles.farmpuffshrooms = state
- end)
- farmt:CreateToggle("Farm Snowflakes [🛡️] [B]", nil, function(state)
- ZenX.toggles.farmsnowflakes = state
- end)
- farmt:CreateToggle("Teleport To Rares [⚠️]", nil, function(state)
- ZenX.toggles.farmrares = state
- end)
- -- Quest Toggles
- farmt:CreateToggle("Auto Accept/Confirm Quests [⚙]", nil, function(state)
- ZenX.toggles.autoquest = state
- end)
- farmt:CreateToggle("Auto Do Quests [⚙]", nil, function(state)
- ZenX.toggles.autodoquest = state
- end)
- -- Miscellaneous Farming
- farmt:CreateToggle("Auto Honeystorm", nil, function(state)
- ZenX.toggles.honeystorm = state
- end)
- farmt:CreateToggle("Reset Bee Energy after X Conversions", nil, function(bool)
- ZenX.vars.resetbeeenergy = bool
- end)
- farmt:CreateTextBox("Conversion Amount", "default = 3", true, function(value)
- ZenX.vars.resettimer = tonumber(value)
- end)
- -- Combat Section
- local mobkill = combtab:CreateSection("Combat")
- mobkill:CreateToggle("Train Crab", nil, function(state)
- if state then
- local humanoidRootPart = api.humanoidrootpart()
- if humanoidRootPart then
- humanoidRootPart.CFrame = CFrame.new(-307.521, 107.919, 467.868)
- else
- warn("HumanoidRootPart not found!")
- end
- end
- end)
- mobkill:CreateToggle("Train Snail", nil, function(state)
- local stumpField = game.Workspace.FlowerZones:FindFirstChild("Stump Field")
- if stumpField then
- local position = stumpField.Position
- local humanoidRootPart = api.humanoidrootpart()
- if humanoidRootPart then
- if state then
- humanoidRootPart.CFrame = CFrame.new(position.X, position.Y - 6, position.Z)
- else
- humanoidRootPart.CFrame = CFrame.new(position.X, position.Y + 2, position.Z)
- end
- else
- warn("HumanoidRootPart not found!")
- end
- else
- warn("'Stump Field' not found in FlowerZones!")
- end
- end)
- -- Misc Section
- local misc = mistab:CreateSection("Misc")
- misc:CreateToggle("FPS Display", true, function(state)
- local coreGui = game:GetService("CoreGui")
- local fpsDisplayFound = false
- for _, descendant in ipairs(coreGui:GetDescendants()) do
- if string.find(descendant.Name, "FPS") then
- descendant.Visible = state
- fpsDisplayFound = true
- end
- end
- if not fpsDisplayFound then
- warn("No FPS display elements found in CoreGui!")
- end
- end)
- -- Autofeed Section
- autofeed:CreateDropdown("Select Treat", treatsTable, function(option)
- ZenX.vars.selectedTreat = option
- end)
- autofeed:CreateTextBox("Treat Amount", "10", false, function(value)
- local amount = tonumber(value)
- if amount and amount > 0 then
- ZenX.vars.selectedTreatAmount = amount
- else
- warn("Invalid treat amount. Please enter a positive number.")
- end
- end)
- autofeed:CreateButton("Feed All Bees", function()
- if ZenX.vars.selectedTreat and ZenX.vars.selectedTreatAmount then
- feedAllBees(ZenX.vars.selectedTreat, ZenX.vars.selectedTreatAmount)
- else
- warn("Please select a treat and specify a valid amount before feeding.")
- end
- end)
- -- Wind Shrine Section
- local windShrine = itemstab:CreateSection("Wind Shrine")
- windShrine:CreateDropdown("Select Item", donatableItemsTable, function(option)
- ZenX.vars.donoItem = option
- end)
- windShrine:CreateTextBox("Item Quantity", "10", false, function(value)
- local amount = tonumber(value)
- if amount and amount > 0 then
- ZenX.vars.donoAmount = amount
- else
- warn("Invalid quantity. Please enter a positive number.")
- end
- end)
- windShrine:CreateButton("Donate", function()
- if ZenX.vars.donoItem and ZenX.vars.donoAmount then
- donateToShrine(ZenX.vars.donoItem, ZenX.vars.donoAmount)
- print("Donated " .. ZenX.vars.donoAmount .. " of " .. ZenX.vars.donoItem)
- else
- warn("Please select an item and specify a valid quantity before donating.")
- end
- end)
- windShrine:CreateToggle("Auto Donate", nil, function(state)
- ZenX.toggles.autodonate = state
- if state then
- print("Auto Donate enabled.")
- else
- print("Auto Donate disabled.")
- end
- end)
- -- Autofarm Settings Section
- local farmsettings = setttab:CreateSection("Autofarm Settings")
- -- TextBox for Autofarming Walkspeed
- farmsettings:CreateTextBox("Autofarming Walkspeed", "Default Value = 60", true, function(value)
- local speed = tonumber(value)
- if speed and speed > 0 then
- ZenX.vars.farmspeed = speed
- print("Autofarming Walkspeed set to: " .. speed)
- else
- warn("Invalid value. Please enter a positive number.")
- end
- end)
- -- Toggle for Loop Speed On Autofarming
- farmsettings:CreateToggle("^ Loop Speed On Autofarming", nil, function(state)
- ZenX.toggles.loopfarmspeed = state
- print("Loop Speed On Autofarming is now: " .. (state and "Enabled" or "Disabled"))
- end)
- -- Toggle for Not Walking in the Field
- farmsettings:CreateToggle("Don't Walk In Field", nil, function(state)
- ZenX.toggles.farmflower = state
- print("Don't Walk In Field is now: " .. (state and "Enabled" or "Disabled"))
- end)
- -- Toggle for Converting Hive Balloon
- farmsettings:CreateToggle("Convert Hive Balloon", nil, function(state)
- ZenX.toggles.convertballoons = state
- print("Convert Hive Balloon is now: " .. (state and "Enabled" or "Disabled"))
- end)
- -- Toggle for Not Farming Tokens
- farmsettings:CreateToggle("Don't Farm Tokens", nil, function(state)
- ZenX.toggles.donotfarmtokens = state
- print("Don't Farm Tokens is now: " .. (state and "Enabled" or "Disabled"))
- end)
- -- Toggle for Enabling Token Blacklisting
- farmsettings:CreateToggle("Enable Token Blacklisting", nil, function(state)
- ZenX.toggles.enabletokenblacklisting = state
- print("Token Blacklisting is now: " .. (state and "Enabled" or "Disabled"))
- end)
- -- Slider for Walk Speed
- farmsettings:CreateSlider("Walk Speed", 0, 120, 70, false, function(value)
- if value >= 0 and value <= 120 then
- ZenX.vars.walkspeed = value
- print("Walk Speed set to: " .. value)
- else
- warn("Walk Speed value out of range (0-120).")
- end
- end)
- -- Slider for Jump Power
- farmsettings:CreateSlider("Jump Power", 0, 120, 70, false, function(value)
- if value >= 0 and value <= 120 then
- ZenX.vars.jumppower = value
- print("Jump Power set to: " .. value)
- else
- warn("Jump Power value out of range (0-120).")
- end
- end)
- -- Tokens Settings Section
- local raresettings = setttab:CreateSection("Tokens Settings")
- -- TextBox to Enter Asset ID
- raresettings:CreateTextBox("Asset ID", "Enter rbxassetid", false, function(value)
- rarename = value
- print("Asset ID set to: " .. rarename)
- end)
- -- Button to Add Token to Rares List
- raresettings:CreateButton("Add Token To Rares List", function()
- if rarename then
- table.insert(ZenX.rares, rarename)
- print("Token added to Rares List: " .. rarename)
- updateDropdown("Rares List", ZenX.rares, raresettings)
- else
- warn("No Asset ID provided to add.")
- end
- end)
- -- Button to Remove Token from Rares List
- raresettings:CreateButton("Remove Token From Rares List", function()
- if rarename and api.tablefind(ZenX.rares, rarename) then
- table.remove(ZenX.rares, api.tablefind(ZenX.rares, rarename))
- print("Token removed from Rares List: " .. rarename)
- updateDropdown("Rares List", ZenX.rares, raresettings)
- else
- warn("Token not found in Rares List.")
- end
- end)
- -- Button to Add Token to Blacklist
- raresettings:CreateButton("Add Token To Blacklist", function()
- if rarename then
- table.insert(ZenX.bltokens, rarename)
- print("Token added to Blacklist: " .. rarename)
- updateDropdown("Tokens Blacklist", ZenX.bltokens, raresettings)
- else
- warn("No Asset ID provided to add.")
- end
- end)
- -- Button to Remove Token from Blacklist
- raresettings:CreateButton("Remove Token From Blacklist", function()
- if rarename and api.tablefind(ZenX.bltokens, rarename) then
- table.remove(ZenX.bltokens, api.tablefind(ZenX.bltokens, rarename))
- print("Token removed from Blacklist: " .. rarename)
- updateDropdown("Tokens Blacklist", ZenX.bltokens, raresettings)
- else
- warn("Token not found in Blacklist.")
- end
- end)
- -- Dropdowns for Tokens Blacklist and Rares List
- raresettings:CreateDropdown("Tokens Blacklist", ZenX.bltokens, function(option)
- print("Selected from Blacklist: " .. option)
- end)
- raresettings:CreateDropdown("Rares List", ZenX.rares, function(option)
- print("Selected from Rares List: " .. option)
- end)
- -- Auto Dispenser & Boosters Settings Section
- local dispsettings = setttab:CreateSection("Auto Dispenser & Auto Boosters Settings")
- -- Function to Create Toggles for Dispensers and Boosters
- local function createDispenserToggle(name, key)
- dispsettings:CreateToggle(name, nil, function(state)
- ZenX.dispensesettings[key] = state
- print(name .. " is now: " .. (state and "Enabled" or "Disabled"))
- end)
- end
- -- Creating Toggles
- createDispenserToggle("Royal Jelly Dispenser", "rj")
- createDispenserToggle("Blueberry Dispenser", "blub")
- createDispenserToggle("Strawberry Dispenser", "straw")
- createDispenserToggle("Treat Dispenser", "treat")
- createDispenserToggle("Coconut Dispenser", "coconut")
- createDispenserToggle("Glue Dispenser", "glue")
- createDispenserToggle("Mountain Top Booster", "white")
- createDispenserToggle("Blue Field Booster", "blue")
- createDispenserToggle("Red Field Booster", "red")
- -- Helper Function: Update Dropdowns Dynamically
- function updateDropdown(dropdownName, itemList, section)
- local gui = game:GetService("CoreGui"):FindFirstChild(_G.windowname)
- if gui and gui.Main:FindFirstChild(dropdownName .. " D", true) then
- gui.Main:FindFirstChild(dropdownName .. " D", true):Destroy()
- end
- section:CreateDropdown(dropdownName, itemList, function(option)
- print("Selected from " .. dropdownName .. ": " .. option)
- end)
- end
- -- GUI Settings Section
- local guisettings = setttab:CreateSection("GUI Settings")
- -- Toggle for UI Visibility
- local uitoggle = guisettings:CreateToggle("UI Toggle", nil, function(state)
- Window:Toggle(state)
- print("UI Toggle is now: " .. (state and "Enabled" or "Disabled"))
- end)
- -- Keybind for UI Toggle
- uitoggle:CreateKeybind(tostring(Config.Keybind):gsub("Enum.KeyCode.", ""), function(key)
- Config.Keybind = Enum.KeyCode[key]
- print("UI Keybind updated to: " .. key)
- end)
- -- Default State for UI Toggle
- uitoggle:SetState(true)
- -- Color Picker for UI Theme
- guisettings:CreateColorpicker("UI Color", function(color)
- Window:ChangeColor(color)
- print("UI Color changed to: " .. tostring(color))
- end)
- -- Themes Dropdown for GUI Background
- local themes = guisettings:CreateDropdown("Image",
- {"Default", "Hearts", "Abstract", "Hexagon", "Circles", "Lace With Flowers", "Floral"},
- function(Name)
- -- Background Asset IDs for each theme
- local backgroundIDs = {
- Default = "2151741365",
- Hearts = "6073763717",
- Abstract = "6073743871",
- Hexagon = "6073628839",
- Circles = "6071579801",
- ["Lace With Flowers"] = "6071575925",
- Floral = "5553946656"
- }
- -- Update background based on selected theme
- local backgroundID = backgroundIDs[Name]
- if backgroundID then
- Window:SetBackground(backgroundID)
- print("Background changed to: " .. Name .. " (ID: " .. backgroundID .. ")")
- else
- warn("Invalid theme selected: " .. tostring(Name))
- end
- end
- )
- -- Set default option to "Default"
- themes:SetOption("Default")
- -- Configs Section
- local ZenXs = setttab:CreateSection("Configs")
- -- Create a text box to input the config name
- ZenXs:CreateTextBox("Config Name", 'ex: stumpconfig', false, function(Value)
- temptable.configname = Value
- end)
- -- Load the config when the button is clicked
- ZenXs:CreateButton("Load Config", function()
- -- Ensure the config file exists before attempting to load
- local configFile = "ZenX/BSS_"..temptable.configname..".json"
- if isfile(configFile) then
- local configData = game:service'HttpService':JSONDecode(readfile(configFile))
- ZenX = configData
- print("Config loaded successfully.")
- else
- warn("Config file not found: " .. configFile)
- end
- end)
- -- Save the current config to a file
- ZenXs:CreateButton("Save Config", function()
- local configFile = "ZenX/BSS_"..temptable.configname..".json"
- local encodedConfig = game:service'HttpService':JSONEncode(ZenX)
- -- Check if the config name is valid
- if not temptable.configname or temptable.configname == "" then
- warn("Please enter a valid config name.")
- else
- writefile(configFile, encodedConfig)
- print("Config saved as: " .. configFile)
- end
- end)
- -- Reset to default config
- ZenXs:CreateButton("Reset Config", function()
- ZenX = defaultZenX
- print("Config has been reset to default.")
- end)
- -- Fields Settings Section
- local fieldsettings = setttab:CreateSection("Fields Settings")
- -- Best White Field Dropdown
- fieldsettings:CreateDropdown("Best White Field", temptable.whitefields, function(Option)
- if Option then
- ZenX.bestfields.white = Option
- print("Best White Field set to: " .. Option)
- else
- warn("No option selected for Best White Field.")
- end
- end)
- -- Best Red Field Dropdown
- fieldsettings:CreateDropdown("Best Red Field", temptable.redfields, function(Option)
- if Option then
- ZenX.bestfields.red = Option
- print("Best Red Field set to: " .. Option)
- else
- warn("No option selected for Best Red Field.")
- end
- end)
- -- Best Blue Field Dropdown
- fieldsettings:CreateDropdown("Best Blue Field", temptable.bluefields, function(Option)
- if Option then
- ZenX.bestfields.blue = Option
- print("Best Blue Field set to: " .. Option)
- else
- warn("No option selected for Best Blue Field.")
- end
- end)
- -- Vicious Bee Killer
- task.spawn(function()
- while task.wait(1) do
- if ZenX.toggles.killvicious and temptable.detected.vicious and not temptable.converting and not temptable.started.monsters then
- temptable.started.vicious = true
- disableall()
- local vichumanoid = game:GetService("Players").LocalPlayer.Character.HumanoidRootPart
- local particles = game.workspace.Particles:GetChildren()
- -- Find Vicious particles and perform animation
- local viciousParticles = {}
- for _, particle in ipairs(particles) do
- if string.find(particle.Name, "Vicious") then
- table.insert(viciousParticles, particle)
- end
- end
- -- Particle animation loop
- for _, particle in ipairs(viciousParticles) do
- api.tween(1, CFrame.new(particle.Position))
- task.wait(1)
- api.tween(0.5, CFrame.new(particle.Position))
- task.wait(0.5)
- end
- -- Killing vicious loop
- while ZenX.toggles.killvicious and temptable.detected.vicious do
- for _, particle in ipairs(viciousParticles) do
- vichumanoid.CFrame = CFrame.new(particle.Position + Vector3.new(10, 0, 0))
- temptable.float = true
- task.wait(0.3)
- end
- end
- -- Re-enable all functions after killing
- enableall()
- task.wait(1)
- temptable.float = false
- temptable.started.vicious = false
- end
- end
- end)
- -- Windy Bee Handler
- task.spawn(function()
- while task.wait(1) do
- if ZenX.toggles.killwindy and temptable.detected.windy and not temptable.converting and not temptable.started.vicious and not temptable.started.mondo and not temptable.started.monsters then
- temptable.started.windy = true
- local wlvl = ""
- local hasMonster, isAtWindyBee = false, false
- disableall()
- -- Main loop for killing Windy bee
- while ZenX.toggles.killwindy and temptable.detected.windy do
- -- Detect first Windy monster
- if not hasMonster then
- for _, monster in ipairs(workspace.Monsters:GetChildren()) do
- if string.find(monster.Name, "Windy") then
- wlvl = monster.Name
- hasMonster = true
- break
- end
- end
- end
- -- Handle additional Windy monsters
- if hasMonster then
- for _, monster in ipairs(workspace.Monsters:GetChildren()) do
- if string.find(monster.Name, "Windy") and monster.Name ~= wlvl then
- temptable.float = false
- task.wait(5)
- -- Collect tokens around the player
- for _ = 1, 5 do
- gettoken(api.humanoidrootpart().Position)
- end
- wlvl = monster.Name
- end
- end
- end
- -- Tween to Windy bee's position if not done already
- if not isAtWindyBee then
- api.tween(1, temptable.gacf(temptable.windy, 5))
- task.wait(1)
- isAtWindyBee = true
- end
- -- Move to the Windy bee and start floating
- if isAtWindyBee and temptable.windy.Name == "Windy" then
- api.humanoidrootpart().CFrame = temptable.gacf(temptable.windy, 25)
- temptable.float = true
- task.wait()
- end
- end
- -- Re-enable everything after Windy bee is dealt with
- enableall()
- temptable.float = false
- temptable.started.windy = false
- end
- end
- end)
- -- Collector Steal
- local function collectorSteal()
- if ZenX.vars.autodigmode == "Collector Steal" then
- -- Loop through all players in the game
- for _, player in ipairs(game.Players:GetChildren()) do
- -- Make sure we're not interacting with the local player and that the player has a character
- if player.Name ~= game.Players.LocalPlayer.Name and player.Character then
- -- Find the first tool the player is holding
- local tool = player.Character:FindFirstChildWhichIsA("Tool")
- -- If the tool exists and has a ClickEvent, fire the event
- if tool and tool:FindFirstChild("ClickEvent") then
- tool.ClickEvent:FireServer()
- end
- end
- end
- end
- end
- -- Farm Rares and Auto-Dig
- task.spawn(function()
- while task.wait(0.05) do
- -- Farm Rares Logic
- if ZenX.toggles.farmrares then
- for _, collectible in ipairs(game.workspace.Collectibles:GetChildren()) do
- -- Ensure collectible is visible and not transparent
- if collectible.CFrame.YVector.Y == 1 and collectible.Transparency == 0 then
- local decal = collectible:FindFirstChildOfClass("Decal")
- if decal then
- -- Check if the decal matches any rare item in the list
- for _, rare in ipairs(ZenX.rares) do
- if decal.Texture == rare or decal.Texture == "rbxassetid://" .. rare then
- -- Teleport to collectible and collect it
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = collectible.CFrame
- break
- end
- end
- end
- end
- end
- end
- -- Auto-Dig Logic
- if ZenX.toggles.autodig then
- pcall(function()
- local player = game.Players.LocalPlayer
- if player and player.Character then
- local tool = player.Character:FindFirstChildOfClass("Tool")
- -- Ensure the player is holding a tool with a ClickEvent
- if tool and tool:FindFirstChild("ClickEvent", true) then
- -- Trigger the collection event with the player's mouse
- getsenv(tool.ClientScriptMouse).collectStart(player:GetMouse())
- end
- -- Call the collectorSteal function to collect items from other players
- collectorSteal()
- -- Trigger the Porcelain Dipper NPC's ClickEvent
- workspace.NPCs.Onett.Onett["Porcelain Dipper"].ClickEvent:FireServer()
- end
- end)
- end
- end
- end)
- -- Event Handlers for Sprouts and NPCs
- -- Handle Sprout Addition
- game:GetService("Workspace").Particles.Folder2.ChildAdded:Connect(function(child)
- if child.Name == "Sprout" then
- temptable.sprouts.detected = true
- temptable.sprouts.coords = child.CFrame
- end
- end)
- -- Handle Sprout Removal
- game:GetService("Workspace").Particles.Folder2.ChildRemoved:Connect(function(child)
- if child.Name == "Sprout" then
- task.wait(30) -- Allow some time for potential re-addition
- temptable.sprouts.detected = false
- temptable.sprouts.coords = nil -- Clear coordinates
- end
- end)
- -- Handle Vicious Bee Addition
- Workspace.Particles.ChildAdded:Connect(function(instance)
- if string.find(instance.Name, "Vicious") then
- temptable.detected.vicious = true
- end
- end)
- -- Handle Vicious Bee Removal
- Workspace.Particles.ChildRemoved:Connect(function(instance)
- if string.find(instance.Name, "Vicious") then
- temptable.detected.vicious = false
- end
- end)
- -- Handle Windy Bee Addition
- game:GetService("Workspace").NPCBees.ChildAdded:Connect(function(npc)
- if npc.Name == "Windy" then
- task.wait(3) -- Wait for NPC to fully load
- temptable.windy = npc
- temptable.detected.windy = true
- end
- end)
- -- Handle Windy Bee Removal
- game:GetService("Workspace").NPCBees.ChildRemoved:Connect(function(npc)
- if npc.Name == "Windy" then
- task.wait(3) -- Wait to ensure NPC removal is processed
- temptable.windy = nil
- temptable.detected.windy = false
- end
- end)
- -- Auto Toy Usage and Donation
- task.spawn(function()
- while task.wait(1) do
- if not temptable.converting then
- -- Define toys and their associated platforms
- local toys = {
- ["Samovar"] = game:GetService("Workspace").Toys.Samovar.Platform,
- ["Snow Machine"] = nil,
- ["Stockings"] = game:GetService("Workspace").Toys.Stockings.Platform,
- ["Honey Wreath"] = game:GetService("Workspace").Toys["Honey Wreath"].Platform,
- ["Onett's Lid Art"] = game:GetService("Workspace").Toys["Onett's Lid Art"].Platform,
- ["Honeyday Candles"] = game:GetService("Workspace").Toys["Honeyday Candles"].Platform,
- ["Beesmas Feast"] = game:GetService("Workspace").Toys["Beesmas Feast"].Platform
- }
- -- Iterate through the toys and use them if toggled
- for toy, platform in pairs(toys) do
- if ZenX.toggles["auto" .. toy:lower():gsub(" ", "")] then
- -- Fire event to use the toy
- game:GetService("ReplicatedStorage").Events.ToyEvent:FireServer(toy)
- -- If there's a platform associated with the toy, move towards collectibles nearby
- if platform then
- for _, collectible in ipairs(game.Workspace.Collectibles:GetChildren()) do
- -- Check if the collectible is close to the platform and its transparency is 0 (visible)
- if (collectible.Position - platform.Position).magnitude < 25 and collectible.CFrame.YVector.Y == 1 then
- api.humanoidrootpart().CFrame = collectible.CFrame
- end
- end
- end
- end
- end
- -- Auto donation check
- if ZenX.toggles.autodonate and not isWindshrineOnCooldown() then
- donateToShrine(ZenX.vars.donoItem, ZenX.vars.donoAmount)
- end
- end
- end
- end)
- -- Main Task Loop
- task.spawn(function()
- while task.wait(1) do
- -- Track runtime and update honey count
- temptable.runningfor = temptable.runningfor + 1
- temptable.honeycurrent = statsget().Totals.Honey
- -- Honeystorm (trigger event)
- if ZenX.toggles.honeystorm then
- game.ReplicatedStorage.Events.ToyEvent:FireServer("Honeystorm")
- end
- -- Collect Gingerbreads (trigger event)
- if ZenX.toggles.collectgingerbreads then
- game:GetService("ReplicatedStorage").Events.ToyEvent:FireServer("Gingerbread House")
- end
- -- Auto Dispensers
- if ZenX.toggles.autodispense then
- local dispensers = {
- ["rj"] = "Free Royal Jelly Dispenser",
- ["blub"] = "Blueberry Dispenser",
- ["straw"] = "Strawberry Dispenser",
- ["treat"] = "Treat Dispenser",
- ["coconut"] = "Coconut Dispenser",
- ["glue"] = "Glue Dispenser"
- }
- for key, dispenser in pairs(dispensers) do
- if ZenX.dispensesettings[key] then
- game:GetService("ReplicatedStorage").Events.ToyEvent:FireServer(dispenser)
- end
- end
- end
- -- Auto Boosters
- if ZenX.toggles.autoboosters then
- local boosters = {
- ["white"] = "Field Booster",
- ["red"] = "Red Field Booster",
- ["blue"] = "Blue Field Booster"
- }
- for key, booster in pairs(boosters) do
- if ZenX.dispensesettings[key] then
- game.ReplicatedStorage.Events.ToyEvent:FireServer(booster)
- end
- end
- end
- -- Wealth Clock (trigger event)
- if ZenX.toggles.clock then
- game:GetService("ReplicatedStorage").Events.ToyEvent:FireServer("Wealth Clock")
- end
- -- Free Ant Pass (trigger event)
- if ZenX.toggles.freeantpass then
- game:GetService("ReplicatedStorage").Events.ToyEvent:FireServer("Free Ant Pass Dispenser")
- end
- -- Update the gained honey display
- gainedhoneylabel:UpdateText("Gained Honey: " .. api.suffixstring(temptable.honeycurrent - temptable.honeystart))
- end
- end)
- -- RunService Heartbeat Functions
- game:GetService('RunService').Heartbeat:Connect(function()
- -- Auto Quest Toggle: Fires the quest button click event
- if ZenX.toggles.autoquest then
- local questButton = game:GetService("Players").LocalPlayer.PlayerGui.ScreenGui.NPC.ButtonOverlay.MouseButton1Click
- firesignal(questButton)
- end
- -- Loop Speed Toggle: Sets the player's walking speed
- if ZenX.toggles.loopspeed then
- local humanoid = game.Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
- if humanoid then
- humanoid.WalkSpeed = ZenX.vars.walkspeed
- end
- end
- -- Loop Jump Power Toggle: Sets the player's jump power
- if ZenX.toggles.loopjump then
- local humanoid = game.Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
- if humanoid then
- humanoid.JumpPower = ZenX.vars.jumppower
- end
- end
- end)
- game:GetService('RunService').Heartbeat:Connect(function()
- -- Get MinigameLayer to minimize repeated calls
- local minigameLayer = game.Players.LocalPlayer.PlayerGui.ScreenGui:WaitForChild("MinigameLayer")
- -- Loop through the children of MinigameLayer
- for _, v in pairs(minigameLayer:GetChildren()) do
- -- Loop through all descendants of the GuiGrid within each child (if it exists)
- local guiGrid = v:FindFirstChild("GuiGrid")
- if guiGrid then
- for _, q in pairs(guiGrid:GetDescendants()) do
- -- Check if the object name matches "ObjContent" or "ObjImage"
- if q.Name == "ObjContent" or q.Name == "ObjImage" then
- q.Visible = true
- end
- end
- end
- end
- end)
- game:GetService('RunService').Heartbeat:Connect(function()
- if temptable.float then
- -- Retrieve the character's humanoid root part and body scale
- local humanoidRootPart = game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart")
- local bodyTypeScale = game.Players.LocalPlayer.Character.Humanoid:WaitForChild("BodyTypeScale")
- -- Set body scale to 0 for floating effect (likely shrinks character)
- bodyTypeScale.Value = 0
- -- Assuming floatpad is a predefined object in the workspace or a global variable
- local floatpad = game.Workspace:WaitForChild("Floatpad")
- -- Enable collision and position the floatpad relative to the player's root part
- floatpad.CanCollide = true
- floatpad.CFrame = CFrame.new(humanoidRootPart.Position.X, humanoidRootPart.Position.Y - 3.75, humanoidRootPart.Position.Z)
- -- Small wait to yield the task
- task.wait(0)
- else
- -- Disable collision when float is not active
- local floatpad = game.Workspace:WaitForChild("Floatpad")
- floatpad.CanCollide = false
- end
- end)
- local vu = game:GetService("VirtualUser") -- Get the VirtualUser service to simulate inputs
- game:GetService("Players").LocalPlayer.Idled:connect(function() -- Listen for the player's Idled event
- -- Simulate pressing and releasing the right mouse button (Button2) to prevent idle timeout
- vu:Button2Down(Vector2.new(0, 0), workspace.CurrentCamera.CFrame) -- Simulate mouse down
- task.wait(1) -- Wait for 1 second
- vu:Button2Up(Vector2.new(0, 0), workspace.CurrentCamera.CFrame) -- Simulate mouse up
- end)
- local canTeleport = true
- local teleportDelay = math.random(2, 5) -- Randomized delay before teleporting to avoid patterns
- game:GetService("Workspace").Particles.Snowflakes.ChildAdded:Connect(function(snowflake)
- if canTeleport and ZenX.toggles.farmsnowflakes then
- local hash = tostring(math.random(1, 10000))
- snowflake.Name = hash
- canTeleport = false
- -- Added randomness to teleportation to simulate more natural behavior
- local randomOffset = Vector3.new(math.random(-3, 3), 7.5, math.random(-3, 3)) -- Slight randomization of the teleport location
- local teleportPosition = snowflake.CFrame + randomOffset
- -- Simulate a smooth transition rather than instantly teleporting
- local teleportTime = math.random(0.5, 1.5) -- Randomized teleportation duration
- local startTime = tick()
- local startCFrame = game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame
- -- Move to the snowflake slowly over the randomized time
- repeat
- wait(0.1) -- Update at small intervals to mimic smooth movement
- local progress = (tick() - startTime) / teleportTime
- if progress > 1 then progress = 1 end
- local newCFrame = startCFrame:Lerp(teleportPosition, progress)
- game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame = newCFrame
- until game:GetService("Workspace").Particles.Snowflakes:FindFirstChild(hash) == nil
- -- Reset float and wait before enabling teleportation again
- temptable.float = false
- wait(math.random(1, 2)) -- Slight random delay after teleportation
- canTeleport = true
- end
- end)
- game.Players.LocalPlayer.CharacterAdded:Connect(function(char)
- local humanoid = char:WaitForChild("Humanoid")
- humanoid.Died:Connect(function()
- -- Disable autofarm on death and handle state changes smoothly
- if ZenX.toggles.autofarm then
- temptable.dead = true
- ZenX.toggles.autofarm = false
- temptable.converting = false
- temptable.farmtoken = false
- -- Adding a random delay to avoid detection by anti-cheat systems
- task.wait(math.random(3, 7)) -- Simulating some random delay after death (mimics natural behavior)
- end
- -- Simulate a recovery phase
- if temptable.dead then
- -- Delay for recovery and respawn logic
- task.wait(math.random(25, 30)) -- Simulate player respawning or recovering naturally
- -- Reset all relevant states after waiting for respawn
- temptable.dead = false
- ZenX.toggles.autofarm = true
- temptable.converting = false
- temptable.tokensfarm = true
- -- Simulate normal player recovery and return to farming after respawn
- local recoveryTime = math.random(5, 10) -- Randomized time before resuming autofarm
- task.wait(recoveryTime)
- -- Make sure the game is not flooding with requests
- ZenX.toggles.autofarm = true
- temptable.tokensfarm = true
- end
- end)
- end)
- -- Collectibles Cleanup
- for _, v in next, game.workspace.Collectibles:GetChildren() do
- -- Ensure you match specific collectible names or patterns
- if string.find(v.Name, "SomePattern") then -- Replace "SomePattern" with the actual name pattern or condition
- pcall(function()
- v:Destroy() -- Safely attempt to destroy the object
- end)
- end
- end
- -- Speed Monitoring
- task.spawn(function()
- local lastPosition = game.Players.LocalPlayer.Character.HumanoidRootPart.Position
- while task.wait(0.1) do -- Adjusting the wait time to reduce CPU load
- local currentPosition = game.Players.LocalPlayer.Character.HumanoidRootPart.Position
- local currentSpeed = (currentPosition - lastPosition).magnitude / 0.1 -- Speed calculation based on the time difference
- temptable.running = currentSpeed > 0
- lastPosition = currentPosition -- Update last position for next calculation
- end
- end)
- loadingLoops:UpdateText("Loaded Loops")
- -- Monster Name Function with improvements
- local function getMonsterName(name)
- -- Ensure the name is a string before proceeding
- if type(name) ~= "string" then
- return "Invalid name"
- end
- local keywords = {
- ["Mushroom"] = "Ladybug",
- ["Rhino"] = "Rhino Beetle",
- ["Spider"] = "Spider",
- ["Ladybug"] = "Ladybug",
- ["Scorpion"] = "Scorpion",
- ["Mantis"] = "Mantis",
- ["Beetle"] = "Rhino Beetle",
- ["Tunnel"] = "Tunnel Bear",
- ["Coco"] = "Coconut Crab",
- ["King"] = "King Beetle",
- ["Stump"] = "Stump Snail",
- ["Were"] = "Werewolf"
- }
- -- Convert name to uppercase to ensure case-insensitivity
- local upperName = string.upper(name)
- -- Iterate over keywords and check for matches
- for keyword, fullName in pairs(keywords) do
- if string.find(upperName, string.upper(keyword)) then
- return fullName
- end
- end
- -- If no match is found, return the original name
- return name
- end
- -- Nearest Field Function with enhancements
- local function getNearestField(part)
- -- Ensure the part has a valid position
- if not part or not part.Position then
- return nil
- end
- local resultingFieldPos
- local lowestMag = math.huge
- -- Iterate through FlowerZones to find the nearest field
- for _, v in pairs(game:GetService("Workspace").FlowerZones:GetChildren()) do
- -- Check if v has a Position property (valid field)
- if v.Position then
- local mag = (v.Position - part.Position).magnitude
- if mag < lowestMag then
- lowestMag = mag
- resultingFieldPos = v.Position
- end
- end
- end
- -- If no field is found within range, default position
- if lowestMag > 100 then
- resultingFieldPos = part.Position + Vector3.new(0, 0, 10)
- end
- -- Special handling for Tunnel-related parts
- if string.find(part.Name, "Tunnel") then
- resultingFieldPos = part.Position + Vector3.new(20, -70, 0)
- end
- -- Return the position of the nearest field or the default position
- return resultingFieldPos
- end
- -- Fetch Visual Monster String Function with enhancements
- local function fetchVisualMonsterString(v)
- local mobText
- -- Check if the Attachment exists before accessing TimerGui and TimerLabel
- local attachment = v:FindFirstChild("Attachment")
- if attachment then
- local timerGui = attachment:FindFirstChild("TimerGui")
- if timerGui then
- local timerLabel = timerGui:FindFirstChild("TimerLabel")
- if timerLabel and timerLabel.Visible then
- -- Split the timer text and extract the appropriate part
- local splitTimer = string.split(timerLabel.Text, " ")
- mobText = getMonsterName(v.Name) .. ": " .. (splitTimer[3] or splitTimer[2] or splitTimer[1])
- else
- -- Timer is not visible, so mark as Ready
- mobText = getMonsterName(v.Name) .. ": Ready"
- end
- else
- -- TimerGui does not exist, default to Ready
- mobText = getMonsterName(v.Name) .. ": Ready"
- end
- else
- -- Attachment doesn't exist, default to Ready
- mobText = getMonsterName(v.Name) .. ": Ready"
- end
- return mobText
- end
- -- Get Toy Cooldown Function with enhancements
- local function getToyCooldown(toy)
- -- Check if the toy exists in the workspace
- if not workspace.Toys:FindFirstChild(toy) then
- return -1, false -- Toy does not exist, return default values
- end
- local c = require(game.ReplicatedStorage.ClientStatCache):Get() -- Fetch client stat cache
- local name = toy
- local lastUsedTime = c.ToyTimes[name] -- Get last used time from ToyTimes
- if not lastUsedTime then
- return -1, false -- If there's no record of the toy being used, return default values
- end
- -- Calculate the time remaining on the cooldown
- local t = workspace.OsTime.Value - lastUsedTime
- local cooldown = workspace.Toys[name].Cooldown.Value
- local remainingTime = cooldown - t -- Calculate remaining cooldown time
- local canBeUsed = remainingTime < 0 -- Toy can be used if the remaining time is negative
- return remainingTime, canBeUsed
- end
- -- Main Task Loop
- task.spawn(function()
- -- Safely wrap the entire task in a pcall for error handling
- pcall(function()
- -- Initial Setup
- loadingInfo:CreateLabel("") -- Clear previous labels
- loadingInfo:CreateLabel("Script loaded!") -- Notify the script is loaded
- wait(2) -- Wait for a moment before continuing
- -- Cleanup Old UI Elements (Safe Error Handling)
- pcall(function()
- for _, v in pairs(game.CoreGui:GetDescendants()) do
- if v.Name == "Startup S" then
- -- Move the Information S panel if exists before destroying
- v.Parent.Parent.RightSide["Information S"].Parent = v.Parent
- v:Destroy() -- Clean up unnecessary UI elements
- end
- end
- end)
- -- Create Panels for Mob and Utility Sections
- local mobPanel = hometab:CreateSection("Mob Panel")
- local utilityPanel = hometab:CreateSection("Utility Panel")
- -- Table to store the mob spawners and their respective buttons
- local statusTable = {}
- -- Populate Mob Panel with Spawners
- for _, v in pairs(game:GetService("Workspace").MonsterSpawners:GetChildren()) do
- if not string.find(v.Name, "CaveMonster") then
- local mobText = fetchVisualMonsterString(v) -- Get monster name and status
- if mobText then
- -- Create a button for each spawner
- local mobButton = mobPanel:CreateButton(mobText, function()
- -- Teleport to the nearest field of the monster
- api.tween(1, CFrame.new(getNearestField(v)))
- end)
- -- Add the button and associated spawner to the status table
- table.insert(statusTable, {mobButton, v})
- end
- end
- end
- -- Create Utility Buttons
- local utilities = {
- ["Red Field Booster"] = "Red Field Booster: 00:00",
- ["Blue Field Booster"] = "Blue Field Booster: 00:00",
- ["Field Booster"] = "White Field Booster: 00:00",
- ["Coconut Dispenser"] = "Coconut Dispenser: 00:00",
- ["Instant Converter"] = "Instant Converter A: 00:00",
- ["Instant Converter B"] = "Instant Converter B: 00:00",
- ["Instant Converter C"] = "Instant Converter C: 00:00",
- ["Wealth Clock"] = "Wealth Clock: 00:00",
- ["Mythic Meteor Shower"] = "Mythic Meteor Shower: 00:00"
- }
- -- Create buttons for each utility in the utility panel
- for toyName, label in pairs(utilities) do
- panel2:CreateButton(label, function()
- api.tween(1, CFrame.new(game:GetService("Workspace").Toys[toyName].Platform.Position + Vector3.new(0, 5, 0)))
- end)
- end
- -- Main loop to update UI every second
- while wait(1) do
- -- Update Mob Panel
- if ZenX.toggles.enablestatuspanel then
- -- Update mob status text for each spawner
- for _, v in pairs(statusTable) do
- if v[1] and v[2] then
- v[1]:UpdateText(fetchVisualMonsterString(v[2]))
- end
- end
- -- Update Mondo Chick Status
- local clock = workspace:FindFirstChild("Clock")
- if clock and clock:FindFirstChild("SurfaceGui") and clock.SurfaceGui:FindFirstChild("TextLabel") then
- local textLabel = clock.SurfaceGui.TextLabel
- local mondoChickStatus = (textLabel.Text == "! ! !" and "Mondo Chick: Ready") or "Mondo Chick: " .. string.gsub(textLabel.Text, "\n", "")
- mob2:UpdateText(mondoChickStatus)
- end
- -- Update Utility Panel
- -- Update Wind Shrine cooldown status
- local cooldown = require(game.ReplicatedStorage.TimeString)(3600 - (require(game.ReplicatedStorage.OsTime)() - (require(game.ReplicatedStorage.StatTools).GetLastCooldownTime(v1, "WindShrine") or 0)))
- windUpd:UpdateText(cooldown == "" and "Wind Shrine: Ready" or "Wind Shrine: " .. cooldown)
- -- Update the cooldown status for each utility
- for i, v in pairs(utilities) do
- local cooldown, isUsable = getToyCooldown(i)
- if cooldown and isUsable then
- v:UpdateText(isUsable and (i .. ": Ready") or (i .. ": " .. require(game.ReplicatedStorage.TimeString)(cooldown)))
- end
- end
- end
- end
- end)
- end)
- -- Load Auto Configuration if Available
- if _G.autoload and isfile("ZenX/BSS_" .. _G.autoload .. ".json") then
- local jsonData = readfile("ZenX/BSS_" .. _G.autoload .. ".json")
- ZenX = game:service'HttpService':JSONDecode(jsonData)
- end
- -- Helper function to disable collisions and set transparency for parts
- local function disableCollisionsAndSetTransparency(part)
- if part:IsA("BasePart") then
- part.CanCollide = false
- part.Transparency = math.max(part.Transparency, 0.5) -- Ensure transparency is not less than 0.5
- end
- end
- -- Disable Collisions and Set Transparency for Field Decorations
- local fieldDecos = workspace:FindFirstChild("FieldDecos")
- if fieldDecos then
- for _, part in next, fieldDecos:GetDescendants() do
- disableCollisionsAndSetTransparency(part)
- task.wait() -- Wait to prevent performance issues
- end
- end
- -- Disable Collisions and Set Transparency for Specific Decorations (Bushes and Blue Flowers)
- local decorations = workspace:FindFirstChild("Decorations")
- if decorations then
- for _, part in next, decorations:GetDescendants() do
- if part:IsA("BasePart") and (part.Parent.Name == "Bush" or part.Parent.Name == "Blue Flower") then
- disableCollisionsAndSetTransparency(part)
- task.wait() -- Wait to prevent performance issues
- end
- end
- end
- -- Set Transparency for Mushrooms in Misc Decorations
- local miscDecorations = workspace:FindFirstChild("Decorations") and workspace.Decorations:FindFirstChild("Misc")
- if miscDecorations then
- for _, v in next, miscDecorations:GetDescendants() do
- if v.Parent.Name == "Mushroom" then
- v.CanCollide = false
- v.Transparency = 0.5
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement