-- ========================================================================== -- V60 PUBLIC GHOST ENGINE - AUTO-SYNC + ANTI-RANDOM + 2.4M PIVOT -- ========================================================================== if getgenv().StopOldScript then pcall(getgenv().StopOldScript) task.wait(0.2) end local scriptID = math.random(1, 999999) local running = true getgenv().StopOldScript = function() running = false print("V60 Public: Shutdown.") end -- ========================================== -- CONFIGURATION -- ========================================== local WEBHOOK_URL = "YOUR_WEBHOOK_HERE" local SQUAD_KEY = "MyPrivateFarm123" -- <--- Change this to any secret word local FINAL_GOAL = 3600000 local PIVOT_POINT = 2400000 local UPDATE_GAP = 5 -- ========================================== -- API MODULE -- ========================================== local API = {} local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local ReplicatedStorage = game:GetService("ReplicatedStorage") local VIM = game:GetService("VirtualInputManager") local Http = game:GetService("HttpService") local player = Players.LocalPlayer local raceCount = 0 local lastJoinTime = 0 local UI_Cache = {} local msg_file = "farm_status_public.txt" -- Set Squad Key as an attribute so your other accounts can see it player:SetAttribute("SquadKey", SQUAD_KEY) function API.FormatNum(amount) local formatted = tostring(math.floor(amount)) while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if (k==0) then break end end return formatted end function API.GetCash(p) if not p then return 0 end local s = p:FindFirstChild("leaderstats") or p:FindFirstChild("Data") local c = s and (s:FindFirstChild("Cash") or s:FindFirstChild("Money")) return c and c.Value or 0 end local startCash = API.GetCash(player) function API.UpdateDiscord(forceNew) if WEBHOOK_URL == "" or WEBHOOK_URL == "YOUR_WEBHOOK_HERE" then return end task.spawn(function() local cur = API.GetCash(player) local earned = cur - startCash local prog = math.min(math.floor((cur / FINAL_GOAL) * 100), 100) local data = { ["embeds"] = {{ ["title"] = "🌍 Public Ghost Sync: " .. player.Name, ["description"] = (cur >= FINAL_GOAL and "🏁 **RETIRED**" or "🏎️ **Farming (Public Mode)**"), ["color"] = (cur >= FINAL_GOAL and 65280 or 10181046), ["fields"] = { {["name"] = "💵 Balance", ["value"] = "**$" .. API.FormatNum(cur) .. "**", ["inline"] = true}, {["name"] = "📊 Goal", ["value"] = "**" .. prog .. "%**", ["inline"] = true}, {["name"] = "💸 Session", ["value"] = "+$" .. API.FormatNum(earned), ["inline"] = false}, {["name"] = "🏁 Total Races", ["value"] = tostring(raceCount), ["inline"] = true}, {["name"] = "🔑 Squad Key", ["value"] = "```" .. SQUAD_KEY .. "```", ["inline"] = true} }, ["footer"] = {["text"] = "V60 Public Engine • " .. os.date("%X")}, ["timestamp"] = os.date("!%Y-%m-%dT%H:%M:%SZ") }} } local req = (syn and syn.request) or (http and http.request) or http_request or request if not req then return end local existingID = (not forceNew) and isfile and isfile(msg_file) and readfile(msg_file) local method, url = "POST", WEBHOOK_URL .. "?wait=true" if existingID and existingID ~= "" then method, url = "PATCH", WEBHOOK_URL .. "/messages/" .. existingID .. "?wait=true" end local success, response = pcall(function() return req({Url = url, Method = method, Headers = {["Content-Type"] = "application/json"}, Body = Http:JSONEncode(data)}) end) if success and response.Success and method == "POST" then local resData = Http:JSONDecode(response.Body) if resData and resData.id and writefile then writefile(msg_file, resData.id) end elseif method == "PATCH" and not response.Success then if writefile then writefile(msg_file, "") end API.UpdateDiscord(true) end end) end -- V60 SMART PARTNER DETECTION function API.GetRole() local myC = API.GetCash(player) if myC >= FINAL_GOAL then return false end local partner = nil for _, p in ipairs(Players:GetPlayers()) do -- ONLY sync with players who have the SAME SquadKey attribute if p ~= player and p:GetAttribute("SquadKey") == SQUAD_KEY then partner = p break end end if partner then local oC = API.GetCash(partner) if oC >= FINAL_GOAL then return true end if myC >= PIVOT_POINT and oC < PIVOT_POINT then return false elseif myC < PIVOT_POINT and oC >= PIVOT_POINT then return true else if myC > oC then return true end if myC < oC then return false end return player.UserId < partner.UserId end end return true end function API.GetTarget() local char = player.Character if not char then return nil end local hum = char:FindFirstChildOfClass("Humanoid") if hum and hum.SeatPart then return hum.SeatPart:FindFirstAncestorWhichIsA("Model") or hum.SeatPart end return char:FindFirstChild("HumanoidRootPart") end function API.TP(cf, isJoin, isReset) if not running then return end local target = API.GetTarget() if not target then return end pcall(function() local root = target:IsA("Model") and (target.PrimaryPart or target:FindFirstChildWhichIsA("BasePart")) or target if root then root.AssemblyLinearVelocity = Vector3.new(0, -65, 0) root.AssemblyAngularVelocity = Vector3.new(0, 0, 0) end local winner = API.GetRole() local finalCF if isJoin then finalCF = CFrame.new(cf.Position + (winner and Vector3.new(-11,0,0) or Vector3.new(11,0,0))) * CFrame.Angles(0, cf.Rotation.Y, 0) elseif isReset then finalCF = cf * (winner and CFrame.new(-60,0,40) or CFrame.new(60,0,40)) -- Move further away in public else finalCF = CFrame.new(cf.Position + Vector3.new(0, 1.2, 0)) * CFrame.Angles(0, cf.Rotation.Y, 0) end target:PivotTo(finalCF) if isJoin or isReset then pcall(function() VIM:SendKeyEvent(true, Enum.KeyCode.Space, false, game) task.wait(0.1) VIM:SendKeyEvent(false, Enum.KeyCode.Space, false, game) end) end end) end function API.GetStatus(name) if not UI_Cache[name] or not UI_Cache[name].Parent then for _, v in ipairs(Workspace:GetDescendants()) do if v:IsA("TextLabel") and v.Text:find(name:gsub("Race","")) then local lab = v.Parent:FindFirstChildOfClass("TextLabel") if lab then UI_Cache[name] = lab break end end end end local l = UI_Cache[name] if l then local t = l.Text:lower() if t:find("starting") or t:find("progress") then return "Busy" end return t:match("%d/%d") or "0/2" end return "0/2" end local function MainLoop() print("V60 Public Ghost Engine Active. Key: " .. SQUAD_KEY) API.UpdateDiscord(true) while running do task.wait(0.05) local track, countdown = nil, false for _, obj in ipairs(Workspace:GetChildren()) do if obj.Name:match("_TrackObjects$") then track = obj break end if obj.Name:match("_ClientObjects$") then countdown = true end end if track then lastJoinTime = 0 local cps = track:FindFirstChild("Checkpoints") if cps then local curNum = 1 local winner = API.GetRole() local delayTime = winner and 0.15 or 0.55 while running and curNum <= #cps:GetChildren() and track:IsDescendantOf(Workspace) do local target = cps:FindFirstChild(tostring(curNum)) if target then API.TP(target.CFrame, false, false) task.wait(delayTime) if not cps:FindFirstChild(tostring(curNum)) then curNum = curNum + 1 end else curNum = curNum + 1 end task.wait(0.01) end local finish = track:FindFirstChild("FinishCollide") if finish and running then API.TP(finish.CFrame, false, false) raceCount = raceCount + 1 if raceCount % UPDATE_GAP == 0 then API.UpdateDiscord(false) end task.wait(0.5) repeat task.wait(0.2) until not track:IsDescendantOf(Workspace) or not running end end elseif countdown then task.wait(0.1) else local rf = ReplicatedStorage:FindFirstChild("Modules") and ReplicatedStorage.Modules:FindFirstChild("Race") and ReplicatedStorage.Modules.Race:FindFirstChild("Races") if rf then local hStat = API.GetStatus("HighwayRace") local cStat = API.GetStatus("CityRace") -- PUBLIC SAFETY: Only join if it is 0/2. This ensures your 2 accounts enter together. local pad = (hStat == "0/2") and rf.HighwayRace:FindFirstChild("WaitingZone") or ((cStat == "0/2") and rf.CityRace:FindFirstChild("WaitingZone") or nil) if pad and running then local targetObj = API.GetTarget() local pos = targetObj and (targetObj:IsA("Model") and targetObj:GetPivot().Position or targetObj.Position) local dist = pos and (pos - pad.Position).Magnitude or 999 if dist > 22 then if tick() - lastJoinTime > 4 then -- Both accounts will see "0/2" and jump in at nearly the same time if not API.GetRole() then task.wait(0.3) end -- Very small stagger for safety API.TP(pad.CFrame, true, false) lastJoinTime = tick() end elseif tick() - lastJoinTime > 12 and lastJoinTime ~= 0 then API.TP(pad.CFrame, false, true) task.wait(1.5) API.TP(pad.CFrame, true, false) lastJoinTime = tick() end else -- If no circles are 0/2, move to a safe distance and hide local targetObj = API.GetTarget() if targetObj then local hPad = rf.HighwayRace:FindFirstChild("WaitingZone") if (targetObj:GetPivot().Position - hPad.Position).Magnitude < 30 then API.TP(hPad.CFrame, false, true) -- Warp to reset spot end end end end end end end task.spawn(MainLoop)