• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
现代化的兑换码系统

原创 LSE 现代化的兑换码系统 1.0.1

请登录后获取
版权类型
原创
版权链接
#
语言支持
中文(简体)
适配版本(基岩)
  1. 最新版本
说明文档:
[MD] # 兑换码系统 (CDK) 使用手册 ## 功能介绍 兑换码系统允许服务器管理员创建和管理兑换码,玩家可以通过GUI界面或命令兑换物品奖励和存款。 **核心功能:** - 支持物品奖励(含NBT数据) - 支持存款奖励(llmoney) - 物品+存款混合奖励 - 使用次数限制 - 每人限用一次 - 过期时间设置 - 自定义兑换播报 - 预发布兑换码(定时发布) - 发布提示开关 ## 指令说明 ### 玩家指令 | 指令 | 说明 | |------|------| | `/rcode` | 打开兑换码输入界面 | | `/rcode <兑换码>` | 直接兑换指定兑换码 | ### 管理员指令 | 指令 | 说明 | |------|------| | `/rcode admin` | 打开管理面板 | | `/rcode create` | 创建兑换码 | | `/rcode list` | 查看兑换码列表 | | `/rcode info <兑换码>` | 查看兑换码详情 | | `/rcode delete <兑换码>` | 删除兑换码 | | `/rcode scheduled` | 查看预发布列表 | ## 管理面板功能 ### 创建兑换码 1. 输入兑换码名称 2. 从背包选择奖励物品(或选择"无") 3. 设置存款奖励金额 4. 设置自定义播报消息(可选) 5. 设置最大使用次数(-1为无限) 6. 设置过期日期(可选) 7. 设置是否每人限用一次 ### 预发布兑换码 预发布功能允许管理员预设兑换码,在指定时间自动发布。 **创建预发布:** 1. 设置兑换码和奖励(同普通创建) 2. 设置发布日期(YYYY-MM-DD格式) 3. 设置发布时间(HH:MM格式,24小时制) 4. 选择是否启用发布提示 5. 设置自定义发布提示(可选) **预发布状态:** - §e待发布 - 等待发布时间 - §a已发布 - 已自动发布 - §c已取消 - 被管理员取消 **预发布管理:** - 立即发布 - 不等待,立即发布 - 取消发布 - 取消待发布的兑换码 - 删除记录 - 删除预发布记录 ## 文件路径 | 文件 | 说明 | |------|------| | `./Meowdata/CDK/config.json` | 兑换码数据 | | `./Meowdata/CDK/scheduled.json` | 预发布数据 | ## 配置文件结构 ### config.json ```json { "codes": { "EXAMPLE2024": { "code": "EXAMPLE2024", "reward": { "snbt": "...", "name": "钻石", "type": "minecraft:diamond", "count": 5 }, "money": 1000, "broadcastMessage": "玩家 {player} 兑换了 {code},获得了 {reward}!", "maxUses": 100, "currentUses": 0, "singleUsePerPlayer": true, "usedBy": [], "expirationDate": "2025-12-31", "enabled": true, "createdAt": "2024-01-01T00:00:00.000Z", "createdBy": "Admin" } }, "settings": { "language": "zh_CN", "saveInterval": 5000 } } ``` ### scheduled.json ```json { "items": [ { "id": "unique_id", "code": "NEWYEAR2025", "reward": { ... }, "money": 500, "broadcastMessage": "", "maxUses": -1, "singleUsePerPlayer": true, "expirationDate": null, "createdBy": "Admin", "publishTime": "2025-01-01T00:00:00.000Z", "enableBroadcast": true, "customBroadcast": "§6新年兑换码已发布: §b{code}", "status": "pending", "createdAt": "2024-12-25T00:00:00.000Z" } ] } ``` ## 播报消息变量 ### 兑换播报(兑换成功时) | 变量 | 说明 | |------|------| | `{player}` | 玩家名称 | | `{code}` | 兑换码 | | `{reward}` | 奖励内容 | ### 发布提示(预发布发布时) | 变量 | 说明 | |------|------| | `{code}` | 兑换码 | ## API 接口 插件通过 `exports.API` 导出接口供其他插件调用: ### 兑换码操作 #### createCode(code, options) 创建兑换码 ```javascript $Y.i.createCode("EXAMPLE2025", { reward: { // 物品奖励(可选) snbt: "...", // 物品SNBT数据 name: "钻石", type: "minecraft:diamond", count: 5 }, money: 1000, // 存款奖励(可选) broadcastMessage: "", // 自定义播报消息 maxUses: 100, // 最大使用次数,-1为无限 singleUsePerPlayer: true, // 每人限用一次 expirationDate: "2025-12-31", // 过期日期 createdBy: "Admin" // 创建者 }); // 返回: { success: true, message: "..." } ``` #### deleteCode(code) 删除兑换码 ```javascript $Y.i.deleteCode("EXAMPLE2025"); // 返回: { success: true, message: "..." } ``` #### updateCode(code, updates) 更新兑换码属性 ```javascript $Y.i.updateCode("EXAMPLE2025", { enabled: false }); // 返回: { success: true, message: "..." } ``` #### getCodeList() 获取所有兑换码列表 ```javascript const codes = $Y.i.getCodeList(); // 返回: ["CODE1", "CODE2", ...] ``` #### getCodeInfo(code) 获取兑换码详情 ```javascript const info = $Y.i.getCodeInfo("EXAMPLE2025"); // 返回: { code, reward, money, maxUses, currentUses, ... } 或 null ``` #### validateCode(code, playerXuid) 验证兑换码是否可用 ```javascript const result = $Y.i.validateCode("EXAMPLE2025", player.xuid); // 返回: { valid: true/false, error: "错误信息", errorCode: "CODE_NOT_FOUND", codeData: {...} } ``` #### redeemCode(code, player) 兑换兑换码 ```javascript const result = $Y.i.redeemCode("EXAMPLE2025", player); // 返回: { success: true/false, message: "..." } ``` ### 预发布操作 #### createScheduled(options) 创建预发布兑换码 ```javascript $Y.i.createScheduled({ code: "NEWYEAR2025", reward: { ... }, // 物品奖励 money: 500, // 存款奖励 broadcastMessage: "", // 兑换时播报消息 maxUses: -1, singleUsePerPlayer: true, expirationDate: null, createdBy: "Admin", publishTime: "2025-01-01T00:00:00.000Z", // 发布时间(ISO格式) enableBroadcast: true, // 是否启用发布提示 customBroadcast: "§6新兑换码: §b{code}" // 自定义发布提示 }); // 返回: { success: true, message: "...", id: "unique_id" } ``` #### getScheduledList(status) 获取预发布列表 ```javascript $Y.i.getScheduledList(); // 获取全部 $Y.i.getScheduledList("pending"); // 仅待发布 $Y.i.getScheduledList("published"); // 仅已发布 $Y.i.getScheduledList("cancelled"); // 仅已取消 // 返回: [{ id, code, status, publishTime, ... }, ...] ``` #### getScheduledInfo(id) 获取预发布详情 ```javascript const info = $Y.i.getScheduledInfo("unique_id"); // 返回: { id, code, status, ... } 或 null ``` #### publishScheduled(id) 立即发布预发布兑换码 ```javascript $Y.i.publishScheduled("unique_id"); // 返回: true/false ``` #### cancelScheduled(id) 取消预发布 ```javascript $Y.i.cancelScheduled("unique_id"); // 返回: { success: true/false, message: "..." } ``` #### deleteScheduled(id) 删除预发布记录 ```javascript $Y.i.deleteScheduled("unique_id"); // 返回: { success: true/false, message: "..." } ``` ### GUI 操作 #### showAdminMenu(player) 打开管理面板 ```javascript $Y.i.showAdminMenu(player); ``` #### showRedeemForm(player) 打开兑换界面 ```javascript $Y.i.showRedeemForm(player); ``` ## 使用示例 ### 创建限时活动兑换码 1. `/rcode admin` → 创建兑换码 2. 输入兑换码:`SPRING2025` 3. 选择奖励物品(从背包) 4. 存款奖励:`500` 5. 最大使用次数:`100` 6. 过期日期:`2025-03-31` 7. 每人限用一次:开启 ### 创建预发布新年兑换码 1. `/rcode admin` → 预发布兑换码 2. 输入兑换码:`NEWYEAR2025` 3. 设置奖励 4. 发布日期:`2025-01-01` 5. 发布时间:`00:00` 6. 发布时全服提示:开启 7. 自定义发布提示:`§6[新年快乐] §e新年兑换码已发布: §b{code}` ## 注意事项 1. 物品奖励会保留完整NBT数据,包括附魔、名称等 2. 预发布的定时器在服务器重启后会自动恢复 3. 已发布或已取消的预发布记录可以删除以清理数据 4. 兑换码区分大小写 ## 问题排查 兑换失败提示"背包已满" 清理背包空间后重试 预发布没有按时发布 检查服务器时间是否正确,查看控制台日志 物品奖励显示异常 确保创建时背包中的物品是正常的 --- > 技术支持:伊希娅 QQ3529832433 [/MD]
作者
伊希娅
价格
35.00金粒
下载
31
查看
545
首次发布
最后更新

评分

0.00 星 0 次评分

伊希娅 的其他资源

后退
顶部 底部