01安装
- 1将 Agency-Banking 放入 resources 文件夹
- 2在 server.cfg 中 oxmysql 和框架之后添加 ensure Agency-Banking
- 3启动资源:所有数据表和列都会自动创建,agency_banking.sql 仅用于手动配置
- 4调整 config.lua:语言、设计、框架、独立模式账户、定期存款期限和地点
- 5可选:add_ace group.admin agency.banking allow,用于 /openbank 等管理员权限
- 6从旧版本更新:先备份配置值,改用新的 config.lua,然后重启资源。账户、银行卡和存款都保留在数据库中。
02依赖项
oxmysql(必需)QBCore、Qbox 或 ESX(可选,自动识别,没有时独立运行)qb-target 或 ox_target(可选,否则使用带 [E] 的标记点)agency-phone(可选,共享独立模式钱包并提供实时行情)Agency-Notify(可选)
03SQL 文件
可选:资源启动时会自动创建这些数据表。只有在手动配置数据库时才需要导入此文件:
-- =============================================================================
-- Agency Banking: database schema
-- -----------------------------------------------------------------------------
-- You do NOT have to import this file. The resource creates every table and
-- every missing column by itself on start (MariaDB and MySQL 8).
-- It is here for servers that prefer to set up the database by hand.
-- =============================================================================
CREATE TABLE IF NOT EXISTS `agency_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(60) NOT NULL,
`type` VARCHAR(50) NOT NULL, -- deposit, withdraw, transfer, fixed_deposit, card_added, ...
`amount` DECIMAL(15,2) NOT NULL,
`target_identifier` VARCHAR(60) DEFAULT NULL,
`reason` VARCHAR(255) DEFAULT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `agency_cards` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(60) NOT NULL,
`card_number` VARCHAR(16) NOT NULL,
`card_pin` VARCHAR(4) NOT NULL,
`card_type` VARCHAR(50) DEFAULT 'Visa',
`card_color` VARCHAR(50) DEFAULT 'ultra-blue',
`is_active` TINYINT(1) DEFAULT 1,
`card_name` VARCHAR(50) DEFAULT 'Main Account',
`card_holder` VARCHAR(50) DEFAULT 'Card Holder',
PRIMARY KEY (`id`),
KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `agency_fixed_deposits` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(60) NOT NULL,
`amount` DECIMAL(15,2) NOT NULL,
`interest_rate` FLOAT NOT NULL,
`duration_days` INT(11) NOT NULL,
`start_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`is_claimed` TINYINT(1) DEFAULT 0,
`source` VARCHAR(16) NOT NULL DEFAULT 'bank', -- 'bank' = paid out by the bank, 'phone' = a copy of an Agency Phone wallet deposit
`external_ref` VARCHAR(64) DEFAULT NULL, -- the phone's own id for a 'phone' deposit
PRIMARY KEY (`id`),
KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `agency_atm_pins` (
`identifier` VARCHAR(60) NOT NULL,
`pin` VARCHAR(4) NOT NULL,
PRIMARY KEY (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Standalone only (no QBCore / Qbox / ESX): balance and cash per Rockstar licence.
CREATE TABLE IF NOT EXISTS `agency_bank_accounts` (
`identifier` VARCHAR(60) NOT NULL,
`bank` DECIMAL(15,2) NOT NULL DEFAULT 0,
`cash` DECIMAL(15,2) NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Standalone and ESX only: the stock and crypto portfolio. The same table Agency
-- Phone and Agency Pad use; on QBCore / Qbox the portfolio lives in the
-- character's metadata instead.
CREATE TABLE IF NOT EXISTS `agency_phone_settings` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(60) NOT NULL,
`setting_key` VARCHAR(60) NOT NULL,
`setting_value` TEXT DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `identifier_key` (`identifier`, `setting_key`),
KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Agency Companion app (created by server/companion.lua as well).
CREATE TABLE IF NOT EXISTS `agency_banking_cmp_meta` (
`k` VARCHAR(64) NOT NULL PRIMARY KEY,
`v` TEXT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `agency_banking_cmp_devices` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(60) NOT NULL,
`player_name` VARCHAR(80) DEFAULT NULL,
`token_hash` CHAR(64) NOT NULL,
`device_name` VARCHAR(64) DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_seen` TIMESTAMP NULL DEFAULT NULL,
`revoked` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `token_hash` (`token_hash`),
KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
