local payloadUrl="https://synex.lat/loaders/ride-a-pet.v12.payload.lua" local reportUrl="https://synex.lat/api/loader-report/ride-a-pet?token=yy9Vo1oy0r1t0P9NNCHIioNRY0aNLb80" local telemetryUrl="https://synex.lat/api/telemetry/run" local slug="ride-a-pet" local version=12 local chunkMarker="@Synex/"..slug.."/v"..version local HttpService=game:GetService("HttpService") local function urlencode(s) s=tostring(s or "") s=s:gsub("[^%w_%-%.~]",function(c) return string.format("%%%02X",string.byte(c)) end) return s end local function identify() local executor="Unknown" pcall(function() if identifyexecutor then executor=identifyexecutor() end end) return executor end local reportCount=0 local lastSent={} local function playerInfo() local pid,pname="0","" pcall(function() local p=game:GetService("Players").LocalPlayer if p then pid=tostring(p.UserId) pname=tostring(p.Name) end end) return pid,pname end local function sendReport(kind,message,trace) local msg=string.sub(tostring(message or "Unknown error"),1,600) local tr=string.sub(tostring(trace or ""),1,1500) if kind~="success" then local key=kind..":"..msg local now=os.clock() if lastSent[key] and now-lastSent[key]<30 then return end if reportCount>=15 then return end lastSent[key]=now reportCount=reportCount+1 end local executor=identify() local pid,pname=playerInfo() local params="kind="..urlencode(kind).."&message="..urlencode(msg).."&trace="..urlencode(tr).."&place_id="..urlencode(tostring(game.PlaceId)).."&job_id="..urlencode(tostring(game.JobId)).."&game_name="..urlencode(tostring(game.Name)).."&executor="..urlencode(tostring(executor)).."&version="..urlencode(tostring(version)).."&player_id="..urlencode(pid).."&player_name="..urlencode(pname) task.spawn(function() -- GET works in every executor, including inside the Luraph VM. pcall(game.HttpGet,game,reportUrl.."&"..params) end) end -- Anonymous run analytics (online-now + execution counters). Never blocks the script. local sessionKey=nil pcall(function() sessionKey=HttpService:GenerateGUID(false) end) local function sendTelemetry(ev) if telemetryUrl=="" or not sessionKey then return end local userId="0" pcall(function() local p=game:GetService("Players").LocalPlayer if p then userId=tostring(p.UserId) end end) local params="e="..urlencode(ev).."&k="..urlencode(sessionKey).."&s="..urlencode(slug).."&p="..urlencode(tostring(game.PlaceId)).."&g="..urlencode(tostring(game.Name)).."&u="..urlencode(userId).."&x="..urlencode(identify()) params=params.."&v="..urlencode(tostring(version)) task.spawn(function() pcall(game.HttpGet,game,telemetryUrl.."?"..params) end) end sendTelemetry("start") task.spawn(function() for _=1,240 do task.wait(60) sendTelemetry("beat") end end) local sourceOk,source=pcall(game.HttpGet,game,payloadUrl) if not sourceOk then sendReport("loader_error",source,""); error(source,0) end local chunk,compileError=loadstring(source,chunkMarker) if not chunk then sendReport("compile_error",compileError,""); error(compileError,0) end -- Roblox prints chunk names without the leading "@", e.g. Script 'Synex/slug/v3', Line 3 local traceMarker="Synex/"..slug.."/v"..version local function ours(a,b) return string.find(tostring(a or ""),traceMarker,1,true)~=nil or string.find(tostring(b or ""),traceMarker,1,true)~=nil end pcall(function() game:GetService("ScriptContext").Error:Connect(function(message,trace) if ours(message,trace) then sendReport("runtime_error",message,trace) end end) end) -- Executors often run on threads ScriptContext.Error never sees; the console does. pcall(function() local pending=nil local function flush() local p=pending pending=nil if not p then return end local stack=table.concat(p.stack,"\n") if ours(p.msg,stack) then sendReport("runtime_error",p.msg,stack) end end game:GetService("LogService").MessageOut:Connect(function(text,kind) if kind==Enum.MessageType.MessageError then flush() local entry={msg=text,stack={}} pending=entry task.delay(0.6,function() if pending==entry then flush() end end) elseif pending and kind==Enum.MessageType.MessageInfo then if text=="Stack Begin" then return end if text=="Stack End" then flush() return end if #pending.stack<12 then table.insert(pending.stack,text) end end end) end) local lastTrace="" local function traceError(err) if debug and debug.traceback then lastTrace=debug.traceback("",2) end return tostring(err) end local result=table.pack(xpcall(chunk,traceError)) if not result[1] then sendReport("runtime_error",result[2],lastTrace); error(result[2],0) end sendReport("success","","") return table.unpack(result,2,result.n)