CDK 兑换码系统
CDK(兑换码)系统允许管理员生成一次性或多次使用的兑换码,玩家输入兑换码即可领取对应礼包。
工作流程
管理员生成 CDK → 分发兑换码给玩家 → 玩家输入兑换码 → 自动发放礼包物品
生成 CDK
使用 /cdk generate 命令批量生成兑换码。
/cdk generate <礼包名> <数量> [每码可用次数] [过期时间]
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
| 礼包名 | ✅ | 兑换码对应的礼包(必须已创建) |
| 数量 | ✅ | 生成数量(1-1000) |
| 可用次数 | ❌ | 每个码可被使用的次数,默认 1 |
| 过期时间 | ❌ | 过期时间,格式同冷却时间,不填则永不过期 |
示例
# 生成 10 个一次性永久兑换码
/cdk generate 新手礼包 10
# 生成 5 个码,每个可用 3 次,7 天后过期
/cdk generate vip 5 3 7d
# 生成 50 个码,1 次使用,2 小时过期(适合限时活动)
/cdk generate 活动奖励 50 1 2h
生成后系统会在聊天中列出所有兑换码,每行最多 5 个。
兑换 CDK
玩家使用以下两种方式兑换:
/cdk <兑换码> # 简写方式
/cdk redeem <兑换码> # 完整方式
兑换检查流程
系统会按以下顺序检查:
- 兑换码是否存在 → 不存在提示"无效的兑换码"
- 是否已过期 → 过期提示"此兑换码已过期"
- 是否已用完 → 已达最大使用次数提示"此兑换码已用完"
- 玩家是否已使用过 → 同一玩家不可重复使用同一兑换码
- 对应礼包是否存在 → 礼包被删除则无法兑换
所有检查通过后,自动发放礼包物品。背包满时物品会掉落在玩家脚下。
管理 CDK
查看列表
/cdk list # 查看所有 CDK
/cdk list 新手礼包 # 查看指定礼包的 CDK
列表显示每个码的:兑换码、对应礼包、使用次数、状态(可用/已过期/已用完)。
查看详情
/cdk info <兑换码>
显示详细信息:兑换码、对应礼包、使用次数/上限、状态、剩余有效期。
删除 CDK
/cdk delete <兑换码> # 删除单个
/cdk clear <礼包名> # 清除礼包的所有 CDK
CDK 码格式
- 由大写字母(A-Z)和数字(0-9)随机组成
- 默认长度 12 位,可在
config.yml中修改cdk.code-length - 输入时不区分大小写(自动转为大写匹配)
- 示例:
A7KM3XP9BN2Q
数据存储
CDK 数据存储在 SQLite 数据库(plugins/EMCCDK礼包/data.db)中,包含两张表:
| 表名 | 用途 |
|---|---|
cdk_codes | 存储兑换码信息(码值、礼包、次数、过期时间) |
cdk_usage | 记录玩家使用记录(码值、玩家UUID、使用时间) |
注意
请勿手动修改数据库文件,所有操作请通过游戏内命令完成。
常见场景
活动发码
# 生成 200 个限时 24 小时的活动兑换码
/cdk generate 活动礼包 200 1 1d
VIP 礼包码
# 生成 10 个永久有效、每码可用 1 次的 VIP 码
/cdk generate VIP礼包 10
多人共享码
# 生成 1 个可用 100 次的公共兑换码
/cdk generate 公共礼包 1 100