--[DON'T STEAL THIS]
--by FireServiceScripter
--Important Variables
local SCRIPT_NAME = "PSX GUI | By FireService"
local SCRIPT_VERSION = "v1"
-- Detect if the script has executed by AutoExec
local AutoExecuted = false
if not game:IsLoaded() then AutoExecuted = true end
repeat task.wait() until game.PlaceId ~= nil
if not game:IsLoaded() then game.Loaded:Wait() end
--//-------------- SERVICES ----------------//*
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local HttpService = game:GetService("HttpService")
local InputService = game:GetService('UserInputService')
local RunService = game:GetService('RunService')
local ContentProvider = game:GetService("ContentProvider")
--//-------------- CUSTOM FLAG ---------------//*
function AddCustomFlag(flagName, defaultValue, callback)
if Rayfield and Rayfield.Flags and not Rayfield.Flags[flagName] then
local newFlag = {
CurrentValue = defaultValue
}
function newFlag:Set(newValue)
Rayfield.Flags[flagName].CurrentValue = newValue
callback(newValue)
end
Rayfield.Flags[flagName] = newFlag
end
end
function SaveCustomFlag(flagName, value)
if Rayfield and Rayfield.Flags and Rayfield.Flags[flagName] then
pcall(function()
Rayfield.Flags[flagName]:Set(value)
coroutine.wrap(function()
Rayfield.SaveConfiguration()
end)()
end)
end
end
AddCustomFlag("AutoFarm_FarmFocusList", {}, function(newTable)
FarmFocusList = newTable
local hasChanges = false
for i, v in pairs(FarmFocusList) do
if not table.find(DefaultFarmFocusList, v) then
table.remove(FarmFocusList, i)
hasChanges = true
end
end
if hasChanges then
coroutine.wrap(function()
wait()
SaveCustomFlag("AutoFarm_FarmFocusList", FarmFocusList)
end)
end
UpdateFarmFocusUI()
end)
--//-------------- WELCOME ------------------//*
Library.ChatMsg.New(string.format("Hello, %s! You're running %s %s", LocalPlayer.DisplayName, SCRIPT_NAME, SCRIPT_VERSION), Color3.fromRGB(175, 70, 245))
-- task.spawn(function()
-- while true do
-- stats:Set({Title = "Hello, " .. LocalPlayer.DisplayName, Content = string.format("There are some useful information:\nServer age: %s\n", Library.Functions.TimeString(workspace.DistributedGameTime, true))})
-- task.wait(1)
-- end
-- end)
--//-------------- GLOBAL VARIABLES ---------//*
local ScriptIsCurrentlyBusy = false
local Character = nil
local Humanoid = nil
local HumanoidRootPart = nil
local CurrentWorld = ""
local CurrentPosition = nil
local Settings_DisableRendering = true
local Webhook_Enabled = false
local Webhook_URL = ""
local Webhook_Daycare = true
local Webhook_Huge = true
LocalPlayer.CharacterAdded:Connect(function(char)
Character = char
Humanoid = Character:WaitForChild("Humanoid")
HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
end)
if game.PlaceId == 6284583030 or game.PlaceId == 10321372166 or game.PlaceId == 7722306047 or game.PlaceId == 12610002282 then
local banSuccess, banError = pcall(function()
local Blunder = require(game:GetService("ReplicatedStorage"):WaitForChild("X", 10):WaitForChild("Blunder", 10):WaitForChild("BlunderList", 10))
if not Blunder or not Blunder.getAndClear then LocalPlayer:Kick("Error while bypassing the anti-cheat! (Didn't find blunder)") end
local OldGet = Blunder.getAndClear
setreadonly(Blunder, false)
local function OutputData(Message)
print("-- PET SIM X BLUNDER --")
print(Message .. "\n")
end
Blunder.getAndClear = function(...)
local Packet = ...
for i,v in next, Packet.list do
if v.message ~= "PING" then
OutputData(v.message)
table.remove(Packet.list, i)
end
end
return OldGet(Packet)
end
setreadonly(Blunder, true)
end)
if not banSuccess then
LocalPlayer:Kick("Error while bypassing the anti-cheat! (".. banError ..")")
return
end
local IsHardcore = Library.Shared.IsHardcore
local AllGameWorlds = {}
for name, world in pairs(Library.Directory.Worlds) do
if name ~= "WIP" and name ~= "Trading Plaza" and not world.disabled and world.worldOrder and world.worldOrder ~= 0 then
world.name = name
table.insert(AllGameWorlds, world)
end
end
table.sort(AllGameWorlds, function(a, b)
return a.worldOrder < b.worldOrder
end)
local WorldWithAreas = {}
for areaName, area in pairs(Library.Directory.Areas) do
if area and area.world then
local world = Library.Directory.Worlds[area.world]
local containsSpawn = false
if world and world.spawns then
for spawnName, spawn in pairs(world.spawns) do
if spawn.settings and spawn.settings.area and spawn.settings.area == name then
containsSpawn = true
break
end
end
end
if containsSpawn then
if not WorldWithAreas[area.world] then
WorldWithAreas[area.world] = {}
end
table.insert(WorldWithAreas[area.world], area.name)
end
end
end
function GetAllAreasInWorld(world)
-- local AllAreasInSelectedWorld = {}
-- for name, area in pairs(Library.Directory.Areas) do
-- local containsSpawn = false
-- for spawnName, spawn in pairs(world.spawns) do
-- if spawn.settings and spawn.settings.area and spawn.settings.area == name then
-- containsSpawn = true
-- break
-- end
-- end
-- if area.world == world.name and containsSpawn then
-- table.insert(AllAreasInSelectedWorld, name)
-- end
-- end
-- table.sort(AllAreasInSelectedWorld, function(a, b)
-- local areaA = Library.Directory.Areas[a]
-- local areaB = Library.Directory.Areas[b]
-- return areaA.id < areaB.id
-- end)
-- return AllAreasInSelectedWorld
return WorldWithAreas[world] or {}
end
Library.Signal.Fired("Rewards Redeemed"):Connect(function(rewards)
RewardsRedeemed(rewards)
end)
local GetCoinsInstance = GetRemoteFunction("Get Coins")
local OpenEggInstance = GetRemoteFunction("Buy Egg")
-- print(OpenEggInstance, typeof(OpenEggInstance))
local metatable = getrawmetatable(game)
setreadonly(metatable, false)
local oldNamecall = metatable.__namecall
metatable.__namecall = function(self, ...)
local InstanceMethod = getnamecallmethod()
local args = {...}
if InstanceMethod == "InvokeServer" then
if self == OpenEggInstance then
LastOpenEggId = args[1]
LastOpenEggData = Library.Directory.Eggs[LastOpenEggId]
LastHatchSetting = "Normal"
if args[2] then
LastHatchSetting = "Triple"
end
if args[3] then
LastHatchSetting = "Octuple"
end
coroutine.wrap(function()
while true do
SaveCustomFlag("CurrentEgg", LastOpenEggId)
wait()
SaveCustomFlag("CurrentHatchSettings", LastHatchSetting)
break
end
end)()
end
end
return oldNamecall(self, ...)
end
setreadonly(metatable, true)
-- local originalInvokeServer = OpenEggInstance.InvokeServer
-- originalInvokeServer = hookfunction(OpenEggInstance.InvokeServer, newcclosure(function(...)
-- local args = {...}
-- print(args[1])
-- -- if self == OpenEggInstance then
-- LastOpenEggId = args[1]
-- LastOpenEggData = Library.Directory.Eggs[LastOpenEggId]
-- LastHatchSetting = "Normal"
-- if args[2] then
-- LastHatchSetting = "Triple"
-- end
-- if args[3] then
-- LastHatchSetting = "Octuple"
-- end
-- coroutine.wrap(function()
-- while true do
-- SaveCustomFlag("CurrentEgg", LastOpenEggId)
-- wait()
-- SaveCustomFlag("CurrentHatchSettings", LastHatchSetting)
-- break
-- end
-- end)()
-- -- end
-- return originalInvokeServer(...)
-- end))
local fastPets = false
local Original_HasPower = Library.Shared.HasPower
Library.Shared.HasPower = function(pet, powerName)
if fastPets and powerName == "Agility" then
return true, 3
end
return Original_HasPower(pet, powerName)
end
local Original_GetPowerDir = Library.Shared.GetPowerDir
Library.Shared.GetPowerDir = function(powerName, tier)
if fastPets and powerName == "Agility" then
return {
title = "Agility III",
desc = "Pet moves 50% faster",
value = 20
}
end
return Original_GetPowerDir(powerName, tier)
end
getgenv().SecureMode = true
getgenv().DisableArrayfieldAutoLoad = true
--//----------- GUI -----------------//*
LocalPlayer.PlayerScripts:WaitForChild("Scripts", 10):WaitForChild("Game", 10)
local FarmUtilities_CollectDrops = false
local FarmUtilities_CurrentOrbs = {}
autoFarmTab:CreateToggle({
Name = "Collect Drops",
SectionParent = farmUtilities,
CurrentValue = false,
Flag = "FarmUtilities_CollectDrops",
Callback = function(Value)
FarmUtilities_CollectDrops = Value
if Value then
table.clear(FarmUtilities_CurrentOrbs)
FarmUtilities_CurrentOrbs = {}
CollectAllOrbs()
CollectAllLootbags()
end
if not FarmUtilities_CollectDrops then return end
task.spawn(function()
while FarmUtilities_CollectDrops do
wait(0.05)
if not FarmUtilities_CollectDrops then break end
if FarmUtilities_CurrentOrbs and #FarmUtilities_CurrentOrbs > 0 then
Library.Network.Fire("Claim Orbs", FarmUtilities_CurrentOrbs)
table.clear(FarmUtilities_CurrentOrbs)
FarmUtilities_CurrentOrbs = {}
end
end
end)
end
})
--//----------- FUNCTIONS -----------//*
local farmPreferences = autoFarmTab:CreateSection("Farm Priority", false, true)
local farmFocusListText = autoFarmTab:CreateParagraph({Title = "Current Farming", Content = "Nothing"}, farmPreferences)
local DefaultFarmFocusList = {
"Fruits",
"Highest Multiplier",
"Diamonds",
"Lowest Life",
"Highest Life",
"Nearest",
"Longest"
}
function CalcMultiplier(coinBonus)
if not coinBonus then return 0 end
local totalMultiplier = 0
if coinBonus.l then
for _, v in pairs(coinBonus.l) do
pcall(function()
if v.m and tonumber(v.m) then
totalMultiplier = totalMultiplier + v.m
end
end)
end
end
return totalMultiplier
end
local FarmFocusList = {}
local FarmFocusListButtons = {}
function UpdateFarmFocusUI()
local farmingText = ""
if not FarmFocusList or #FarmFocusList < 1 then
farmingText = "There is nothing on your priority list!\nAdd some by <b>clicking on buttons</b>!"
else
for i, v in ipairs(FarmFocusList) do
farmingText = farmingText .. (farmingText == "" and "This is your priority list to farm.\nYou can <b>modify it by clicking on buttons</b>!\n\n" or "\n") .. i .. "° - <b>" .. tostring(v) .. "</b>"
end
end
farmFocusListText:Set({Title = "Current Farming", Content = farmingText})
for _, button in pairs(FarmFocusListButtons) do
local buttonName = button.Button.Name
if buttonName then
if table.find(FarmFocusList, buttonName) then
button:Set(nil, "Remove")
else
button:Set(nil, "Add")
end
end
end
end
for _, focusName in pairs(DefaultFarmFocusList) do
local function UpdateButton(text, interact)
if not FarmFocusListButtons[focusName] then return end
while true do
wait()
FarmFocusListButtons[focusName]:Set(text, interact)
break
end
end
FarmFocusListButtons[focusName] = autoFarmTab:CreateButton({
Name = focusName,
SectionParent = farmPreferences,
Interact = table.find(FarmFocusList, focusName) and "Remove" or "Add",
CurrentValue = false,
Callback = function(Value)
if table.find(FarmFocusList, focusName) then
table.remove(FarmFocusList, table.find(FarmFocusList, focusName))
-- UpdateButton(nil, "Add")
else
table.insert(FarmFocusList, focusName)
-- UpdateButton(nil, "Remove")
end
coroutine.wrap(function()
while true do
wait()
UpdateFarmFocusUI()
break
end
end)
SaveCustomFlag("AutoFarm_FarmFocusList", FarmFocusList)
end
})
-- FarmFocusListButtons[focusName]:Disable("Coming soon")
end
function CollectAllOrbs()
pcall(function()
local OrbsToCollect = {}
for orbId, orb in pairs(Library.Things:FindFirstChild("Orbs"):GetChildren()) do
if not FarmUtilities_CollectDrops then break end
if orbId and orb then
table.insert(OrbsToCollect, orb.Name)
end
end
if OrbsToCollect and #OrbsToCollect > 0 and FarmUtilities_CollectDrops then
Library.Network.Fire("Claim Orbs", OrbsToCollect)
end
end)
end
function CollectAllLootbags()
pcall(function()
for _, lootbag in pairs(Library.Things:FindFirstChild("Lootbags"):GetChildren()) do
if not FarmUtilities_CollectDrops then break end
if lootbag and not lootbag:GetAttribute("Collected") then
Library.Network.Fire("Collect Lootbag", lootbag.Name, HumanoidRootPart.Position + Vector3.new(math.random(-0.05, 0.05), math.random(-0.05, 0.05), math.random(-0.05, 0.05)))
wait(0.03)
end
end
end)
end
Library.Things:FindFirstChild("Lootbags").ChildAdded:Connect(function(child)
wait()
if FarmUtilities_CollectDrops and child then
Library.Network.Fire("Collect Lootbag", child.Name, HumanoidRootPart.Position + Vector3.new(math.random(-0.05, 0.05), math.random(-0.05, 0.05), math.random(-0.05, 0.05)))
end
end)
Library.Things:FindFirstChild("Orbs").ChildAdded:Connect(function(child)
task.wait()
if FarmUtilities_CollectDrops and child then
table.insert(FarmUtilities_CurrentOrbs, child.name)
end
end)
local WorldCoins = Library.Things:WaitForChild("Coins")
WorldCoins.ChildAdded:Connect(function(ch)
if instantFall then
ch:SetAttribute("HasLanded", true)
ch:SetAttribute("IsFalling", false)
local coin = ch:WaitForChild("Coin")
coin:SetAttribute("InstantLand", true)
end
end)
function GetCoinsInArea(area)
local coinsInArea = {}
for _, coin in pairs(WorldCoins:GetChildren()) do
if coin and coin:GetAttribute("Area") and coin:GetAttribute("Area") == area then
table.insert(coinsInArea, coin)
end
end
return coinsInArea
end
function SortCoinsByPriority(coins)
local sortedCoins = {}
CoinsTable = debug.getupvalue(getsenv(LocalPlayer.PlayerScripts.Scripts.Game.Coins).DestroyAllCoins, 1)
for _, coin in pairs(coins) do
local coinMesh = coin:FindFirstChild("Coin")
local mag = (HumanoidRootPart.Position - coinMesh.Position).magnitude
if CoinsTable[coin.Name] and mag <= math.max(math.min(farmMaxDistance, Library.Settings.CoinGrabDistance), 10) and Library.WorldCmds.HasArea(coin:GetAttribute("Area")) then
table.insert(sortedCoins, coin)
end
end
table.sort(sortedCoins, function(coinA, coinB)
local a = CoinsTable[coinA.Name]
local b = CoinsTable[coinB.Name]
local APriority = GetCoinLowestPriority(a, b)
local BPriority = GetCoinLowestPriority(b, a)
return APriority < BPriority
end)
return sortedCoins
end
function SortCoinsByPriorityFastMode(coins)
local sortedCoins = {}
for coinId, coin in pairs(coins) do
coin.coinId = coinId
local mag = (HumanoidRootPart.Position - coin.p).magnitude
if mag <= math.max(math.min(farmMaxDistance, Library.Settings.CoinGrabDistance), 10) and Library.WorldCmds.HasArea(coin.a) then
table.insert(sortedCoins, coin)
end
end
table.sort(sortedCoins, function(a, b)
local APriority = GetCoinLowestPriority(a, b)
local BPriority = GetCoinLowestPriority(b, a)
return APriority < BPriority
end)
return sortedCoins
end
function GetCoinLowestPriority(mainCoin, coinToCompare)
local coin = Library.Directory.Coins[mainCoin.n]
local coinCompare = Library.Directory.Coins[coinToCompare.n]
local aMagnitude = (HumanoidRootPart.Position - mainCoin.p).magnitude
local bMagnitude = (HumanoidRootPart.Position - coinToCompare.p).magnitude
local coinIsFruit = coin.breakSound == "fruit"
local coinIsDiamond = coin.currencyType == "Diamonds"
local coinIsEaster = coin.currencyType == "Easter Coins"
local coinHighestMultiplier = CalcMultiplier(mainCoin.b) > CalcMultiplier(coinToCompare.b)
local coinPriority = 9999999
for priority, priorityName in ipairs(FarmFocusList) do
if priorityName == "Fruits" and coinIsFruit then
mainCoin.priority = priorityName
coinPriority = priority
break
elseif priorityName == "Highest Multiplier" and coinHighestMultiplier then
mainCoin.priority = priorityName
coinPriority = priority
break
elseif priorityName == "Diamonds" and coinIsDiamond then
mainCoin.priority = priorityName
coinPriority = priority
break
elseif priorityName == "Lowest Life" and coin.health < coinCompare.health then
mainCoin.priority = priorityName
coinPriority = priority
break
elseif priorityName == "Highest Life" and coin.health > coinCompare.health then
mainCoin.priority = priorityName
coinPriority = priority
break
elseif priorityName == "Nearest" and aMagnitude < bMagnitude then
mainCoin.priority = priorityName
coinPriority = priority
break
elseif priorityName == "Longest" and aMagnitude > bMagnitude then
mainCoin.priority = priorityName
coinPriority = priority
break
end
end
return coinPriority
end
--//----------- TAB -----------------//*
local mainTab = Window:CreateTab("Main", "12434808810")
local autoFarmTab = Window:CreateTab("Farm", "13075651575", true)
--//------------ STATS --------------//*
local stats = autoFarmTab:CreateParagraph({Title = "Hello, <b><font color=\"#2B699F\">" .. LocalPlayer.DisplayName .. "</font></b>!", Content = "Thanks for using my script! - Rafa\nMake sure to join us at <b><font color=\"#2B699F\">discord.gg/MilkUp</font></b>"})
local autoFarmSection = autoFarmTab:CreateSection("Auto Farm", false, false, "7785988164")
local enableAutoFarm = false
autoFarmTab:CreateToggle({
Name = "Enable Auto-Farm",
Info = 'Auto Farm will automatically destroy/farm coins for you, be aware of the risks of abusing it',
Flag = "AutoFarm_Enabled",
SectionParent = autoFarmSection,
CurrentValue = false,
Callback = function(Value)
enableAutoFarm = Value
end
})
--//----------- Rayfield ------------//*
local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()
local Window = Rayfield:CreateWindow({
Name = "Pet Simulator X GUI | By FireService",
LoadingTitle = "Loading...",
LoadingSubtitle = "by FireServiceScripter",
ConfigurationSaving = {
Enabled = true,
FolderName = nil, -- Create a custom folder for your hub/game
FileName = "Big Hub"
},
Discord = {
Enabled = false,
Invite = "noinvitelink", -- The Discord invite code, do not include discord.gg/. E.g. discord.gg/ABCD would be ABCD
RememberJoins = true -- Set this to false to make them join the discord every time they load it up
},
KeySystem = false, -- Set this to true to use our key system
KeySettings = {
Title = "Untitled",
Subtitle = "Key System",
Note = "No method of obtaining the key is provided",
FileName = "Key", -- It is recommended to use something unique as other scripts using Rayfield may overwrite your key file
SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
GrabKeyFromSite = false, -- If this is true, set Key below to the RAW site you would like Rayfield to get the key from
Key = {"Hello"} -- List of keys that will be accepted by the system, can be RAW file links (pastebin, github etc) or simple strings ("hello","key22")
}
})
local AutoFarm_FastMode = false
autoFarmTab:CreateToggle({
Name = "Fast Mode (unlegit farm)",
Flag = "AutoFarm_FastMode",
SectionParent = autoFarmSection,
CurrentValue = false,
Callback = function(Value)
AutoFarm_FastMode = Value
end
local AutoFarm_FarmSpeed = 0.3
autoFarmTab:CreateSlider({
Name = "Farm Speed",
Flag = "AutoFarm_FarmSpeed",
SectionParent = autoFarmSection,
Range = {0.05, 2},
Increment = 0.05,
Suffix = "Second(s)",
CurrentValue = 0.3,
Callback = function(Value)
AutoFarm_FarmSpeed = Value
end,
local farmMaxDistance = 150
autoFarmTab:CreateSlider({
Name = "Farm Max Distance",
Flag = "AutoFarm_MaxDistance",
SectionParent = autoFarmSection,
Range = {10, tonumber(Library.Settings.CoinGrabDistance) or 300},
Increment = 1,
Suffix = "Studs",
CurrentValue = 150,
Callback = function(Value)
farmMaxDistance = Value
end,
})
local farmUtilities = autoFarmTab:CreateSection("Farm Utilities", false, true)
autoFarmTab:CreateToggle({
Name = "Fast Pets",
SectionParent = farmUtilities,
CurrentValue = false,
Flag = "FarmUtilities_FastPets",
Callback = function(Value)
fastPets = Value
end
})
local instantFall = false
autoFarmTab:CreateToggle({
Name = "Instant Fall Coins",
SectionParent = farmUtilities,
CurrentValue = false,
Flag = "FarmUtilities_InstantFallCoins",
Callback = function(Value)
instantFall = Value
end
})
local areaToFarmSection = autoFarmTab:CreateSection("Areas to Farm", false, true)
for w, world in ipairs(AllGameWorlds) do
coroutine.wrap(function()
if world and world.name then
local containsSpawns = false
if world.spawns then
for i,v in pairs(world.spawns) do containsSpawns = true break end
end
if containsSpawns then
local worldDropdown = autoFarmTab:CreateDropdown({
Name = world.name,
MultiSelection = true,
CurrentOption = {},
Flag = "SelectedAreas_" .. world.name,
Icon = Library.Directory.Currency[world.mainCurrency].tinyImage,
Options = GetAllAreasInWorld(world),
SectionParent = areaToFarmSection,
Callback = function(Option)
end
})
worldDropdown:Lock("Coming soon!", true)
end
end
end)()
end
To embed this project on your website, copy the following code and paste it into your website's HTML: