--!nonstrict
--[[
╔══════════════════════════════════════════════════╗
║ ║
║ R O B S C R I P T . C O M ║
║ ║
╚══════════════════════════════════════════════════╝
Fake an Egg Hub
---------------
Egg farming, pet stealing, rebirth and fake-egg ESP:
1. Farm - buys the best egg, carries it home, hatches it
2. Steal - takes the heaviest pet from another pen
3. Auto - rebirth, pen upgrade, disguise, equip best
4. ESP - highlights the players hiding as eggs
RightControl shows or hides the window. The language switches in Settings.
]]
----------------------------------------------------------------------
-- UI library
----------------------------------------------------------------------
local UI_SOURCES = {
"https://raw.githubusercontent.com/bobloscript/Robly_Airflow/main/Source.luau",
"https://raw.githubusercontent.com/PookiePepelsss/Airflow-UI/refs/heads/main/Source.luau",
}
local Airflow = getgenv().__FakeEggLibrary
if type(Airflow) ~= "table" then
for _, url in ipairs(UI_SOURCES) do
local ok, lib = pcall(function()
return loadstring(game:HttpGet(url))()
end)
if ok and type(lib) == "table" and type(lib.CreateWindow) == "function" then
Airflow = lib
break
end
end
end
if not Airflow then
error("[RobScript.com] The UI library could not be loaded. Check your connection and retry.")
end
getgenv().__FakeEggLibrary = Airflow
----------------------------------------------------------------------
-- Services
----------------------------------------------------------------------
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local SelectionBox = Instance.new("SelectionBox")
local LocalPlayer = Players.LocalPlayer
local Remotes = ReplicatedStorage:WaitForChild("RemoteEvents", 30)
local EggEvent = ReplicatedStorage:WaitForChild("EggRemotes"):WaitForChild("EggEvent", 30)
if not (Remotes and EggEvent) then
error("[RobScript.com] This script only works in Fake an Egg.")
end
local Eggs = require(ReplicatedStorage:WaitForChild("Eggs"))
local Animals = require(ReplicatedStorage:WaitForChild("Animals"))
local Rebirth = require(ReplicatedStorage:WaitForChild("Rebirth"))
local Scanners = require(ReplicatedStorage:WaitForChild("Scanners"))
local Food = require(ReplicatedStorage:WaitForChild("Food"))
----------------------------------------------------------------------
-- Language
----------------------------------------------------------------------
local TEXT = {
ru = {
window = "Fake an Egg Hub",
subtitle = "яйца, питомцы, ребёрс",
home = "Главная",
logs = "Журнал",
logBox = "Что делает",
logName = "Действия",
logEmpty = "Пока пусто",
farmOn = "Ферма вкл",
farmOff = "Ферма выкл",
stealOn = "Кража вкл",
stealOff = "Кража выкл",
protectOn = "Защита вкл",
protectOff = "Защита выкл",
rebirthOn = "Ребёрс вкл",
rebirthOff = "Ребёрс выкл",
espOn = "ESP вкл",
espOff = "ESP выкл",
logHatched = "Вылупил: %s",
logBuy = "Покупаю %s за $%d",
logBought = "Куплено: %s",
logStolen = "Краду %s (вес %d)",
logRebirth = "Ребёрс (было %d)",
logPipe = "Залез в трубу",
logShop = "Купил %s за $%d",
logSold = "Продал %s (вес %d)",
protectState = "защита",
tabFarm = "Ферма",
tabSteal = "Кража",
tabAuto = "Авто",
tabVisual = "ESP",
tabSettings = "Настройки",
farm = "Ферма яиц",
farmDesc = "Покупает яйцо, несёт в гнездо и вылупляет",
onlyBetter = "Только лучше текущих",
onlyBetterDesc = "Не покупает яйца слабее лучшего питомца в пене",
maxPrice = "Максимальная цена",
maxPriceDesc = "Не тратить больше этой суммы на яйцо",
maxPriceEnabled = "Ограничить цену яиц",
maxPriceEnabledDesc = "Выкл — покупать без лимита цены",
skipFake = "Только настоящие яйца",
skipFakeDesc = "Пропускает фейковые яйца, в которых прячется игрок",
skipFakeWarn = "Не выключай: покупка фейкового яйца платит спрятавшемуся игроку и не даёт тебе ничего.",
autoHatch = "Авто-вылупление",
autoHatchDesc = "Жмёт Hatch на каждом яйце, у которого вышел таймер",
eggNames = "Какие яйца покупать",
eggNamesDesc = "Пусто - любые",
eggRarities = "Редкости",
eggRaritiesDesc = "Пусто - любые",
equipInterval = "Лучший питомец каждые",
equipIntervalDesc = "Как часто нажимать кнопку лучшего питомца",
tabRebirth = "Ферма ребёрса",
rebirthFarm = "Фарм яиц под ребёрс",
rebirthFarmDesc = "Покупает только яйцо, которое просит следующий ребёрс",
rebirthReal = "Только настоящие яйца",
rebirthRealDesc = "Фейковые яйца всегда пропускаются. При включении ферма также активирует авто-ребёрс.",
rebirthNeed = "Нужно",
rebirthDone = "условие выполнено",
rebirthNone = "нет требования",
rebirthFarming = "фармлю под ребёрс",
steal = "Авто-кража",
stealDesc = "Идёт в чужой пен и уносит питомца",
minWeight = "Минимальный вес",
minWeightDesc = "Ниже этого веса питомцев не трогать",
returnHome = "Возвращаться домой",
returnHomeDesc = "После кражи бежит назад в свой пен",
rebirth = "Авто-ребёрс",
rebirthDesc = "Жмёт ребёрс, когда условия выполнены",
upgrade = "Апгрейд пена",
upgradeDesc = "Покупает улучшение базы, когда хватает денег",
disguise = "Авто-маскировка",
disguiseDesc = "Залезает в трубу и становится яйцом",
equipBest = "Ставить лучшего питомца",
equipBestDesc = "Жмёт «лучший питомец» в слотах",
protect = "Защита",
protectDesc = "Не крадёт и не уходит с базы — питомцы остаются дома",
esp = "ESP фейковых яиц",
espDesc = "Подсвечивает игроков, которые притворяются яйцом",
espNames = "Показывать имена",
espNamesDesc = "Подпись над головой фейка",
lang = "Язык",
langDesc = "Русский или English",
cash = "Деньги",
best = "Лучший питомец",
state = "Состояние",
pes = "Питомцев в пене",
fakes = "Фейков найдено",
eggsBought = "Яиц куплено",
hatched = "Вылуплено",
stolen = "Украдено",
idle = "жду",
farming = "несу яйцо",
buying = "покупаю",
hatching = "вылупляю",
stealing = "краду",
noMoney = "нет денег",
full = "пен полон",
noEgg = "нет подходящих яиц",
noTarget = "нет цели",
ready = "готово",
hotkeys = "Горячие клавиши",
hotkeysText = "RightControl — показать или скрыть окно",
tabShops = "Магазины",
tabSell = "Продажа",
buyScanners = "Авто-покупка сканеров",
buyScannersDesc = "Берёт лучший сканер в наличии, на который хватает денег",
buyFood = "Авто-покупка еды",
buyFoodDesc = "Берёт лучшую еду в наличии, на которую хватает денег",
shopTypes = "Типы",
shopTypesDesc = "Пусто — любые",
shopMax = "Лимит цены",
shopMaxDesc = "Не тратить на одну покупку больше этой суммы",
shopNothing = "нет в наличии",
shopBought = "куплено",
autoSell = "Авто-продажа петов",
autoSellDesc = "Продаёт петов по фильтрам у стенда Sell",
sellNames = "Каких петов продавать",
sellNamesDesc = "Пусто — любых",
sellRarities = "Какие редкости продавать",
sellRaritiesDesc = "Пусто — любые",
sellUnder = "Продавать легче веса",
sellUnderDesc = "0 — без ограничения по весу",
keepBest = "Не продавать лучшего",
keepBestDesc = "Самый тяжёлый питомец остаётся",
sellEvery = "Продавать каждые",
sellEveryDesc = "Пауза между продажами",
sold = "Продано",
sellNone = "нечего продавать",
},
en = {
window = "Fake an Egg Hub",
subtitle = "eggs, pets, rebirth",
home = "Home",
logs = "Logs",
logBox = "What it does",
logName = "Actions",
logEmpty = "Nothing yet",
farmOn = "Farm on",
farmOff = "Farm off",
stealOn = "Steal on",
stealOff = "Steal off",
protectOn = "Protect on",
protectOff = "Protect off",
rebirthOn = "Rebirth on",
rebirthOff = "Rebirth off",
espOn = "ESP on",
espOff = "ESP off",
logHatched = "Hatched: %s",
logBuy = "Buying %s for $%d",
logBought = "Bought: %s",
logStolen = "Stealing %s (weight %d)",
logRebirth = "Rebirth (was %d)",
logPipe = "Jumped into the pipe",
logShop = "Bought %s for $%d",
logSold = "Sold %s (weight %d)",
protectState = "protect",
tabFarm = "Farm",
tabSteal = "Steal",
tabAuto = "Auto",
tabVisual = "ESP",
tabSettings = "Settings",
farm = "Auto farm",
farmDesc = "Buys an egg, carries it home and hatches it",
onlyBetter = "Only better eggs",
onlyBetterDesc = "Skips eggs weaker than your best pet",
maxPrice = "Max price",
maxPriceDesc = "Never spend more than this on one egg",
maxPriceEnabled = "Limit egg price",
maxPriceEnabledDesc = "Off — buy eggs with no price limit",
skipFake = "Real eggs only",
skipFakeDesc = "Skips fake eggs - the ones with a player hiding inside",
skipFakeWarn = "Keep this on: a fake egg pays the player hiding in it and gives you nothing.",
autoHatch = "Auto hatch eggs",
autoHatchDesc = "Presses Hatch on every egg whose timer has finished",
eggNames = "Eggs to buy",
eggNamesDesc = "Empty means every egg",
eggRarities = "Rarities",
eggRaritiesDesc = "Empty means every rarity",
equipInterval = "Equip best every",
equipIntervalDesc = "How often the best-pet button is pressed",
tabRebirth = "Rebirth farm",
rebirthFarm = "Farm eggs for rebirth",
rebirthFarmDesc = "Buys only the egg the next rebirth asks for",
rebirthReal = "Real eggs only",
rebirthRealDesc = "Fake eggs are always skipped. Turning this farm on also enables Auto rebirth.",
rebirthNeed = "Needs",
rebirthDone = "requirement met",
rebirthNone = "no requirement",
rebirthFarming = "farming for rebirth",
steal = "Auto steal",
stealDesc = "Runs into another pen and takes a pet",
minWeight = "Min weight",
minWeightDesc = "Pets below this weight are left alone",
returnHome = "Run home",
returnHomeDesc = "Carries the stolen pet back to your pen",
rebirth = "Auto rebirth",
rebirthDesc = "Presses rebirth when the requirements are met",
upgrade = "Pen upgrade",
upgradeDesc = "Buys the base upgrade when there is enough cash",
disguise = "Auto disguise",
disguiseDesc = "Jumps into the pipe and becomes an egg",
equipBest = "Equip best pet",
equipBestDesc = "Uses the best-pet button in the slots",
protect = "Protect mode",
protectDesc = "No stealing and no leaving the base, pets stay home",
esp = "Fake egg ESP",
espDesc = "Highlights players pretending to be an egg",
espNames = "Show names",
espNamesDesc = "Draws a name tag above the fake",
lang = "Language",
langDesc = "Русский или English",
cash = "Cash",
best = "Best pet",
state = "State",
pes = "Pets in pen",
fakes = "Fakes found",
eggsBought = "Eggs bought",
hatched = "Hatched",
stolen = "Stolen",
idle = "idle",
farming = "carrying",
buying = "buying",
hatching = "hatching",
stealing = "stealing",
noMoney = "no money",
full = "pen full",
noEgg = "no fitting eggs",
noTarget = "no target",
ready = "ready",
hotkeys = "Hotkeys",
hotkeysText = "RightControl shows or hides the window",
tabShops = "Shops",
tabSell = "Sell",
buyScanners = "Auto buy scanners",
buyScannersDesc = "Buys the best scanner in stock you can afford",
buyFood = "Auto buy pet food",
buyFoodDesc = "Buys the best food in stock you can afford",
shopTypes = "Types",
shopTypesDesc = "Empty means every type",
shopMax = "Shop price limit",
shopMaxDesc = "Never spend more than this on one purchase",
shopNothing = "nothing in stock",
shopBought = "bought",
autoSell = "Auto sell pets",
autoSellDesc = "Sells pets that match the filters at the Sell stand",
sellNames = "Pets to sell",
sellNamesDesc = "Empty means every pet",
sellRarities = "Rarities to sell",
sellRaritiesDesc = "Empty means every rarity",
sellUnder = "Sell under weight",
sellUnderDesc = "0 means no weight limit",
keepBest = "Keep the best pet",
keepBestDesc = "Never sells your heaviest pet",
sellEvery = "Sell every",
sellEveryDesc = "Delay between sales",
sold = "Sold",
sellNone = "nothing to sell",
},
}
----------------------------------------------------------------------
-- Settings
----------------------------------------------------------------------
local Settings = {
farm = false,
onlyBetter = false,
maxPriceEnabled = false,
maxPrice = 1000000000000,
skipFake = true,
autoHatch = true,
eggNames = {},
eggRarities = {},
rebirthFarm = false,
buyScanners = false,
buyFood = false,
scannerTypes = {},
foodTypes = {},
shopMax = 5000000,
autoSell = false,
sellNames = {},
sellRarities = {},
sellUnder = 0,
keepBest = true,
sellEvery = 2,
steal = false,
minWeight = 1000,
returnHome = true,
rebirth = false,
upgrade = false,
disguise = false,
equipBest = false,
equipInterval = 5,
protect = false,
esp = false,
espNames = true,
lang = "en",
}
local T = TEXT[Settings.lang]
local Window, Log
local UiRefs = {}
local stats = {
bought = 0,
hatched = 0,
stolen = 0,
fakes = 0,
scanners = 0,
food = 0,
sold = 0,
}
local state = {
text = "idle",
egg = nil,
target = nil,
shop = { scanner = T.shopNothing, food = T.shopNothing },
sell = T.sellNone,
}
local function log(message)
if Log then
Log:Push(tostring(message))
end
end
getgenv().__FakeEggGen = (getgenv().__FakeEggGen or 0) + 1
local SCRIPT_GENERATION = getgenv().__FakeEggGen
local function scriptAlive()
return getgenv().__FakeEggGen == SCRIPT_GENERATION
end
----------------------------------------------------------------------
-- Helpers
----------------------------------------------------------------------
local function character()
local char = LocalPlayer.Character
if char and char.Parent then
return char
end
return nil
end
local function rootPart()
local char = character()
return char and char:FindFirstChild("HumanoidRootPart") or nil
end
local function teleport(position)
local hrp = rootPart()
if not hrp or typeof(position) ~= "Vector3" then
return false
end
hrp.CFrame = CFrame.new(position + Vector3.new(0, 3, 0))
return true
end
local function promptPosition(prompt)
local parent = prompt and prompt.Parent
if not parent then
return nil
end
if parent:IsA("Attachment") then
return parent.WorldPosition
end
if parent:IsA("BasePart") then
return parent.Position
end
return parent:GetPivot().Position
end
local function firePrompt(prompt)
if not prompt or not prompt.Parent then
return false
end
local ok = pcall(function()
if not prompt.Enabled then
prompt.Enabled = true
end
fireproximityprompt(prompt)
end)
return ok
end
local function myBase()
local index = LocalPlayer:GetAttribute("Base")
if not index then
return nil
end
return workspace:FindFirstChild("Bases") and workspace.Bases:FindFirstChild(tostring(index)) or nil
end
local function cash()
local stats = LocalPlayer:FindFirstChild("leaderstats")
local value = stats and stats:FindFirstChild("Cash")
return value and value.Value or 0
end
local function rebirths()
local stats = LocalPlayer:FindFirstChild("leaderstats")
local value = stats and stats:FindFirstChild("Rebirths")
return value and value.Value or 0
end
local function mySlots()
local folder = LocalPlayer:FindFirstChild("Slots")
return folder and folder:GetChildren() or {}
end
local function bestOwnWeight()
local best = 0
for _, slot in ipairs(mySlots()) do
local weight = slot:GetAttribute("Weight")
if weight and weight > best then
best = weight
end
end
return best
end
local function petWeight(name)
local animal = name and Animals[name]
return animal and animal.weight or 0
end
local function freeNest()
local base = myBase()
local slots = LocalPlayer:FindFirstChild("Nests")
if not (base and slots) then
return nil
end
local nests = base:FindFirstChild("Nests")
if not nests then
return nil
end
for _, nest in ipairs(nests:GetChildren()) do
local slot = slots:FindFirstChild(nest.Name)
if slot and slot:GetAttribute("Owned") and not slot:GetAttribute("Egg") then
return nest
end
end
return nil
end
--- The toggle is the source of truth; Settings is only a mirror for rebuilds.
local function isOn(key)
local ref = UiRefs[key]
if ref then
local ok, value = pcall(function()
return ref:Get()
end)
if ok then
return value == true
end
end
return Settings[key] == true
end
local function firePromptSafe(prompt)
return firePrompt(prompt)
end
--- A real egg you can buy: it flew in, it is an egg model, and no player hides in it.
local function isRealEgg(model)
if not model or not model.Parent then
return false
end
if model:GetAttribute("Owner") ~= nil then
return false
end
if not model:GetAttribute("IsEgg") or not model:GetAttribute("BaseName") then
return false
end
if not model:GetAttribute("CountdownEnd") then
return false
end
for _, child in ipairs(model:GetDescendants()) do
if child:IsA("Humanoid") or child:IsA("Player") then
return false
end
end
return true
end
--- What the next rebirth wants hatched.
local function rebirthAnimal()
local ok, data = pcall(Rebirth.getNext, rebirths())
if ok and type(data) == "table" then
return data.animal
end
return nil
end
local function eggNameList()
local out, seen = {}, {}
for _, info in pairs(Eggs.ByName) do
local name = info.name
if name and not seen[name] then
seen[name] = true
table.insert(out, name)
end
end
table.sort(out)
return out
end
local function eggRarityList()
local out, seen = {}, {}
for _, info in pairs(Eggs.ByName) do
local rarity = info.rarityType
if rarity and not seen[rarity] then
seen[rarity] = true
table.insert(out, rarity)
end
end
table.sort(out)
return out
end
----------------------------------------------------------------------
-- 1. FARM
----------------------------------------------------------------------
local hatchCooldown = {}
local hatchedLogged = {}
local buyBlocked = {}
--- Best egg that passes every filter. `mode` is "normal" or "rebirth".
local function pickEgg(mode)
local best, bestScore = nil, -1
local money = cash()
local bestWeight = bestOwnWeight()
local now = os.clock()
local wanted = mode == "rebirth" and rebirthAnimal() or nil
local names = Settings.eggNames
local rarities = Settings.eggRarities
-- Rebirth farming always skips fake eggs, independently of the Farm toggle.
local realOnly = mode == "rebirth" or isOn("skipFake")
for _, prompt in ipairs(workspace:GetDescendants()) do
if prompt:IsA("ProximityPrompt") and prompt.ActionText == "Buy" and prompt.Parent and prompt.Enabled then
local model = prompt.Parent
local eggName = model:GetAttribute("BaseName")
local info = eggName and Eggs.ByName[eggName]
local blockedUntil = buyBlocked[prompt]
local real = isRealEgg(model)
if info and info.price <= money
and (not Settings.maxPriceEnabled or info.price <= Settings.maxPrice)
and not (blockedUntil and blockedUntil > now)
and (real or not realOnly) then
local petName = info.pet or info.name
local allowed = true
if wanted and petName ~= wanted then
allowed = false
end
if allowed and names and next(names) and not names[eggName] then
allowed = false
end
if allowed and rarities and next(rarities) and not rarities[info.rarityType or "Common"] then
allowed = false
end
local weight = petWeight(petName)
local score = info.rarity or 0
if allowed and (mode == "rebirth" or not Settings.onlyBetter or weight > bestWeight) then
if score > bestScore then
best, bestScore = {
prompt = prompt,
info = info,
weight = weight,
price = info.price,
real = real,
}, score
end
end
end
end
end
return best
end
--- Hatches one ready egg per call: the server checks the distance, so the
--- character has to stand next to the nest before the prompt is fired.
local function hatchReady()
local now = workspace:GetServerTimeNow()
local eggs = workspace:FindFirstChild("NestEggs")
if not eggs then
return
end
for _, model in ipairs(eggs:GetChildren()) do
if model:GetAttribute("Owner") == LocalPlayer.Name and (hatchCooldown[model] or 0) < now then
local prompt
for _, child in ipairs(model:GetDescendants()) do
if child:IsA("ProximityPrompt") and child.ActionText == "Hatch" then
prompt = child
break
end
end
if prompt and prompt.Enabled then
hatchCooldown[model] = now + 2
local position = model:GetPivot().Position
if teleport(position + Vector3.new(0, -1, 3)) then
task.wait(0.12)
if firePrompt(prompt) then
state.text = T.hatching
stats.hatched += 1
log(string.format(T.logHatched, tostring(model:GetAttribute("BaseName"))))
end
end
return true
end
end
end
end
local function farmStep(mode)
mode = mode or "normal"
if LocalPlayer:GetAttribute("Carrying") then
local nest = freeNest()
if nest then
teleport(nest:GetPivot().Position)
state.text = mode == "rebirth" and T.rebirthFarming or T.farming
else
state.text = T.full
end
return
end
-- no free nest: buying now would just drop the egg on the floor
if not freeNest() then
state.text = T.full
return
end
-- waiting for the previous buy to land
if state.pendingPrompt then
if os.clock() - (state.pendingAt or 0) > 1.5 then
buyBlocked[state.pendingPrompt] = os.clock() + 20
state.pendingPrompt = nil
state.text = T.noEgg
end
return
end
local egg = pickEgg(mode)
if not egg then
if mode == "rebirth" then
state.text = rebirthAnimal() and T.noEgg or T.rebirthNone
else
state.text = cash() < 100 and T.noMoney or T.noEgg
end
return
end
state.text = mode == "rebirth" and T.rebirthFarming or T.buying
local position = promptPosition(egg.prompt)
if position and teleport(position) then
task.wait(0.15)
if firePrompt(egg.prompt) then
state.pendingPrompt = egg.prompt
state.pendingAt = os.clock()
state.egg = egg.info.displayName or egg.info.name
log(string.format(T.logBuy, tostring(state.egg), egg.price))
end
end
end
local function confirmBuy()
if state.pendingPrompt and LocalPlayer:GetAttribute("Carrying") then
state.pendingPrompt = nil
stats.bought += 1
log(string.format(T.logBought, tostring(state.egg)))
end
end
----------------------------------------------------------------------
-- 2. STEAL
----------------------------------------------------------------------
local stealCooldown = 0
--- Heaviest pet in someone else's pen.
local function pickStolenPet()
local best, bestWeight = nil, Settings.minWeight
local me = LocalPlayer.Name
local bases = workspace:FindFirstChild("Bases")
if not bases then
return nil
end
for _, base in ipairs(bases:GetChildren()) do
if base:GetAttribute("Owner") and base:GetAttribute("Owner") ~= me then
for _, pet in ipairs(base:GetChildren()) do
local petName = pet.Name
local weight = petWeight(petName)
if pet:IsA("Model") and weight > bestWeight then
for _, child in ipairs(pet:GetDescendants()) do
if child:IsA("ProximityPrompt") and child.ActionText == "Steal" then
best, bestWeight = { prompt = child, pet = pet, base = base, name = petName, weight = weight }, weight
break
end
end
end
end
end
end
return best
end
local function stealStep()
local now = os.clock()
if now < stealCooldown then
return
end
if LocalPlayer:GetAttribute("Carrying") then
local nest = freeNest()
if nest then
teleport(nest:GetPivot().Position)
state.text = T.farming
end
return
end
local target = pickStolenPet()
if not target then
state.text = T.noTarget
return
end
state.text = T.stealing
local position = promptPosition(target.prompt)
if position and teleport(position) then
task.wait(0.2)
local fired = firePrompt(target.prompt)
if not fired then
local owner = target.base:GetAttribute("Owner")
local player = owner and Players:FindFirstChild(owner)
if player then
pcall(function()
Remotes.StealEvent:FireServer(player.UserId, target.pet.Name)
end)
fired = true
end
end
if fired then
stats.stolen += 1
stealCooldown = now + 1.5
log(string.format(T.logStolen, target.name, target.weight))
if Settings.returnHome then
local base = myBase()
if base then
teleport(base.Spawn.Position)
end
end
end
end
end
----------------------------------------------------------------------
-- 3. SHOPS AND SELLING
----------------------------------------------------------------------
local scannerCooldown, foodCooldown, sellCooldown = 0, 0, 0
local shopPending = { scanner = nil, food = nil }
local sellPending = nil
local function shopPosition(name)
local map = workspace:FindFirstChild("Map")
local model = map and map:FindFirstChild(name)
return model and model:GetPivot().Position or nil
end
local function itemNameList(module)
local out = {}
for _, item in ipairs(module.List) do
table.insert(out, item.name)
end
table.sort(out)
return out
end
local function petNameList()
local out = {}
for name, info in pairs(Animals) do
if type(name) == "string" and type(info) == "table" and info.weight and info.rarityType then
table.insert(out, name)
end
end
table.sort(out)
return out
end
local function petRarityList()
local out, seen = {}, {}
for _, info in pairs(Animals) do
if type(info) == "table" and info.weight and info.rarityType and not seen[info.rarityType] then
seen[info.rarityType] = true
table.insert(out, info.rarityType)
end
end
table.sort(out)
return out
end
local function selectedOptions(map)
local out = {}
for name, selected in pairs(map or {}) do
if selected then
table.insert(out, name)
end
end
table.sort(out)
return out
end
local function shopStock(kind, name)
local module = kind == "scanner" and Scanners or Food
local ok, stock = pcall(module.stock, LocalPlayer, name)
if ok and type(stock) == "number" then
return stock
end
local prefix = kind == "scanner" and "Stock" or "FoodStock"
return LocalPlayer:GetAttribute(prefix .. name) or 0
end
--- Best selected shop item that is in stock, unlocked and affordable.
local function bestShopItem(kind)
local module = kind == "scanner" and Scanners or Food
local chosen = kind == "scanner" and Settings.scannerTypes or Settings.foodTypes
local filterOn = chosen and next(chosen) ~= nil
local money = cash()
local best, bestRank, bestStock = nil, -1, 0
for _, item in ipairs(module.List) do
local stock = shopStock(kind, item.name)
local unlocked = rebirths() >= (item.rebirth or 0)
local allowed = not filterOn or chosen[item.name] == true
if allowed and unlocked and stock > 0 and item.price <= money and item.price <= Settings.shopMax then
local rank = item.rank or 0
if rank > bestRank then
best, bestRank, bestStock = item, rank, stock
end
end
end
return best, bestStock
end
local function confirmShopPurchase(kind)
local pending = shopPending[kind]
if not pending then
return
end
local currentStock = shopStock(kind, pending.item.name)
if currentStock < pending.stock or cash() < pending.cash then
if kind == "scanner" then
stats.scanners += 1
else
stats.food += 1
end
log(string.format(T.logShop, pending.item.name, pending.item.price))
shopPending[kind] = nil
elseif os.clock() - pending.at > 2 then
shopPending[kind] = nil
end
end
local function shopStep(kind)
local now = os.clock()
if (kind == "scanner" and now < scannerCooldown) or (kind == "food" and now < foodCooldown) then
return false
end
local item, stock = bestShopItem(kind)
if not item then
state.shop[kind] = T.shopNothing
return false
end
local position = shopPosition(kind == "scanner" and "Scanners" or "Food")
if not position or not teleport(position + Vector3.new(0, 2, 5)) then
return false
end
task.wait(0.15)
local remote = kind == "scanner" and Remotes.ScannerEvent or Remotes.FoodEvent
local ok = pcall(function()
remote:FireServer("Buy", item.name)
end)
if not ok then
return false
end
if kind == "scanner" then
scannerCooldown = os.clock() + 2
else
foodCooldown = os.clock() + 2
end
shopPending[kind] = { item = item, stock = stock, cash = cash(), at = os.clock() }
state.shop[kind] = item.name
return true
end
local function parseInventoryPet(attr)
local ok, key, pet, animal = pcall(function()
local decoded = Animals.decodeAttr(attr)
local name = Animals.parseSlot(decoded)
return decoded, name, name and Animals[name] or nil
end)
if ok then
return key, pet, animal
end
return nil
end
local function bestInventoryWeight()
local inventory = LocalPlayer:FindFirstChild("Inventory")
local best = 0
if not inventory then
return best
end
for attr, count in pairs(inventory:GetAttributes()) do
if type(count) == "number" and count > 0 then
local _, _, animal = parseInventoryPet(attr)
if animal and (animal.weight or 0) > best then
best = animal.weight
end
end
end
return best
end
--- First inventory pet that matches every sell filter.
local function sellKey()
local inventory = LocalPlayer:FindFirstChild("Inventory")
if not inventory then
return nil
end
local best = math.max(bestOwnWeight(), bestInventoryWeight())
local names = Settings.sellNames
local rarities = Settings.sellRarities
local namesOn = names and next(names) ~= nil
local raritiesOn = rarities and next(rarities) ~= nil
for attr, count in pairs(inventory:GetAttributes()) do
if type(count) == "number" and count > 0
and not (attr:match("_Size$") or attr:match("_Weight$") or attr:match("_Mood$")) then
local key, pet, animal = parseInventoryPet(attr)
if key and animal then
local weight = animal.weight or 0
local rarity = animal.rarityType or "Common"
local allowed = true
if namesOn and not names[pet] then
allowed = false
end
if allowed and raritiesOn and not rarities[rarity] then
allowed = false
end
if allowed and Settings.sellUnder > 0 and weight >= Settings.sellUnder then
allowed = false
end
-- Keep one copy of the heaviest inventory key, even with no equipped pets.
if allowed and Settings.keepBest and weight >= best and count <= 1 then
allowed = false
end
if allowed then
return key, pet, weight, attr, count
end
end
end
end
return nil
end
local function confirmSale()
if not sellPending then
return
end
local inventory = LocalPlayer:FindFirstChild("Inventory")
local count = inventory and inventory:GetAttribute(sellPending.attr) or 0
if type(count) == "number" and count < sellPending.count then
stats.sold += 1
log(string.format(T.logSold, sellPending.pet, sellPending.weight))
sellPending = nil
elseif os.clock() - sellPending.at > 2 then
sellPending = nil
end
end
local function sellStep()
local now = os.clock()
if now < sellCooldown then
return false
end
local key, pet, weight, attr, count = sellKey()
if not key then
state.sell = T.sellNone
return false
end
local position = shopPosition("Sell")
if not position or not teleport(position + Vector3.new(0, 2, 5)) then
return false
end
task.wait(0.12)
local ok = pcall(function()
Remotes.SellEvent:FireServer(key)
end)
if not ok then
return false
end
sellCooldown = os.clock() + math.max(0.5, Settings.sellEvery or 2)
sellPending = { attr = attr, count = count, pet = pet, weight = weight, at = os.clock() }
state.sell = pet
return true
end
----------------------------------------------------------------------
-- 4. AUTO
----------------------------------------------------------------------
local rebirthCooldown, upgradeCooldown, disguiseCooldown, equipCooldown = 0, 0, 0, 0
local function autoStep()
local now = os.clock()
if isOn("rebirth") and now > rebirthCooldown then
local ok, can = pcall(Rebirth.CanRebirth, LocalPlayer)
if ok and can then
rebirthCooldown = now + 3
Remotes.RebirthEvent:FireServer()
log(string.format(T.logRebirth, rebirths()))
end
end
if isOn("upgrade") and now > upgradeCooldown then
upgradeCooldown = now + 5
local base = myBase()
local sign = base and base:FindFirstChild("UpgradeSign")
if sign then
teleport(sign:GetPivot().Position)
task.wait(0.15)
end
Remotes.BaseUpgradeEvent:FireServer()
end
if isOn("equipBest") and now > equipCooldown then
equipCooldown = now + math.max(1, Settings.equipInterval or 5)
Remotes.EquipBestEvent:FireServer()
end
if isOn("disguise") and now > disguiseCooldown and not LocalPlayer:GetAttribute("Disguised") then
local base = myBase()
local pipe = base and base:FindFirstChild("Pipe")
if pipe then
local prompt
for _, child in ipairs(pipe:GetDescendants()) do
if child:IsA("ProximityPrompt") and child.ActionText == "Disguise" then
prompt = child
break
end
end
if prompt then
disguiseCooldown = now + 8
local position = promptPosition(prompt)
if position and teleport(position) then
task.wait(0.2)
firePrompt(prompt)
log(T.logPipe)
end
end
end
end
end
----------------------------------------------------------------------
-- 4. ESP
----------------------------------------------------------------------
local espModels = {}
local function clearEsp()
for model, box in pairs(espModels) do
if box then
box:Destroy()
end
end
espModels = {}
end
local function drawEsp()
if not Settings.esp then
if next(espModels) then
clearEsp()
end
return
end
local found = 0
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player:GetAttribute("Disguised") then
found += 1
local char = player.Character
if char and not espModels[char] then
local box = Instance.new("SelectionBox")
box.Adornee = char
box.LineThickness = 0.08
box.Color3 = Color3.fromRGB(255, 59, 127)
box.SurfaceColor3 = Color3.fromRGB(255, 59, 127)
box.SurfaceTransparency = 0.7
box.Parent = workspace.CurrentCamera
espModels[char] = box
end
end
end
stats.fakes = found
end
----------------------------------------------------------------------
-- Loops
----------------------------------------------------------------------
local function tick()
if not scriptAlive() then
return
end
confirmBuy()
confirmShopPurchase("scanner")
confirmShopPurchase("food")
confirmSale()
if not (isOn("farm") or isOn("rebirthFarm")) then
state.pendingPrompt = nil
end
local didHatch = false
if isOn("autoHatch") then
didHatch = hatchReady() == true
end
-- One teleporting action per tick. Shop and sell actions take their turn
-- only when they really have something to do, so idle filters do not block farming.
if didHatch then
drawEsp()
return
end
local didUtilityAction = false
if not isOn("protect") then
if isOn("buyScanners") then
didUtilityAction = shopStep("scanner")
end
if not didUtilityAction and isOn("buyFood") then
didUtilityAction = shopStep("food")
end
if not didUtilityAction and isOn("autoSell") then
didUtilityAction = sellStep()
end
end
if didUtilityAction then
drawEsp()
return
end
if isOn("protect") then
state.text = T.protectState
elseif isOn("rebirthFarm") then
farmStep("rebirth")
elseif isOn("farm") then
farmStep("normal")
elseif isOn("steal") then
stealStep()
else
state.text = T.idle
end
if isOn("rebirth") or isOn("upgrade") or isOn("equipBest") or isOn("disguise") then
autoStep()
end
drawEsp()
end
----------------------------------------------------------------------
-- WINDOW
----------------------------------------------------------------------
local THEME = {
Background = Color3.fromHex("#0A0A0C"),
Surface = Color3.fromHex("#141418"),
Surface2 = Color3.fromHex("#1A1A20"),
Surface3 = Color3.fromHex("#2A2A33"),
Stroke = Color3.fromHex("#26262E"),
StrokeHover = Color3.fromHex("#3C3C49"),
Accent = Color3.fromHex("#FF3B7F"),
AccentDark = Color3.fromHex("#1A0710"),
Text = Color3.fromHex("#F5F5F7"),
Muted = Color3.fromHex("#8D8D99"),
}
Airflow.ThemePresets.Robscript = THEME
Airflow:SetDefaultTheme(THEME)
local function destroyWindow()
local previous = getgenv().__FakeEggWindow
if previous then
pcall(function()
previous:Destroy()
end)
getgenv().__FakeEggWindow = nil
end
end
local function buildUI()
T = TEXT[Settings.lang]
destroyWindow()
Window = Airflow:CreateWindow({
Name = "RobScript.com",
LoadingSubtitle = T.window,
ToggleUIKeybind = "RightControl",
Size = UDim2.fromOffset(780, 540),
Backdrop = { Weather = "Fireflies", Tint = 0.35 },
Theme = THEME,
ConfigurationSaving = { Enabled = true, FolderName = "FakeEggHub" },
Home = {
Name = T.home,
Title = "RobScript.com",
Welcome = T.window,
Tier = "v1.0",
Stats = { "Players", "Session", "FPS", "Ping", "Game", "Executor" },
},
})
getgenv().__FakeEggWindow = Window
if getgenv().__FakeEgg then
getgenv().__FakeEgg.window = Window
end
local LogTab = Window:CreateTab({ Name = T.logs, Icon = "scroll-text" })
local LogBox = LogTab:CreateGroupbox({ Name = T.logBox, Side = "Left" })
Log = LogBox:CreateLog({
Name = T.logName,
MaxEntries = 200,
MaxRows = 14,
Timestamps = true,
EmptyText = T.logEmpty,
})
------------------------------------------------------------------
local FarmTab = Window:CreateTab({ Name = T.tabFarm, Icon = "egg" })
local FarmMain = FarmTab:CreateGroupbox({ Name = T.tabFarm, Side = "Left" })
local FarmInfo = FarmTab:CreateGroupbox({ Name = T.state, Side = "Right" })
UiRefs.farm = FarmMain:CreateToggle({
Name = T.farm,
Desc = T.farmDesc,
Flag = "Farm",
CurrentValue = Settings.farm,
Callback = function(on)
Settings.farm = on
log(on and T.farmOn or T.farmOff)
end,
})
UiRefs.skipFake = FarmMain:CreateToggle({
Name = T.skipFake,
Desc = T.skipFakeDesc,
Flag = "SkipFake",
CurrentValue = Settings.skipFake,
Callback = function(on)
Settings.skipFake = on
end,
})
FarmMain:CreateParagraph({
Title = T.skipFake,
Content = T.skipFakeWarn,
})
UiRefs.autoHatch = FarmMain:CreateToggle({
Name = T.autoHatch,
Desc = T.autoHatchDesc,
Flag = "AutoHatch",
CurrentValue = Settings.autoHatch,
Callback = function(on)
Settings.autoHatch = on
end,
})
FarmMain:CreateToggle({
Name = T.onlyBetter,
Desc = T.onlyBetterDesc,
Flag = "OnlyBetter",
CurrentValue = Settings.onlyBetter,
Callback = function(on)
Settings.onlyBetter = on
end,
})
FarmMain:CreateToggle({
Name = T.maxPriceEnabled,
Desc = T.maxPriceEnabledDesc,
Flag = "MaxPriceEnabled",
CurrentValue = Settings.maxPriceEnabled,
Callback = function(on)
Settings.maxPriceEnabled = on
end,
})
FarmMain:CreateSlider({
Name = T.maxPrice,
Desc = T.maxPriceDesc,
Range = { 0, 1000000000000 },
Increment = 1000,
Suffix = " $",
CurrentValue = Settings.maxPrice,
Flag = "MaxPrice",
Callback = function(value)
Settings.maxPrice = value
end,
})
UiRefs.eggNames = FarmMain:CreateDropdown({
Name = T.eggNames,
Desc = T.eggNamesDesc,
Options = eggNameList(),
MultipleOptions = true,
Searchable = true,
Flag = "EggNames",
Callback = function(picked)
local map = {}
for _, name in ipairs(picked or {}) do
map[tostring(name)] = true
end
Settings.eggNames = map
end,
})
UiRefs.eggRarities = FarmMain:CreateDropdown({
Name = T.eggRarities,
Desc = T.eggRaritiesDesc,
Options = eggRarityList(),
MultipleOptions = true,
Searchable = true,
Flag = "EggRarities",
Callback = function(picked)
local map = {}
for _, name in ipairs(picked or {}) do
map[tostring(name)] = true
end
Settings.eggRarities = map
end,
})
FarmInfo:CreateStatus({
Name = T.state,
Style = "Row",
Pin = true,
Update = function()
return "" .. tostring(state.text) .. ""
end,
})
FarmInfo:CreateStatus({
Name = T.cash,
Style = "Row",
Update = function()
return "$" .. tostring(math.floor(cash())) .. ""
end,
})
FarmInfo:CreateStatus({
Name = T.best,
Style = "Row",
Update = function()
return tostring(bestOwnWeight())
end,
})
FarmInfo:CreateStatus({
Name = T.eggsBought,
Style = "Row",
Update = function()
return tostring(stats.bought)
end,
})
FarmInfo:CreateStatus({
Name = T.hatched,
Style = "Row",
Update = function()
return tostring(stats.hatched)
end,
})
------------------------------------------------------------------
local RebirthTab = Window:CreateTab({ Name = T.tabRebirth, Icon = "refresh-cw" })
local RebirthMain = RebirthTab:CreateGroupbox({ Name = T.tabRebirth, Side = "Left" })
local RebirthInfo = RebirthTab:CreateGroupbox({ Name = T.state, Side = "Right" })
UiRefs.rebirthFarm = RebirthMain:CreateToggle({
Name = T.rebirthFarm,
Desc = T.rebirthFarmDesc,
Flag = "RebirthFarm",
CurrentValue = Settings.rebirthFarm,
Callback = function(on)
Settings.rebirthFarm = on
if on then
Settings.rebirth = true
if UiRefs.rebirth then
UiRefs.rebirth:Set(true)
end
end
log(on and T.rebirthOn or T.rebirthOff)
end,
})
RebirthMain:CreateParagraph({
Title = T.rebirthReal,
Content = T.rebirthRealDesc,
})
RebirthInfo:CreateStatus({
Name = T.rebirthNeed,
Style = "Row",
Pin = true,
Update = function()
local animal = rebirthAnimal()
return animal and ("" .. animal .. "") or "" .. T.rebirthNone .. ""
end,
})
RebirthInfo:CreateStatus({
Name = T.state,
Style = "Row",
Update = function()
return tostring(state.text)
end,
})
RebirthInfo:CreateStatus({
Name = "Rebirths",
Style = "Row",
Update = function()
return tostring(rebirths())
end,
})
------------------------------------------------------------------
local ShopsTab = Window:CreateTab({ Name = T.tabShops, Icon = "shopping-cart" })
local ShopsMain = ShopsTab:CreateGroupbox({ Name = T.tabShops, Side = "Left" })
local ShopsInfo = ShopsTab:CreateGroupbox({ Name = T.state, Side = "Right" })
UiRefs.buyScanners = ShopsMain:CreateToggle({
Name = T.buyScanners,
Desc = T.buyScannersDesc,
Flag = "BuyScanners",
CurrentValue = Settings.buyScanners,
Callback = function(on)
Settings.buyScanners = on
end,
})
UiRefs.scannerTypes = ShopsMain:CreateDropdown({
Name = T.shopTypes,
Desc = T.shopTypesDesc,
Options = itemNameList(Scanners),
CurrentOption = selectedOptions(Settings.scannerTypes),
MultipleOptions = true,
Searchable = true,
Flag = "ScannerTypes",
Callback = function(picked)
local map = {}
for _, name in ipairs(picked or {}) do
map[tostring(name)] = true
end
Settings.scannerTypes = map
end,
})
UiRefs.buyFood = ShopsMain:CreateToggle({
Name = T.buyFood,
Desc = T.buyFoodDesc,
Flag = "BuyFood",
CurrentValue = Settings.buyFood,
Callback = function(on)
Settings.buyFood = on
end,
})
UiRefs.foodTypes = ShopsMain:CreateDropdown({
Name = T.shopTypes,
Desc = T.shopTypesDesc,
Options = itemNameList(Food),
CurrentOption = selectedOptions(Settings.foodTypes),
MultipleOptions = true,
Searchable = true,
Flag = "FoodTypes",
Callback = function(picked)
local map = {}
for _, name in ipairs(picked or {}) do
map[tostring(name)] = true
end
Settings.foodTypes = map
end,
})
ShopsMain:CreateSlider({
Name = T.shopMax,
Desc = T.shopMaxDesc,
Range = { 0, 2500000000 },
Increment = 1000,
Suffix = " $",
CurrentValue = Settings.shopMax,
Flag = "ShopMax",
Callback = function(value)
Settings.shopMax = value
end,
})
ShopsInfo:CreateStatus({
Name = T.buyScanners,
Style = "Row",
Pin = true,
Update = function()
return tostring(state.shop.scanner) .. " · " .. tostring(stats.scanners)
end,
})
ShopsInfo:CreateStatus({
Name = T.buyFood,
Style = "Row",
Update = function()
return tostring(state.shop.food) .. " · " .. tostring(stats.food)
end,
})
ShopsInfo:CreateStatus({
Name = T.cash,
Style = "Row",
Update = function()
return "$" .. tostring(math.floor(cash())) .. ""
end,
})
------------------------------------------------------------------
local SellTab = Window:CreateTab({ Name = T.tabSell, Icon = "badge-dollar-sign" })
local SellMain = SellTab:CreateGroupbox({ Name = T.tabSell, Side = "Left" })
local SellInfo = SellTab:CreateGroupbox({ Name = T.state, Side = "Right" })
UiRefs.autoSell = SellMain:CreateToggle({
Name = T.autoSell,
Desc = T.autoSellDesc,
Flag = "AutoSell",
CurrentValue = Settings.autoSell,
Callback = function(on)
Settings.autoSell = on
end,
})
UiRefs.sellNames = SellMain:CreateDropdown({
Name = T.sellNames,
Desc = T.sellNamesDesc,
Options = petNameList(),
CurrentOption = selectedOptions(Settings.sellNames),
MultipleOptions = true,
Searchable = true,
Flag = "SellNames",
Callback = function(picked)
local map = {}
for _, name in ipairs(picked or {}) do
map[tostring(name)] = true
end
Settings.sellNames = map
end,
})
UiRefs.sellRarities = SellMain:CreateDropdown({
Name = T.sellRarities,
Desc = T.sellRaritiesDesc,
Options = petRarityList(),
CurrentOption = selectedOptions(Settings.sellRarities),
MultipleOptions = true,
Searchable = true,
Flag = "SellRarities",
Callback = function(picked)
local map = {}
for _, name in ipairs(picked or {}) do
map[tostring(name)] = true
end
Settings.sellRarities = map
end,
})
SellMain:CreateSlider({
Name = T.sellUnder,
Desc = T.sellUnderDesc,
Range = { 0, 100000 },
Increment = 1,
CurrentValue = Settings.sellUnder,
Flag = "SellUnder",
Callback = function(value)
Settings.sellUnder = value
end,
})
SellMain:CreateToggle({
Name = T.keepBest,
Desc = T.keepBestDesc,
Flag = "KeepBest",
CurrentValue = Settings.keepBest,
Callback = function(on)
Settings.keepBest = on
end,
})
SellMain:CreateSlider({
Name = T.sellEvery,
Desc = T.sellEveryDesc,
Range = { 1, 60 },
Increment = 1,
Suffix = " s",
CurrentValue = Settings.sellEvery,
Flag = "SellEvery",
Callback = function(value)
Settings.sellEvery = value
end,
})
SellInfo:CreateStatus({
Name = T.state,
Style = "Row",
Pin = true,
Update = function()
return "" .. tostring(state.sell) .. ""
end,
})
SellInfo:CreateStatus({
Name = T.sold,
Style = "Row",
Update = function()
return tostring(stats.sold)
end,
})
------------------------------------------------------------------
local AutoTab = Window:CreateTab({ Name = T.tabAuto, Icon = "settings-2" })
local AutoMain = AutoTab:CreateGroupbox({ Name = T.tabAuto, Side = "Left" })
local AutoInfo = AutoTab:CreateGroupbox({ Name = T.state, Side = "Right" })
UiRefs.rebirth = AutoMain:CreateToggle({
Name = T.rebirth,
Desc = T.rebirthDesc,
Flag = "AutoRebirth",
CurrentValue = Settings.rebirth,
Callback = function(on)
Settings.rebirth = on
log(on and T.rebirthOn or T.rebirthOff)
end,
})
AutoMain:CreateToggle({
Name = T.upgrade,
Desc = T.upgradeDesc,
Flag = "AutoUpgrade",
CurrentValue = Settings.upgrade,
Callback = function(on)
Settings.upgrade = on
end,
})
AutoMain:CreateToggle({
Name = T.disguise,
Desc = T.disguiseDesc,
Flag = "AutoDisguise",
CurrentValue = Settings.disguise,
Callback = function(on)
Settings.disguise = on
end,
})
AutoMain:CreateToggle({
Name = T.equipBest,
Desc = T.equipBestDesc,
Flag = "EquipBest",
CurrentValue = Settings.equipBest,
Callback = function(on)
Settings.equipBest = on
end,
})
AutoMain:CreateSlider({
Name = T.equipInterval,
Desc = T.equipIntervalDesc,
Range = { 1, 60 },
Increment = 1,
Suffix = " s",
CurrentValue = Settings.equipInterval,
Flag = "EquipInterval",
Callback = function(value)
Settings.equipInterval = value
end,
})
AutoInfo:CreateStatus({
Name = "Rebirths",
Style = "Row",
Pin = true,
Update = function()
return tostring(rebirths())
end,
})
AutoInfo:CreateStatus({
Name = T.pes,
Style = "Row",
Update = function()
local base = myBase()
local count = 0
if base then
for _, child in ipairs(base:GetChildren()) do
if child:GetAttribute("Owner") == LocalPlayer.Name then
count += 1
end
end
end
return tostring(count)
end,
})
------------------------------------------------------------------
local EspTab = Window:CreateTab({ Name = T.tabVisual, Icon = "eye" })
local EspMain = EspTab:CreateGroupbox({ Name = T.esp, Side = "Left" })
local EspInfo = EspTab:CreateGroupbox({ Name = T.state, Side = "Right" })
EspMain:CreateToggle({
Name = T.esp,
Desc = T.espDesc,
Flag = "Esp",
CurrentValue = Settings.esp,
Callback = function(on)
Settings.esp = on
if not on then
clearEsp()
end
log(on and T.espOn or T.espOff)
end,
})
EspMain:CreateToggle({
Name = T.espNames,
Desc = T.espNamesDesc,
Flag = "EspNames",
CurrentValue = Settings.espNames,
Callback = function(on)
Settings.espNames = on
end,
})
EspInfo:CreateStatus({
Name = T.fakes,
Style = "Row",
Pin = true,
Update = function()
return "" .. tostring(stats.fakes) .. ""
end,
})
------------------------------------------------------------------
local SettingsTab = Window:CreateTab({ Name = T.tabSettings, Icon = "settings" })
local SetBox = SettingsTab:CreateGroupbox({ Name = T.tabSettings, Side = "Left" })
local HelpBox = SettingsTab:CreateGroupbox({ Name = T.hotkeys, Side = "Right" })
SetBox:CreateDropdown({
Name = T.lang,
Desc = T.langDesc,
Options = { "Русский", "English" },
CurrentOption = Settings.lang == "ru" and "Русский" or "English",
Flag = "Language",
Callback = function(value)
local pick = type(value) == "table" and value[1] or value
local lang = pick == "English" and "en" or "ru"
if lang ~= Settings.lang then
Settings.lang = lang
task.spawn(buildUI)
end
end,
})
SetBox:CreateConfigManager({ Name = "Configs" })
SettingsTab:CreateThemeManager({ Name = "Theme", Side = "Right" })
HelpBox:CreateParagraph({
Title = "RobScript.com",
Content = T.hotkeysText,
})
end
----------------------------------------------------------------------
-- Start
----------------------------------------------------------------------
buildUI()
task.spawn(function()
while scriptAlive() do
local ok, err = xpcall(tick, debug.traceback)
if not ok then
warn("[RobScript.com] Tick failed: " .. tostring(err))
end
task.wait(0.35)
end
end)
getgenv().__FakeEgg = {
window = Window,
log = Log,
settings = Settings,
stats = stats,
state = state,
teleport = teleport,
farmStep = farmStep,
stealStep = stealStep,
shopStep = shopStep,
sellStep = sellStep,
bestShopItem = bestShopItem,
sellKey = sellKey,
}
print("[RobScript.com] Fake an Egg Hub loaded")