Pastebin

Paste #39343: No description

< previous paste - next paste>

Pasted by edit

Download View as text

--// Services
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualInputManager = game:GetService("VirtualInputManager")
local PathfindingService = game:GetService("PathfindingService")
local VirtualUser = game:GetService("VirtualUser")
local HttpService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local CollectionService = game:GetService("CollectionService")
local Lighting = game:GetService("Lighting")

--// Variables
local httpRequest = (syn and syn.request) or httprequest or request or (http and http.request)

local client = Players.LocalPlayer
local character = client.Character
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")

local camera = workspace.CurrentCamera
local mouse = client:GetMouse()

local controls = require(client.PlayerScripts.PlayerModule):GetControls()
local pizzaPlanet = require(client.PlayerScripts.Modules.JobHandler.PizzaPlanetDelivery)

local clientStats = ReplicatedStorage.Stats[client.Name]
local mainUi = client:WaitForChild("PlayerGui").MainGUI
local clientScripts = client:WaitForChild("PlayerScripts").Modules

local modules = {
	vehicleman = require(ReplicatedStorage.Modules.VehicleService.VehicleData),
	GUIHandler = require(client.PlayerScripts.Modules["_Utilities"].GUIHandler),
	notification = require(clientScripts._Utilities.GUIHandler),
	jobManager = require(clientScripts.JobHandler),
	wallService = require(ReplicatedStorage.Modules.WallService),
	stats = ReplicatedStorage.Stats[client.Name],
	objectService = require(ReplicatedStorage.Modules.ObjectService),
	materialData = require(ReplicatedStorage.Modules._Data.MaterialData),
	itemService = require(ReplicatedStorage.Modules.ItemService),
	plotService = require(ReplicatedStorage.Modules.PlotService),
	fenceService = require(ReplicatedStorage.Modules._Objects.FenceService),
	roofService = require(ReplicatedStorage.Modules.RoofService),
	groundService = require(ReplicatedStorage.Modules.GroundService),
	polygon = require(ReplicatedStorage.Modules._Utilities.Polygon),
	typeService = require(ReplicatedStorage.Modules.TypeService),
	resizeService = require(ReplicatedStorage.Modules.ResizeService),
	foodService = require(ReplicatedStorage.Modules.FoodService),
	equipmentService = require(ReplicatedStorage.Modules.EquipmentService),
	billService = require(ReplicatedStorage.Modules.BillService),
	staminaService = require(ReplicatedStorage.Modules.StaminaService),
	skillData = require(ReplicatedStorage.Modules._Data.SkillData),
	colorService = require(ReplicatedStorage.Modules.ColorService),
	dataService = require(ReplicatedStorage.Modules.DataService),
	PizzaPlanetDelivery = require(clientScripts.JobHandler.PizzaPlanetDelivery),
	BloxBurgersLineCook = require(clientScripts.JobHandler.BloxBurgersEmployee.BloxBurgersLineCook),
	
	jobs = {},
}

local getRemote = debug.getupvalue(modules.dataService.FireServer, 5);

--// Functions
do 
	function fireServer(args)
		local clonedArgs = table.clone(args);
		local remote = getRemote(clonedArgs.Type);

		if (not remote) then return end; 

		clonedArgs.Type = nil;

		return remote:FireServer(clonedArgs);
	end

	function invokeServer(args)
		local clonedArgs = table.clone(args)
		local remote = getRemote(clonedArgs.Type, true);

		if (not remote) then return end; 

		clonedArgs.Type = nil;

		return remote:InvokeServer(clonedArgs);
	end

	function applyModifiers()
		local function safeFindFirstChildWhichIsA(instance, className)
			for _, child in ipairs(instance:GetChildren()) do
				if child:IsA(className) then
					return child
				end
			end
			return nil
		end

		local function addModifier(part, label)
			local existing = safeFindFirstChildWhichIsA(part, "PathfindingModifier")
			if existing then
				pcall(function()
					existing:Destroy()
				end)
			end

			local mod = Instance.new("PathfindingModifier")
			mod.Name = "Azurix_Mod"
			mod.PassThrough = false
			mod.Label = label
			mod.Parent = part
		end

		local function safeDescendants(container, callback)
			if container and container:IsA("Instance") then
				for _, part in ipairs(container:GetDescendants()) do
					if part:IsA("BasePart") then
						callback(part)
					end
				end
			end
		end

		local function safeChildren(container, callback)
			if container and container:IsA("Instance") then
				for _, part in ipairs(container:GetChildren()) do
					if part:IsA("BasePart") then
						callback(part)
					end
				end
			end
		end

		for _, plot in ipairs(workspace:WaitForChild("Plots"):GetChildren()) do
			local ground = plot:FindFirstChild("Ground")
			if ground then
				addModifier(ground, "Terrain")
			end
		end

		safeDescendants(workspace.Environment.Props:FindFirstChild("Fences"), function(part)
			addModifier(part, "PierFences")
		end)

		safeDescendants(workspace.Environment.RoadsNetwork.Network:FindFirstChild("Parking"), function(part)
			addModifier(part, "Road")
		end)

		safeDescendants(workspace.Environment.RoadsNetwork.Network:FindFirstChild("Roads"), function(part)
			addModifier(part, "Road")
		end)

		safeDescendants(Workspace.Environment.Locations.Beach:FindFirstChild("CityBeach"), function(part)
			addModifier(part, "PierFences")
		end)

		safeDescendants(workspace.Environment.RoadsNetwork:FindFirstChild("Sidewalk"), function(part)
			addModifier(part, "Pavement")
		end)

		safeDescendants(workspace.Environment:FindFirstChild("RoadsNetwork"), function(part)
			if part.Name == "Crosswalk_Cobble" then
				addModifier(part, "Road")
			end
		end)

		safeDescendants(workspace.Environment:FindFirstChild("Foliage"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		safeChildren(workspace.Environment.Terrain:FindFirstChild("Bushes"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		safeDescendants(workspace.Environment:FindFirstChild("World Lights"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		safeDescendants(game.Workspace.Environment:FindFirstChild("DetailObjects"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		local ring = workspace.Environment.Locations.City.PizzaPlanet.Exterior:FindFirstChild("Ring")
		if ring then
			addModifier(ring, "IgnoreArea")
		end

		local pier = workspace.Environment.Locations.Beach:FindFirstChild("Pier")
		if pier then
			local fenceFolder = pier.Geometry:FindFirstChild("Fence")
			if fenceFolder then
				safeDescendants(fenceFolder, function(part)
					addModifier(part, "PierFences")
				end)
			end

			local plankFolder = pier.Exterior:FindFirstChild("FloorPlanks")
			if plankFolder then
				for _, v in ipairs(plankFolder:GetChildren()) do
					if v:IsA("BasePart") and (v.Name == "WidePlanks" or v.Name == "FourWideplanks") then
						addModifier(v, "Planks")
					end
				end
			end
		end

		s_Source = require(ReplicatedStorage.Modules.ItemService),
	plotService = require(ReplicatedStorage.Modules.PlotService),
	fenceService = require(ReplicatedStorage.Modules._Objects.FenceService),
	roofService = require(ReplicatedStorage.Modules.RoofService),
	groundService = require(ReplicatedStorage.Modules.GroundService),
	polygon = require(ReplicatedStorage.Modules._Utilities.Polygon),
	typeService = require(ReplicatedStorage.Modules.TypeService),
	resizeService = require(ReplicatedStorage.Modules.ResizeService),
	foodService = require(ReplicatedStorage.Modules.FoodService),
	equipmentService = require(ReplicatedStorage.Modules.EquipmentService),
	billService = require(ReplicatedStorage.Modules.BillService),
	staminaService = require(ReplicatedStorage.Modules.StaminaService),
	skillData = require(ReplicatedStorage.Modules._Data.SkillData),
	colorService = require(ReplicatedStorage.Modules.ColorService),
	dataService = require(ReplicatedStorage.Modules.DataService),
	PizzaPlanetDelivery = require(clientScripts.JobHandler.PizzaPlanetDelivery),
	BloxBurgersLineCook = require(clientScripts.JobHandler.BloxBurgersEmployee.BloxBurgersLineCook),
	
	jobs = {},
}

local getRemote = debug.getupvalue(modules.dataService.FireServer, 5);

--// Functions
do 
	function fireServer(args)
		local clonedArgs = table.clone(args);
		local remote = getRemote(clonedArgs.Type);

		if (not remote) then return end; 

		clonedArgs.Type = nil;

		return remote:FireServer(clonedArgs);
	end

	function invokeServer(args)
		local clonedArgs = table.clone(args)
		local remote = getRemote(clonedArgs.Type, true);

		if (not remote) then return end; 

		clonedArgs.Type = nil;

		return remote:InvokeServer(clonedArgs);
	end

	function applyModifiers()
		local function safeFindFirstChildWhichIsA(instance, className)
			for _, child in ipairs(instance:GetChildren()) do
				if child:IsA(className) then
					return child
				end
			end
			return nil
		end

		local function addModifier(part, label)
			local existing = safeFindFirstChildWhichIsA(part, "PathfindingModifier")
			if existing then
				pcall(function()
					existing:Destroy()
				end)
			end

			local mod = Instance.new("PathfindingModifier")
			mod.Name = "Azurix_Mod"
			mod.PassThrough = false
			mod.Label = label
			mod.Parent = part
		end

		local function safeDescendants(container, callback)
			if container and container:IsA("Instance") then
				for _, part in ipairs(container:GetDescendants()) do
					if part:IsA("BasePart") then
						callback(part)
					end
				end
			end
		end

		local function safeChildren(container, callback)
			if container and container:IsA("Instance") then
				for _, part in ipairs(container:GetChildren()) do
					if part:IsA("BasePart") then
						callback(part)
					end
				end
			end
		end

		for _, plot in ipairs(workspace:WaitForChild("Plots"):GetChildren()) do
			local ground = plot:FindFirstChild("Ground")
			if ground then
				addModifier(ground, "Terrain")
			end
		end

		safeDescendants(workspace.Environment.Props:FindFirstChild("Fences"), function(part)
			addModifier(part, "PierFences")
		end)

		safeDescendants(workspace.Environment.RoadsNetwork.Network:FindFirstChild("Parking"), function(part)
			addModifier(part, "Road")
		end)

		safeDescendants(workspace.Environment.RoadsNetwork.Network:FindFirstChild("Roads"), function(part)
			addModifier(part, "Road")
		end)

		safeDescendants(Workspace.Environment.Locations.Beach:FindFirstChild("CityBeach"), function(part)
			addModifier(part, "PierFences")
		end)

		safeDescendants(workspace.Environment.RoadsNetwork:FindFirstChild("Sidewalk"), function(part)
			addModifier(part, "Pavement")
		end)

		safeDescendants(workspace.Environment:FindFirstChild("RoadsNetwork"), function(part)
			if part.Name == "Crosswalk_Cobble" then
				addModifier(part, "Road")
			end
		end)

		safeDescendants(workspace.Environment:FindFirstChild("Foliage"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		safeChildren(workspace.Environment.Terrain:FindFirstChild("Bushes"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		safeDescendants(workspace.Environment:FindFirstChild("World Lights"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		safeDescendants(game.Workspace.Environment:FindFirstChild("DetailObjects"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)

		local ring = workspace.Environment.Locations.City.PizzaPlanet.Exterior:FindFirstChild("Ring")
		if ring then
			addModifier(ring, "IgnoreArea")
		end

		local pier = workspace.Environment.Locations.Beach:FindFirstChild("Pier")
		if pier then
			local fenceFolder = pier.Geometry:FindFirstChild("Fence")
			if fenceFolder then
				safeDescendants(fenceFolder, function(part)
					addModifier(part, "PierFences")
				end)
			end

			local plankFolder = pier.Exterior:FindFirstChild("FloorPlanks")
			if plankFolder then
				for _, v in ipairs(plankFolder:GetChildren()) do
					if v:IsA("BasePart") and (v.Name == "WidePlanks" or v.Name == "FourWideplanks") then
						addModifier(v, "Planks")
					end
				end
			end
		end

		safeDescendants(workspace.Environment:FindFirstChild("RentalVehicles"), function(part)
			addModifier(part, "PierFences")
			part.CanCollide = false
		end)
	end

	function lookAt(position)
		local character = client.Character or client.CharacterAdded:Wait()
		local hrp = character:WaitForChild("HumanoidRootPart")

		local flatLookVector = Vector3.new(position.X, hrp.Position.Y, position.Z) - hrp.Position
		flatLookVector = flatLookVector.Unit
		local newCFrame = CFrame.new(hrp.Position, hrp.Position + flatLookVector)
		hrp.CFrame = newCFrame
		camera.CFrame = CFrame.new(camera.CFrame.Position, camera.CFrame.Position + hrp.CFrame.LookVector)
	end

	function randomWait(min, max)
		local waitTime = math.random() * (max - min) + min
		task.wait(waitTime)
		return waitTime
	end

	function pathfind(position, settings)
		local controls = require(client.PlayerScripts:WaitForChild("PlayerModule")):GetControls()
		controls:Disable()

		local character = client.Character or client.CharacterAdded:Wait()
		local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
		local humanoid = character:WaitForChild("Humanoid")

		local path
		if type(settings) == "table" then
			path = PathfindingService:CreatePath(settings)
		else
			path = PathfindingService:CreatePath()
		end

		path:ComputeAsync(humanoidRootPart.Position, position)

		for _, waypoint in next, path:GetWaypoints() do
			humanoid:MoveTo(waypoint.Position)
			if waypoint.Action == Enum.PathWaypointAction.Jump then
				humanoid.Jump = true
			end
			humanoid.MoveToFinished:Wait()
		end

		controls:Enable()
	end

	function beautifyMoney(cash)
		cash = type(cash) == "number" and cash or tonumber(cash)
		local formatted = math.floor(cash)
		while true do
			formatted, count = string.gsub(formatted, "^(-?%d+)(%d%d%d)", "%1,%2")
			if count == 0 then
				break
			end
		end
		return formatted
	end

	function reverseTable(table)
		for index = 1, math.floor(#table / 2) do
			local writeIndex = #table - index + 1
			table[index], table[writeIndex] = table[writeIndex], table[index]
		end
	end

	function dataRequire(module)
		return require(module)("", "")
	end

	function encrypt(message)
		local encrypted = ""
		for i = 1, #message do
			local char = message:sub(i, i)
			local encryptedChar = string.char(char:byte() + 1)
			encrypted = encrypted .. encryptedChar
		end
		return encrypted
	end

	function getClosestObject(Types)
		local Results = {}
		for i, v in next, game.workspace.Plots["Plot_" .. client.Name].House:GetChildren() do
			for k, x in next, v:GetDescendants() do
				for a, b in next, Types do
					if x.Name:find(b) and x:IsA("Part") then
						table.insert(Results, x)
					end
				end
			end
		end
		if #Results == 1 then
			return Results[1]
		else
			local closest
			local last = math.huge
			for i, v in next, Results do
				local mag = (client.Character.HumanoidRootPart.Position - v.Position).magnitude
				if mag < last then
					last = mag
					closest = v
				end
			end
			return closest
		end
	end

	function TweenToPos(target, speed)
		if client.Character:FindFirstChild("HumanoidRootPart") then
			local dist = (client.Character.HumanoidRootPart.Position - target.p).magnitude
			curTween = game:GetService("TweenService"):Create(
				client.Character.HumanoidRootPart,
				TweenInfo.new(dist / speed, Enum.EasingStyle.Linear),
				{
					CFrame = target,
				}
			)
			curTween:Play()
			curTween.Completed:wait()
			curTween = nil
		end
	end

	function findCountFromTextLabels(imgLabel)
		for _, child in ipairs(imgLabel:GetChildren()) do
			if child.ClassName == "TextLabel" then
				local text = child.Text
				local count = text:match("^x(%d+)$")
				if count then
					return tonumber(count)
				end
			elseif child.ClassName == "ImageLabel" then
				local nestedCount = findCountFromTextLabels(child)
				if nestedCount then
					return nestedCount
				end
			end
		end
		return 1
	end

	function findSizeFromTextLabels(imgLabel)
		for _, child in ipairs(imgLabel:GetChildren()) do
			if child.ClassName == "ImageLabel" then
				for _, subchild in ipairs(child:GetChildren()) do
					if subchild.ClassName == "TextLabel" and subchild.Text:match("^[LSM]$") then
						return subchild.Text
					end
				end
			end
		end
		return nil
	end

	function parseFrame(frame)
		local parts = {}
		local isBurger = false
		local isDrinkOrSide = false
		local size = nil
		local image_to_object = { ["rbxassetid://14358866788"] = "patty_left" , ["rbxassetid://14358886220"] = "patty_right", ["rbxassetid://14358865402"] = "lettuce", ["rbxassetid://14358884748"] = "tomato", ["rbxassetid://14358880695"] = "cheese", ["rbxassetid://14467423053"] = "fries", ["rbxassetid://14467425084"] = "soda", ["rbxassetid://14467509651"] = "moz_sticks", ["rbxassetid://14358878251"] = "onion", ["rbxassetid://14467511580"] = "onion_rings", ["rbxassetid://9555980177"] = "fruit_juice", ["rbxassetid://1588110682"] = "milkshake" }

		for _, child in ipairs(frame:GetChildren()) do
			if child.ClassName == "ImageLabel" then
				local id = child.Image
				local partName = image_to_object[id]
				if partName then
					local count = findCountFromTextLabels(child) or 1
					parts[partName] = (parts[partName] or 0) + count
					if
						partName == "patty_left"
						or partName == "patty_right"
						or partName == "lettuce"
						or partName == "tomato"
						or partName == "cheese"
						or partName == "onion"
					then
						isBurger = true
					elseif
						partName == "fries"
						or partName == "moz_sticks"
						or partName == "onion_rings"
						or partName == "soda"
						or partName == "fruit_juice"
						or partName == "milkshake"
					then
						isDrinkOrSide = true
						size = findSizeFromTextLabels(child)
					end
				end
			end
		end

		return {
			parts = parts,
			isBurger = isBurger,
			isDrinkOrSide = isDrinkOrSide,
			size = size,
		}
	end

	function calculatePattyCount(parts)
		local leftCount = parts["patty_left"] or 0
		local rightCount = parts["patty_right"] or 0

		if leftCount > 0 and rightCount > 0 then
			return -(leftCount + rightCount)
		elseif leftCount > 0 then
			return 10 + leftCount
		elseif rightCount > 0 then
			return 20 + rightCount
		else
			return 0
		end
	end

	function getSideCode(part, size)
		local base = sideBaseCodes[part]
		if not base then
			return nil
		end
		local offset = sizeOffsets[size] or 0
		return base + offset
	end

	function getDrinkCode(part, size)
		local base = drinkBaseCodes[part]
		if not base then
			return nil
		end
		local offset = sizeOffsets[size] or 0
		return base + offset
	end

	function buildOrderTable(decodedFrames)
		local burgerOrder = { 0, 0, 0, 0, 0, 2 }
		local sideOrder = nil
		local drinkOrder = nil

		local burgerIndices = {
			cheese = 2,
			lettuce = 3,
			tomato = 4,
			onion = 5,
		}

		for _, decoded in ipairs(decodedFrames) do
			if decoded.isBurger then
				local pattyCount = calculatePattyCount(decoded.parts)
				if pattyCount == 0 then
					pattyCount = 11
				end
				burgerOrder[1] = burgerOrder[1] + pattyCount
				for part, count in pairs(decoded.parts) do
					if part ~= "patty_left" and part ~= "patty_right" then
						local idx = burgerIndices[part]
						if idx then
							burgerOrder[idx] = burgerOrder[idx] + count
						end
					end
				end
			elseif decoded.isDrinkOrSide then
				for part, count in pairs(decoded.parts) do
					if sideBaseCodes[part] then
						sideOrder = getSideCode(part, decoded.size)
					elseif drinkBaseCodes[part] then
						drinkOrder = getDrinkCode(part, decoded.size)
					end
				end
			end
		end

		local orderTable = {
			[1] = {
				Order = {
					burgerOrder,
				},
			},
		}

		if sideOrder then
			orderTable[1].Order[2] = sideOrder
		end
		if drinkOrder then
			orderTable[1].Order[3] = drinkOrder
		end

		return orderTable
	end

	function getHarvestable()
		local targetPlot = workspace.Plots["Plot_" .. client.Name]
		local harvestable = {}

		for i, v in pairs(targetPlot.House.Objects:GetChildren()) do
			if v.Name == "Berry Bush" and not v.ObjectData:FindFirstChild("GrowProgress") then
				table.insert(harvestable, v)
			end
		end

		return harvestable
	end

	function isMemberOf(origin, member)
		for _, descendant in next, origin:GetDescendants() do
			if member == descendant then
				return descendant
			end
		end
	end

	function waitUntilUnpaused()
		while featureConfig.autoBuild.paused do
			task.wait(0.1)
		end
	end

	function checkLowMood()
		local moodValues = {
			modules.stats.MoodData.Fun.Value,
			modules.stats.MoodData.Energy.Value,
			modules.stats.MoodData.Hygiene.Value,
			modules.stats.MoodData.Hunger.Value,
		}

		local lowCount = 0
		for _, value in pairs(moodValues) do
			if value < featureConfig.autoMood.CheckMoodValue then
				lowCount += 1
			end
		end

		return lowCount >= 2
	end

	function boostHunger()
		local fridge = getClosestObject({ "Fridge" })

		if not fridge then
			return Rayfield:Notify({
				Title = "Azurix",
				Content = "You need a fridge!",
				Duration = 25,
				Image = 4483362458,
			})
		end

		featureConfig.autoMood.currentMoodStatus = "Eating Food"

		TweenToPos(fridge.CFrame, 16)

		local hunger = modules.stats.MoodData.Hunger
		local start = os.clock()
		local reached = false

		local conn = hunger.Changed:Connect(function(val)
			if val >= 100 then
				reached = true
			end
		end)

		repeat
			task.spawn(function()
				fireServer({
					Type = "Interact",
					Target = fridge,
					Path = "4",
				})
			end)
			task.wait(0.2)
			task.spawn(function()
				fireServer({
					Type = "TakeQuickFood",
					Name = "Pear",
				})
			end)
			task.wait(0.2)

			repeat
				if client.Character:FindFirstChild("Pear") then
					fireServer({
						Type = "EatEquipped",
					})
				end
				task.wait(5)
			until not client.Character:FindFirstChild("Pear") or hunger.Value >= 100 or os.clock() - start > 60

			task.wait(0.5)
		until reached or os.clock() - start > 60

		conn:Disconnect()
		local snack = game.Workspace[client.Name]:FindFirstChild("Pear")
		if snack then
			fireServer({
				Type = "UnequipItem",
				Item = snack,
			})
		end
	end

	function boostHygiene()
		local tub = getClosestObject({ "Bathtub" }) or getClosestObject({ "Shower" })

		if not tub then
			return Rayfield:Notify({
				Title = "Azurix",
				Content = "You need a shower/tub!",
				Duration = 25,
				Image = 4483362458,
			})
		end

		featureConfig.autoMood.currentMoodStatus = "Showering"

		TweenToPos(tub.CFrame + Vector3.new(3, 2, 0), 16)
		fireServer({
			Type = "Interact",
			Target = tub,
			Path = "1",
		})

		local hygiene = modules.stats.MoodData.Hygiene
		local start = os.clock()
		local reached = false

		local conn = hygiene.Changed:Connect(function(val)
			if val >= 100 then
				reached = true
			end
		end)

		repeat
			task.wait(0.5)
			if hygiene.Value >= 100 then
				reached = true
			end
		until reached or os.clock() - start > 60

		conn:Disconnect()

		fireServer({
			Type = "Detach",
		})
	end

	function boostEnergy()
		local bed = getClosestObject({ "Bed" })

		if not bed then
			return Rayfield:Notify({
				Title = "Azurix",
				Content = "You need a bed!",
				Duration = 25,
				Image = 4483362458,
			})
		end

		featureConfig.autoMood.currentMoodStatus = "Sleeping"

		TweenToPos(bed.CFrame + Vector3.new(3, 2, 0), 16)

		fireServer({
			Type = "Interact",
			Target = bed,
			Path = "1",
		})

		local energy = modules.stats.MoodData.Energy
		local start = os.clock()
		local reached = false

		local conn = energy.Changed:Connect(function(val)
			if val >= 100 then
				reached = true
			end
		end)

		repeat
			task.wait(0.5)
			if energy.Value >= 100 then
				reached = true
			end
		until reached or os.clock() - start > 60

		conn:Disconnect()

		fireServer({
			Type = "Detach",
		})
	end

	function boostFun()
		local tv = getClosestObject({ "TV" })
			or getClosestObject({ "Pixelview" })
			or getClosestObject({ "Television" })

		if not tv then
			return Rayfield:Notify({
				Title = "Azurix",
				Content = "You need a TV!",
				Duration = 25,
				Image = 4483362458,
			})
		end

		featureConfig.autoMood.currentMoodStatus = "Watching TV"

		TweenToPos(tv.CFrame + Vector3.new(3, 2, 0), 16)

		for _ = 1, 3 do
			fireServer({
				Type = "Interact",
				Target = tv,
				Path = "1",
			})
		end

		fireServer({
			Type = "Interact",
			Target = tv,
			Path = "2",
		})

		local fun = modules.stats.MoodData.Fun
		local start = os.clock()
		local reached = false

		local conn = fun.Changed:Connect(function(val)
			if val >= 100 then
				reached = true
			end
		end)

		repeat
			task.wait(0.5)
			if fun.Value >= 100 then
				reached = true
			end
		until reached or os.clock() - start > 60

		conn:Disconnect()

		fireServer({
			Type = "Interact",
			Target = tv,
			Path = "1",
		})
	end

	function boost()
		featureConfig.autoMood.isBoosting = true

		invokeServer({
			Type = "ToPlot",
			Player = client.Name,
		})

		task.wait(0.5)
		fireServer({ Type = "EndShift" })

		boostHygiene()
		boostEnergy()
		boostFun()
		boostHunger()
		if not featureConfig.autofarmSettings.isOnBreak then
			require(clientScripts.JobHandler):GoToWork(featureConfig.autoBuild.SelectedJob)

			invokeServer({
	           Type = "StartShift",
	           Job = featureConfig.autoBuild.SelectedJob
            })
		end
		task.wait(1)
		featureConfig.autoMood.isBoosting = false
		featureConfig.autoMood.currentMoodStatus = "Waiting"
	end

	function shouldTakeBreak()
		if not featureConfig.autofarmSettings.breaksEnabled then
			featureConfig.autofarmSettings.timeTill = "Disabled"
			return false
		end

		if not featureConfig.autoBuild.SelectedJob then
			featureConfig.autofarmSettings.timeTill = "Disabled"
			return false
		end

		if featureConfig.autoMood.isBoosting then
			featureConfig.autofarmSettings.timeTill = "Disabled"
			return false
		end

		local now = os.clock()
		local timeSinceLastBreak = now - featureConfig.autofarmSettings.lastBreakTick

		if featureConfig.autofarmSettings.isOnBreak then
			local remainingBreak = (featureConfig.autofarmSettings.breaktime * 60) - timeSinceLastBreak
			featureConfig.autofarmSettings.timeTill = math.max(0, math.floor(remainingBreak))
		else
			local remainingWork = (featureConfig.autofarmSettings.worktime * 60) - timeSinceLastBreak
			featureConfig.autofarmSettings.timeTill = math.max(0, math.floor(remainingWork))
		end

		if featureConfig.autofarmSettings.isOnBreak then
			if timeSinceLastBreak >= (featureConfig.autofarmSettings.breaktime * 60) then
				task.wait()
				featureConfig.autofarmSettings.isOnBreak = false
				featureConfig.autofarmSettings.lastBreakTick = os.clock()

				require(clientScripts.JobHandler):GoToWork(featureConfig.autoBuild.SelectedJob)
				featureConfig.autoMood.currentMoodStatus = "Working"
				return false
			else
				return true
			end
		else
			if timeSinceLastBreak >= (featureConfig.autofarmSettings.worktime * 60) then
				task.wait()
				featureConfig.autofarmSettings.isOnBreak = true
				featureConfig.autofarmSettings.lastBreakTick = os.clock()

				fireServer({ Type = "EndShift" })
				task.wait(0.25)
				invokeServer({
					Type = "ToPlot",
					Player = client.Name,
				})

				if featureConfig.autoHarvest.enabled then
					local harvestable = getHarvestable()

					if #harvestable > 0 then
						for i, harvest in pairs(harvestable) do
							TweenToPos(harvest.Position, 16)

							fireServer({
								Type = "Interact",
								Target = harvest,
								Path = "6",
							})

							task.wait(2)
						end
					end
				end

				featureConfig.autoMood.currentMoodStatus = "On Break"
				boost()
				return true
			end
		end

		return false
	end

	function getClosestCustomer()
		local rootPart = character:FindFirstChild("HumanoidRootPart")

		local closest = nil
		local shortestDist = math.huge

		for _, customer in ipairs(CollectionService:GetTagged("PizzaPlanetDeliveryCustomer")) do
			if customer:IsA("Model") and customer.PrimaryPart then
				local dist = (customer.PrimaryPart.Position - rootPart.Position).Magnitude
				if dist < shortestDist then
					shortestDist = dist
					closest = customer
				end
			end
		end

		if closest then
			return closest
		end
	end

	function getClosetSpawn(spawnTable)
		local closestSpawn = nil
		local shortestDistance = math.huge

		local hrp = character:FindFirstChild("HumanoidRootPart")
		if not hrp then
			return nil
		end

		for _, spawn in ipairs(spawnTable) do
			local pos
			if spawn:IsA("Model") and spawn:FindFirstChild("PrimaryPart") then
				pos = spawn.PrimaryPart.Position
			elseif spawn:IsA("BasePart") then
				pos = spawn.Position
			elseif spawn:IsA("Model") then
				pos = spawn:GetModelCFrame().Position
			end

			if pos then
				local dist = (hrp.Position - pos).Magnitude
				if dist < shortestDistance then
					shortestDistance = dist
					closestSpawn = spawn
				end
			end
		end

		return closestSpawn
	end

	function playerTracker()
		for _, player in next, game.Players:GetPlayers() do
			local plot = workspace.Plots:FindFirstChild("Plot_" .. player.Name)

			if plot then
				table.insert(PlayersList, player.Name)
				selectPlayer:Refresh(PlayersList)
			end
		end

		Players.PlayerAdded:Connect(function(player)
			local plot = workspace.Plots:FindFirstChild("Plot_" .. player.Name)

			if plot then
				table.insert(PlayersList, player.Name)
				selectPlayer:Refresh(PlayersList)
			end
		end) 

		Players.PlayerRemoving:Connect(function(player)
			local index = table.find(PlayersList, player.Name)

			if index then
				table.remove(PlayersList, index)
				selectPlayer:Refresh(PlayersList)
			end
		end)
	end

	function antiAfk()
		while task.wait(60) do
			VirtualUser:CaptureController()
			VirtualUser:ClickButton2(Vector2.new(0, 0))
		end
	end

	function toggleAllDoors(status)
		for i, v in next, workspace.Plots:GetDescendants() do
			if v.Name == "IsOpen" then
				v.Value = status
			end
		end
	end

	function findCrate()
	  local cratePos = Vector3.new(541.024, 21.26, -792.213)
	  local cratesFolder = workspace.Environment.Locations.City.Supermarket.Geometry.Crates

	   for _, crate in ipairs(cratesFolder:GetChildren()) do
		  if crate:IsA("BasePart") and (crate.Position - cratePos).Magnitude < 0.01 then
			return crate
		   end
	    end

	  return nil
    end

    function getShelve()
	   local shelves = game:GetService("Workspace").Environment.Locations.City.Supermarket.Interior.Shelves

	   for _, shelf in pairs(shelves:GetChildren()) do
	     	if shelf:FindFirstChild("IsEmpty") and shelf.IsEmpty.Value == true then
		 	  return shelf
		    end
	    end

	  return nil
   end

	function isInstanceNearPosition(instance, targetPos, tolerance)
		tolerance = tolerance or 0.1

		if not instance then
			return false
		end

		local pos
		if instance:IsA("BasePart") then
			pos = instance.Position
		elseif instance:IsA("Model") and instance.PrimaryPart then
			pos = instance.PrimaryPart.Position
		else
			return false
		end

		return (pos - targetPos).Magnitude <= tolerance
	end

	function getCurrentStation(path)
		local stations = path
		local closestStation = nil
		local shortestDistance = math.huge

		for _, station in pairs(stations:GetChildren()) do
			if station:IsA("Model") and station.PrimaryPart then
				local distance = (station.PrimaryPart.Position - client.Character.PrimaryPart.Position).Magnitude
				local inUse = station:FindFirstChild("InUse")

				if
					distance < shortestDistance
					and (not inUse or inUse.Value == nil or inUse.Value == false or inUse.Value == client)
				then
					shortestDistance = distance
					closestStation = station
				end
			end
		end

		return closestStation
	end

    function moodBreakCheck()
        if shouldTakeBreak() then
			featureConfig.autoMood.currentMoodStatus = "On Break"
		end

		if featureConfig.autoMood.MoodBoostEnabled and checkLowMood() then
			featureConfig.autoMood.currentMoodStatus = "Starting"
			boost()
		end
    end

	function fireConnections(instance, signal)
		firesignal(instance[signal])
	end

	function applyStockerMods()
		local function safeFindFirstChildWhichIsA(instance, className)
			for _, child in ipairs(instance:GetChildren()) do
				if child:IsA(className) then
					return child
				end
			end
			return nil
		end

		local function addModifier(part, label)
			local existing = safeFindFirstChildWhichIsA(part, "PathfindingModifier")
			if existing then
				pcall(function()
					existing:Destroy()
				end)
			end

			local mod = Instance.new("PathfindingModifier")
			mod.Name = "Azurix_Mod"
			mod.PassThrough = false
			mod.Label = label
			mod.Parent = part
		end

		local function safeDescendants(container, callback)
			if container and container:IsA("Instance") then
				for _, part in ipairs(container:GetDescendants()) do
					if part:IsA("BasePart") then
						callback(part)
					end
				end
			end
		end

		local function safeChildren(container, callback)
			if container and container:IsA("Instance") then
				for _, part in ipairs(container:GetChildren()) do
					if part:IsA("BasePart") then
						callback(part)
					end
				end
			end
		end

		local floor = game["Workspace"]["Environment"]["Locations"]["City"]["Supermarket"]["Exterior"]["Floor"]
		addModifier(floor, "Floor")

		for i, v in
			pairs(
				game["Workspace"]["Environment"]["Locations"]["City"]["Supermarket"]["Interior"]["Shelves"]:GetChildren()
			)
		do
			if isInstanceNearPosition(v.PrimaryPart, Vector3.new(532.849, 20.86, -764.019)) then
				safeDescendants(v, function(part)
					addModifier(part, "shelves")
				end)
			end
		end
	end
end

--// Globals
do 
	getgenv().sideBaseCodes = { fries = 11, moz_sticks = 21, onion_rings = 31 }
	getgenv().drinkBaseCodes = { soda = 11, fruit_juice = 21, milkshake = 31 }
	getgenv().sizeOffsets = { S = 0, M = 1, L = 2 }
	getgenv().data = { foodList = dataRequire(ReplicatedStorage.Items.Food), appliances = dataRequire(ReplicatedStorage.Items.Appliances), customers = workspace["_game"].SpawnedCharacters, skills = {}, items = ReplicatedStorage.Items, vehicleData = require(ReplicatedStorage.Modules.VehicleService.VehicleData), oldStaminaFunction = modules.staminaService.GetMaxStaminaValue }
	getgenv().featureConfig = {autoBuild={saveTarget=nil,loadId=nil,infoId=nil,startAfter=0,webhookAutoBuild=false,saveDelay=false,maxMoneyForObject=100000,useVehicles=true,useBlockbux=false,abortBuild=false,playerTargetTextbox=nil,useInventoryItems=true,paused},autoMood={CheckMoodValue=20,currentMoodStatus="Waiting",MoodBoostEnabled=false,isBoosting=false},jobList={"StylezHairdresser","PizzaPlanetBaker","CleanJanitor"},autofarmSettings={enablequit=false,quitatamt=nil,worktime=30,breaktime=30,breaksEnabled=false,SelectedJob=nil,isOnBreak=false,lastBreakTick=nil,modsApplied=false,superMarketMods=false,currentStatus="Starting",currentlyEnabled=false,timeTill=nil,workTick=nil,hasTakenIntialBag=false,itemScannedCount=0},webhookSettings={webhook=nil,webhookdelay=5,enabled=false},webSocket={connected="Disconnected"},autoHarvest={itemToHarvest="Berry Bush",enabled=false}}
	getgenv().farmStats = { values = { totalEarnings = 0, lastShift = 0 } }
	getgenv().PlayersList = {}
end

--// Start
task.spawn(antiAfk)

modules.PizzaPlanetDelivery.ShiftLoop = function() return task.wait(9e9) end

--// Interface
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
	Name = "Synix",
	LoadingTitle = "Synix Interface",
	LoadingSubtitle = "Free Bloxburg",
	ConfigurationSaving = {
		Enabled = true,
		FolderName = "SynixBloxburg",
		FileName = "Config"
	}
})

local autoFarmTab = Window:CreateTab("Auto Farm", 4483362458)

local autoFarmSection = autoFarmTab:CreateSection("Main")

autoFarmSection:CreateDropdown({
	Name = "Select Job",
	Options = featureConfig.jobList,
	CurrentOption = "None",
	Callback = function(selected)
		featureConfig.autoBuild.SelectedJob = selected
	end
})

autoFarmSection:CreateButton({
	Name = "Go To Work",
	Callback = function()
		require(clientScripts.JobHandler):GoToWork(featureConfig.autoBuild.SelectedJob)
		invokeServer({
			Type = "StartShift",
			Job = featureConfig.autoBuild.SelectedJob
		})
	end
})

autoFarmSection:CreateToggle({
	Name = "Enable",
	CurrentValue = false,
	Callback = function(state)
		featureConfig.autofarmSettings.currentlyEnabled = state
		if state then
			if featureConfig.autoBuild.SelectedJob then
				featureConfig.autofarmSettings.workTick = tick()
				featureConfig.autofarmSettings.lastBreakTick = os.clock()
			end
		end
	end
})

local autoMoodSection = autoFarmTab:CreateSection("Auto Mood")

local moodStatusLabel = autoMoodSection:CreateLabel("Status: Waiting")

autoMoodSection:CreateInput({
	Name = "Mood % To Enable At",
	PlaceholderText = "20",
	RemoveTextAfterFocusLost = false,
	Callback = function(text)
		local number = tonumber(text)
		if number then
			featureConfig.autoMood.CheckMoodValue = number
		end
	end
})

autoMoodSection:CreateToggle({
	Name = "Enable",
	CurrentValue = false,
	Callback = function(state)
		featureConfig.autoMood.MoodBoostEnabled = state
		if state then
			while featureConfig.autoMood.MoodBoostEnabled do
				task.wait()
				moodStatusLabel:Set("Status: " .. featureConfig.autoMood.currentMoodStatus)
			end
		end
	end
})

local breakSection = autoFarmTab:CreateSection("Breaks")

breakSection:CreateInput({
	Name = "Break Time (Mins)",
	PlaceholderText = "20",
	RemoveTextAfterFocusLost = false,
	Callback = function(text)
		local number = tonumber(text)
		if number then
			featureConfig.autofarmSettings.breaktime = number
		end
	end
})

breakSection:CreateInput({
	Name = "Work Time (Mins)",
	PlaceholderText = "20",
	RemoveTextAfterFocusLost = false,
	Callback = function(text)
		local number = tonumber(text)
		if number then
			featureConfig.autofarmSettings.worktime = number
		end
	end
})

breakSection:CreateToggle({
	Name = "Enable",
	CurrentValue = false,
	Callback = function(state)
		featureConfig.autofarmSettings.breaksEnabled = state
	end
})

local jobStatsSection = autoFarmTab:CreateSection("Job Stats")

local shiftEarningsLabel = jobStatsSection:CreateLabel("Shift Earnings: Waiting")
local efficiencyLabel = jobStatsSection:CreateLabel("Efficiency: Waiting")
local timeFarmingLabel = jobStatsSection:CreateLabel("Farm Time: Waiting")
local totalEarningsLabel = jobStatsSection:CreateLabel("Total Earnings: Waiting")

task.spawn(function()
	while task.wait() do
		local minutesPassed
		local totalEarned

		if featureConfig.autofarmSettings.currentlyEnabled then
			if not farmStats.values.totalEarnings then
				totalEarned = "0"
			else
				totalEarned = beautifyMoney(math.floor(tonumber(farmStats.values.totalEarnings)))
			end

			if not featureConfig.autofarmSettings.workTick then
				minutesPassed = "0"
			else
				minutesPassed = math.floor((tick() - featureConfig.autofarmSettings.workTick) / 60)
			end

			shiftEarningsLabel:Set("Shift Earnings: $" .. beautifyMoney(clientStats.Job.ShiftEarnings.Value))
			efficiencyLabel:Set("Efficiency: " .. tostring(math.floor(clientStats.Job.Efficiency.Value * 100)) .. "%")
			timeFarmingLabel:Set("Farm Time: " .. minutesPassed .. "m(s)")
			totalEarningsLabel:Set("Total Earnings: $" .. totalEarned)
		end
	end
end)

task.spawn(function() 
	while task.wait() do
		if modules.stats.Job.Value == "CleanJanitor" and featureConfig.autoBuild.SelectedJob == "CleanJanitor" and featureConfig.autofarmSettings.currentlyEnabled then
			moodBreakCheck()
			if not featureConfig.autoMood.isBoosting then
				local spawns = workspace.Environment.Locations.City.GreenClean.Geometry.Spawns
				local currentSpawns = {}

				if spawns then
					for _, v in pairs(spawns:GetChildren()) do
						if v:FindFirstChild("Object") and not v:FindFirstChild("Mesh") then
							table.insert(currentSpawns, v)
						end
					end
				end

				if #currentSpawns > 0 then
					local closestSpawn = getClosetSpawn(currentSpawns)

					if closestSpawn then
						local pos = closestSpawn.Position
						pathfind(pos)

						invokeServer({
							Type = "CleanJanitorObject",
							Spawn = closestSpawn,
						})

						if clientStats.Job.ShiftEarnings.Value > farmStats.values.lastShift then
							farmStats.values.totalEarnings += clientStats.Job.ShiftEarnings.Value - farmStats.values.lastShift
							farmStats.values.lastShift = clientStats.Job.ShiftEarnings.Value
						end
					end
				end
			end
		end
	end
end)

task.spawn(function() 
	while task.wait() do
		if modules.stats.Job.Value == "PizzaPlanetBaker" and featureConfig.autoBuild.SelectedJob == "PizzaPlanetBaker" and featureConfig.autofarmSettings.currentlyEnabled then
			moodBreakCheck()
			if not featureConfig.autoMood.isBoosting then
				local station = getCurrentStation(
					game:GetService("Workspace").Environment.Locations.City.PizzaPlanet.Interior.BakerWorkstations
				)

				if station then
					task.wait()

					pathfind(station.CounterTop.Position - station.CounterTop.CFrame.LookVector * 5.5)

					local function getCrate()
						for _, crate in
							pairs(
								game:GetService("Workspace").Environment.Locations.City.PizzaPlanet.Interior.IngredientCrates
									:GetChildren()
							)
						do
							if isInstanceNearPosition(crate, Vector3.new(-49.26, 2.62, -55.95), 1) then
								return crate
							end
						end

						return nil
					end

					local function RestockIngredients(station)
						if station.Order.IngredientsLeft.Value == 0 then
							pathfind(Vector3.new(-45.39, 4.46, -54.86))

							local crate = getCrate()

							fireServer({
								Type = "TakeIngredientCrate",
								Object = crate,
							})

							pathfind(
								station.CounterTop.Position - station.CounterTop.CFrame.LookVector * 5.5
							)

							fireServer({
								Type = "RestockIngredients",
								Workstation = station,
							})

							task.wait(0.25)
						end
					end

					RestockIngredients(station)

					if station.Order.Value ~= "true" then
						fireServer({
							Type = "JobCompleted",
							Workstation = station,
							Order = {
								true,
								true,
								true,
								station.Order.Value,
							},
						})

						if clientStats.Job.ShiftEarnings.Value > farmStats.values.lastShift then
							farmStats.values.totalEarnings += clientStats.Job.ShiftEarnings.Value - farmStats.values.lastShift
							farmStats.values.lastShift = clientStats.Job.ShiftEarnings.Value
						end
					end
				end
			end
		end
	end
end)

task.spawn(function() 
	while task.wait() do
		if modules.stats.Job.Value == "StylezHairdresser" and featureConfig.autoBuild.SelectedJob == "StylezHairdresser" and featureConfig.autofarmSettings.currentlyEnabled then
			moodBreakCheck()
			if not featureConfig.autoMood.isBoosting then
				for _, part in pairs(game:GetService("Workspace").Environment.Locations.City.StylezHairStudio.Interior.HairdresserWorkstations:GetDescendants()) do
					if part:IsA("BasePart") then
						part.CanCollide = false
					end
				end  
				
				local station = getCurrentStation(
					game:GetService("Workspace").Environment.Locations.City.StylezHairStudio.Interior.HairdresserWorkstations
				)

				if not station then
					repeat
						task.wait()
						station = getCurrentStation(game:GetService("Workspace").Environment.Locations.City.StylezHairStudio.Interior.HairdresserWorkstations)
					until station
				end

				if station then
					pathfind(station.Mat.Position - Vector3.new(-2, 0, 0))

					if station.Occupied.Value ~= nil then
						local currentCustomer 

						repeat
							task.wait()
							currentCustomer = station.Occupied.Value
						until currentCustomer and currentCustomer:FindFirstChild("Order")

						local hairValue = currentCustomer.Order.Style.Value
						local hairColor = currentCustomer.Order.Color.Value

						fireServer({
							Type = "JobCompleted",
							Order = {
								hairValue,
								hairColor
							},
							Workstation = station
						})

						if clientStats.Job.ShiftEarnings.Value > farmStats.values.lastShift then
							farmStats.values.totalEarnings += clientStats.Job.ShiftEarnings.Value - farmStats.values.lastShift
							farmStats.values.lastShift = clientStats.Job.ShiftEarnings.Value
						end
					end
				end
			end
		end
	end
end)

New Paste


Do not write anything in this field if you're a human.

Go to most recent paste.