From deb9ae72a9679518fb31e406d187d30ca37b84da Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:08:01 +0000 Subject: [PATCH 1/2] Initial plan From e389fe4fb334baf6f3e5a72f38ecf62939753609 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:10:49 +0000 Subject: [PATCH 2/2] feat: add qbx_bankrobbery event logging integration Agent-Logs-Url: https://github.com/fivemanage/sdk/sessions/7b3cf95c-b87d-478d-9b8a-bc0c0981d896 Co-authored-by: itschip <59088889+itschip@users.noreply.github.com> --- config.json | 4 + config.schema.json | 20 +++- features/logs/server/logger.ts | 1 + .../server/third-party/qbx-bankrobbery.ts | 97 +++++++++++++++++++ features/utils/common/config.ts | 1 + 5 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 features/logs/server/third-party/qbx-bankrobbery.ts diff --git a/config.json b/config.json index dff7961..b78158a 100644 --- a/config.json +++ b/config.json @@ -27,6 +27,10 @@ "oxInventoryEvents": { "enabled": true, "dataset": "default" + }, + "qbxBankrobberyEvents": { + "enabled": false, + "dataset": "default" } } } \ No newline at end of file diff --git a/config.schema.json b/config.schema.json index 654eedb..352f302 100644 --- a/config.schema.json +++ b/config.schema.json @@ -132,6 +132,23 @@ } }, "default": { "enabled": false, "dataset": "default" } + }, + "qbxBankrobberyEvents": { + "description": "qbx_bankrobbery events configuration.", + "type": "object", + "properties": { + "enabled": { + "description": "Enable qbx_bankrobbery events to be logged.", + "type": "boolean", + "default": false + }, + "dataset": { + "description": "Dataset to use for qbx_bankrobbery events.", + "type": "string", + "default": "default" + } + }, + "default": { "enabled": false, "dataset": "default" } } }, "required": [ @@ -144,7 +161,8 @@ "playerEvents", "chatEvents", "txAdminEvents", - "oxInventoryEvents" + "oxInventoryEvents", + "qbxBankrobberyEvents" ] } }, diff --git a/features/logs/server/logger.ts b/features/logs/server/logger.ts index e8fa588..3d868fa 100644 --- a/features/logs/server/logger.ts +++ b/features/logs/server/logger.ts @@ -20,6 +20,7 @@ import './chat'; import './txadmin' import './baseevents' import './third-party/ox-inventory' +import './third-party/qbx-bankrobbery' const levels = config.logs.levels.reduce>( (acc, curr, idx) => { diff --git a/features/logs/server/third-party/qbx-bankrobbery.ts b/features/logs/server/third-party/qbx-bankrobbery.ts new file mode 100644 index 0000000..83426d3 --- /dev/null +++ b/features/logs/server/third-party/qbx-bankrobbery.ts @@ -0,0 +1,97 @@ +import { config } from "~/utils/common/config"; +import { ingest } from "../logger"; + +if (config.logs.qbxBankrobberyEvents.enabled) { + const dataset = config.logs.qbxBankrobberyEvents.dataset; + + onNet("qbx_bankrobbery:server:setBankState", (bankId: string | number) => { + const source = global.source; + const playerSource = source; + ingest(dataset, "info", "qbx_bankrobbery.robbery.started", { + playerSource, + playerName: GetPlayerName(source.toString()), + bankId, + bankType: typeof bankId === "number" ? "small" : bankId, + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + onNet("qbx_bankrobbery:server:callCops", (type: string, bank: string | number, coords: number[]) => { + const source = global.source; + const playerSource = source; + ingest(dataset, "info", "qbx_bankrobbery.alarm.triggered", { + playerSource, + playerName: GetPlayerName(source.toString()), + bankType: type, + bankId: bank, + coords, + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + onNet("qbx_bankrobbery:server:recieveItem", (type: string, bankId: string | number, lockerId: string | number) => { + const source = global.source; + const playerSource = source; + ingest(dataset, "info", "qbx_bankrobbery.loot.received", { + playerSource, + playerName: GetPlayerName(source.toString()), + bankType: type, + bankId, + lockerId, + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + onNet("qbx_bankrobbery:server:SetStationStatus", (key: string, isHit: boolean) => { + const source = global.source; + const playerSource = source; + ingest(dataset, "info", isHit ? "qbx_bankrobbery.powerStation.hit" : "qbx_bankrobbery.powerStation.restored", { + playerSource, + playerName: GetPlayerName(source.toString()), + stationKey: key, + isHit, + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + onNet("qbx_bankrobbery:server:removeElectronicKit", () => { + const source = global.source; + const playerSource = source; + ingest(dataset, "info", "qbx_bankrobbery.item.electronicKitUsed", { + playerSource, + playerName: GetPlayerName(source.toString()), + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + onNet("qbx_bankrobbery:server:removeBankCard", (number: number) => { + const source = global.source; + const playerSource = source; + ingest(dataset, "info", "qbx_bankrobbery.item.bankCardUsed", { + playerSource, + playerName: GetPlayerName(source.toString()), + cardNumber: number, + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + on("qbx_bankrobbery:server:setTimeout", () => { + ingest(dataset, "info", "qbx_bankrobbery.robbery.bigBankTimeoutStarted", {}, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); + + on("qbx_bankrobbery:server:SetSmallBankTimeout", (bankId: string | number) => { + ingest(dataset, "info", "qbx_bankrobbery.robbery.smallBankTimeoutStarted", { + bankId, + }, { + _internal_RESOURCE: "qbx_bankrobbery", + }); + }); +} diff --git a/features/utils/common/config.ts b/features/utils/common/config.ts index 2f2ceaf..87ff62a 100644 --- a/features/utils/common/config.ts +++ b/features/utils/common/config.ts @@ -29,6 +29,7 @@ const ConfigSchema = object({ chatEvents: EventConfigSchema, txAdminEvents: EventConfigSchema, oxInventoryEvents: EventConfigSchema, + qbxBankrobberyEvents: EventConfigSchema, }), });