Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- updated by MaxproGlitcher#6199 originally made by serilKilla
- getupvalues = getupvalues or debug.getupvalues
- setupvalue = setupvalue or debug.setupvalue
- if not (getrawmetatable and getupvalues and setupvalue and (getreg or debug.getregistry)) then
- local h = Instance.new("Hint",workspace)
- h.Text = "Incompatible exploit."
- wait(3)
- h:Destroy()
- return
- end
- local settings = {refill_at=0, refill_end=60, deliver_at=24, stay_in_kitchen=true}
- local doCashier,doBoxer,doCook,doSupplier,doDelivery = true,true,true,true,true
- if readfile then
- pcall(function()
- local new = game:GetService("HttpService"):JSONDecode(readfile("PizzaFarm.txt"))
- --corruption?
- local doOverwrite=false
- for k,v in pairs(new) do
- if settings[k]==nil then
- doOverwrite=true
- new[k]=nil
- end
- end
- for k,v in pairs(settings) do
- if new[k]==nil then
- doOverwrite=true
- new[k]=v
- end
- end
- --use input
- if doOverwrite then
- warn("Settings overwritten")
- writefile("PizzaFarm.txt",game:GetService("HttpService"):JSONEncode(new))
- end
- settings = new
- end)
- end
- if getconnections then
- for _,c in next,getconnections(game:GetService("ScriptContext").Error) do
- c:Disable()
- end
- end
- local player = game:GetService("Players").LocalPlayer
- local ffc = game.FindFirstChild
- local RNG = Random.new()
- local network
- local character,root,humanoid
- do
- local reg = (getreg or debug.getregistry)()
- for i=1,#reg do
- local f = reg[i]
- if type(f)=="function" then
- for k,v in next,getupvalues(f) do
- if typeof(v)=="Instance" then
- if v.Name=="CashOut" then
- setupvalue(f,k,{MouseButton1Click={wait=function()end,Wait=function()end}})
- elseif v.Name=="StickerName" then
- setupvalue(f,k,nil)
- end
- end
- end
- if tostring(getfenv(f).script) == "Music" then
- local consts = getconstants(f)
- local loc=false
- for ci,c in next,consts do
- if c == "location changed" then
- loc=true
- elseif loc and c == "SendData" then
- setconstant(f,ci,"ExplodeString")
- break
- end
- end
- end
- elseif type(f)=="table" and rawget(f,"FireServer") and rawget(f,"BindEvents") then
- network = f
- end
- end
- end
- assert(network,"failed to find network")
- --//gui
- Create = function(class,parent,props)
- local new = Instance.new(class)
- for k,v in next,props do
- new[k]=v
- end
- new.Parent = parent
- return new
- end
- gui=Create("ScreenGui",game.CoreGui,{Name="Farm", ZIndexBehavior="Sibling"})
- main=Create("Frame",gui,{Name="main", Draggable=true, Active=true, Size=UDim2.new(0,350,0,100), Position=UDim2.new(.335,0,0.02,0), BackgroundColor3=Color3.new(0.098,0.098,0.098)})
- topbar=Create("Frame",main,{Name="topbar", Size=UDim2.new(1,0,0.15,0), BackgroundColor3=Color3.new(0.255,0.255,0.255)})
- closeBtn=Create("TextButton",topbar,{Name="closeBtn", TextWrapped=true, Size=UDim2.new(0.03,0,1,0), TextColor3=Color3.new(1,1,1), Text="X", BackgroundTransparency=1,
- Font="GothamSemibold", Position=UDim2.new(0.96,0,0,0), TextSize=14, TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- titleLbl=Create("TextLabel",topbar,{Name="titleLbl", TextWrapped=true, Size=UDim2.new(0.5,0,1,0), Text="Pizza Factory", TextSize=14, Font="GothamSemibold",
- BackgroundTransparency=1, Position=UDim2.new(0.25,0,0,0), TextColor3=Color3.new(1,1,1), BackgroundColor3=Color3.new(1,1,1)})
- saveBtn=Create("ImageButton",topbar,{Name="saveBtn", Image="rbxassetid://55687833", Size=UDim2.new(0.05,0,1,0), Position=UDim2.new(0.01,0,0,0), BackgroundTransparency=1, BackgroundColor3=Color3.new(), Visible=writefile~=nil})
- settings_1=Create("Frame",main,{Name="settings", BackgroundTransparency=1, Size=UDim2.new(0.97,0,0.75,0), Position=UDim2.new(0.025,0,0.2,0), BackgroundColor3=Color3.new(1,1,1)})
- Layout=Create("UIGridLayout",settings_1,{VerticalAlignment="Center", SortOrder="LayoutOrder", HorizontalAlignment="Center", CellPadding=UDim2.new(0.01,0,0.1,0), CellSize=UDim2.new(0.325,0,0.26,0)})
- cashier=Create("Frame",settings_1,{Name="cashier", LayoutOrder=4, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- Label=Create("TextLabel",cashier,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Cashier", TextSize=14, TextXAlignment="Left", Font="SourceSans",
- BackgroundTransparency=1, Position=UDim2.new(0.4,0,0,0), TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- cashierBtn=Create("ImageButton",cashier,{Name="cashierBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.38,0,1,0), BackgroundColor3=Color3.new(0.392,0.392,0.392)})
- cashierSlider=Create("Frame",cashierBtn,{Name="slider", Size=UDim2.new(0.5,-4,1,-4), Position=UDim2.new(doCashier and 0.5 or 0,2,0,2), BorderSizePixel=0, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- kitchen=Create("Frame",settings_1,{Name="kitchen", LayoutOrder=9, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- Label_2=Create("TextLabel",kitchen,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Deliver At:", TextSize=14, TextXAlignment="Right", Font="SourceSans",
- BackgroundTransparency=1, TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- deliverAtBox=Create("TextBox",kitchen,{Name="deliverAtBox", TextWrapped=true, Size=UDim2.new(0.25,0,1,0), Text=tostring(settings.deliver_at), TextSize=50, TextColor3=Color3.new(),
- Font="Code", Position=UDim2.new(0.62,0,0,0), TextScaled=true, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- refillEnd=Create("Frame",settings_1,{Name="refillEnd", LayoutOrder=8, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- refillEndBox=Create("TextBox",refillEnd,{Name="refillEndBox", TextWrapped=true, Size=UDim2.new(0.25,0,1,0), Text=tostring(settings.refill_end), TextSize=50, TextColor3=Color3.new(),
- Font="Code", Position=UDim2.new(0.62,0,0,0), TextScaled=true, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- Label_3=Create("TextLabel",refillEnd,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Refill End:", TextSize=14, TextXAlignment="Right", Font="SourceSans",
- BackgroundTransparency=1, TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- refillAt=Create("Frame",settings_1,{Name="refillAt", LayoutOrder=7, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- Label_4=Create("TextLabel",refillAt,{TextWrapped=true, Size=UDim2.new(0.5,0,1,0), Text="Refill At:", TextSize=14, TextXAlignment="Right", Font="SourceSans",
- BackgroundTransparency=1, TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- refillAtBox=Create("TextBox",refillAt,{Name="refillAtBox", TextWrapped=true, Size=UDim2.new(0.25,0,1,0), Text=tostring(settings.refill_at), TextSize=50, TextColor3=Color3.new(),
- Font="Code", Position=UDim2.new(0.52,0,0,0), TextScaled=true, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- supplier=Create("Frame",settings_1,{Name="supplier", LayoutOrder=6, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- Label_5=Create("TextLabel",supplier,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Supplier", TextSize=14, TextXAlignment="Left", Font="SourceSans",
- BackgroundTransparency=1, Position=UDim2.new(0.4,0,0,0), TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- supplierBtn=Create("ImageButton",supplier,{Name="supplierBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.38,0,1,0), BackgroundColor3=Color3.new(0.392,0.392,0.392)})
- supplierSlider=Create("Frame",supplierBtn,{Name="slider", Size=UDim2.new(0.5,-4,1,-4), Position=UDim2.new(doSupplier and 0.5 or 0,2,0,2), BorderSizePixel=0, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- delivery=Create("Frame",settings_1,{Name="delivery", LayoutOrder=5, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- Label_6=Create("TextLabel",delivery,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Delivery", TextSize=14, TextXAlignment="Left", Font="SourceSans",
- BackgroundTransparency=1, Position=UDim2.new(0.4,0,0,0), TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- deliveryBtn=Create("ImageButton",delivery,{Name="deliveryBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.38,0,1,0), BackgroundColor3=Color3.new(0.392,0.392,0.392)})
- deliverySlider=Create("Frame",deliveryBtn,{Name="slider", Size=UDim2.new(0.5,-4,1,-4), Position=UDim2.new(doDelivery and 0.5 or 0,2,0,2), BorderSizePixel=0, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- boxer=Create("Frame",settings_1,{Name="boxer", LayoutOrder=2, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- boxerLbl=Create("TextLabel",boxer,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Boxer", TextSize=14, TextXAlignment="Left", Font="SourceSans",
- BackgroundTransparency=1, Position=UDim2.new(0.4,0,0,0), TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- boxerBtn=Create("ImageButton",boxer,{Name="boxerBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.38,0,1,0), BackgroundColor3=Color3.new(0.392,0.392,0.392)})
- boxerSlider=Create("Frame",boxerBtn,{Name="slider", Size=UDim2.new(0.5,-4,1,-4), Position=UDim2.new(doBoxer and 0.5 or 0,2,0,2), BorderSizePixel=0, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- cook=Create("Frame",settings_1,{Name="cook", LayoutOrder=3, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- cookLbl=Create("TextLabel",cook,{TextWrapped=true, Size=UDim2.new(0.6,0,1,0), Text="Cook", TextSize=14, TextXAlignment="Left", Font="SourceSans",
- BackgroundTransparency=1, Position=UDim2.new(0.4,0,0,0), TextColor3=Color3.new(1,1,1), TextScaled=true, BackgroundColor3=Color3.new(1,1,1)})
- cookBtn=Create("ImageButton",cook,{Name="cookBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.38,0,1,0), BackgroundColor3=Color3.new(0.392,0.392,0.392)})
- cookSlider=Create("Frame",cookBtn,{Name="slider", Size=UDim2.new(0.5,-4,1,-4), Position=UDim2.new(doCook and 0.5 or 0,2,0,2), BorderSizePixel=0, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- toggleAll=Create("Frame",settings_1,{Name="toggleAll", LayoutOrder=1, BackgroundTransparency=1, Size=UDim2.new(0,100,0,100), BackgroundColor3=Color3.new(1,1,1)})
- switch=Create("Frame",toggleAll,{Name="switch", BackgroundTransparency=1, Size=UDim2.new(0.75,0,1,0), BackgroundColor3=Color3.new(1,1,1)})
- allOffBtn=Create("ImageButton",switch,{Name="allOffBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.5,0,1,0), BackgroundColor3=Color3.new(0.235,0.235,0.235)})
- allOnBtn=Create("ImageButton",switch,{Name="allOnBtn", ImageTransparency=1, BorderSizePixel=0, Size=UDim2.new(0.5,0,1,0), Position=UDim2.new(0.5,0,0,0), BackgroundColor3=Color3.new(0.333,0.333,0.333)})
- toggleAllSlider=Create("Frame",switch,{Name="slider", Size=UDim2.new(0.1,0,1,4), Position=UDim2.new(0.45,0,0,-2), BorderSizePixel=0, BackgroundColor3=Color3.new(0.784,0.784,0.784)})
- messageLbl=Create("TextLabel",topbar,{Name="messageLbl", Size=UDim2.new(0.5,0,1,0), Text="Saved.", TextSize=14, Font="GothamSemibold", BackgroundTransparency=1,
- Position=UDim2.new(0.07,0,0,0), TextColor3=Color3.new(1,1,1), Visible=false, TextXAlignment="Left"})
- camframe=Create("Frame",gui,{Name="camframe", BackgroundTransparency=1, Size=UDim2.new(0,120,0,40), Position=UDim2.new(0.5,-320,0,-38), BackgroundColor3=Color3.new(0.118,0.118,0.118)})
- rightCamBtn=Create("ImageButton",camframe,{Name="rightCamBtn", Image="rbxassetid://144168163", Size=UDim2.new(0.333,0,1,0), Rotation=180, Position=UDim2.new(0.666,0,0,0), BackgroundTransparency=1,
- BackgroundColor3=Color3.new(1,1,1)})
- leftCamBtn=Create("ImageButton",camframe,{Name="leftCamBtn", Image="rbxassetid://144168163", Size=UDim2.new(0.333,0,1,0), BackgroundTransparency=1, BackgroundColor3=Color3.new(1,1,1)})
- centerCamBtn=Create("ImageButton",camframe,{Name="centerCamBtn", Image="rbxassetid://58282192", Size=UDim2.new(0.333,0,1,0), Position=UDim2.new(0.333,0,0,0), BackgroundTransparency=1, BackgroundColor3=Color3.new(1,1,1)})
- creditLbl=Create("TextLabel",main,{Position=UDim2.new(0,0,1,5),Size=UDim2.new(0,100,0,15),BackgroundTransparency=1,TextColor3=Color3.new(1,1,1),Text="by sirelKilla",TextScaled=true,TextStrokeTransparency=.8})
- local function toggleCashier(bool)
- if bool~=nil then
- doCashier=bool
- else
- doCashier = not doCashier
- end
- cashierSlider:TweenPosition(UDim2.new(doCashier and 0.5 or 0,2,0,2),nil,"Sine",0.1,true)
- end
- local function toggleCook(bool)
- if bool~=nil then
- doCook=bool
- else
- doCook = not doCook
- end
- cookSlider:TweenPosition(UDim2.new(doCook and 0.5 or 0,2,0,2),nil,"Sine",0.1,true)
- end
- local function toggleBoxer(bool)
- if bool~=nil then
- doBoxer=bool
- else
- doBoxer = not doBoxer
- end
- boxerSlider:TweenPosition(UDim2.new(doBoxer and 0.5 or 0,2,0,2),nil,"Sine",0.1,true)
- end
- local function toggleDelivery(bool)
- if bool~=nil then
- doDelivery=bool
- else
- doDelivery = not doDelivery
- end
- deliverySlider:TweenPosition(UDim2.new(doDelivery and 0.5 or 0,2,0,2),nil,"Sine",0.1,true)
- end
- local function toggleSupplier(bool)
- if bool~=nil then
- doSupplier=bool
- else
- doSupplier = not doSupplier
- end
- supplierSlider:TweenPosition(UDim2.new(doSupplier and 0.5 or 0,2,0,2),nil,"Sine",0.1,true)
- end
- cashierBtn.MouseButton1Click:Connect(toggleCashier)
- cookBtn.MouseButton1Click:Connect(toggleCook)
- boxerBtn.MouseButton1Click:Connect(toggleBoxer)
- deliveryBtn.MouseButton1Click:Connect(toggleDelivery)
- supplierBtn.MouseButton1Click:Connect(toggleSupplier)
- allOffBtn.InputBegan:Connect(function()
- if game:GetService("UserInputService"):IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then
- toggleCashier(false)
- toggleCook(false)
- toggleBoxer(false)
- toggleDelivery(false)
- toggleSupplier(false)
- toggleAllSlider:TweenPosition(UDim2.new(0,0,0,-2),nil,"Sine",0.1,true)
- wait(1)
- if toggleAllSlider.Position.X.Scale<.01 then
- toggleAllSlider:TweenPosition(UDim2.new(0.45,0,0,-2),nil,"Sine",0.1,true)
- end
- end
- end)
- allOnBtn.InputBegan:Connect(function()
- if game:GetService("UserInputService"):IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then
- toggleCashier(true)
- toggleCook(true)
- toggleBoxer(true)
- toggleDelivery(true)
- toggleSupplier(true)
- toggleAllSlider:TweenPosition(UDim2.new(0.9,0,0,-2),nil,"Sine",0.1,true)
- wait(1)
- if toggleAllSlider.Position.X.Scale>.88 then
- toggleAllSlider:TweenPosition(UDim2.new(0.45,0,0,-2),nil,"Sine",0.1,true)
- end
- end
- end)
- local oldRefillAt=refillAtBox.Text
- refillAtBox:GetPropertyChangedSignal("Text"):Connect(function()
- if #refillAtBox.Text>2 or refillAtBox.Text:match("%D") then
- refillAtBox.Text = oldRefillAt
- end
- oldRefillAt = refillAtBox.Text
- end)
- refillAtBox.FocusLost:Connect(function()
- if tonumber(refillAtBox.Text) then
- settings.refill_at=tonumber(refillAtBox.Text)
- end
- refillAtBox.Text=tostring(settings.refill_at)
- end)
- local oldRefillEnd=refillEndBox.Text
- refillEndBox:GetPropertyChangedSignal("Text"):Connect(function()
- if #refillEndBox.Text>2 or refillEndBox.Text:match("%D") then
- refillEndBox.Text = oldRefillEnd
- end
- oldRefillEnd = refillEndBox.Text
- end)
- refillEndBox.FocusLost:Connect(function()
- if tonumber(refillEndBox.Text) then
- settings.refill_end=tonumber(refillEndBox.Text)
- end
- refillEndBox.Text=tostring(settings.refill_end)
- end)
- local oldDeliverAt=deliverAtBox.Text
- deliverAtBox:GetPropertyChangedSignal("Text"):Connect(function()
- if #deliverAtBox.Text>2 or deliverAtBox.Text:match("%D") then
- deliverAtBox.Text = oldDeliverAt
- end
- oldDeliverAt = deliverAtBox.Text
- end)
- deliverAtBox.FocusLost:Connect(function()
- if tonumber(deliverAtBox.Text) then
- settings.deliver_at=tonumber(deliverAtBox.Text)
- end
- deliverAtBox.Text=tostring(settings.deliver_at)
- end)
- closeBtn.MouseButton1Click:Connect(function()
- gui:Destroy()
- doCashier,doBoxer,doCook,doSupplier,doDelivery = false,false,false,false,false
- end)
- closeBtn.MouseEnter:Connect(function() closeBtn.TextColor3=Color3.new(.9,0,0) end)
- closeBtn.MouseLeave:Connect(function() closeBtn.TextColor3=Color3.new(1,1,1) end)
- saveBtn.MouseButton1Click:Connect(function()
- if writefile and messageLbl.Visible==false then
- writefile("PizzaFarm.txt",game:GetService("HttpService"):JSONEncode(settings))
- messageLbl.Visible=true
- wait(2)
- messageLbl.Visible=false
- end
- end)
- local cameraArray = {CFrame.new(23,14,65,0.629,0.386,-0.674,-0,0.867,0.497,0.777,-0.313,0.545),CFrame.new(39,15,83,-0.571,0.392,-0.720,-0,0.878,0.478,0.820,0.273,-0.502),CFrame.new(40,20,-38,-0.801,-0.229,0.552,-0,0.923,0.384,-0.598,0.307,-0.739),CFrame.new(51,15,-25,-0.707,0.338,-0.620,0,0.878,0.478,0.707,0.338,-0.620),CFrame.new(47,12,21,0.026,0.323,-0.945,-0,0.946,0.323,0.999,-0.008,0.024)}
- local cameraIndex = 0
- centerCamBtn.MouseButton1Click:Connect(function()
- cameraIndex = 0
- workspace.CurrentCamera.CameraType = "Custom"
- end)
- leftCamBtn.MouseButton1Click:Connect(function()
- cameraIndex = cameraIndex - 1
- if cameraIndex < 0 then
- cameraIndex = #cameraArray
- end
- if cameraIndex == 0 then
- workspace.CurrentCamera.CameraType="Custom"
- else
- local cf = cameraArray[cameraIndex]
- workspace.CurrentCamera.CameraType="Scriptable"
- workspace.CurrentCamera:Interpolate(cf,cf+cf.lookVector*10,0.5)
- end
- end)
- rightCamBtn.MouseButton1Click:Connect(function()
- cameraIndex = cameraIndex + 1
- if cameraIndex > #cameraArray then
- cameraIndex = 0
- workspace.CurrentCamera.CameraType="Custom"
- else
- local cf = cameraArray[cameraIndex]
- workspace.CurrentCamera.CameraType="Scriptable"
- workspace.CurrentCamera:Interpolate(cf,cf+cf.lookVector*10,0.5)
- end
- end)
- --//subroutines
- local supplyCounts = {TomatoSauce=99,Cheese=99,Sausage=99,Pepperoni=99,Dough=99,Box=99,Dew=99}
- for name in pairs(supplyCounts) do
- local lbl = workspace.SupplyCounters[name=="Dew" and "CounterMountainDew" or "Counter"..name].a.SG.Counter
- supplyCounts[name]=tonumber(lbl.Text)
- lbl.Changed:Connect(function()
- supplyCounts[name]=tonumber(lbl.Text)
- end)
- end
- local function FindFirstCustomer()
- local children = workspace.Customers:GetChildren()
- for i=1,#children do
- local c = children[i]
- if ffc(c,"Head") and ffc(c,"Humanoid") and c.Head.CFrame.Z<102 and ffc(c.Head,"Dialog") and ffc(c.Head.Dialog,"Correct") and ((c.Humanoid.SeatPart and c.Humanoid.SeatPart.Anchored) or (c.Humanoid.SeatPart==nil and (c.Head.Velocity.Z^2)^.5<.0001)) then
- local dialog = c.Head.Dialog.Correct.ResponseDialog or ''
- local order = "MountainDew"
- if dialog:sub(-8)=="instead." then
- dialog = dialog:sub(-30)
- end
- if dialog:find("pepperoni",1,true) then
- order = "PepperoniPizza"
- elseif dialog:find("sausage",1,true) then
- order = "SausagePizza"
- elseif dialog:find("cheese",1,true) then
- order = "CheesePizza"
- end
- return c,order
- end
- end
- end
- local boxPtick=0
- local boxDtick=0
- local function FindBoxes()
- local c,o,f
- local children = workspace.AllBox:GetChildren()
- for i=1,#children do
- local b = children[i]
- if ffc(b,"HasPizzaInside") or ffc(b,"Pizza") then
- if c==nil and b.Name=="BoxClosed" and b.Anchored==false and not b.HasPizzaInside.Value then
- c=b
- elseif o==nil and b.Name=="BoxOpen" and b.Anchored==false and not b.Pizza.Value then
- o=b
- elseif f==nil and (b.Name=="BoxOpen" and b.Pizza.Value) or (b.Name=="BoxClosed" and b.HasPizzaInside.Value) then
- f=b
- end
- if c and o and f then
- return c,o,f
- end
- end
- end
- return c,o,f
- end
- local function FindBoxingFoods()
- local p,d
- local children = workspace.BoxingRoom:GetChildren()
- for i=1,#children do
- local f = children[i]
- if not f.Anchored then
- if p==nil and f.Name=="Pizza" then
- p=f
- elseif d==nil and f.Name=="Dew" then
- d=f
- end
- if p and d then
- return p,d
- end
- end
- end
- return p,d
- end
- local orderDict={["3540529228"]="Cheese",["3540530535"]="Sausage",["3540529917"]="Pepperoni",["2512571151"]="Dew",["2512441325"]="Dew"}
- local cookingDict = {Cheese=0,Sausage=0,Pepperoni=0,Dew=0}
- local cookPtick=0
- local cookDtick=0
- local cookWarned=false
- local boxerWarned=false
- local function getOrders()
- local orders={}
- local tempCookingDict = {}
- for i,v in pairs(cookingDict) do tempCookingDict[i]=v end
- local children = workspace.Orders:GetChildren()
- for i=1,#children do
- local o = orderDict[children[i].SG.ImageLabel.Image:match("%d+$")]
- if o then
- if tempCookingDict[o]>0 then
- --ignores oven pizzas, so new orders are priority
- tempCookingDict[o]=tempCookingDict[o]-1
- elseif (o=="Dew" and #workspace.AllMountainDew:GetChildren()>0) or (supplyCounts[o]>0 and supplyCounts.TomatoSauce>0 and supplyCounts.Cheese>0) then
- --need supplies
- orders[#orders+1]=o
- end
- end
- end
- return orders
- end
- local function FindFirstDew()
- local children = workspace.AllMountainDew:GetChildren()
- for i=1,#children do
- local d = children[i]
- if (ffc(d,"IsBurned")==nil or d.IsBurned.Value==false) and not d.Anchored then
- return d
- end
- end
- end
- local function FindBadDew()
- local children = workspace.AllMountainDew:GetChildren()
- for i=1,#children do
- local d = children[i]
- if (ffc(d,"IsBurned")==nil or d.IsBurned.Value==false) and d.Position.X > 53 and d.Position.Z > 50 and not d.Anchored then
- return d
- end
- end
- end
- local function FindDoughAndWithout(str)
- local goodraw,p,raw,trash
- local children = workspace.AllDough:GetChildren()
- for i = #children, 2, -1 do --shuffle
- local j = RNG:NextInteger(1, i)
- children[j], children[i] = children[i], children[j]
- end
- for i=1,#children do
- local d = children[i]
- if d.Anchored==false and #d:GetChildren()>9 then
- if d.IsBurned.Value or d.HasBugs.Value or d.Cold.Value or (d.BrickColor.Name=="Bright orange" and ffc(d,"XBillboard")) then
- if trash==nil and d.Position.Y > 0 and ((d.Position*Vector3.new(1,0,1))-Vector3.new(47.90, 0, 72.49)).Magnitude > 1 then
- trash=d
- end
- elseif p==nil and d.BrickColor.Name=="Bright orange" then
- p=d
- elseif goodraw==nil and d.Position.X<55 and d.BrickColor.Name=="Brick yellow" and ((str and not ffc(d.SG.Frame,str)) or (str==nil and ffc(d.SG.Frame,"Sausage")==nil and ffc(d.SG.Frame,"Pepperoni")==nil)) then
- --prefers flat
- if d.Mesh.Scale.Y<1.1 then
- goodraw=d
- else
- raw=d
- end
- end
- if goodraw and p and trash then
- return goodraw,p,trash
- end
- end
- end
- return goodraw or raw,p,trash
- end
- local function getOvenNear(pos)
- local children = workspace.Ovens:GetChildren()
- for i=1,#children do
- if ffc(children[i],"Bottom") and (children[i].Bottom.Position-pos).magnitude < 1.5 then
- return children[i]
- end
- end
- end
- local function getDoughNear(pos)
- local children = workspace.AllDough:GetChildren()
- for i=1,#children do
- if (children[i].Position-pos).magnitude < 1.5 then
- return children[i]
- end
- end
- end
- local function isFullyOpen(oven)
- return oven.IsOpen.Value==true and (oven.Door.Meter.RotVelocity.Z^2)^.5<.0001
- end
- local bcolorToSupply = {["Dark orange"]="Sausage",["Bright blue"]="Pepperoni",["Bright yellow"]="Cheese",["Bright red"]="TomatoSauce",["Dark green"]="Dew",["Brick yellow"]="Dough",["Light stone grey"]="Box",["Really black"]="Dew"}
- local supplyButtons = {}
- for i,v in ipairs(workspace.SupplyButtons:GetChildren()) do
- supplyButtons[i] = v.Unpressed
- end
- table.sort(supplyButtons,function(a,b) return a.Position.X < b.Position.X end)
- local delTick = 0
- local function FindAllDeliveryTools(parent)
- local t = {}
- local children = parent:GetChildren()
- for i=1,#children do
- local v = children[i]
- if v.ClassName=="Tool" and v.Name:match("^%u%d$") and ffc(v,"Handle") and ffc(v,"House") and (parent~=workspace or (v.Handle.Position-Vector3.new(54.45, 4.02, -16.56)).Magnitude < 30) then
- t[#t+1] = v
- end
- end
- return t
- end
- local function getHousePart(address)
- local houses = workspace.Houses:GetChildren()
- for i=1,#houses do
- local h = houses[i]
- if ffc(h,"Address") and h.Address.Value==address and ffc(h,"GivePizza",true) then
- return ffc(h,"GivePizza",true)
- end
- end
- end
- local function onCharacterAdded(char)
- if not char then return end
- character=char
- root = character:WaitForChild("HumanoidRootPart")
- humanoid = character:WaitForChild("Humanoid")
- humanoid:SetStateEnabled("FallingDown",false)
- end
- onCharacterAdded(player.Character or player.CharacterAdded:Wait())
- player.CharacterAdded:Connect(onCharacterAdded)
- local function smoothTP2(cf)
- local cf0 = (cf-cf.p) + root.Position + Vector3.new(0,4,0)
- local diff = cf.p - root.Position
- local oldg = workspace.Gravity
- workspace.Gravity = 0
- for i=0,diff.Magnitude,0.9 do
- humanoid.Sit=false
- root.CFrame = cf0 + diff.Unit * i
- root.Velocity,root.RotVelocity=Vector3.new(),Vector3.new()
- wait()
- end
- root.CFrame = cf
- workspace.Gravity = oldg
- end
- local function smoothTP(cf)
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = cf
- end
- for _,o in ipairs(workspace.Ovens:GetChildren()) do
- if ffc(o,"Bottom") then
- o.Bottom.CanTouch = false
- end
- end
- local function tryCook()
- for zz=1,18 do
- local order = getOrders()[1]
- local topping
- if order=="Pepperoni" or order=="Sausage" then topping=order end
- local cookD = FindFirstDew()
- local badD = FindBadDew()
- local raw,cookP,trash
- if topping then
- --pepperoni order avoids sausage dough and vice verca
- raw,cookP,trash = FindDoughAndWithout(topping=="Pepperoni" and "Sausage" or "Pepperoni")
- else
- raw,cookP,trash = FindDoughAndWithout()
- end
- local ovens = workspace.Ovens:GetChildren()
- for i=#ovens,1,-1 do
- if #ovens[i]:GetChildren() < 10 then
- table.remove(ovens,i)
- end
- end
- for i = #ovens, 2, -1 do --shuffle
- local j = RNG:NextInteger(1, i)
- ovens[j], ovens[i] = ovens[i], ovens[j]
- end
- if doCook then
- local didsomething=false
- --move final pizza
- if cookP and tick()-cookPtick>0.8 then
- local oven = getOvenNear(cookP.Position)
- if oven==nil or oven.IsOpen.Value then
- cookPtick=tick()
- didsomething=true
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- network:FireServer("UpdateProperty", cookP, "CFrame", CFrame.new(RNG:NextNumber(56,57),4.1,38))
- end
- end
- if order then
- if order=="Dew" and cookD and tick()-cookDtick>0.8 then
- --move dew if ordered
- cookDtick=tick()
- didsomething=true
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- network:FireServer("UpdateProperty", cookD, "CFrame", CFrame.new(53,4.68,36.5))
- elseif order~="Dew" and raw and raw.Parent and supplyCounts[order]>0 and supplyCounts.TomatoSauce>0 and supplyCounts.Cheese>0 then
- --make pizza
- if raw.Mesh.Scale.Y>1.5 then
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- didsomething=true
- network:FireServer("UpdateProperty", raw, "CFrame", CFrame.new(RNG:NextNumber(29.6,44.6),3.7,RNG:NextNumber(42.5,48.5)))
- wait()
- network:FireServer("SquishDough", raw)
- else
- --make sure it will have an oven
- local oven
- for _,o in ipairs(ovens) do
- if isFullyOpen(o) then
- local other = getDoughNear(o.Bottom.Position)
- if other==nil or not (other.BrickColor.Name=="Bright orange" and ffc(other.SG.Frame,"TomatoSauce") and ffc(other.SG.Frame,"MeltedCheese")) then
- if other then
- --replace mistaken dough
- didsomething=true
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- network:FireServer("UpdateProperty", other, "CFrame", CFrame.new(RNG:NextNumber(29.6,44.6),3.7,RNG:NextNumber(42.5,48.5)))
- wait()
- end
- oven=o
- break
- end
- end
- end
- if oven and raw.Parent==workspace.AllDough then
- --make
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- didsomething=true
- network:FireServer("AddIngredientToPizza", raw,"TomatoSauce")
- network:FireServer("AddIngredientToPizza", raw,"Cheese")
- network:FireServer("AddIngredientToPizza", raw,topping)
- network:FireServer("UpdateProperty", raw, "CFrame", oven.Bottom.CFrame+Vector3.new(0,0.7,0))
- oven.Door.ClickDetector.Detector:FireServer()
- --mark as cooking
- cookingDict[order]=cookingDict[order]+1
- local revoked=false
- spawn(function()
- raw.AncestryChanged:Wait()
- if not revoked then
- cookingDict[order]=cookingDict[order]-1
- revoked=true
- end
- end)
- delay(40, function()
- if not revoked then
- cookingDict[order]=cookingDict[order]-1
- revoked=true
- end
- end)
- end
- end
- end
- end
- --open unnecessarily closed ovens
- for _,o in ipairs(ovens) do
- local bar = o.Door.Meter.SurfaceGui.ProgressBar.Bar
- if o.IsOpen.Value==false and (o.IsCooking.Value==false or (Vector3.new(bar.ImageColor3.r,bar.ImageColor3.g,bar.ImageColor3.b)-Vector3.new(.871,.518,.224)).magnitude>.1) then
- didsomething=true
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- o.Door.ClickDetector.Detector:FireServer()
- break
- end
- end
- --trash
- if badD then
- didsomething=true
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- network:FireServer("UpdateProperty", badD, "CFrame", CFrame.new(RNG:NextNumber(28,30), 1.7, RNG:NextNumber(55,57)))
- end
- if trash and (trash.IsBurned.Value==false or getOvenNear(trash.Position)==nil or getOvenNear(trash.Position).IsOpen.Value) then
- --closed oven breaks if you take burnt out of it
- didsomething=true
- if (root.Position-Vector3.new(36.64, 3.80, 54.11)).magnitude>9 then smoothTP(CFrame.new(36.64, 3.80, 54.11)) wait(.1) end
- network:FireServer("UpdateProperty", trash, "CFrame", CFrame.new(47.90, 7.00, 72.49, 1, 0, -0, 0, 0, 1, 0, -1, 0))
- end
- if didsomething then wait(0.5) else break end
- else
- break
- end
- end
- end
- wait(1)
- --//main loop
- while gui.Parent do
- wait(0.9)
- humanoid.Sit=false
- if RNG:NextInteger(1,20)==1 then
- game:GetService("VirtualInputManager"):SendKeyEvent(true,"Z",false,game)
- wait()
- game:GetService("VirtualInputManager"):SendKeyEvent(false,"Z",false,game)
- end
- for zz=1,3 do
- local c,order = FindFirstCustomer()
- if doCashier and c and order then
- local reg = 3
- if c.Head.Position.X < 50 then
- reg = 2
- elseif c.Head.Position.X < 70 then
- reg = 1
- end
- if (root.Position-Vector3.new(50.30, 3.80, 83.24)).magnitude>9 then smoothTP(CFrame.new(50.30, 3.80, 83.24)) wait(.1) end
- network:FireServer("OrderComplete", c, order, workspace["Register"..reg])
- wait(0.3)
- else
- break
- end
- end
- tryCook()
- for zz=1,7 do
- if doBoxer then
- local didsomething = false
- local boxP,boxD = FindBoxingFoods()
- local closedBox,openBox,fullBox = FindBoxes()
- if boxD and tick()-boxDtick>0.8 then
- boxDtick=tick()
- didsomething=true
- if (root.Position-Vector3.new(58.74, 3.80, 12.400)).magnitude>9 then smoothTP(CFrame.new(58.74, 3.80, 12.40))wait(.1) continue end
- network:FireServer("UpdateProperty", boxD, "CFrame", CFrame.new(63,4.9,-1,-1,0,0,0,1,0,0,0,-1))
- end
- if fullBox then
- if fullBox.Name=="BoxOpen" then
- didsomething=true
- if (root.Position-Vector3.new(58.74, 3.80, 12.400)).magnitude>9 then smoothTP(CFrame.new(58.74, 3.80, 12.40))wait(.1) continue end
- network:FireServer("CloseBox", fullBox)
- --will be moved next loop
- elseif tick()-boxPtick>0.8 then
- didsomething=true
- if (root.Position-Vector3.new(58.74, 3.80, 12.400)).magnitude>9 then smoothTP(CFrame.new(58.74, 3.80, 12.40))wait(.1) continue end
- network:FireServer("UpdateProperty", fullBox, "CFrame", CFrame.new(68.2,4.4,RNG:NextNumber(-3,-2),-1,0,0,0,1,0,0,0,-1))
- boxPtick=tick()
- end
- end
- if closedBox and not openBox then
- didsomething=true
- if (root.Position-Vector3.new(58.74, 3.80, 12.400)).magnitude>9 then smoothTP(CFrame.new(58.74, 3.80, 12.40))wait(.1) continue end
- network:FireServer("UpdateProperty", closedBox, "CFrame", CFrame.new(RNG:NextNumber(62.5,70.5),3.5,RNG:NextNumber(11,25)))
- wait()
- network:FireServer("OpenBox", closedBox)
- end
- if openBox and boxP then
- didsomething=true
- if (root.Position-Vector3.new(58.74, 3.80, 12.400)).magnitude>9 then smoothTP(CFrame.new(58.74, 3.80, 12.40))wait(.1) continue end
- network:FireServer("UpdateProperty", boxP, "Anchored", true)
- network:FireServer("UpdateProperty", openBox, "Anchored", true)
- wait()
- network:FireServer("UpdateProperty", boxP, "CFrame", openBox.CFrame+Vector3.new(0,-2,0))
- wait()
- network:FireServer("AssignPizzaToBox", openBox, boxP)
- end
- if didsomething then wait(0.5) else break end
- else
- break
- end
- end
- if doDelivery then
- local wstools = FindAllDeliveryTools(workspace)
- if #wstools > 1 or (wstools[1] and ffc(wstools[1].Handle,"X10")) then
- --get tools
- if (root.Position-Vector3.new(54.45, 4.02, -15)).magnitude>9 then smoothTP(CFrame.new(54.45, 4.02, -15)) wait(.1) end
- for i=1,#wstools do
- if wstools[i].Parent == workspace then
- humanoid:EquipTool(wstools[i])
- wait()
- end
- end
- wait(0.3)
- local t = FindAllDeliveryTools(character)
- for i=1,#t do
- t[i].Parent = player.Backpack
- end
- wait(0.1)
- if ffc(character,"RightHand") and ffc(character.RightHand,"RightGrip") then
- character.RightHand.RightGrip:Destroy()
- end
- end
- local bptools = FindAllDeliveryTools(player.Backpack)
- if #bptools >= settings.deliver_at and #bptools > 0 and tick()-delTick > 30 then
- --deliver to houses
- table.sort(bptools,function(a,b)
- a,b=tostring(a),tostring(b)
- if (a:sub(1,1)=="B" and b:sub(1,1)=="B") then
- return a < b
- end
- return a > b
- end)
- local fatass=false
- for i=1,#bptools do
- if not doDelivery then
- break
- end
- humanoid.Sit=false
- local tool = bptools[i]
- local giver = getHousePart(tool.Name)
- local ogp = giver.Position
- if giver then
- if (giver.Position-root.Position).Magnitude > 9 then
- smoothTP(giver.CFrame+Vector3.new(0,7,0))
- if giver.Parent==nil or (giver.Position-ogp).Magnitude>1 then
- giver = getHousePart(tool.Name) or giver
- smoothTP(giver.CFrame+Vector3.new(0,7,0))
- end
- pcall(function() tool.Parent = character end)
- wait(1.2)
- local t = FindAllDeliveryTools(character)
- for i=1,#t do
- if t[i] ~= tool then
- t[i].Parent = player.Backpack
- end
- end
- wait(2)
- fatass=false
- else
- if fatass then
- wait(0.2)
- else
- wait(0.7)
- end
- pcall(function() tool.Parent = character end)
- wait()
- fatass=true
- end
- end
- end
- delTick = tick()
- end
- end
- tryCook()
- if doSupplier then
- local refill=false
- for s,c in pairs(supplyCounts) do
- if c <= settings.refill_at then
- refill=true
- break
- end
- end
- if refill then
- local oldcf = root.CFrame
- local waiting = false
- local waitingTick = 0
- local lastBox
- while doSupplier do
- --check if refill is done otherwise hit buttons
- local fulfilled=true
- local boxes = workspace.AllSupplyBoxes:GetChildren()
- for yy=1,2 do
- local needtp=true
- local realc = 0
- for _,btn in ipairs(supplyButtons) do
- local s = bcolorToSupply[btn.BrickColor.Name]
- if supplyCounts[s] < settings.refill_end then
- local count = 0
- if #boxes > 30 then
- for i=1,#boxes do
- local box = boxes[i]
- if bcolorToSupply[box.BrickColor.Name]==s and box.Anchored==false and box.Position.Z < -940 then
- count=count+1
- end
- end
- end
- if count < 2 then
- if needtp then
- needtp=false
- smoothTP(btn.CFrame + Vector3.new(0,3,2.5))
- wait(0.1)
- end
- if not doSupplier then break end
- root.CFrame = btn.CFrame + Vector3.new(0,3,0)
- wait(0.1)
- realc=realc+1
- end
- fulfilled=false
- end
- end
- wait(0.2)
- if yy == 1 and realc < 3 then
- wait(0.6)
- end
- end
- if fulfilled or not (doSupplier) then
- break
- end
- smoothTP(CFrame.new(8,12.4,-1020))
- if not doSupplier then break end
- --check if can finish waiting for boxes to move
- if waiting and (lastBox.Position.X>42 or tick()-waitingTick>6) then
- waiting=false
- if lastBox.Position.X<42 then
- --clear boxes if stuck
- smoothTP(CFrame.new(20.5,8,-35))
- wait(0.1)
- local boxes = workspace.AllSupplyBoxes:GetChildren()
- for i=1,#boxes do
- local box = boxes[i]
- if box.Anchored==false and box.Position.Z>-55 then
- network:FireServer("UpdateProperty", box, "CFrame", CFrame.new(RNG:NextNumber(0,40),RNG:NextNumber(-10,-30),-70))
- wait()
- end
- end
- wait(0.1)
- end
- end
- if not waiting then
- --move boxes
- if root.Position.Z > -900 then smoothTP(CFrame.new(8,12.4,-1020)) end
- wait(0.1)
- lastBox=nil
- local j=0
- local boxes = workspace.AllSupplyBoxes:GetChildren()
- for i=1,#boxes do
- local box = boxes[i]
- if box.Anchored==false and box.Position.Z < -940 and bcolorToSupply[box.BrickColor.Name] and supplyCounts[bcolorToSupply[box.BrickColor.Name]]<settings.refill_end then
- box.CFrame = CFrame.new(38-4.3*math.floor(j/2),5,-7-5*(j%2))
- network:FireServer("UpdateProperty", box, "CFrame", box.CFrame)
- lastBox=box
- j=j+1
- if j>13 then break end
- end
- end
- if lastBox then
- waiting=true
- waitingTick=tick()
- end
- end
- end
- --smoothTP(oldcf)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement