CATHLEEN
TRACKER
Tracker
Plaza
Scripts
Refresh
Global Items
—
Hidden:
Daftar Akun
Online
0
Offline
0
Total
0
Detail Akun
Pilih akun
—
✕
Popup Logs
Semua Log
Hanya DUPED
Selain Duped
Clear
Daftar Akun
Online
0
Offline
0
Total
0
Detail Akun
Pilih akun dulu
—
✕
Global Items
—
Hidden:
Popup Logs
Semua Log
Hanya DUPED
Selain Duped
Clear
Plaza Live Logs
Clear
Bot Scripts
✕
Script Tracker (Farming Bot)
Copy Tracker
-- ===================================================================== -- CATHLEEN PRO TRACKER - INTEGRATED VERSION -- ===================================================================== local SUPABASE_URL = "https://kojfzfblyueopjzrzdil.supabase.co" local SUPABASE_KEY = "sb_publishable_mOB4oa0BTuTlnAOoE0iLOA_GMa7sfxX" local HttpService = game:GetService("HttpService") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local UPDATE_INTERVAL = 60 local Mutations = { "Blood","Crimson","Diamond","Electric","Gold","Emerald","Radioactive", "Admin","UFO","Hacker","Lucky","Money","Gamer","Candy","Doom","Fire", "Ice","Phantom","Shamrock","Showtime","Eggsplosion","Tidal","Miner" } local request_func = (syn and syn.request) or (http and http.request) or http_request or (Fluxus and Fluxus.request) or (request) -- ───────────────────────────────────────────────────────── -- Utility Functions -- ───────────────────────────────────────────────────────── local function cleanName(name) for _, mut in ipairs(Mutations) do name = name:gsub("^" .. mut .. "%s+", ""):gsub("%s+" .. mut .. "$" , "") end return name:match("^%s*(.-)%s*$") end local function getInventory() local bp = LocalPlayer:FindFirstChild("Backpack") if not bp then return "Kosong" end local counts = {} for _, item in ipairs(bp:GetChildren()) do if item:IsA("Tool") or item:IsA("Model") then local rawName = item:GetAttribute("DisplayName") or item.Name local name = cleanName(rawName) if name:find("Lucky Block") then name = "Lucky Block" end counts[name] = (counts[name] or 0) + 1 end end local list = {} for n, c in pairs(counts) do table.insert(list, n .. " (" .. c .. ")") end table.sort(list) return #list > 0 and table.concat(list, "\n") or "Kosong" end local function sendTrackerLog(message) if not request_func then return end pcall(function() request_func({ Url = SUPABASE_URL .. "/rest/v1/tracker_logs", Method = "POST", Headers = { ["apikey"] = SUPABASE_KEY, ["Authorization"] = "Bearer " .. SUPABASE_KEY, ["Content-Type"] = "application/json", ["Prefer"] = "return=minimal" }, Body = HttpService:JSONEncode({ username = LocalPlayer.Name, message = tostring(message) }) }) end) end local function anyToString(val) if val == nil then return "nil" end local t = type(val) if t == "string" then return val end if t == "number" or t == "boolean" then return tostring(val) end if t == "table" then local msg = val.message or val.Message or val.text or val.Text or val.msg or val.Msg or val.content or val.Content if msg then return tostring(msg) end local parts = {} for k, v in pairs(val) do table.insert(parts, tostring(k) .. "=" .. tostring(v)) end return "{" .. table.concat(parts, ", ") .. "}" end return tostring(val) end -- ───────────────────────────────────────────────────────── -- Core Hooking & Loops -- ───────────────────────────────────────────────────────── local function hookDisplayPopup() local ok, remote = pcall(function() return game:GetService("ReplicatedStorage") :WaitForChild("Shared", 10) :WaitForChild("Remotes", 10) :WaitForChild("Networking", 10) :WaitForChild("RE/Misc/DisplayPopup", 10) end) if not ok or not remote then warn("[CathleenTracker] RE/Misc/DisplayPopup not found!") return end print("[CathleenTracker] Hooked DisplayPopup ✅") remote.OnClientEvent:Connect(function(...) local args = {...} local parts = {} for i, v in ipairs(args) do table.insert(parts, anyToString(v)) end local fullMsg = table.concat(parts, " | ") if fullMsg == "" then return end if not fullMsg:match("^Info") then return end sendTrackerLog(fullMsg) print("[CathleenTracker] Popup: " .. fullMsg) end) end local function sendData() local money = LocalPlayer:FindFirstChild("leaderstats") and ( LocalPlayer.leaderstats:FindFirstChild("MoneyBags") or LocalPlayer.leaderstats:FindFirstChild("Money") or LocalPlayer.leaderstats:FindFirstChild("Cash") ) local moneyVal = money and tostring(money.Value) or "0" local slot = "N/A" for _, v in ipairs(LocalPlayer.PlayerGui:GetDescendants()) do if v:IsA("TextLabel") and v.Text:match("%d+/%d+") then local _, max = v.Text:match("(%d+)/(%d+)") if max and tonumber(max) >= 80 then slot = v.Text; break end end end local inv = getInventory() if request_func then request_func({ Url = SUPABASE_URL .. "/rest/v1/player_stats", Method = "POST", Headers = { ["apikey"] = SUPABASE_KEY, ["Authorization"] = "Bearer " .. SUPABASE_KEY, ["Content-Type"] = "application/json", ["Prefer"] = "resolution=merge-duplicates" }, Body = HttpService:JSONEncode({ username = LocalPlayer.Name, money = moneyVal, slot_tas = slot, isi_tas = inv, last_update = os.date("!%Y-%m-%dT%H:%M:%SZ") }) }) end end -- ───────────────────────────────────────────────────────── -- Execution Thread -- ───────────────────────────────────────────────────────── task.spawn(function() print("✅ Cathleen Tracker Active!") pcall(hookDisplayPopup) -- Main Update Loop while true do pcall(sendData) task.wait(UPDATE_INTERVAL) end end)
Script Plaza (Auto Restock - UPDATED)
Copy Plaza
-- // CONFIG MASTER PLAZA \\ -- local SUPABASE_URL = "https://kojfzfblyueopjzrzdil.supabase.co/rest/v1" local SUPABASE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtvamZ6ZmJseXVlb3BqenJ6ZGlsIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTc3NjczMzQyNywiZXhwIjoyMDkyMzA5NDI3fQ.w21A6H88GOAzDVxIYuPl_RjU6bTMYQYUusJO9aX9LgI" local Player = game:GetService("Players").LocalPlayer local HttpService = game:GetService("HttpService") local TokenPath = Player:WaitForChild("leaderstats"):WaitForChild("Trade Tokens") local RemoteRestock = game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Remotes"):WaitForChild("Networking")["RF/ListBoothOffering"] -- Menggunakan Proxy Vercel Custom local DISCORD_WEBHOOK = "https://webhook-cathy.vercel.app/api/webhooks/1496693380493869108/d_Asq17-cDNSzPyH6k3IIpiSfWpSpWBKXOyn5aY4GMmwnfIhQPvNHF2AV_yaOjHrJ03l" local isSyncing = false -- Set nilai awal dengan membersihkan format string jika ada local lastTokenValue = tonumber((string.gsub(tostring(TokenPath.Value), "[^%d.-]", ""))) or 0 -- // KIRIM NOTIF KE DISCORD \\ -- local function pushDiscord(title, desc, color) task.spawn(function() local request = (syn and syn.request) or (http and http.request) or http_request or request local success, res = pcall(function() return request({ Url = DISCORD_WEBHOOK, Method = "POST", Headers = { ["Content-Type"] = "application/json" }, Body = game:GetService("HttpService"):JSONEncode({ embeds = {{ title = title, description = desc, color = color or 1752220, -- hijau default footer = { text = "Cathleen Plaza • " .. os.date("%H:%M:%S") } }} }) }) end) if not success then warn("❌ Discord Script Error: " .. tostring(res)) elseif res and res.StatusCode ~= 200 and res.StatusCode ~= 204 then warn("❌ Discord Webhook Ditolak (" .. tostring(res.StatusCode) .. "): " .. tostring(res.Body)) end end) end -- // PEMBERSIH NAMA ITEM \\ -- local function getPureName(item) local n = item:GetAttribute("DisplayName") or item:GetAttribute("ItemName") or item.Name local mutations = { "Blood", "Crimson", "Diamond", "Electric", "Gold", "Emerald", "Radioactive", "Admin", "UFO", "Hacker", "Lucky", "Money", "Gamer", "Candy", "Doom", "Fire", "Ice", "Phantom", "Shamrock", "Showtime", "Eggsplosion", "Tidal", "Miner" } for _, m in pairs(mutations) do n = n:gsub(m .. "%s*", "") end return n:gsub("Lv%.%d+", ""):gsub("^%s+", ""):gsub("%s+$", "") end -- // FUNGSI REQUEST SUPABASE DENGAN ERROR CATCHER \\ -- local function doRequest(method, endpoint, body, extraHeaders) local request = (syn and syn.request) or (http and http.request) or http_request or request local headers = { ["apikey"] = SUPABASE_KEY, ["Authorization"] = "Bearer " .. SUPABASE_KEY, ["Content-Type"] = "application/json", ["Prefer"] = "return=representation" } if extraHeaders then for k, v in pairs(extraHeaders) do headers[k] = v end end local success, res = pcall(function() return request({ Url = SUPABASE_URL .. endpoint, Method = method, Headers = headers, Body = body and HttpService:JSONEncode(body) or nil }) end) if not success then warn("❌ Supabase Request Error:", res) return false, nil elseif res and res.StatusCode >= 400 then warn("❌ Supabase API Error (".. tostring(method) .." " .. endpoint .. ") [" .. tostring(res.StatusCode) .. "]: " .. tostring(res.Body)) end return success, res end -- // KIRIM LOG KE plaza_logs \\ -- local function pushLog(msg) task.spawn(function() doRequest("POST", "/plaza_logs", { ["bot_name"] = Player.Name, ["message"] = msg }) end) end -- // KIRIM DATA PLAZA KE plaza_stats \\ -- local function pushPlazaData() if isSyncing then return end isSyncing = true task.spawn(function() local currentTokens = tostring(TokenPath.Value) local counts = {} for _, v in pairs(Player.Backpack:GetChildren()) do local name = getPureName(v) if #name > 2 then counts[name] = (counts[name] or 0) + 1 end end local inv = "" for n, c in pairs(counts) do inv = inv .. n .. " (" .. c .. ")\n" end if inv == "" then inv = "Empty Bag" end local body = { ["username"] = Player.Name, ["tokens"] = currentTokens, ["isi_tas"] = inv, ["last_update"] = "now()" } local ok, res = doRequest("GET", "/plaza_stats?username=eq." .. Player.Name .. "&select=username", nil) if ok and res then pcall(function() local data = HttpService:JSONDecode(res.Body) if data and #data > 0 then doRequest("PATCH", "/plaza_stats?username=eq." .. Player.Name, body) else doRequest("POST", "/plaza_stats", body) end end) end isSyncing = false print("✅ Plaza Synced! Tokens: " .. currentTokens) end) end -- // AMBIL HARGA DARI SUPABASE \\ -- local LIVE_PRICE = nil local ITEM_PRICES = {} task.spawn(function() while true do local ok, res = doRequest("GET", "/plaza_stats?username=eq." .. Player.Name .. "&select=target_price,item_prices", nil) if ok and res and res.StatusCode == 200 then pcall(function() local data = HttpService:JSONDecode(res.Body) if data[1] then if data[1].target_price then LIVE_PRICE = tonumber(data[1].target_price) end if data[1].item_prices then local ip = data[1].item_prices if type(ip) == "string" then local s, parsed = pcall(function() return HttpService:JSONDecode(ip) end) if s then ip = parsed end end if type(ip) == "table" then ITEM_PRICES = ip end else ITEM_PRICES = {} end end end) end task.wait(10) end end) -- // AUTO RESTOCK \\ -- task.spawn(function() while true do if LIVE_PRICE then local bp = Player:FindFirstChild("Backpack") if bp then for _, item in pairs(bp:GetChildren()) do local id = item:GetAttribute("UUID") or item.Name local name = getPureName(item) local finalPrice = LIVE_PRICE if ITEM_PRICES and ITEM_PRICES[name] then finalPrice = tonumber(ITEM_PRICES[name]) or LIVE_PRICE end pcall(function() RemoteRestock:InvokeServer(id, finalPrice) end) task.wait(0.5) end end end task.wait(5) end end) -- // EVENT: TOKEN BERUBAH = ADA TRANSAKSI (REALTIME) \\ -- TokenPath:GetPropertyChangedSignal("Value"):Connect(function() local rawNewVal = TokenPath.Value local newValNum = tonumber((string.gsub(tostring(rawNewVal), "[^%d.-]", ""))) or 0 local diff = newValNum - lastTokenValue lastTokenValue = newValNum if diff == 0 then return end local arah = diff > 0 and "+" or "" local msg = "Token " .. arah .. tostring(diff) .. " | Total: " .. tostring(newValNum) pushLog(msg) if diff > 0 then pushDiscord( "💰 ADA YANG BELI! — " .. Player.Name, "**+" .. tostring(diff) .. " tokens**\nTotal sekarang: **" .. tostring(newValNum) .. "**", 1752220 ) end task.spawn(function() task.wait(0.5) pushPlazaData() end) print("🔔 Token changed! " .. arah .. tostring(diff)) end) -- // FALLBACK SYNC TIAP 30 DETIK \\ -- task.spawn(function() while true do pushPlazaData() task.wait(30) end end) -- // INITIAL SYNC \\ -- task.wait(2) pushPlazaData() pushLog("Bot online: " .. Player.Name) print("✅ Plaza Hub v17 (Vercel Proxy) Loaded!")
Akun
Detail
Plaza