
KEY SYSTEM 6
Blox Fruits
Rzeta-res blox fruits script
auto farm level auto farm chest auto farm stats auto farm boss
Script developerzeta-res
KEY SYSTEMPC
TOTAL VIEWS6Views recorded for this script page
SCRIPT UPDATED10/28/2026Latest recorded update for this script
REVIEW STATUSSource information reviewedReview information is a version-specific snapshot, not a permanent safety guarantee. Lua Obfuscator Loadstring Generator URL Checker
Blox FruitsExplore more Blox FruitsDescription
auto farm level auto farm chest auto farm stats auto farm boss
Features
auto farm level auto farm chest auto farm stats auto farm boss
1
auto farm
Script Preview1946 lines · 72049 B
discord: https://discord.gg/FUC4kbjHG
target: Roblox, Luau (Xeno / Delta / Wave / Solara / Swift / Hydrogen)
v1.4 changelog:
- auto farm saldirisi geri geldi: VIM ile menu DIINDA bir noktaya tik
(toggle ustunde imlec olsa bile cevrilmez), VirtualUser + tool:Activate
ile sigortali; mouse1click artik son care
- chest farm: varista 0.9sn oturma, prompt'lar sadece o sandigin icinden
en fazla 3 deneme, gittiyse ALINDI / hala orada 15sn atlanir —
"hizli gecip alamiyor" duzeltildi; tarama sadece var olan chest'e gider
- ESP: oyuncu ESP'si kendi kendini onaran 1sn dongusu (kacan billboard
geri gelir, hp canli guncellenir); SANDIK ve MEYVE ESP'leri eklendi
v1.3 changelog:
- attack tik'i GUI hattindan gecmiyor (VirtualUser + tool:Activate)
- bounty farm kaldirildi (tumu)
- chest/fruit farm yeniden yazildi
v1.2 changelog:
- TEK PENCERE kurali: her execute onceki pencereleri imha eder, yigilma yok
- paylasilan durum (getgenv REG): bayraklar execute'lar arasi ortak,
gorunmeyen kopya artik kendi kendine farm acamaz
- nesil (generation) korumasi: yeni execute eski loop'lari emekli eder
- toggle'lar state'e bagli: ayni bayragi tasiyan dugmeler senkron,
"tumunu kapat" tum dugmeleri indirir
- ayarlar dosyaya kayitli (zeta_res_cfg.txt): restart/teleport sonra geri gelir
- key oturum boyunca bir kez: tekrar execute'da sormaz
- Insert yerine artik Sag Ctrl de calisir (Xeno Insert'i kendi arayuzu icin kullanir)
- surukleme artik buton uzerinde baslamaz (tiklar kazara suruklemiyordu)
v1.1 changelog:
- UI parent: CoreGui yerine PlayerGui (Xeno'da CoreGui yazimi engellenir)
- boot tamamen pcall altinda, hata olursa kirmizi hata paneli + konsol
- ilk sekme otomatik secimi duzeltildi (MouseButton1Click:Fire calismiyordu)
- getgenv zorunlulugu kaldirildi, LocalPlayer gec geliyorsa bekler
- API probe: konsola executor yetenek listesi yazar
--]]
----------------------------------------------------------------
-- SERVICES
----------------------------------------------------------------
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TeleportService = game:GetService("TeleportService")
local VirtualUser = game:GetService("VirtualUser")
local VirtualInputManager = game:GetService("VirtualInputManager")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")
local Workspace = game:GetService("Workspace")
print("[zeta-res] v1.4 exec basladi")
-- LocalPlayer gec geliyorsa kisa sure bekle (autoexec guvenligi)
local LocalPlayer = Players.LocalPlayer
if not LocalPlayer then
local t0 = os.clock()
while not LocalPlayer and os.clock() - t0 < 5 do
LocalPlayer = Players.LocalPlayer
task.wait(0.2)
end
end
local Camera = Workspace.CurrentCamera
----------------------------------------------------------------
-- REGISTRY — calistirma (execute) arasinda TEK paylasilan durum
-- her execute yeni kopya acmasin, eski kopyalar temizlensin
----------------------------------------------------------------
local REG = nil
pcall(function()
if getgenv then
local g = getgenv()
if g then
g.ZETA_REG = g.ZETA_REG or {gen = 0, state = {}, cleanup = {}}
REG = g.ZETA_REG
end
end
end)
if not REG then
-- getgenv yoksa: calistirma ici tek kopya (eski davranis)
REG = {gen = 0, state = {}, cleanup = {}}
end
REG.cleanup = REG.cleanup or {}
REG.state = REG.state or {}
-- yeni nesil: eski koyun looplari kendini emekliye ayirir
REG.gen = (REG.gen or 0) + 1
local MY_GEN = REG.gen
-- eski calistirmanin oyun seviyesi baglantilarini kes
for _, fn in ipairs(REG.cleanup) do pcall(fn) end
REG.cleanup = {}
local function retire(fn)
table.insert(REG.cleanup, fn)
end
----------------------------------------------------------------
-- CONSTANTS
----------------------------------------------------------------
local KEY = "zeta-res-44"
local KEY_FILE = "zeta_res_key.txt"
local CFG_FILE = "zeta_res_cfg.txt"
local DISCORD_INV = "https://discord.gg/FUC4kbjHG"
----------------------------------------------------------------
-- SAFE EXECUTOR API WRAPPERS
----------------------------------------------------------------
local function safeWrite(name, data)
pcall(function()
if writefile then writefile(name, data) end
end)
end
local function safeRead(name)
local ok, res = pcall(function()
if readfile then return readfile(name) end
end)
return ok and res or nil
end
local function safeClipboard(text)
pcall(function()
if setclipboard then setclipboard(text)
elseif toclipboard then toclipboard(text)
end
end)
end
local function safeHttpGet(url)
local ok, res = pcall(function()
if http_request then
return http_request({Url = url, Method = "GET"}).Body
elseif request then
return request({Url = url, Method = "GET"}).Body
elseif game.HttpGet then
return game:HttpGet(url)
end
end)
return ok and res or nil
end
-- menu dikdortgenini bul (PlayerGui'deki zeta_res ScreenGui'den —
-- bu fonksiyon ZetaUI_Main tanimlanmadan once oldugu icin isimle tarar)
local function menuRect()
local rect = nil
pcall(function()
local containers = {}
local plr = LocalPlayer
if plr and plr:FindFirstChild("PlayerGui") then
containers[#containers + 1] = plr.PlayerGui
end
pcall(function()
if gethui then
local h = gethui()
if h then containers[#containers + 1] = h end
end
end)
for _, parent in ipairs(containers) do
local sg = parent:FindFirstChild("zeta_res")
if sg then
for _, d in ipairs(sg:GetDescendants()) do
if d:IsA("GuiObject") and d.Visible
and d.AbsoluteSize.X > 200 and d.AbsoluteSize.Y > 200 then
local p = d.AbsolutePosition
local s = d.AbsoluteSize
rect = {x1 = p.X, y1 = p.Y, x2 = p.X + s.X, y2 = p.Y + s.Y}
return
end
end
end
end
end)
return rect
end
-- menu disinda bir tik noktasi sec (20px guvenlik payi)
local function pickPoint()
local vs = (Camera and Camera.ViewportSize) or Vector2.new(960, 540)
local cands = {
Vector2.new(vs.X * 0.5, vs.Y * 0.5),
Vector2.new(vs.X * 0.5, vs.Y * 0.84),
Vector2.new(vs.X * 0.5, vs.Y * 0.16),
Vector2.new(20, vs.Y - 20),
Vector2.new(vs.X - 20, vs.Y - 20),
Vector2.new(vs.X - 20, 20),
}
local r = menuRect()
local m = 20
for _, c in ipairs(cands) do
local inside = r
and c.X > r.x1 - m and c.X < r.x2 + m
and c.Y > r.y1 - m and c.Y < r.y2 + m
if not inside then
return math.floor(c.X), math.floor(c.Y)
end
end
return math.floor(vs.X - 20), math.floor(vs.Y - 20)
end
local function safeMouseClick()
-- yol 1) VIM: menu DISINDA bir noktaya gercek tik atar (toggle'lar guvende)
local x, y = pickPoint()
local ok = pcall(function()
VirtualInputManager:SendMouseButtonEvent(x, y, 0, true, game, 0)
task.wait(0.04)
VirtualInputManager:SendMouseButtonEvent(x, y, 0, false, game, 0)
end)
-- yol 2) sigorta: VirtualUser Mouse olayi (GUI islem hatti disi)
pcall(function()
VirtualUser:CaptureController()
local cf = (Camera and Camera.CFrame) or CFrame.new()
VirtualUser:Button1Down(Vector2.new(0, 0), cf)
task.wait(0.04)
VirtualUser:Button1Up(Vector2.new(0, 0), cf)
end)
-- yol 3) sigorta: esitli tool'u direkt aktive et
pcall(function()
local ch = LocalPlayer and LocalPlayer.Character
local tool = ch and ch:FindFirstChildOfClass("Tool")
if tool then tool:Activate() end
end)
-- yol 4) son care: mouse1click (nokta secimi yok, sadece VIM tamamen yoksa)
if not ok then
pcall(function()
if mouse1click then mouse1click() end
end)
end
end
local function safeKeyPress(keycode)
pcall(function()
if keypress then
keypress(keycode)
task.wait(0.05)
keyrelease(keycode)
end
end)
end
----------------------------------------------------------------
-- PAYLASILAN DURUM (state) — tum calistirmalar ayni bayraklari okur
----------------------------------------------------------------
local S = REG.state
local STATE_DEFAULTS = {
autoLevel = false, autoFarm = false, autoBoss = false,
autoLeviathan = false, autoSecret = false, autoChest = false, autoFruit = false,
autoStat = false, autoSea = false, autoHaki = false, espEnabled = false,
espChest = false, espFruit = false,
statMode = "Melee",
}
for k, v in pairs(STATE_DEFAULTS) do
if S[k] == nil then S[k] = v end
end
local function saveState()
pcall(function()
local lines = {}
for k, v in pairs(S) do
lines[#lines + 1] = k .. "=" .. tostring(v)
end
safeWrite(CFG_FILE, table.concat(lines, "\n"))
end)
end
local function loadState()
pcall(function()
local raw = safeRead(CFG_FILE)
if not raw then return end
for line in raw:gmatch("[^\r\n]+") do
local k, v = line:match("^([%w_]+)=(.+)$")
if k and S[k] ~= nil then
if v == "true" then S[k] = true
elseif v == "false" then S[k] = false
else S[k] = v
end
end
end
end)
end
loadState()
-- her calistirmada taze hook tablosu (eski pencere kalmaz)
REG.hooks = {}
local function onState(key, fn)
REG.hooks[key] = REG.hooks[key] or {}
table.insert(REG.hooks[key], fn)
end
local function setState(key, value)
S[key] = value
for _, fn in ipairs(REG.hooks[key] or {}) do pcall(fn, value) end
saveState()
end
----------------------------------------------------------------
-- UI PARENT — PlayerGui once, hicbir executor'da engellenmez
----------------------------------------------------------------
local function uiParent()
local ok1, pg = pcall(function()
if not LocalPlayer then return nil end
return LocalPlayer:FindFirstChild("PlayerGui")
or LocalPlayer:WaitForChild("PlayerGui", 3)
end)
if ok1 and pg then return pg end
local ok2, hg = pcall(function()
if gethui then return gethui() end
return nil
end)
if ok2 and hg then return hg end
local ok3, cg = pcall(function() return game:GetService("CoreGui") end)
if ok3 and cg then return cg end
error("[zeta-res] UI parent bulunamadi (PlayerGui / gethui / CoreGui hepsi yok)")
end
----------------------------------------------------------------
-- UTILITY
----------------------------------------------------------------
local function notify(title, text, duration)
pcall(function()
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = title or "zeta-res",
Text = text or "",
Duration = duration or 4
})
end)
end
local function getChar()
return LocalPlayer and LocalPlayer.Character
end
local function getHRP()
local c = getChar()
return c and c:FindFirstChild("HumanoidRootPart")
end
local function getHum()
local c = getChar()
return c and c:FindFirstChildOfClass("Humanoid")
end
local SEA_BY_PLACE = {
[2753915549] = 1,
[4442272183] = 2,
[7449423635] = 3,
}
local function currentSea()
return SEA_BY_PLACE[game.PlaceId] or 1
end
local function teleportTo(pos, jitter)
local hrp = getHRP()
if not hrp then return end
if jitter then
hrp.CFrame = CFrame.new(pos + Vector3.new(math.random(-5, 5), 3, math.random(-5, 5)))
else
hrp.CFrame = CFrame.new(pos + Vector3.new(0, 3, 0))
end
end
local function dist(a, b)
if not a or not b then return math.huge end
return (a - b).Magnitude
end
----------------------------------------------------------------
-- ANTI-AFK
----------------------------------------------------------------
pcall(function()
if not LocalPlayer then return end
local idled = LocalPlayer.Idled:Connect(function()
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
task.wait(1)
VirtualUser:ClickButton2(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
end)
retire(function() idled:Disconnect() end)
end)
----------------------------------------------------------------
-- HUMANIZED DELAY
----------------------------------------------------------------
local function hdelay(base)
task.wait(base + math.random() * 0.15)
end
----------------------------------------------------------------
-- KEY SYSTEM
----------------------------------------------------------------
local function validateKey(input)
if not input then return false end
input = input:gsub("^%s+", ""):gsub("%s+$", ""):lower()
return input == KEY:lower()
end
local function keyUi(onSuccess, onError)
local sg = Instance.new("ScreenGui")
sg.Name = "zeta_key"
sg.ResetOnSpawn = false
sg.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
sg.Parent = uiParent()
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 380, 0, 260)
frame.Position = UDim2.new(0.5, -190, 0.5, -130)
frame.BackgroundColor3 = Color3.fromRGB(14, 14, 24)
frame.BorderSizePixel = 0
frame.Parent = sg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
local accent = Instance.new("Frame")
accent.Size = UDim2.new(1, 0, 0, 3)
accent.BackgroundColor3 = Color3.fromRGB(124, 77, 255)
accent.BorderSizePixel = 0
accent.Parent = frame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 42)
title.Position = UDim2.new(0, 0, 0, 8)
title.BackgroundTransparency = 1
title.Text = "◆ zeta-res"
title.TextColor3 = Color3.fromRGB(235, 235, 245)
title.Font = Enum.Font.GothamBold
title.TextSize = 20
title.Parent = frame
local sub = Instance.new("TextLabel")
sub.Size = UDim2.new(1, -30, 0, 18)
sub.Position = UDim2.new(0, 15, 0, 48)
sub.BackgroundTransparency = 1
sub.Text = "discord'dan key al -> gir -> baslat"
sub.TextColor3 = Color3.fromRGB(120, 120, 145)
sub.Font = Enum.Font.Gotham
sub.TextSize = 12
sub.TextXAlignment = Enum.TextXAlignment.Left
sub.Parent = frame
local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -30, 0, 36)
box.Position = UDim2.new(0, 15, 0, 78)
box.BackgroundColor3 = Color3.fromRGB(24, 24, 38)
box.TextColor3 = Color3.fromRGB(220, 220, 235)
box.PlaceholderText = "key gir..."
box.Text = ""
box.Font = Enum.Font.Gotham
box.TextSize = 14
box.ClearTextOnFocus = false
box.BorderSizePixel = 0
box.Parent = frame
Instance.new("UICorner", box).CornerRadius = UDim.new(0, 6)
local discBtn = Instance.new("TextButton")
discBtn.Size = UDim2.new(1, -30, 0, 32)
discBtn.Position = UDim2.new(0, 15, 0, 124)
discBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 58)
discBtn.TextColor3 = Color3.fromRGB(160, 130, 255)
discBtn.Text = "discord — key al (link kopyala)"
discBtn.Font = Enum.Font.GothamMedium
discBtn.TextSize = 13
discBtn.BorderSizePixel = 0
discBtn.Parent = frame
Instance.new("UICorner", discBtn).CornerRadius = UDim.new(0, 6)
discBtn.MouseButton1Click:Connect(function()
safeClipboard(DISCORD_INV)
discBtn.Text = "kopyalandi — discord'a yapistir: " .. DISCORD_INV
task.delay(3, function() discBtn.Text = "discord — key al (link kopyala)" end)
end)
local submit = Instance.new("TextButton")
submit.Size = UDim2.new(1, -30, 0, 36)
submit.Position = UDim2.new(0, 15, 0, 170)
submit.BackgroundColor3 = Color3.fromRGB(124, 77, 255)
submit.TextColor3 = Color3.fromRGB(255, 255, 255)
submit.Text = "dogrula & baslat"
submit.Font = Enum.Font.GothamBold
submit.TextSize = 14
submit.BorderSizePixel = 0
submit.Parent = frame
Instance.new("UICorner", submit).CornerRadius = UDim.new(0, 6)
local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -30, 0, 18)
status.Position = UDim2.new(0, 15, 0, 216)
status.BackgroundTransparency = 1
status.Text = ""
status.TextColor3 = Color3.fromRGB(255, 100, 100)
status.Font = Enum.Font.Gotham
status.TextSize = 12
status.Parent = frame
submit.MouseButton1Click:Connect(function()
if validateKey(box.Text) then
safeWrite(KEY_FILE, KEY)
REG.keyValidated = true
status.TextColor3 = Color3.fromRGB(100, 255, 140)
status.Text = "key gecerli — yukleniyor..."
print("[zeta-res] key dogrulandi")
task.wait(0.4)
sg:Destroy()
local ok, err = pcall(onSuccess)
if not ok and onError then onError(err) end
else
status.Text = "gecersiz key — discord'dan al"
box.BackgroundColor3 = Color3.fromRGB(60, 20, 20)
task.delay(0.6, function()
box.BackgroundColor3 = Color3.fromRGB(24, 24, 38)
end)
end
end)
print("[zeta-res] key UI hazir")
return sg
end
----------------------------------------------------------------
-- UI LIBRARY
----------------------------------------------------------------
local ZetaUI = {}
ZetaUI.__index = ZetaUI
function ZetaUI:New(class, props)
local inst = Instance.new(class)
for k, v in pairs(props or {}) do
if k ~= "Parent" then inst[k] = v end
end
if props and props.Parent then inst.Parent = props.Parent end
return inst
end
function ZetaUI:Window(title)
local self = setmetatable({}, ZetaUI)
self.sg = self:New("ScreenGui", {
Name = "zeta_res",
ResetOnSpawn = false,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
Parent = uiParent()
})
self.main = self:New("Frame", {
Size = UDim2.new(0, 620, 0, 420),
Position = UDim2.new(0.5, -310, 0.5, -210),
BackgroundColor3 = Color3.fromRGB(14, 14, 24),
BorderSizePixel = 0,
Active = true,
Parent = self.sg
})
Instance.new("UICorner", self.main).CornerRadius = UDim.new(0, 10)
self:New("Frame", {
Size = UDim2.new(1, 0, 0, 3),
BackgroundColor3 = Color3.fromRGB(124, 77, 255),
BorderSizePixel = 0,
Parent = self.main
})
self:New("TextLabel", {
Size = UDim2.new(0, 220, 0, 36),
Position = UDim2.new(0, 15, 0, 8),
BackgroundTransparency = 1,
Text = "◆ " .. title,
TextColor3 = Color3.fromRGB(235, 235, 245),
Font = Enum.Font.GothamBold,
TextSize = 18,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = self.main
})
local closeBtn = self:New("TextButton", {
Size = UDim2.new(0, 28, 0, 28),
Position = UDim2.new(1, -36, 0, 10),
BackgroundColor3 = Color3.fromRGB(30, 30, 48),
Text = "x",
TextColor3 = Color3.fromRGB(200, 200, 220),
Font = Enum.Font.GothamBold,
TextSize = 16,
BorderSizePixel = 0,
AutoButtonColor = false,
Parent = self.main
})
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6)
local minBtn = self:New("TextButton", {
Size = UDim2.new(0, 28, 0, 28),
Position = UDim2.new(1, -70, 0, 10),
BackgroundColor3 = Color3.fromRGB(30, 30, 48),
Text = "-",
TextColor3 = Color3.fromRGB(200, 200, 220),
Font = Enum.Font.GothamBold,
TextSize = 16,
BorderSizePixel = 0,
AutoButtonColor = false,
Parent = self.main
})
Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 6)
-- sol sekme kutusu
self.tabHolder = self:New("Frame", {
Size = UDim2.new(0, 130, 1, -50),
Position = UDim2.new(0, 0, 0, 46),
BackgroundColor3 = Color3.fromRGB(18, 18, 30),
BorderSizePixel = 0,
Parent = self.main
})
Instance.new("UICorner", self.tabHolder).CornerRadius = UDim.new(0, 10)
self:New("UIListLayout", {
Parent = self.tabHolder,
Padding = UDim.new(0, 4),
SortOrder = Enum.SortOrder.LayoutOrder
})
self:New("UIPadding", {
PaddingTop = UDim.new(0, 8),
PaddingLeft = UDim.new(0, 6),
PaddingRight = UDim.new(0, 6),
Parent = self.tabHolder
})
-- icerik alani
self.content = self:New("ScrollingFrame", {
Size = UDim2.new(1, -145, 1, -50),
Position = UDim2.new(0, 140, 0, 46),
BackgroundTransparency = 1,
BorderSizePixel = 0,
ScrollBarThickness = 4,
ScrollBarImageColor3 = Color3.fromRGB(124, 77, 255),
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
Parent = self.main
})
self:New("UIListLayout", {
Parent = self.content,
Padding = UDim.new(0, 6),
SortOrder = Enum.SortOrder.LayoutOrder
})
self:New("UIPadding", {
PaddingTop = UDim.new(0, 4),
PaddingLeft = UDim.new(0, 4),
PaddingRight = UDim.new(0, 8),
Parent = self.content
})
-- durum cubugu
self.statusLabel = self:New("TextLabel", {
Size = UDim2.new(1, -20, 0, 22),
Position = UDim2.new(0, 10, 1, -24),
BackgroundTransparency = 1,
Text = "● idle",
TextColor3 = Color3.fromRGB(110, 110, 140),
Font = Enum.Font.Gotham,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = self.main
})
-- surukleme — sadece buton disindan baslayinca (tiklar suruklemesin)
local dragging, dragStart, startPos
local c1 = self.main.InputBegan:Connect(function(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
local t = input.Target
if t and t:IsA("GuiButton") then return end
dragging = true
dragStart = input.Position
startPos = self.main.Position
end)
local c2 = UserInputService.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
if not self.main or not self.main.Parent then dragging = false return end
local delta = input.Position - dragStart
self.main.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
local c3 = UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
-- Insert veya Sag Ctrl ile goster/gizle (Xeno kendi arayuzu icin Insert kullaniyor olabilir)
local c4 = UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode.Insert
or input.KeyCode == Enum.KeyCode.RightControl then
if self.main and self.main.Parent then
self.main.Visible = not self.main.Visible
end
end
end)
-- bu calistirma sonrasi yenisi gelince baglantilari kes
retire(function()
pcall(function() c1:Disconnect() end)
pcall(function() c2:Disconnect() end)
pcall(function() c3:Disconnect() end)
pcall(function() c4:Disconnect() end)
end)
-- kucult / kapat
local minimized = false
local origSize = self.main.Size
minBtn.MouseButton1Click:Connect(function()
minimized = not minimized
local target = minimized
and UDim2.new(origSize.X.Scale, origSize.X.Offset, 0, 50)
or origSize
TweenService:Create(self.main, TweenInfo.new(0.25), {Size = target}):Play()
end)
closeBtn.MouseButton1Click:Connect(function()
self.sg:Destroy()
print("[zeta-res] menu kapandi — yeniden acmak icin scripti tekrar execute et")
end)
return self
end
function ZetaUI:Tab(name, order)
local window = self
local btn = self:New("TextButton", {
Size = UDim2.new(1, 0, 0, 34),
BackgroundColor3 = Color3.fromRGB(24, 24, 40),
Text = name,
TextColor3 = Color3.fromRGB(160, 160, 185),
Font = Enum.Font.GothamMedium,
TextSize = 13,
BorderSizePixel = 0,
AutoButtonColor = false,
LayoutOrder = order or 0,
Parent = self.tabHolder
})
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6)
local content = self:New("Frame", {
Size = UDim2.new(1, 0, 0, 0),
BackgroundTransparency = 1,
Visible = false,
Parent = self.content
})
self:New("UIListLayout", {
Parent = content,
Padding = UDim.new(0, 6),
SortOrder = Enum.SortOrder.LayoutOrder
})
content.AutomaticSize = Enum.AutomaticSize.Y
local function selectTab()
for _, c in pairs(window.content:GetChildren()) do
if c:IsA("Frame") then c.Visible = false end
end
content.Visible = true
for _, b in pairs(window.tabHolder:GetChildren()) do
if b:IsA("TextButton") then
TweenService:Create(b, TweenInfo.new(0.15), {
BackgroundColor3 = Color3.fromRGB(24, 24, 40),
TextColor3 = Color3.fromRGB(160, 160, 185)
}):Play()
end
end
TweenService:Create(btn, TweenInfo.new(0.15), {
BackgroundColor3 = Color3.fromRGB(40, 32, 70),
TextColor3 = Color3.fromRGB(210, 190, 255)
}):Play()
end
btn.MouseButton1Click:Connect(selectTab)
-- ilk olusturulan sekmeyi dogrudan sec (Fire() yok)
if not window._firstTab then
window._firstTab = true
selectTab()
end
local tabObj = {content = content, parent = window, select = selectTab}
function tabObj:Toggle(text, key, cb)
local t = (S[key] == true)
local row = self.parent:New("Frame", {
Size = UDim2.new(1, 0, 0, 34),
BackgroundColor3 = Color3.fromRGB(22, 22, 36),
BorderSizePixel = 0,
Parent = content
})
Instance.new("UICorner", row).CornerRadius = UDim.new(0, 6)
self.parent:New("TextLabel", {
Size = UDim2.new(1, -60, 1, 0),
Position = UDim2.new(0, 12, 0, 0),
BackgroundTransparency = 1,
Text = text,
TextColor3 = Color3.fromRGB(200, 200, 220),
Font = Enum.Font.Gotham,
TextSize = 13,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = row
})
local pill = self.parent:New("Frame", {
Size = UDim2.new(0, 36, 0, 20),
Position = UDim2.new(1, -46, 0.5, -10),
BackgroundColor3 = t and Color3.fromRGB(124, 77, 255) or Color3.fromRGB(45, 45, 65),
BorderSizePixel = 0,
Parent = row
})
Instance.new("UICorner", pill).CornerRadius = UDim.new(1, 0)
local knob = self.parent:New("Frame", {
Size = UDim2.new(0, 16, 0, 16),
Position = t and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8),
BackgroundColor3 = Color3.fromRGB(240, 240, 250),
BorderSizePixel = 0,
Parent = pill
})
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)
local hit = self.parent:New("TextButton", {
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
Text = "",
Parent = row
})
local function render(v)
t = v
TweenService:Create(pill, TweenInfo.new(0.2), {
BackgroundColor3 = v and Color3.fromRGB(124, 77, 255) or Color3.fromRGB(45, 45, 65)
}):Play()
TweenService:Create(knob, TweenInfo.new(0.2), {
Position = v and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8)
}):Play()
end
-- durum degisince BU dugme (ve ayni key'i tasiyan digerleri) senkron calisir
onState(key, function(v)
render(v)
if cb then pcall(cb, v) end
end)
hit.MouseButton1Click:Connect(function()
setState(key, not t)
end)
if cb then pcall(cb, t) end
return {Set = function(_, v) setState(key, v) end}
end
function tabObj:Button(text, cb)
local b = self.parent:New("TextButton", {
Size = UDim2.new(1, 0, 0, 32),
BackgroundColor3 = Color3.fromRGB(35, 28, 60),
Text = text,
TextColor3 = Color3.fromRGB(210, 190, 255),
Font = Enum.Font.GothamMedium,
TextSize = 13,
BorderSizePixel = 0,
Parent = content
})
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)
b.MouseEnter:Connect(function()
TweenService:Create(b, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(50, 40, 85)}):Play()
end)
b.MouseLeave:Connect(function()
TweenService:Create(b, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(35, 28, 60)}):Play()
end)
b.MouseButton1Click:Connect(cb)
return b
end
function tabObj:Dropdown(text, options, initial, cb)
local selected = initial or options[1] or ""
local row = self.parent:New("Frame", {
Size = UDim2.new(1, 0, 0, 34),
BackgroundColor3 = Color3.fromRGB(22, 22, 36),
BorderSizePixel = 0,
Parent = content
})
Instance.new("UICorner", row).CornerRadius = UDim.new(0, 6)
self.parent:New("TextLabel", {
Size = UDim2.new(0.5, 0, 1, 0),
Position = UDim2.new(0, 12, 0, 0),
BackgroundTransparency = 1,
Text = text,
TextColor3 = Color3.fromRGB(200, 200, 220),
Font = Enum.Font.Gotham,
TextSize = 13,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = row
})
local valLbl = self.parent:New("TextLabel", {
Size = UDim2.new(0.4, -12, 1, 0),
Position = UDim2.new(0.6, 0, 0, 0),
BackgroundTransparency = 1,
Text = selected,
TextColor3 = Color3.fromRGB(160, 130, 255),
Font = Enum.Font.GothamMedium,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Right,
Parent = row
})
local list = self.parent:New("Frame", {
Size = UDim2.new(1, 0, 0, 0),
BackgroundColor3 = Color3.fromRGB(18, 18, 30),
BorderSizePixel = 0,
Visible = false,
Parent = content
})
Instance.new("UICorner", list).CornerRadius = UDim.new(0, 6)
self.parent:New("UIListLayout", {Parent = list, Padding = UDim.new(0, 2)})
list.AutomaticSize = Enum.AutomaticSize.Y
local hit = self.parent:New("TextButton", {
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
Text = "",
Parent = row
})
hit.MouseButton1Click:Connect(function()
list.Visible = not list.Visible
end)
for _, opt in ipairs(options) do
local ob = self.parent:New("TextButton", {
Size = UDim2.new(1, -8, 0, 26),
BackgroundColor3 = Color3.fromRGB(28, 28, 46),
Text = opt,
TextColor3 = Color3.fromRGB(200, 200, 220),
Font = Enum.Font.Gotham,
TextSize = 12,
BorderSizePixel = 0,
Parent = list
})
Instance.new("UICorner", ob).CornerRadius = UDim.new(0, 4)
ob.MouseButton1Click:Connect(function()
selected = opt
valLbl.Text = opt
list.Visible = false
if cb then cb(opt) end
end)
end
if cb then cb(selected) end
return {Get = function() return selected end}
end
function tabObj:Label(text)
return self.parent:New("TextLabel", {
Size = UDim2.new(1, 0, 0, 22),
BackgroundTransparency = 1,
Text = text,
TextColor3 = Color3.fromRGB(130, 130, 160),
Font = Enum.Font.Gotham,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = content
})
end
function tabObj:Section(text)
return self.parent:New("TextLabel", {
Size = UDim2.new(1, 0, 0, 20),
BackgroundTransparency = 1,
Text = "—— " .. text .. " ——",
TextColor3 = Color3.fromRGB(90, 90, 120),
Font = Enum.Font.GothamBold,
TextSize = 11,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = content
})
end
return tabObj
end
function ZetaUI:SetStatus(text, color)
if self.statusLabel then
self.statusLabel.Text = "● " .. text
self.statusLabel.TextColor3 = color or Color3.fromRGB(160, 130, 255)
end
end
----------------------------------------------------------------
-- QUEST DATA (uc deniz)
----------------------------------------------------------------
local Quests = {
-- FIRST SEA
{Lv = 1, Name = "BanditQuest1", Num = 1, Mob = "Bandit", Pos = Vector3.new(1608.6, 16.1, 1533.8)},
{Lv = 10, Name = "JungleQuest", Num = 1, Mob = "Monkey", Pos = Vector3.new(-1602, 36, 152)},
{Lv = 15, Name = "JungleQuest", Num = 2, Mob = "Gorilla", Pos = Vector3.new(-1602, 36, 152)},
{Lv = 30, Name = "PirateTrainee", Num = 1, Mob = "Pirate Raider", Pos = Vector3.new(-1138, 13, 537)},
{Lv = 35, Name = "VolkovQuest", Num = 1, Mob = "Brute", Pos = Vector3.new(398, 13, 412)},
{Lv = 45, Name = "SnowQuest", Num = 1, Mob = "Snow Bandit", Pos = Vector3.new(453, 29, -1941)},
{Lv = 55, Name = "SnowQuest", Num = 2, Mob = "Snowman", Pos = Vector3.new(453, 29, -1941)},
{Lv = 85, Name = "MarineQuest2", Num = 1, Mob = "Marine", Pos = Vector3.new(-2646, 13, 404)},
{Lv = 100, Name = "SoldierQuest", Num = 1, Mob = "Military Soldier", Pos = Vector3.new(-5700, 13, -1220)},
{Lv = 150, Name = "SkyQuest", Num = 1, Mob = "Sky Bandit", Pos = Vector3.new(-4971, 401, -317)},
{Lv = 220, Name = "PrisonerQuest", Num = 1, Mob = "Warden", Pos = Vector3.new(5260, 5, 745)},
{Lv = 300, Name = "MagmaQuest", Num = 1, Mob = "Magma Ninja", Pos = Vector3.new(-5430, 12, -5280)},
{Lv = 400, Name = "IceQuest", Num = 1, Mob = "Yeti", Pos = Vector3.new(1216, 27, -5320)},
{Lv = 500, Name = "ShipQuest1", Num = 1, Mob = "Fishman Raider", Pos = Vector3.new(61120, 18, 5890)},
{Lv = 625, Name = "AmazonQuest", Num = 1, Mob = "Amazon Warrior", Pos = Vector3.new(5580, 1000, -3000)},
{Lv = 675, Name = "SnowQuest", Num = 1, Mob = "Arctic Warrior", Pos = Vector3.new(4000, 100, -5000)},
-- SECOND SEA
{Lv = 700, Name = "Area1Quest", Num = 1, Mob = "Rebel", Pos = Vector3.new(-5420, 11, -5250)},
{Lv = 750, Name = "Area2Quest", Num = 1, Mob = "Swan Pirate", Pos = Vector3.new(635, 18, 843)},
{Lv = 850, Name = "Area2Quest", Num = 3, Mob = "Shanda", Pos = Vector3.new(3730, 13, -6540)},
{Lv = 900, Name = "Area2Quest", Num = 4, Mob = "Royal Squad", Pos = Vector3.new(-5430, 11, -5280)},
{Lv = 1000,Name = "Area2Quest", Num = 5, Mob = "Royal Soldier", Pos = Vector3.new(-5430, 11, -5280)},
{Lv = 1200,Name = "Area2Quest", Num = 2, Mob = "Galley Pirate", Pos = Vector3.new(635, 18, 843)},
{Lv = 1300,Name = "Area2Quest", Num = 3, Mob = "Galley Captain", Pos = Vector3.new(635, 18, 843)},
{Lv = 1400,Name = "TurtleQuest", Num = 1, Mob = "Marine Captain", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 1450,Name = "TurtleQuest", Num = 2, Mob = "Magma Ninja", Pos = Vector3.new(-6800, 15, -6000)},
-- THIRD SEA
{Lv = 1500,Name = "PirateVillageQuest", Num = 1, Mob = "Pirate Millionaire", Pos = Vector3.new(-4000, 50, -2000)},
{Lv = 1550,Name = "PirateVillageQuest", Num = 2, Mob = "Pistol Billionaire", Pos = Vector3.new(-4000, 50, -2000)},
{Lv = 1650,Name = "TurtleQuest", Num = 1, Mob = "Reborn Skeleton", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 1750,Name = "TurtleQuest", Num = 3, Mob = "Demonic Soul", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 1800,Name = "TurtleQuest", Num = 4, Mob = "Posessed Mummy", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 1900,Name = "TurtleQuest", Num = 5, Mob = "Forest Pirate", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 2000,Name = "TurtleQuest", Num = 6, Mob = "Dragon Crew Warrior",Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 2200,Name = "TurtleQuest", Num = 7, Mob = "Dragon Crew Archer", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 2300,Name = "TurtleQuest", Num = 8, Mob = "Water Fighter", Pos = Vector3.new(-6800, 15, -6000)},
{Lv = 2450,Name = "TurtleQuest", Num = 9, Mob = "Venom Captain", Pos = Vector3.new(-6800, 15, -6000)},
}
local function getQuestForLevel(lv)
local best = nil
for _, q in ipairs(Quests) do
if lv >= q.Lv and (not best or q.Lv > best.Lv) then
best = q
end
end
return best
end
----------------------------------------------------------------
-- BOSS DATA
----------------------------------------------------------------
local Bosses = {
"The Gorilla King", "Bobby", "The Saw", "Yeti", "Greybeard",
"Mob Leader", "Vice Admiral", "Warden", "Chief Warden", "Swan",
"Magma Admiral", "Fishman Lord", "Wysper", "Thunder God", "Cyborg",
"Ice Admiral", "Longma", "Saber Expert", "Darkbeard", "rip_indra",
"Cursed Captain", "Order", "Tide Keeper", "Beautiful Pirate",
"Cake Queen", "Cake Prince",
}
local function findBossInWorkspace()
for _, v in ipairs(Workspace.Enemies:GetChildren()) do
for _, bname in ipairs(Bosses) do
if v.Name:find(bname, 1, true)
and v:FindFirstChild("HumanoidRootPart")
and v:FindFirstChildOfClass("Humanoid") then
return v
end
end
end
return nil
end
----------------------------------------------------------------
-- MOB SEARCH
----------------------------------------------------------------
local function findMob(name)
local hrp = getHRP()
if not hrp then return nil end
local best, bestDist = nil, math.huge
for _, v in ipairs(Workspace.Enemies:GetChildren()) do
local hum = v:FindFirstChildOfClass("Humanoid")
local root = v:FindFirstChild("HumanoidRootPart")
if hum and root and hum.Health > 0 and v.Name:lower():find(name:lower(), 1, true) then
local d = dist(root.Position, hrp.Position)
if d < bestDist then
best = v
bestDist = d
end
end
end
return best
end
----------------------------------------------------------------
-- QUEST REMOTE + PROGRESS
----------------------------------------------------------------
local function startQuest(questName, questNum)
pcall(function()
ReplicatedStorage.Remotes.CommF_:InvokeServer("StartQuest", questName, questNum)
end)
end
local function getQuestProgress()
local ok, txt = pcall(function()
local pg = LocalPlayer and LocalPlayer:FindFirstChild("PlayerGui")
local gui = pg and pg:FindFirstChild("Main")
if gui and gui:FindFirstChild("Quest") and gui.Quest.Visible then
local container = gui.Quest:FindFirstChild("Container")
local qt = container and container:FindFirstChild("QuestTitle")
local title = qt and qt:FindFirstChild("Title")
if title then return title.Text end
end
return nil
end)
if ok and txt then
local cur, req = txt:match("%((%d+)/(%d+)%)")
if cur then return tonumber(cur), tonumber(req) end
cur, req = txt:match("(%d+)/(%d+)")
if cur then return tonumber(cur), tonumber(req) end
end
return nil, nil
end
----------------------------------------------------------------
-- ATTACK
----------------------------------------------------------------
local function attackTarget(target)
if not target then return end
local hrp = getHRP()
local root = target:FindFirstChild("HumanoidRootPart")
if not hrp or not root then return end
local offset = root.CFrame.LookVector * -3 + Vector3.new(0, 2, 0)
hrp.CFrame = CFrame.new(root.Position + offset, root.Position)
hdelay(0.05)
safeMouseClick()
end
----------------------------------------------------------------
-- FARM LOOP RUNNER
----------------------------------------------------------------
local running = {}
local function startLoop(name, func)
if running[name] then return end
running[name] = true
task.spawn(function()
while running[name] do
-- yeni calistirma (nesil) basladiysa bu loop kendini durdurur
if MY_GEN ~= REG.gen then
running[name] = nil
return
end
local ok, err = pcall(func)
if not ok then
warn("[zeta-res] " .. name .. " hatasi: " .. tostring(err))
end
task.wait(0.1)
end
end)
end
----------------------------------------------------------------
-- GLOBAL DURUM — hepsi REG.state (S) icinde, execute'lar arasi ortak
----------------------------------------------------------------
local ZetaUI_Main = nil
local STATE_KEYS = {
"autoLevel", "autoFarm", "autoBoss",
"autoLeviathan", "autoSecret", "autoChest", "autoFruit",
"autoStat", "autoSea", "autoHaki", "espEnabled", "espChest", "espFruit",
}
local function stopAll()
for _, k in ipairs(STATE_KEYS) do
S[k] = false
for _, fn in ipairs(REG.hooks[k] or {}) do pcall(fn, false) end
end
saveState()
end
----------------------------------------------------------------
-- AUTO LEVEL FARM
----------------------------------------------------------------
startLoop("AutoLevel", function()
if not S.autoLevel then task.wait(0.3) return end
local lv = LocalPlayer.Data.Level.Value
local quest = getQuestForLevel(lv)
if not quest then task.wait(1) return end
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto level -> " .. quest.Mob .. " (lv " .. lv .. ")")
end
startQuest(quest.Name, quest.Num)
hdelay(0.2)
local cur, req = getQuestProgress()
local attempts = 0
while S.autoLevel and attempts < 40 do
attempts = attempts + 1
cur, req = getQuestProgress()
if cur and req and cur >= req then break end
local mob = findMob(quest.Mob)
if mob then
attackTarget(mob)
else
teleportTo(quest.Pos, true)
hdelay(0.3)
end
hdelay(0.15)
end
hdelay(0.2)
end)
----------------------------------------------------------------
-- AUTO FARM — en yakin mob (questsuz, her haritada)
----------------------------------------------------------------
startLoop("AutoFarm", function()
if not S.autoFarm then task.wait(0.3) return end
local hrp = getHRP()
if not hrp then task.wait(0.5) return end
if ZetaUI_Main then ZetaUI_Main:SetStatus("auto farm -> en yakin mob") end
local best, bestDist = nil, math.huge
for _, v in ipairs(Workspace.Enemies:GetChildren()) do
local hum = v:FindFirstChildOfClass("Humanoid")
local root = v:FindFirstChild("HumanoidRootPart")
if hum and root and hum.Health > 0 then
local d = dist(root.Position, hrp.Position)
if d < bestDist then best = v; bestDist = d end
end
end
if best then attackTarget(best) end
hdelay(0.1)
end)
----------------------------------------------------------------
-- AUTO BOSS
----------------------------------------------------------------
startLoop("AutoBoss", function()
if not S.autoBoss then task.wait(0.3) return end
if ZetaUI_Main then ZetaUI_Main:SetStatus("auto boss -> taraniyor") end
local boss = findBossInWorkspace()
if boss then
attackTarget(boss)
else
task.wait(1)
end
hdelay(0.15)
end)
----------------------------------------------------------------
-- AUTO LEVIATHAN / SEA EVENTS
----------------------------------------------------------------
local seaEventList = {"Leviathan", "Sea Beast", "Terrorshark", "Pirate Ship", "Ghost Ship", "Kitsune"}
local function findSeaEvent()
for _, v in ipairs(Workspace.Enemies:GetChildren()) do
for _, name in ipairs(seaEventList) do
if v.Name:lower():find(name:lower(), 1, true) and v:FindFirstChild("HumanoidRootPart") then
return v
end
end
end
local seaBeasts = Workspace:FindFirstChild("SeaBeasts")
if seaBeasts then
for _, v in ipairs(seaBeasts:GetChildren()) do
if v:FindFirstChild("HumanoidRootPart") then return v end
end
end
return nil
end
startLoop("AutoLeviathan", function()
if not S.autoLeviathan then task.wait(0.3) return end
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto leviathan -> sea event taraniyor", Color3.fromRGB(80, 200, 255))
end
local event = findSeaEvent()
if event then
attackTarget(event)
else
task.wait(2)
if not findSeaEvent() and S.autoLeviathan then
if ZetaUI_Main then
ZetaUI_Main:SetStatus("server hop -> yeni spawn sansi", Color3.fromRGB(80, 200, 255))
end
pcall(function()
local body = safeHttpGet("https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100")
if body then
local data = HttpService:JSONDecode(body)
for _, s in ipairs(data.data or {}) do
if s.id ~= game.JobId and s.playing and s.maxPlayers and s.playing < s.maxPlayers then
TeleportService:TeleportToPlaceInstance(game.PlaceId, s.id, LocalPlayer)
break
end
end
end
end)
task.wait(4)
end
end
hdelay(0.15)
end)
----------------------------------------------------------------
-- AUTO SECRET LEVEL (v4 trial / dungeon / raid)
----------------------------------------------------------------
startLoop("AutoSecret", function()
if not S.autoSecret then task.wait(0.3) return end
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto secret -> trial/dungeon aktif", Color3.fromRGB(255, 200, 80))
end
local raid = Workspace:FindFirstChild("RaidEnemies") or Workspace:FindFirstChild("Enemies")
if raid then
for _, v in ipairs(raid:GetChildren()) do
local hum = v:FindFirstChildOfClass("Humanoid")
local root = v:FindFirstChild("HumanoidRootPart")
if hum and root and hum.Health > 0 then
attackTarget(v)
break
end
end
end
pcall(function()
ReplicatedStorage.Remotes.CommF_:InvokeServer("RaceV4Progress", "Check")
end)
task.wait(1)
end)
----------------------------------------------------------------
-- AUTO CHEST
----------------------------------------------------------------
local chestCd = {} -- sogutme: [inst] = os.clock() + saniye
local chestRun = {} -- aktif deneme: [inst] = {arrived=bool, tries=n}
local function chestCdSet(inst, secs)
if inst then chestCd[inst] = os.clock() + secs end
end
local function chestCooling(inst)
local t = chestCd[inst]
return t ~= nil and os.clock() < t
end
local function isChestName(s)
s = tostring(s):lower()
return s:find("chest", 1, true) or s:find("treasure", 1, true)
end
local function chestPart(v)
if v:IsA("Model") and isChestName(v.Name) then
return v.PrimaryPart or v:FindFirstChildOfClass("BasePart")
elseif v:IsA("BasePart") and isChestName(v.Name) then
return v
end
return nil
end
startLoop("AutoChest", function()
if not S.autoChest then task.wait(0.3) return end
if ZetaUI_Main then ZetaUI_Main:SetStatus("auto chest -> sandik taraniyor") end
local hrp = getHRP()
if not hrp then task.wait(0.5) return end
-- 1) devam eden deneme: AYNI sandikta kal, baska hedefe ziplama
local target, part = nil, nil
for inst, st in pairs(chestRun) do
local alive = false
pcall(function()
alive = inst.Parent ~= nil and inst:IsDescendantOf(Workspace)
end)
if alive then
target = inst
part = chestPart(inst) or (inst:IsA("BasePart") and inst or nil)
else
chestRun[inst] = nil
end
end
-- 2) hedef yoksa en yakin taze adayi sec (soguyan/15sn atlanan hari)
if not target then
local best, bestDist = nil, math.huge
for _, v in ipairs(Workspace:GetDescendants()) do
if not chestCooling(v) then
local cp = chestPart(v)
if cp and not chestCooling(cp) then
local d = dist(cp.Position, hrp.Position)
if d < bestDist then best, bestDist = v, d end
end
end
end
if not best then
task.wait(1.2) -- spawn dongusu
return
end
target = best
part = chestPart(target)
chestRun[target] = {arrived = false, tries = 0}
end
part = part or chestPart(target)
if not part then
chestRun[target] = nil
task.wait(0.3)
return
end
local st = chestRun[target]
if not st then chestRun[target] = {arrived = false, tries = 0} st = chestRun[target] end
-- 3) VARIS: ustune in ve OTUR (dokunma ile toplama + prompt icin zaman)
if not st.arrived then
local d = math.floor(dist(part.Position, hrp.Position))
if ZetaUI_Main then ZetaUI_Main:SetStatus("auto chest -> hedef " .. d .. "m") end
hrp.CFrame = CFrame.new(part.Position + Vector3.new(0, 1.2, 0))
st.arrived = true
task.wait(0.9)
return
end
-- 4) TETIKLE: sadece bu sandigin prompt/clickdetector'i, en fazla 3 deneme
st.tries = st.tries + 1
pcall(function()
local function tryFire(inst)
if inst:IsA("ProximityPrompt") then
fireproximityprompt(inst)
elseif inst:IsA("ClickDetector") then
fireclickdetector(inst)
end
end
if target:IsA("Model") then
for _, c in ipairs(target:GetDescendants()) do tryFire(c) end
end
tryFire(target)
for _, c in ipairs(part:GetChildren()) do tryFire(c) end
end)
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto chest -> aciliyor (" .. st.tries .. "/3)")
end
task.wait(1.0) -- server'a toplama zamani tanimla
-- 5) DOGRULA: gittiyse alindi; hala duruyorsa denemeye devam
local gone = false
pcall(function()
gone = not (part.Parent ~= nil and part:IsDescendantOf(Workspace))
end)
if gone then
chestRun[target] = nil
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto chest -> ALINDI", Color3.fromRGB(100, 255, 140))
end
elseif st.tries >= 3 then
chestCdSet(target, 15)
chestCdSet(part, 15)
chestRun[target] = nil
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto chest -> alinamadi, 15sn atlandi", Color3.fromRGB(255, 180, 80))
end
end
end)
----------------------------------------------------------------
-- AUTO FRUIT (yerdeki fruit)
----------------------------------------------------------------
startLoop("AutoFruit", function()
if not S.autoFruit then task.wait(0.3) return end
if ZetaUI_Main then
ZetaUI_Main:SetStatus("auto fruit -> fruit taraniyor", Color3.fromRGB(180, 100, 255))
end
local hrp = getHRP()
if not hrp then task.wait(0.5) return end
-- tum workspace icinde (klasorler dahil) en yakin fruit tool
local best, bestDist = nil, math.huge
for _, v in ipairs(Workspace:GetDescendants()) do
if v:IsA("Tool") and v.Name:lower():find("fruit", 1, true) then
local h = v:FindFirstChild("Handle") or v:FindFirstChildOfClass("BasePart")
if h then
local d = dist(h.Position, hrp.Position)
if d < bestDist then best = v; bestDist = d end
end
end
end
if best then
local h = best:FindFirstChild("Handle") or best:FindFirstChildOfClass("BasePart")
if h and ZetaUI_Main then
ZetaUI_Main:SetStatus("auto fruit -> " .. best.Name .. " (" .. math.floor(bestDist) .. "m)")
hrp.CFrame = CFrame.new(h.Position + Vector3.new(0, 1.5, 0))
hdelay(0.3)
pcall(function()
local cd = best:FindFirstChildOfClass("ClickDetector") or h:FindFirstChildOfClass("ClickDetector")
if cd then fireclickdetector(cd) end
local pp = best:FindFirstChildOfClass("ProximityPrompt") or h:FindFirstChildOfClass("ProximityPrompt")
if pp then fireproximityprompt(pp) end
end)
end
end
task.wait(1.5)
end)
----------------------------------------------------------------
-- AUTO STAT
----------------------------------------------------------------
startLoop("AutoStat", function()
if not S.autoStat then task.wait(0.3) return end
pcall(function()
ReplicatedStorage.Remotes.CommF_:InvokeServer("AddPoint", S.statMode, 1)
end)
task.wait(0.5)
end)
----------------------------------------------------------------
-- AUTO HAKI
----------------------------------------------------------------
startLoop("AutoHaki", function()
if not S.autoHaki then task.wait(0.3) return end
safeKeyPress(118) -- V
task.wait(3)
end)
----------------------------------------------------------------
-- AUTO SECOND / THIRD SEA
----------------------------------------------------------------
startLoop("AutoSea", function()
if not S.autoSea then task.wait(0.3) return end
if ZetaUI_Main then ZetaUI_Main:SetStatus("auto sea -> gecis bekleniyor") end
pcall(function()
if currentSea() == 1 then
ReplicatedStorage.Remotes.CommF_:InvokeServer("TravelDressrosa")
elseif currentSea() == 2 then
ReplicatedStorage.Remotes.CommF_:InvokeServer("TravelZou")
end
end)
task.wait(30)
end)
----------------------------------------------------------------
-- ESP
----------------------------------------------------------------
local espCache = {}
local function attachEsp(part, text, color, billName)
if not part or part:FindFirstChild(billName) then return end
local bill = Instance.new("BillboardGui")
bill.Name = billName
bill.Size = UDim2.new(0, 130, 0, 28)
bill.AlwaysOnTop = true
bill.Adornee = part
bill.Parent = part
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.BackgroundTransparency = 1
lbl.Text = text
lbl.TextColor3 = color
lbl.TextStrokeTransparency = 0.4
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 13
lbl.Parent = bill
end
local function destroyEspBillboards(billName)
pcall(function()
for _, d in ipairs(Workspace:GetDescendants()) do
if d.Name == billName then d:Destroy() end
end
end)
end
local function makeEsp(player)
if not player or player == LocalPlayer then return end
local entry = espCache[player]
if entry then
-- kendi kendini onar: billboard silinmis/yenilenmisse tekrar kur
pcall(entry.setup)
return
end
local function setup()
local c = player.Character
if not c then return end
local hrp = c:FindFirstChild("HumanoidRootPart")
if not hrp then return end
if hrp:FindFirstChild("zeta_esp") then return end
local bill = Instance.new("BillboardGui")
bill.Name = "zeta_esp"
bill.Size = UDim2.new(0, 140, 0, 34)
bill.AlwaysOnTop = true
bill.Adornee = hrp
bill.Parent = hrp
local lbl = Instance.new("TextLabel")
lbl.Name = "Info"
lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.BackgroundTransparency = 1
lbl.Text = player.Name
lbl.TextColor3 = Color3.fromRGB(124, 77, 255)
lbl.TextStrokeTransparency = 0.5
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 13
lbl.Parent = bill
end
if player.Character then pcall(setup) end
local conn
conn = player.CharacterAdded:Connect(function()
task.wait(1)
if S.espEnabled then setup() else if conn then conn:Disconnect() end end
end)
espCache[player] = {setup = setup, conn = conn}
end
local function clearEsp()
pcall(function()
for _, p in ipairs(Players:GetPlayers()) do
local c = p.Character
local hrp = c and c:FindFirstChild("HumanoidRootPart")
local b = hrp and hrp:FindFirstChild("zeta_esp")
if b then b:Destroy() end
end
end)
for _, entry in pairs(espCache) do
if entry.conn then pcall(function() entry.conn:Disconnect() end) end
end
espCache = {}
end
local paConn = Players.PlayerAdded:Connect(function(p)
if S.espEnabled then makeEsp(p) end
end)
retire(function() paConn:Disconnect() end)
-- oyuncu ESP: 1sn'de bir hp guncelle + kacani kacirma (sessiz setup hatasi telafisi)
startLoop("EspPlayers", function()
if not S.espEnabled then task.wait(0.5) return end
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer then
local c = p.Character
local hrp = c and c:FindFirstChild("HumanoidRootPart")
local h = c and c:FindFirstChildOfClass("Humanoid")
if hrp and h then
local bill = hrp:FindFirstChild("zeta_esp")
if bill then
local lbl = bill:FindFirstChild("Info")
if lbl then
lbl.Text = p.Name .. " " .. math.floor(math.max(0, h.Health)) .. "/" .. math.floor(h.MaxHealth)
end
else
makeEsp(p)
end
end
end
end
task.wait(1.0)
end)
-- sandik ESP
startLoop("EspChest", function()
if not S.espChest then task.wait(0.5) return end
pcall(function()
for _, v in ipairs(Workspace:GetDescendants()) do
local part = nil
if v:IsA("Model") and isChestName(v.Name) then
part = v.PrimaryPart or v:FindFirstChildOfClass("BasePart")
elseif v:IsA("BasePart") and isChestName(v.Name) then
part = v
end
if part then
attachEsp(part, "SANDIK", Color3.fromRGB(80, 255, 140), "zeta_espC")
end
end
end)
task.wait(1.0)
end)
-- meyve ESP
startLoop("EspFruit", function()
if not S.espFruit then task.wait(0.5) return end
pcall(function()
for _, v in ipairs(Workspace:GetDescendants()) do
if v:IsA("Tool") and v.Name:lower():find("fruit", 1, true) then
local h = v:FindFirstChild("Handle") or v:FindFirstChildOfClass("BasePart")
if h then
attachEsp(h, v.Name, Color3.fromRGB(200, 120, 255), "zeta_espF")
end
end
end
end)
task.wait(1.0)
end)
----------------------------------------------------------------
-- HATA PANELI
----------------------------------------------------------------
local function showError(errText)
errText = tostring(errText)
warn("[zeta-res] BOOT HATASI: " .. errText)
pcall(function()
local sg = Instance.new("ScreenGui")
sg.Name = "zeta_error"
sg.ResetOnSpawn = false
sg.Parent = (LocalPlayer and LocalPlayer:FindFirstChild("PlayerGui"))
or game:GetService("CoreGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 520, 0, 240)
frame.Position = UDim2.new(0.5, -260, 0.5, -120)
frame.BackgroundColor3 = Color3.fromRGB(30, 10, 14)
frame.BorderSizePixel = 0
frame.Parent = sg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
local bar = Instance.new("Frame")
bar.Size = UDim2.new(1, 0, 0, 3)
bar.BackgroundColor3 = Color3.fromRGB(255, 70, 70)
bar.BorderSizePixel = 0
bar.Parent = frame
local t = Instance.new("TextLabel")
t.Size = UDim2.new(1, -20, 0, 30)
t.Position = UDim2.new(0, 10, 0, 10)
t.BackgroundTransparency = 1
t.Text = "zeta-res — boot hatasi"
t.TextColor3 = Color3.fromRGB(255, 120, 120)
t.Font = Enum.Font.GothamBold
t.TextSize = 16
t.TextXAlignment = Enum.TextXAlignment.Left
t.Parent = frame
local e = Instance.new("TextLabel")
e.Size = UDim2.new(1, -20, 0, 140)
e.Position = UDim2.new(0, 10, 0, 44)
e.BackgroundTransparency = 1
e.Text = errText
e.TextColor3 = Color3.fromRGB(230, 220, 225)
e.Font = Enum.Font.Code
e.TextSize = 13
e.TextWrapped = true
e.TextXAlignment = Enum.TextXAlignment.Left
e.TextYAlignment = Enum.TextYAlignment.Top
e.Parent = frame
local copy = Instance.new("TextButton")
copy.Size = UDim2.new(1, -20, 0, 32)
copy.Position = UDim2.new(0, 10, 1, -44)
copy.BackgroundColor3 = Color3.fromRGB(60, 22, 26)
copy.Text = "hatayi kopyala"
copy.TextColor3 = Color3.fromRGB(255, 160, 160)
copy.Font = Enum.Font.GothamMedium
copy.TextSize = 13
copy.BorderSizePixel = 0
copy.Parent = frame
Instance.new("UICorner", copy).CornerRadius = UDim.new(0, 6)
copy.MouseButton1Click:Connect(function()
safeClipboard(errText)
copy.Text = "kopyalandi — discord'a gonder"
end)
end)
end
----------------------------------------------------------------
-- API PROBE
----------------------------------------------------------------
local function probeApi()
local r = {}
pcall(function() r.getgenv = (getgenv ~= nil) end)
pcall(function() r.gethui = (gethui ~= nil) end)
pcall(function() r.writefile = (writefile ~= nil) end)
pcall(function() r.readfile = (readfile ~= nil) end)
pcall(function() r.setclipboard = (setclipboard ~= nil) end)
pcall(function() r.mouse1click = (mouse1click ~= nil) end)
pcall(function() r.firecd = (fireclickdetector ~= nil) end)
pcall(function() r.firepp = (fireproximityprompt ~= nil) end)
pcall(function() r.http = ((http_request ~= nil) or (request ~= nil)) end)
local out = {}
for k, v in pairs(r) do out[#out + 1] = k .. "=" .. tostring(v) end
table.sort(out)
print("[zeta-res] api: " .. table.concat(out, " "))
end
----------------------------------------------------------------
-- ANA MENU
----------------------------------------------------------------
local function buildMain()
local W = ZetaUI:Window("zeta-res")
ZetaUI_Main = W
----------------------------------------------------------------
-- TAB: FARM
----------------------------------------------------------------
local farmTab = W:Tab("Farm (level/boss)", 1)
farmTab:Section("otomatik level")
farmTab:Toggle("auto farm level (quest)", "autoLevel")
farmTab:Toggle("auto farm (en yakin mob)", "autoFarm")
farmTab:Section("boss")
farmTab:Toggle("auto farm boss", "autoBoss")
farmTab:Section("deniz olaylari")
farmTab:Toggle("auto farm leviathan + sea event", "autoLeviathan")
farmTab:Label("leviathan, sea beast, terrorshark, pirate/ghost ship, kitsune taranir; spawn yoksa server hop.")
farmTab:Section("gizli / special")
farmTab:Toggle("auto farm secret level (v4/dungeon)", "autoSecret")
----------------------------------------------------------------
-- TAB: COLLECT
----------------------------------------------------------------
local collectTab = W:Tab("Collect", 2)
collectTab:Section("toplama")
collectTab:Toggle("auto farm chest", "autoChest")
collectTab:Toggle("auto farm fruit (yerdeki)", "autoFruit")
collectTab:Label("chest: en yakin sandiga isinlanir, prompt/clickdetector tetikler.")
collectTab:Label("fruit: workspace icindeki Fruit tool'larini toplar.")
----------------------------------------------------------------
-- TAB: COMBAT
----------------------------------------------------------------
local combatTab = W:Tab("Combat", 3)
combatTab:Section("stat")
combatTab:Toggle("auto stat (point harca)", "autoStat")
combatTab:Dropdown("stat modu", {"Melee", "Defense", "Sword", "Gun", "Devil Fruit"}, S.statMode, function(v)
setState("statMode", v)
end)
----------------------------------------------------------------
-- TAB: PLAYER
----------------------------------------------------------------
local playerTab = W:Tab("Player", 4)
playerTab:Section("gorunum")
playerTab:Toggle("ESP — oyuncular", "espEnabled", function(v)
if v then
for _, p in ipairs(Players:GetPlayers()) do makeEsp(p) end
else
clearEsp()
end
end)
playerTab:Toggle("ESP — sandiklar", "espChest", function(v)
if not v then pcall(destroyEspBillboards, "zeta_espC") end
end)
playerTab:Toggle("ESP — meyveler", "espFruit", function(v)
if not v then pcall(destroyEspBillboards, "zeta_espF") end
end)
playerTab:Label("sandik/meyve ESP'i acikken her saniye workspace taranir, yeni spawn'lar gorunur.")
playerTab:Section("deniz gecisi")
playerTab:Toggle("auto second/third sea", "autoSea")
playerTab:Section("haki")
playerTab:Toggle("auto haki / observation", "autoHaki")
----------------------------------------------------------------
-- TAB: SETTINGS
----------------------------------------------------------------
local setTab = W:Tab("Settings", 5)
setTab:Section("menu")
setTab:Label("gizle/goster: Insert veya Sag Ctrl | surukle: bos alandan | kucult: - | kapat: x")
setTab:Label("menu kapansa bile farm calisir — ayarlar dosyaya kayitli, execute edince geri gelir.")
setTab:Button("tum farm'lari kapat", function()
stopAll()
clearEsp()
W:SetStatus("her sey durduruldu", Color3.fromRGB(255, 100, 100))
notify("zeta-res", "tum farm'lar kapatildi")
end)
setTab:Section("key & discord")
setTab:Label("key: zeta-res-44")
setTab:Button("discord — kopyala: " .. DISCORD_INV, function()
safeClipboard(DISCORD_INV)
notify("zeta-res", "discord linki kopyalandi")
end)
setTab:Section("hakkinda")
setTab:Label("zeta-res v1.4 — blox fruits full suite")
setTab:Label("executor: xeno / delta / wave / solara / swift / hydrogen")
W:SetStatus("hazir — farm sec", Color3.fromRGB(100, 255, 140))
print("[zeta-res] ana menu hazir | nesil=" .. tostring(MY_GEN)
.. " level=" .. tostring(S.autoLevel)
.. " farm=" .. tostring(S.autoFarm)
.. " chest=" .. tostring(S.autoChest))
end
----------------------------------------------------------------
-- BOOT
----------------------------------------------------------------
local function destroyOldUIs()
pcall(function()
local parent = uiParent()
for _, g in ipairs(parent:GetChildren()) do
local n = g.Name
if g:IsA("ScreenGui") and (n == "zeta_res" or n == "zeta_key" or n == "zeta_error") then
g:Destroy()
end
end
end)
end
local function boot()
-- onceki kopyalarin pencerelerini imha et: tek pencere kurali
destroyOldUIs()
probeApi()
print("[zeta-res] nesil " .. tostring(MY_GEN) .. " | REG durum: level="
.. tostring(S.autoLevel) .. " farm=" .. tostring(S.autoFarm)
.. " chest=" .. tostring(S.autoChest))
if validateKey(safeRead(KEY_FILE)) then
REG.keyValidated = true
end
if REG.keyValidated then
buildMain()
notify("zeta-res", "menu acildi")
else
keyUi(function()
REG.keyValidated = true
buildMain()
notify("zeta-res", "key dogrulandi — zeta-res aktif")
end, showError)
end
end
local ok, err = pcall(boot)
if not ok then showError(err) end-- Script provided by RobxScript.com



![Fucker | Bug Evolution [🕷️]](/_next/image?url=%2Fmedia%2Fsubmissions%2F2026%2F10%2Fb1731b81-3a5c-4a35-8a6d-1a32819877a7.webp&w=828&q=75)


Comments
Questions, setup notes and feedback from signed-in RobxScript users.