一个面向 ESX Legacy 服务器的一站式会员系统,内置 NUI 商城界面,支持多档 VIP、武器皮肤交换、头顶称号、点卷商城、兑换码与管理员后台。
---
## 目录
- [一、功能介绍](#一功能介绍)
- [二、依赖环境](#二依赖环境)
- [三、安装步骤](#三安装步骤)
- [四、配置说明](#四配置说明)
- [五、数据库表](#五数据库表)
- [六、使用方法](#六使用方法)
- [七、管理员功能](#七管理员功能)
---
## 一、功能介绍
### 1. 多档 VIP 会员
- 默认内置三档:**白银 / 黄金 / 钻石**,可在 [config.lua](config.lua) 自由扩展。
- 每档支持多种购买时长(如 1 个月 / 1 年),支持自定义价格。
- 会员到期自动失效(后台每 60 秒检查一次,可配置)。
- 支付方式可选:
- `account`:ESX 账户余额(现金 / 银行 / 黑钱)
- `item`:背包内物品按数量扣除
- `points`:点卷支付
### 2. 武器皮肤系统
- 三种皮肤来源:
- **VIP 专属**(`type = 'vip'`)—— 跟随 VIP 等级,到期自动失效。
- **点卷/物品商城**(`type = 'shop'`)—— 玩家自行购买,支持多时长档位(含永久)。
- **限定皮肤**(`type = 'limited'`)—— 仅由管理员手动发放,永久持有。
- 通过 `ox_inventory` 物品交换实现:开启皮肤后,原武器在背包中会被替换为皮肤武器,关闭后还原。
- 与 [ox_inventory](https://github.com/overextended/ox_inventory) 深度集成,自动同步图标。
### 3. 头顶称号系统
- 多分组权限(如 basic / premium / elite),按 VIP 等级解锁。
- 支持颜色与分类,菜单内可一键切换/卸下。
- 与 `Fire_Nametage` 资源联动(如安装则自动刷新头顶 nametag)。
### 4. 点卷系统
- 两种存储方式:
- `database`:写入 `users` 表的 `points` 字段(首次启动自动 `ALTER TABLE`)。
- `item`:使用 `ox_inventory` 的某个物品作为点卷(数量 = 点卷数)。
### 5. 兑换码系统
- 管理员可生成多种类型的兑换码:VIP 时长、点卷、皮肤等。
- 支持过期时间,使用后记录使用者与使用时间。
- 玩家在菜单中输入序列号即可兑换。
### 6. 管理员后台(NUI 内嵌)
- 管理员组(默认
admin / superadmin)在菜单中可见 **编辑** 入口。
- 支持:增 / 删 / 改 会员记录、皮肤记录、点卷调整、兑换码生成与删除。
### 7. 多语言
- 内置中文 / 英文,在 [locales/](locales/) 目录扩展更多语言。
- 通过 `Config.Locale` 切换。
### 8. 服务器形象自定义
- 自定义服务器名称、Logo、外链。
- 首页支持轮播图(图片 + 跳转链接)。
---
## 二、依赖环境
| 依赖 | 说明 |
|------|------|
| [es_extended](https://github.com/esx-framework/esx_core) | ESX Legacy 框架 |
| [oxmysql](https://github.com/overextended/oxmysql) | 数据库驱动 |
| [ox_inventory](https://github.com/overextended/ox_inventory) | 背包系统(武器皮肤交换需要) |
| MySQL / MariaDB | 数据存储 |
可选:
- `Fire_Nametage`(头顶称号显示,未安装时称号功能仍可用,仅不显示在头顶)
---
## 三、安装步骤
- **放入 resources**
将整个 `fire_vip_system` 文件夹放入服务器的目录(或任意 `resources` 子目录)。
- **启动资源**
在 `server.cfg` 中添加:
```cfg
ensure fire_vip_system
```
注意启动顺序需在 `es_extended`、`oxmysql`、`ox_inventory` 之后。
- **数据库**
无需手动导入 SQL,资源首次启动会自动创建以下表:
- `vip_members`
- `vip_redeem_codes`
- `vip_weapon_skins`
- `vip_skin_active`
若 `Config.PointsType = 'database'`,还会自动为 `users` 表添加 `points` 字段。
- **编辑配置**
打开 [config.lua](config.lua),按需修改语言、命令、按键、支付方式、VIP 商品、皮肤、称号等。
- **重启服务器**
完成。玩家进入服务器后按 `F7`(默认)或输入 `/vip` 即可打开菜单。
---
## 四、配置说明
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `Config.Locale` | `'zh'` | 语言(zh / en) |
| `Config.Command` | `'vip'` | 打开菜单的指令 |
| `Config.OpenKey` | `'F7'` | 默认快捷键 |
| `Config.PaymentType` | `'account'` | 会员支付方式(account / item / points) |
| `Config.PaymentItem` | `'money'` | 支付使用的账户名或物品名 |
| `Config.PointsType` | `'database'` | 点卷存储方式(database / item) |
| `Config.PointsItem` | `'water'` | 点卷物品(PointsType=item 时) |
| `Config.AdminGroups` | `{ 'admin', 'superadmin' }` | 可查看管理员后台的 ESX 组 |
| `Config.ExpireCheckInterval` | `60` | VIP 到期检查间隔(秒) |
| `Config.CodeLength` | `16` | 兑换码长度 |
| `Config.ServerInfo` | — | 服务器名称 / Logo / 外链 |
| `Config.VIPs` | — | VIP 档位定义(id、名称、颜色、特权描述、时长) |
| `Config.WeaponSkins` | — | 武器皮肤列表(含 VIP / 商城 / 限定 三类) |
| `Config.SkinGroups` | — | 皮肤权限分组(VIP 等级 → 可用皮肤组) |
| `Config.Titles` | — | 头顶称号列表 |
| `Config.TitleGroups` | — | 称号权限分组 |
| `Config.HomeBanners` | — | 首页轮播图 |
---
## 五、数据库表
| 表名 | 用途 |
|------|------|
| `vip_members` | 玩家 VIP 记录(identifier, vip_type, expire_time, current_title) |
| `vip_redeem_codes` | 兑换码 |
| `vip_weapon_skins` | 玩家拥有的购买/限定皮肤 |
| `vip_skin_active` | 玩家当前已开启的皮肤 → 基础武器映射 |
| `users.points` | 数据库点卷字段(首次启动自动添加) |
---
## 六、使用方法
### 玩家
- 按 `F7` 或输入 `/vip` 打开菜单。
-
**首页**:查看会员状态、轮播图、兑换序列号入口。
-
**会员商城**:选择档位与时长购买。
-
**武器皮肤**:浏览 VIP / 点卷 / 限定皮肤,开启后自动替换背包武器。
-
**头顶称号**:浏览并切换称号。
-
**退出**:关闭菜单。
### 兑换码
玩家在首页点击 **兑换序列号**,输入码后回车即可。
---
## 七、管理员功能
Config.AdminGroups 中的 ESX 组成员,菜单内可见 **编辑(管理员)** 按钮,支持:
- 增 / 删 / 改 会员记录(指定 identifier、VIP 类型、到期时间)
- 增 / 删 / 改 玩家武器皮肤
- 调整玩家点卷
- 生成 / 删除兑换码(VIP / 点卷 / 皮肤奖励,可设过期)