AI Core
Работы и службыai-banking

ai-banking для разработчиков

Экспорты денег организаций для работ в ai-banking (также под именами qb-banking и Renewed-Banking) и вызовы lib, которые нужно использовать вместо них в новом коде.

ai-banking не хранит собственных денег. В новом коде перемещайте деньги работ и банд общими денежными экспортами ai-core (GetSharedMoney, AddSharedMoney, RemoveSharedMoney) или money.transfer из lib, а экран банка открывайте через banking.open(source) из lib. Они работают с любым скриптом банка. Экспорты ниже существуют, чтобы скрипты QBCore, написанные для qb-banking или Renewed-Banking, продолжали работать.

Функции lib (рекомендуется)

banking.open

Открывает экран активного скрипта банка для игрока.

Сторона: сервер · Ожидание: нет

Сигнатура
banking.open(source: number): boolean
Lua
local ok = aiLib.banking.open(source)

Возвращает

true, если экран открылся. false, если скрипт банка нельзя открыть снаружи или ни один не запущен.

Не каждый скрипт банка можно открыть из другого ресурса. Проверьте, что отвечает banking.open, прежде чем что-то сообщать игроку.

money.transfer

Перемещает деньги между двумя счетами в одной транзакции базы данных, записывая обе строки журнала. Используется ai-banking для каждого пополнения, снятия и перевода.

Сторона: сервер · Ожидание: нет

Сигнатура
money.transfer(from: MoneyRef, to: MoneyRef, amount: number, reason?: string, fee?: number): boolean
Lua
local ok = exports['ai-core']:TransferMoney(from, to, amount, reason, fee)

Параметры

Prop

Type

MoneyRef

Prop

Type

Возвращает

true, если деньги переведены. false, если счёт отсутствует, оба счёта одинаковые или from не может заплатить.

Пример

Босс выплачивает премию со счёта работы на банковский счёт участника:

import { money, notify } from "@aicore-fivem/lib/server";

function payBonus(boss: number, member: number, amount: number): void {
  const ok = money.transfer(
    { owner: "job", id: "police", account: "bank" },
    { source: member, account: "bank" },
    amount,
    "bonus",
  );
  notify(boss, ok ? "Bonus paid" : "The job account cannot pay", ok ? "success" : "error");
}

Серверные экспорты

Все три работают со счётом bank в ai-core для работы (название счёта является названием работы). Они также отвечают как exports['qb-banking']:<то же имя> и как getAccountMoney, addAccountMoney и removeAccountMoney из Renewed-Banking. Они не типизированы в @aicore-fivem/shared: в TypeScript используйте callExport("ai-banking", name, ...args). Каждый экспорт также отвечает под своим двойником в нижнем регистре (getAccountBalance).

GetAccountBalance

Баланс организации для работы.

Сторона: сервер · Ожидание: нет

Сигнатура
GetAccountBalance(job: string): number
Lua
local balance = exports['ai-banking']:GetAccountBalance('police')
-- то же: exports['qb-banking']:GetAccountBalance('police')
-- то же: exports['Renewed-Banking']:getAccountMoney('police')

Параметры

Prop

Type

Возвращает

Баланс в $. 0, если у работы нет счёта или job не текст.

AddMoney

Добавляет деньги на счёт организации работы. Каждый босс с открытым экраном банка видит новый баланс.

Сторона: сервер · Ожидание: нет

Сигнатура
AddMoney(job: string, amount: number, reason?: string): boolean
Lua
local ok = exports['ai-banking']:AddMoney('police', 500, 'fine')
-- то же: exports['Renewed-Banking']:addAccountMoney('police', 500, 'fine')

Параметры

Prop

Type

Возвращает

true, если деньги добавлены. false, если job не текст, amount не больше 0 или ai-core отказал (нет такого счёта работы).

RemoveMoney

Забирает деньги со счёта организации работы.

Сторона: сервер · Ожидание: нет

Сигнатура
RemoveMoney(job: string, amount: number, reason?: string): boolean
Lua
local ok = exports['ai-banking']:RemoveMoney('mechanic', 1200, 'parts')

Параметры

Prop

Type

Возвращает

true, если деньги забраны. false, если счёт не может заплатить, не существует или аргументы неверны.

Пример

import { callExport } from "@aicore-fivem/lib/server";

// Скрипт механиков покупает запчасти со счёта работы.
function buyParts(cost: number): boolean {
  return callExport("ai-banking", "RemoveMoney", "mechanic", cost, "parts") === true;
}

Эти экспорты доходят только до счетов работ. Для счёта банды используйте AddSharedMoney('gang', name, 'bank', amount, reason) из ai-core и родственные функции. Деньги, изменённые напрямую через экспорты ai-core, являются теми же деньгами, но открытые экраны банка сразу обновляются только при изменениях через ai-banking.

Приватные колбэки

Вызовы экрана банка (resource/common/bank.ts): открытие, страницы истории, пополнение, снятие, перевод и закрытие. Сервер при каждом вызове проверяет позицию отделения или банкомата. Они могут меняться между версиями: не вызывайте их из других ресурсов.

На этой странице