牌堆
程序目前支持 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% 保证转换后的牌堆和转换前表现的一模一样。如果你在使用中遇到问题,请人工检查转换后的牌堆文件,或联系我们寻求帮助。
自定义牌堆文案
你可以在【插件管理】->【牌堆】的插件偏好设置中自定义牌堆插件中使用的所有文案。