01安装
- 1Extract Agency-Shops into your resources folder
- 2确保服务器已启用 OneSync
- 3Add ensure Agency-Shops to server.cfg, after your framework, your inventory and oxmysql
- 4启动服务器:数据库表会在首次启动时自动创建 (仅当数据库用户无建表权限时才需要 install/agency_shop.sql)
- 5添加 add_ace group.admin agency.shop allow 以向管理员授予 /ashops 面板权限
- 6正在运行 qb-shops、esx_shops 或 ox_inventory shops?请移除其 24/7 条目,否则同一柜台后会出现两名收银员
- 7正在运行 qb-storerobbery 或类似脚本?请关闭其中一个,或设置 Config.Robbery.Enabled = false
- 8正在运行带有独立油机的燃油脚本?请关闭其油机交互,或设置 Config.GasStations.Enabled = false
- 9独立模式:填写 Config.Standalone 中的资金与物品配置 (请参见配置页面)
- 10可选:将你的 Discord webhook 地址填入 config_server.lua,该文件绝不会发送给玩家
02依赖项
oxmysql(必需)OneSync (必需)QBCore、QBox 或 ESX(可选,没有框架时以独立模式运行)背包系统 (可选: ox_inventory、qs-inventory 或框架自带背包,自动识别)Agency Phone (可选,添加 Agency Pay 支付方式)Agency-Notify (可选,否则商店将显示自身提示消息)ox_target 或 qb-target (可选,否则使用按键提示)ps-dispatch 或 cd_dispatch (可选,用于抢劫与盗窃警报,否则使用内置警报)燃油脚本 (可选: LegacyFuel、ox_fuel、cdn-fuel、ps-fuel、lc_fuel、Renewed-Fuel、okokGasStation 或 qs-fuelstations,否则运行内置燃油系统)
03SQL 文件
可选:资源启动时会自动创建这些数据表。只有在手动配置数据库时才需要导入此文件:
-- =============================================================================
-- AGENCY SHOP - database tables
-- Created automatically on start (Config.AutoApplySql = true). Run this file by
-- hand only if your database user may not create tables.
-- =============================================================================
CREATE TABLE IF NOT EXISTS `agency_shop_owned` (
`id` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL DEFAULT 'store',
`owner` VARCHAR(80) NOT NULL,
`owner_name` VARCHAR(120) NOT NULL DEFAULT '',
`name` VARCHAR(60) NULL DEFAULT NULL,
`balance` INT NOT NULL DEFAULT 0,
`prices` LONGTEXT NULL,
`stock` LONGTEXT NULL,
`staff` LONGTEXT NULL,
`fuel` INT NOT NULL DEFAULT 0,
`fuel_prices` LONGTEXT NULL,
`sales_total` INT NOT NULL DEFAULT 0,
`revenue_total` BIGINT NOT NULL DEFAULT 0,
`last_sale` TIMESTAMP NULL DEFAULT NULL,
`bought_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `owner` (`owner`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_orders` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL DEFAULT 'goods',
`items` LONGTEXT NULL,
`crates` INT NOT NULL DEFAULT 0,
`litres` INT NOT NULL DEFAULT 0,
`cost` INT NOT NULL DEFAULT 0,
`fee` INT NOT NULL DEFAULT 0,
`status` VARCHAR(16) NOT NULL DEFAULT 'open',
`courier` VARCHAR(80) NULL DEFAULT NULL,
`courier_name` VARCHAR(120) NULL DEFAULT NULL,
`eta` INT NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop` (`shop`),
KEY `status` (`status`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_points` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL,
`x` DOUBLE NOT NULL,
`y` DOUBLE NOT NULL,
`z` DOUBLE NOT NULL,
`h` DOUBLE NOT NULL DEFAULT 0,
`category` VARCHAR(40) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `shop` (`shop`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_ledger` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(24) NOT NULL,
`amount` INT NOT NULL DEFAULT 0,
`note` VARCHAR(160) NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop` (`shop`)
);
-- What admins change with /ashops: catalogs and store settings, laid over config.lua.
CREATE TABLE IF NOT EXISTS `agency_shop_overrides` (
`kind` VARCHAR(16) NOT NULL,
`id` VARCHAR(64) NOT NULL,
`data` LONGTEXT NULL,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`kind`, `id`)
);
-- Every sale of an owned store or station, line by line: the owner's analytics.
CREATE TABLE IF NOT EXISTS `agency_shop_sales` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`sale` VARCHAR(24) NOT NULL,
`item` VARCHAR(64) NOT NULL,
`qty` INT NOT NULL DEFAULT 0,
`amount` INT NOT NULL DEFAULT 0,
`account` VARCHAR(16) NOT NULL DEFAULT 'cash',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop_time` (`shop`, `created_at`)
);
+值得了解
添加 ensure 配置后 Agency-Shops 即可正常运行。首次启动前建议注意以下四点:启动顺序、数据库、管理员权限,以及其他商店、抢劫或燃油脚本。
- 启动顺序与 OneSync
- 在 server.cfg 中将 ensure Agency-Shops 放置在框架、背包系统和 oxmysql 之后。必须开启 OneSync,且必须使用 oxmysql。
- 数据库
- 数据表 agency_shop_owned、agency_shop_orders、agency_shop_points、agency_shop_ledger、agency_shop_overrides 和 agency_shop_sales 会在首次启动时创建。仅当您的数据库用户无法创建表时才需要 install/agency_shop.sql,设置 Config.AutoApplySql = false 可关闭此自动步骤。
- 管理员权限
- 管理员是拥有 ACE 权限 agency.shop、group.admin 或 group.superadmin,或属于 Config.Admin.Groups 中群组的玩家。add_ace group.admin agency.shop allow 会将 /ashops 面板权限授予您的管理员组。在独立服务器上,Config.Standalone.admins 列出了相关许可证。
- 其他商店脚本
- 请移除 qb-shops、esx_shops 或 ox_inventory 商店中的 24/7 条目,否则会有两个收银员站在同一个柜台后。关闭 qb-storerobbery 及类似脚本,或者设置 Config.Robbery.Enabled = false。对于自带加油枪的加油脚本,请关闭其加油枪交互或设置 Config.GasStations.Enabled = false。
?常见问题
Discord webhook 应该配置在哪里?
配置在 config_server.lua 中,适用于 Ownership、Register、Deliveries、Shoplift 和 Robbery。该文件绝不会发送给玩家。
我需要 Agency Phone 吗?
不需要。当 agency-phone 运行时,结账处和加油机旁会自动提供 Agency Pay。如果没有它,玩家可以使用现金或银行卡付款。
