-
官方群群文件
-
Github上的仓库(推荐)sealdice/draw: 便于共享seal所使用的牌堆文件 (github.com)
如何下载:
-
打开你的webUI,依次点击综合设置、牌堆管理,在设置的那一栏中选上传即可。
-
如果是非SealDice格式(*.deck)的牌堆压缩包,请参照旧版本放置方式。
-
打开你的webUI,依次点击综合设置、牌堆管理,在设置的那一栏中选上传,然后重载即可。
-
如果是非SealDice格式(*.deck)的牌堆压缩包,请参照旧版本放置方式。
- 一般的牌堆文件放置在.\data\decks 目录下以单独的文件存在,如果要添加牌堆,你只需要把下载好的文件放在该目录下,然后对骰子发送 .draw reload 指令就可以了。
对于带图的牌堆压缩包,如果是按照seal格式来的,解压后整个文件夹拖进decks目录里。
其他情况下的带图的牌堆文件压缩包一般会给一个说明
- 这里只给出几个大概的名词间等价关系 请自行摸索
dicedata ≈ dice123456789 ≈ dice骰子QQ ≈ cocdata ≈ seal根目录
PublicDeck ≈ draw ≈ decks
mod ≈ helpdoc
pictures ≈ images
Q:.\data\decks 是什么?
A:在我的电脑上就是 D:\Uso\tmp\sealdice-core\data\decks
因为 D:\Uso\tmp\sealdice-core 和每个人解压seal程序的位置有关
是可以自定义的,所以用 . 来表示
抽牌命令:
.draw help // 显示本帮助
.draw list // 查看载入的牌堆文件
.draw keys // 查看可抽取的牌组列表(容易很长,不建议用)
.draw keys <牌堆> // 查看特定牌堆可抽取的牌组列表
.draw search <牌组名称> // 搜索相关牌组
.draw reload // 从硬盘重新装载牌堆,仅Master可用
.draw <牌组名称> // 进行抽牌
特别提醒 牌堆文件名不等于抽取关键词
牌堆的本质是json或者yaml格式的文本文件,编写遵循两者其一的语法。
你甚至可以使用window自带的记事本打开和编写,但并不建议
推荐使用 sublime
或者在线JSON 或者YAML 编辑网站
下面网站只做例子,请使用搜索引擎来获取可能更好的网站
牌堆编写请使用 UTF-8 编码
draw key 指令中key是一个数组的名字,其中的元素就是抽取项,也就指令中提到的牌 ,那么每一个数组就叫他牌组,复数的牌组写在一个文件里,即牌堆文件。
_key 不会在 draw keys 指令中显示
例如
{ "调查员属性": [
"调查员属性是——\n{_COC7th调查员属性}"
],
"_COC7th调查员属性": [
"力量[3d6*5] 敏捷[3d6*5] 意志[3d6*5]\n体质[3d6*5] 外貌[3d6*5] 教育[(2d6+6)*5]\n体型[(2d6+6)*5] 智力[(2d6+6)*5] 幸运[3d6*5]"
]}
中的 _COC7th调查员属性 就不会在draw keys命令显示
等同于把 draw xxx 指令执行的结果组合到原字符串中
例如:
{
"1":["1{2}"],
"2":["3"]
}
使用 draw 1 可能得到的结果为 13
例如:
{
"k":["{%k1}{%k1}{%k1}"],
"k1":["a","b","c"]
}
使用 draw k 可能得到的结果为 abc ,也可能是aaa
例如:
{
"k":["{k1}{k1}{k1}"],
"k1":["a","b","c"]
}
使用 draw k 可能得到的结果为 abc ,但不可能是aaa
目前只实现了单条指令不放回
里会先执行其中的投骰表达式 exp 再组合到原字符串里 ,支持DiceScript
例如 [1d100]
的结果可能是1,[$t玩家]
显示玩家名字
通常用于属性生成
{"COC7th调查员属性": [
"[$t玩家]的COC7th调查员属性\n力量[3d6*5] 敏捷[3d6*5] 意志[3d6*5]\n体质[3d6*5] 外貌[3d6*5] 教育[(2d6+6)*5]\n体型[(2d6+6)*5] 智力[(2d6+6)*5] 幸运[3d6*5]"
]}
输出的结果可能是
<TEXT>的COC7th调查员属性
力量50 敏捷35 意志50
体质65 外貌55 教育50
体型65 智力85 幸运65
表示权重 也就是概率
例如
{
"滚": [
"::999999::谜语人滚出去!",
"::1::谜语人可以留下来"
]
}
{
"1":[
"cq码发送图片[CQ:image,file=data/images/JOJO替身集/倒吊男.jpg]",
"seal方法发送图片[图:data/images/JOJO替身集/倒吊男.jpg]"
]
}
下面的格式并不是绝对需要的,但他们能使你编写的牌堆被更加的好用
{
"_title":["牌堆名字"],
"_author":["作者名"],
"_date":["发布时间"],
"_version":["牌堆版本"],
"_brief":["牌堆的简介"],
"_keys":["在draw keys中显示,其他的仍然可以抽出","key1","key2"],
"_export": ["在draw keys中显示,但其他不可以抽出"],
"key1":["然后就开始写吧!","v1","v2"]
}
假如你写的牌堆有着复杂的调用关系,或者有些项目不希望别人使用draw抽出,又或者单纯整理draw key格式
你才需要他们
假如有如下文件:
{
"_title":["牌堆名字"],
"_author":["作者名"],
"_date":["发布时间"],
"_version":["牌堆版本"],
"_brief":["牌堆的简介"],
"_keys":["key1","key2"],
"key1":["v1","v2"],
"key2":["v3","v4"],
"key3":["v5","v6"]
}
使用 draw keys 命令会有
key1/key2
其中 draw key3 指令依然是可用的,可以抽出v5、v6
假如有如下文件:
{
"_title":["牌堆名字"],
"_author":["作者名"],
"_date":["发布时间"],
"_version":["牌堆版本"],
"_brief":["牌堆的简介"],
"_export":["key1","key2"],
"key1":["v1","v2"],
"key2":["v3","v4"],
"key3":["v5","v6"]
}
使用 draw keys 命令会有
key1/key2
其中 draw key3 指令是不可用的,不可以抽出v5、v6
name:在这里填牌堆名字
author: 在这里填写作者名字
version: 这里版本号
command: 指令名字 也就是keys里的内容
desc: 牌堆的简介
includes:
#seal暂不支持 因此下面的可以无视
#用#号开头的是注释 不会影响牌堆 怎样写都可以
#includes是json牌堆没有的 意思包含的可抽取key 也就说你没必要通过_key来修饰keys命令了
#塔的抽牌格式是 deck command <可选的子命令>
- default # 这里等价与command项 抽取时是 deck command
- "key" # 子命令 抽取时是 deck command key
default:
- "{%key0}" # 与Dice恰好相反 这里是不放回 暂不支持
- "{%key1}" # 这是放回抽取 暂不支持
- "正常的元素" # 也就是被抽取的内容
key1:
- "开始写吧!"
仍旧建议随手学一下两种文件格式,并不难。
{
"key 也就draw指令后面跟的东西":[
"这是一个可能被抽到东西(后面叫他元素),如果是文字,必须被一对英文引号包裹住",
"第二个可能被抽到元素,记得给上面那个兄弟加个英文逗号",
"这是最后一个,这一个不能加逗号"
],
"key 如果不止一个key,写第二个key时记得给上面的[]后面加一个,":[
"如果没有再后面key了 ]后面就没有,号",
123456789,
"如上,纯数字可以不加英文引号",
"每一个key以及能通过他抽取的在这里都叫做牌组,一群牌组叫牌堆",
"最后记得用{}包裹住所有的牌组",
"这里还是建议用点好用的编辑器,别的不说,标点主动补成一对就和自动缩进很舒服",
"也能很直观的看到编码,牌堆编写请使用 UTF-8 编码",
"换行和缩进其实没有什么意义,主要是看着好看,但是",
"两个英文引号之间是不能换行的,这是完全不合语法的",
"补充:在牌堆中插入图片可以使用CQ码,比如这样",
"替身!!![CQ:image,file=data/images/JOJO替身集/倒吊男.jpg]",
"对于带图的牌堆,可以看看下面的'建议的格式'一节。"
"当然的,同样利用CQ码的语音、表情等等都可以这样",
"至于CQ码的详细内容,见 https://docs.go-cqhttp.org/cqcode "
]
}
{
"牌组之间的调用":[
"假如我想实现的抽取句子只有一点不同,比如下面",
"今天吃饼干",
"今天吃海豹",
"那么,你可以分开来写,比如下面"
],
"吃什么":[
"今天吃{食物}"
],
"食物":[
"海豹",
"龙",
"扁面蛸"
],
"放回和不放回":[
"显而易见的,{key}表示从牌组key中抽出一个元素合并到自己的元素中",
"上面的方法,我姑且称为'调用'。",
"上面的例子里,'吃什么'牌组调用了'食物'牌组",
"除了{key}之外,还有{%key}这种格式,含有%将采取放回抽取,否则为不放回抽取",
"seal目前没有实现不放回抽取,预计会实现针对群的不放回",
"自然的,要小心\"食物\":[\"{食物}\"]这种情况,无限的自我调用",
],
"特殊的符号":[
"你可能注意到我在上面用了一个怪怪的 \" 反斜杠+英文引号",
"因为引号在json里面已经用来表示一个文本了,所以不得不用 \" 来表示原本的意思",
"反斜杠表示转义,有了特别的表示,于是和引号一样,两个反斜杠才是真的反斜杠 \\ ",
"在上面说过两个英文引号之间不能换行
要输出里面换行就要用到换行的转义符 \n",
"你能看到上面的灰掉了,就是因为在引号之间换行了"
],
"多吃点海豹":[
"我想用 draw 多抽一点海豹来吃,怎么做",
"在古老的时代,那些人是这样做的",
"ctrl c+v",
"海豹","海豹","海豹","海豹","海豹","海豹",
"海豹","海豹","海豹","海豹","海豹","海豹",
"海豹","海豹","海豹","海豹","海豹","海豹",
"海豹","海豹","海豹","海豹","海豹","海豹",
"海豹","海豹","海豹","海豹","海豹","海豹",
"通过重复来调整概率,简直是可怕,幸好后来有了一个新东西",
"::1:: 两个英文冒号+数字+两个英文冒号写在文本前面表示权重,下面是例子",
"::23::海豹",
"可以简单理解为中间的数字表示重复几次",
"除此之外,在一些远古的牌堆,你还能看见"
],
"数字":[1,2,3,4,5,6,7,8,9,10],
"幸好我入坑晚点":[
"现在你不用专门写一个数字牌堆来生成随机数了",
"你可以[1d100]来表示1-100的随机数",
"[]里面可以填写任意合法(合法是符合语法)的投骰表达式",
"一些很实用的牌堆,比如调查员生成就是这样写,幸运:[3d6*5]",
"你甚至可以::[1d100]::来写一些随机的权重"
],
"_我不想给别人draw我的牌堆":[
"在key前面加一个_,变成_key",
"这样的牌组不可以使用draw指令抽取,但仍然可以通过{_key}调用",
"初衷大概就是修饰一下你的draw key指令",
"即前面有下划线的牌组不会在draw key中出现"
]
}
name: 在这里填牌堆名字
author: 在这里填写作者名字
version: 这里版本号
command: 指令名字 也就是keys里的内容
desc: 牌堆的简介
includes:
#seal暂不支持 因此下面的可以无视
#用#号开头的是注释 不会影响牌堆 怎样写都可以
#includes是json牌堆没有的 意思包含的可抽取key 也就说你没必要通过_key来修饰keys命令了
#塔的抽牌格式是 deck command <可选的子命令>
- default # 这里等价与command项 抽取时是 deck command
- "key" # 子命令 抽取时是 deck command key
default:
- "{%key0}" # 与Dice恰好相反 这里是不放回
- "{$key1}" # 这是放回抽取 暂不支持
- "正常的元素" # 也就是被抽取的内容
key1:
- "贴着一行的开头写key 然后打个英文冒号"
- "换行 打一个空格 打一个减号 然后是引号包裹的内容"
- "空格数量无所谓 但你要保证他们对齐 也就是同一层级"
key2:
- "呃" # 没了 其他编写牌堆的技巧看json的那里
Dice!牌堆编写:https://forum.kokona.tech/d/167-json-pai-dui-bian-xie-cong-ru-men-dao-jin-jie