结冰的离季
本帖最后由 结冰的离季 于 2023-2-2 21:42 编辑

SakuraCDK

一款纯粹的CDK系统

使用场景

  • 制作口令cdk礼包, 如 输入 xxx节快乐 领取礼包
  • 制作随机cdk礼包, 如 输入 a56D-NI41H-XK51DG 领取礼包,可修改模板

特点

  • 简单易用
  • 支持跨服, 数据库类型 MySQL、MariaDB、SQLite、Oracle、PostgreSQL、SQLServer
  • 发放命令与物品
  • 全程异步运行,主线程0影响 (除了运行礼包命令)
  • 自动重载配置,解放命令
  • cdk\kit 支持限时限量
  • 丰富的消息API

截图

查询cdk信息



游戏内编辑礼包物品



使用方法

1. 安装:

将插件放入服务端 plugins 文件夹中,重启服务器或者使用插件热重载

2. 配置:

数据库

插件默认使用 Sqlite 数据库,在1.12.2以下的版本中可能报错,请改为其他数据库

更多信息请在config.yml中修改

所有配置自动重载,无需使用命令重载。 但如果自动重载失效也可使用 cdkadmin reload 命令重载

cdk说明 cdk由2部分构成: cdk、和kit

cdk 包括口令cdk和随机cdk2种, 每个随机cdk只能使用一次

kit包含物品或命令, 当玩家兑换cdk时将会给予对应的kit

一个kit可以被多个cdk重复使用

先创建 kit

在 kits.yml 中添加

  1. # 是否自动更新
  2. auto-Update: true
  3. kits:
  4.   # 取个名字,随意,不冲突即可
  5.   test:
  6.     # 识别id,不允许重复
  7.     id: test
  8.     # 创建日期,随意,无关紧要
  9.     create: "2022-08-10T23:02:32.052"
  10.     # 到期时间,到期后礼包不会再发放
  11.     expires: "2022-09-10T23:02:32.056"
  12.     # 执行命令,%player% 为玩家名称占位符
  13.     # CMD: 前缀 表示控制台执行
  14.     # OP: 前缀 表示玩家以op身份执行
  15.     # 没有前缀 表示玩家自身执行
  16.     commands:
  17.       - CMD:gamemode survival %player%
  18.       - OP:fly
  19.       - spawn
  20.     # 给予玩家的物品, 通过cdkadmin edit [id] 添加
  21.     itemStacks:
复制代码

如以上,也可通过命令创建

  1. /cdkadmin kit create [id] [过期时间]  创建礼包
  2. /cdkadmin kit delete [id]  删除礼包
  3. /cdkadmin kit edit [id]  编辑该礼包的物品
  4. /cdkadmin kit give [id] [player]  将礼包给予玩家,不会有记录
复制代码



创建 cdk 打开cdk.yml文件

  1. # 如果type是 normal 则该键将作为cdk
  2. test:
  3.   # normal 类型为 可重复多次使用的CDK,每人只能领取一次
  4.   type: normal
  5.   # 最大领取次数
  6.   amount: 10
  7.   # 过期时间
  8.   expire: '2022-09-10T23:02:32.061'
  9.   # 对应的礼包,可以多个
  10.   kits:
  11.   - test

  12. # 如果type是 random 则对应random文件夹中的txt 随机cdk
  13. # 通过命令 /cdkadmin randomCDK [id] [amount]  创建
  14. # 命令中的id对应这个键
  15. test2:
  16.   type: random
  17.   # 是否允许共一个玩家多次领取
  18.   repeat: true
  19.   # 过期时间
  20.   expire: '2022-09-10T23:02:32.063'
  21.   # 对应的礼包,可以多个
  22.   kits:
  23.   - test
复制代码

看以上注释



3. 完成配置

由于跨服支持,本地修改的数据不会立即生效

需要使用命令: /cdkadmin update <type> 将数据同步至数据库

其中 type:

  • all 时上传所有数据
  • cdk 时上传cdk.yml数据
  • kit 时上传kits.yml数据
  • random 时上传random文件夹下所有数据

命令/cdkadmin download <type>将数据库的数据下载到本地

type同以上

用户使用

玩家输入 /sakuracdk [cdk]来兑换cdk

可在config.yml 中 修改 sakuracdk 和别名

该命令权限等于sakuracdk.命令名, 如: sakuracdk.sakuracdk


其他

命令可以通过输入/cdkadmin来查看更多管理命令

玩家默认有权限的命令只有/sakuracdk 一条

命令权限

命令权限为sakuracdk.节点名称

比如/cdkadmin kit edit 的权限为sakuracdk.cdkadmin.kit.edit

管理命令

  1. cdkadmin download <type>  将数据库的数据下载到本地
  2. cdkadmin update <type>  将数据同步至数据库
  3. cdkadmin delete [time]  删除一定时间外的礼包领取记录
  4. cdkadmin info [cdk]  查看某个cdk的信息
  5. cdkadmin kit  礼包相关命令
  6. cdkadmin randomCDK [id] [amount]  创建随机cdk文件
  7. cdkadmin debug  切换deug模式
  8. cdkadmin reload  重载命令
复制代码

下载

Github: https://github.com/SakuraTown/SakuraCDK/releases

蓝奏: https://iseason.lanzouf.com/b00qn5cif  密码:6g2e

如果依赖无法下载导致插件无法加载请添加离线依赖插件 https://iseason.lanzouf.com/ivk8f0lzba9c




本插件所用所有代码均为原创,不存在借用/抄袭等行为



源代码使用GPLV3协议,您可以免费使用本插件,但不能二次分发售卖以获利




木头酱
        MCBBS有你更精彩~

目岚.
您好,您的cdk插件我在进行连接数据库的时候出现了无法连接mysql的情况,可能是因为我平常使用host习惯了?能否展示一个正确填写的mysql配置例子呢?

结冰的离季
目岚. 发表于 2023-2-6 15:35
您好,您的cdk插件我在进行连接数据库的时候出现了无法连接mysql的情况,可能是因为我平常使用host习惯了? ...

如果你发现设置正确但连不上的情况请尝试 直接写完整的jdbcURL

目岚.
结冰的离季 发表于 2023-2-6 15:36
如果你发现设置正确但连不上的情况请尝试 直接写完整的jdbcURL

您是否可以给我一个您的联系方式,求助一下

结冰的离季
目岚. 发表于 2023-2-6 15:42
您是否可以给我一个您的联系方式,求助一下

看我签名

yzx201214pm
楼主,能告诉我cdkey输在哪一行吗,我试了好几个地方都不对,我有点傻谢谢

结冰的离季
yzx201214pm 发表于 2023-2-6 23:18
楼主,能告诉我cdkey输在哪一行吗,我试了好几个地方都不对,我有点傻谢谢 ...

玩家输入命令 /sakuracdk [cdk]来兑换cdk

可在config.yml 中 修改 sakuracdk 和别名

该命令权限等于sakuracdk.命令名, 如: sakuracdk.sakuracdk

千某人
mcbbs有你更精彩

yzx201214pm
结冰的离季 发表于 2023-2-6 23:34
玩家输入命令 /sakuracdk [cdk]来兑换cdk

可在config.yml 中 修改 sakuracdk 和别名

大佬就是那个cdk文件中应该把CDK填在哪个地方呢,我每次都显示不存在CDK

qq2873404500
这个插件可以,功能很不错,感谢大佬分享

MC_Han
  MCBBS有你更精彩~

结冰的离季
yzx201214pm 发表于 2023-2-7 02:08
大佬就是那个cdk文件中应该把CDK填在哪个地方呢,我每次都显示不存在CDK

按文档创建之后需要输入 cdkadmin update 才生效

MC_Han
感谢分享!! 支持!!

FromTheDream
感谢楼主大大分享啦

Jamil
使用的时候显示礼包已过期,再使用就提示已经领取过是什么情况嘞(过期时间已经调整并更新过)

结冰的离季
本帖最后由 结冰的离季 于 2023-2-17 10:21 编辑
Jamil 发表于 2023-2-17 10:17
使用的时候显示礼包已过期,再使用就提示已经领取过是什么情况嘞(过期时间已经调整并更新过) ...

因为一个cdk可以对应多个不同的礼包,所以当其中的某些礼包过期时还是会正常发放,无论是否领取成功都会标记已领取,这种情况建议给礼包换一个名字

Jamil

normal,可重复使用

Jamil
结冰的离季 发表于 2023-2-17 10:18
因为一个cdk可以对应多个不同的礼包,所以当其中的某些礼包过期时还是会正常发放,无论是否领取成功都会标 ...

我排查出来问题了。游戏内指令创建的礼包在配置文件里没有command一栏,直接判定为无效礼包了