牌堆

程序目前支持 Json 格式的牌堆。你可以使用别人已编写好的牌堆文件,也可以编写自己的牌堆。

所有的牌堆文件需放在与程序文件同级的 plugins/io.paotuan.plugin.draw/files/ 文件夹下。在这个文件夹的内部,你可以随意建立其他的文件夹或直接放置 Json 文件。

程序会在启动时读取这个文件夹下的所有 .json 后缀文件并建立牌堆。如果后续添加、删除、修改了 Json 文件,需要重新启动程序,或在【插件管理】菜单中点击重载插件后才能生效。

该文件夹下默认自带了一个 example.json 文件,用于演示牌堆的基本用法。如你不需要这个文件,可以将其删除。

牌堆格式

一个 Json 文件可以包含多个牌堆,每个牌堆的条目列表是一个数组,格式如下:

{
  "牌堆1": [
    "条目1",
    "条目2"
  ],
  "牌堆2": [
    "条目1",
    "条目2"
  ]
}

通常来说,牌堆名和条目内容都是纯文本。但为了便于使用,我们也支持一些特殊的能力:

设置权重

可以使用 ::权重值:: 对不同的条目设置不同的权重:

{
  "抽卡模拟器": [
    "::90::R",
    "::9::SR",
    "UR"
  ]
}

权重值也支持使用骰子表达式生成随机数。注意最终生成的权重值需为自然数。

{
  "抽卡模拟器": [
    "::1d100::R",
    "::1d10::SR",
    "UR"
  ]
}

也支持对牌堆本身设置权重。当使用 /draw 而不指定具体牌堆名时,将先根据牌堆的权重计算出将要抽取的牌堆。

{
  "::10::常规卡池": [...],
  "::1::限定卡池": [...]
}

引用其他牌堆

我们可以在一个牌堆中抽取其他的牌堆。使用 {{>牌堆名}} 引用其他牌堆;使用 {{>!牌堆名}} 不放回地引用其他牌堆。

{
  "恐惧症状": [
    "洗澡恐惧症",
    "恐高症"
  ],
  "临时疯狂": [
    "失忆",
    "恐惧:{{>恐惧症状}}"
  ]
}

引用骰子指令和其他变量

由于牌堆本质上也是自定义回复,我们也可以在牌堆中利用自定义回复的引用骰子指令与变量功能,通过 [[xxx]] 引用骰子指令,通过 {{xxx}} 引用变量。

{
  "今日运势": [
    "{{at用户}}今天的幸运指数是[[d100]]!"
  ]
}

隐藏牌堆

_ 开头的牌堆会被视为隐藏牌堆。隐藏牌堆主要供其他牌堆引用。在使用 /draw 指令时将不会主动抽取隐藏牌堆。

{
  "_性别": ["男", "女"],
  "_月份": ["一月", "二月"],
  "捏人": [
    "捏人:性别:{{>_性别}},生日:{{>_月份}}"
  ]
}

发送图片

支持使用类似 HTML 的 <img> 语法发送图片消息,与自定义回复相同。

{
  "网络图片": ["<img src=’https://wiki.connect.qq.com/wp-content/uploads/2013/10/01_qq_logo-1-300x144.png‘ />"],
  "本地图片": ["<img src=’test.png‘ />"]
}

本地图片的路径相对于牌堆 Json 文件。

其他牌堆兼容

历史上存在其他格式的牌堆,它们的格式与我们目前所支持的格式并不完全相同。为了方便大家的使用,我们提供了自动转换的能力。

将其他 Json 格式的牌堆文件放入 plugins/io.paotuan.plugin.draw/_convert/ 文件夹下。程序会在启动时读取这个文件夹下的所有 .json 后缀文件,并执行转换。你可以在命令行中看到转换的结果。

如果转换成功,源文件将会被删除,而转换后的文件将会以相同的目录结构存入 /files/ 文件夹。

这一转换程序主要做了以下三道语法转换:

  • {%xxx}{{>xxx}}
  • {xxx}{{>!xxx}}
  • [xxx][[xxx]]

注意我们不能 100% 保证转换后的牌堆和转换前表现的一模一样。如果你在使用中遇到问题,请人工检查转换后的牌堆文件,或联系我们寻求帮助。

自定义牌堆文案

你可以在【插件管理】->【牌堆】的插件偏好设置中自定义牌堆插件中使用的所有文案。

Last Updated: