Giter Club home page Giter Club logo

draw's Introduction

README.md

如何获取牌堆文件

如何下载:

如何使用github下载文件?

如何使用牌堆

牌堆怎么加到SEALDICE里

对于SealDice 1.0.2 v20220820之后的版本

  • 打开你的webUI,依次点击综合设置、牌堆管理,在设置的那一栏中选上传即可。

  • 如果是非SealDice格式(*.deck)的牌堆压缩包,请参照旧版本放置方式。

对于 SealDice 1.0.0 v20220718dev 之后的版本

  • 打开你的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

https://www.sublimetext.com/

或者在线JSON 或者YAML 编辑网站

下面网站只做例子,请使用搜索引擎来获取可能更好的网站

在线JSON

在线YAML

牌堆编写请使用 UTF-8 编码

draw key 指令中key是一个数组的名字,其中的元素就是抽取项,也就指令中提到的牌 ,那么每一个数组就叫他牌组,复数的牌组写在一个文件里,即牌堆文件。

特别的

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命令显示

字符串中的 {xxx} 有特殊意义

等同于把 draw xxx 指令执行的结果组合到原字符串中

例如:

{
      "1":["1{2}"],
      "2":["3"]
   }

使用 draw 1 可能得到的结果为 13

{%key} 放回抽取

例如:

 {
      "k":["{%k1}{%k1}{%k1}"],
      "k1":["a","b","c"]
  }

使用 draw k 可能得到的结果为 abc ,也可能是aaa

{key}不放回

例如:

  {
      "k":["{k1}{k1}{k1}"],
      "k1":["a","b","c"]
  }

使用 draw k 可能得到的结果为 abc ,但不可能是aaa

目前只实现了单条指令不放回

字符串中的[exp]

里会先执行其中的投骰表达式 exp 再组合到原字符串里 ,支持DiceScript

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::谜语人可以留下来"
    ]
}

字符串里可以插入CQ code 和 其他 Seal 在回复中支持的写法

   {
       "1":[
           "cq码发送图片[CQ:image,file=data/images/JOJO替身集/倒吊男.jpg]",
           "seal方法发送图片[图:data/images/JOJO替身集/倒吊男.jpg]"
       ]
   }

建议的格式

下面的格式并不是绝对需要的,但他们能使你编写的牌堆被更加的好用

JSON牌堆

{
    "_title":["牌堆名字"],
    "_author":["作者名"],
    "_date":["发布时间"],
    "_version":["牌堆版本"],
    "_brief":["牌堆的简介"],
    "_keys":["在draw keys中显示,其他的仍然可以抽出","key1","key2"],
    "_export": ["在draw keys中显示,但其他不可以抽出"],
    "key1":["然后就开始写吧!","v1","v2"]
}
对于_keys 和 _export

假如你写的牌堆有着复杂的调用关系,或者有些项目不希望别人使用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

YAML牌堆

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:
  - "开始写吧!"

不在乎原理的编写教学

仍旧建议随手学一下两种文件格式,并不难。

https://www.runoob.com/json/json-tutorial.html

https://www.runoob.com/w3cnote/yaml-intro.html

基本

{
    "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中出现"
    ]
}

YAML格式

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

塔系牌堆编写:https://sinanya.com/#/doc/deck

draw's People

Contributors

f44r avatar fy0 avatar kagangtuya-star avatar nodisease avatar voleurr0se avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.