45 lines
1.2 KiB
Lua
45 lines
1.2 KiB
Lua
local lastReportAt = {}
|
|
|
|
local function emitTelemetry(eventName, payload)
|
|
local event = {
|
|
protocol_version = Config.ProtocolVersion,
|
|
source = "rv-ai-test-tools",
|
|
event = eventName,
|
|
timestamp_ms = os.time() * 1000,
|
|
payload = payload or {},
|
|
}
|
|
|
|
print(("[AI_TEST_TELEMETRY] %s"):format(json.encode(event)))
|
|
end
|
|
|
|
AddEventHandler("onResourceStart", function(resourceName)
|
|
if resourceName == GetCurrentResourceName() then
|
|
emitTelemetry("resource_started", {
|
|
resource_state = GetResourceState(resourceName),
|
|
})
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent("rv-ai-test-tools:server:clientState", function(payload)
|
|
local sourceId = source
|
|
local now = GetGameTimer()
|
|
local previous = lastReportAt[sourceId] or 0
|
|
|
|
if now - previous < Config.MinimumReportIntervalMs then
|
|
return
|
|
end
|
|
|
|
lastReportAt[sourceId] = now
|
|
payload = type(payload) == "table" and payload or {}
|
|
|
|
emitTelemetry("client_state", {
|
|
client_id = sourceId,
|
|
reason = tostring(payload.reason or "unknown"):sub(1, 80),
|
|
resource_state = tostring(payload.resource_state or "unknown"):sub(1, 40),
|
|
})
|
|
end)
|
|
|
|
AddEventHandler("playerDropped", function()
|
|
lastReportAt[source] = nil
|
|
end)
|