2.3 用 Excel 编写牌堆

在一些牌堆中,存在大量的相同格式,如上述名为 PST 的词条,其内容完全为如下格式:

曲绘  [CQ:image,file=/Arcaea/crosssoul.jpg]
曲名  CROSS✝︎SOUL
曲包  Memory Archive曲目
曲师  曲师:HyuN
曲目  曲目:CROSS✝︎SOUL [PST]
难度  难度:4
物量  Note数:606
描述  魔能蛇曲

在这种情况下,笔者建议使用 Excel 进行编写。

花影塔罗 的牌堆为例,原始数据经过整理变成了如下的 Excel 表格(为节省篇幅仅仅给出部分内容)

我们只需将单元格内的文字连接成我们希望在 JSON 文件中所写的内容,这一点利用 Excel 的函数十分容易实现:

Excel 连接两个单元格内容或单元格与一段文字的连接

在 Excel 中,可以使用 & 进行两个单元格内容的连接,如连接上图中 A1B1 单元格并在 D1 单元格中输出结果,只需在 D1 单元格中输入:

=A1&B1

所得结果为:

Ace of Cups圣杯首牌

但是我们想要在中英文之间添加一个破折号,尽管可以通过在一个新的单元格中输入并按照上述方法连接,但如果需要添加多次,那创建太多列也不是好的选择。而 Excel 中,连接纯文本并非难事。为了使实现上述操作,我们可以改变一下公式:

=A1&"——"&B1

可以看到我们使用了 "——" 来添加了一个破折号。在 Excel 中,连接纯文本只需要使用 &"" 进行连接。

仍然需要注意的是,这里面的双引号也为半角字符,请注意切换你的输入法状态。

连接的字符有双引号怎么办?

由于 "" 被作为了函数的一部分,直接使用 """ 会导致 Excel 无法识别,因此我们需要对其进行转义, Excel 公式中用两个引号代表一个引号,如:

="abc""abc"

会得到 abc"abc

=""""&"abc"&""""

会得到字符串"abc"

如对示例表格中的数据进行连接得到如下 JSON 牌堆:

{
    "花影塔罗(部分)": [
        "Ace of Cups  圣杯首牌\n爱意初临、万物和谐的音律、只觉得刺痛、未来的悲伤、情怀和智慧之光、情感的律动",
        "Ace of Pentacles  星币首牌\n实现财富、保障生活的机会、辛勤工作带来的繁荣、健康和富贵、走出迷幻和梦境、进入现实的世界",
        "Ace of Swords  宝剑首牌\n绝对的正义、斩断阻碍真理的荆棘、智慧和公正、傲慢和狂躁",
        "Ace of Wands  权杖首牌\n创造力带来的无限可能、兴奋、激动、探险、带着勇气和信心开始冒险"
    ]
}

以第一行为例,我们需要在 Excel 中输入如下内容以转换为 json 格式

=""""&A1&"  "&B1&"\n"&C1&""","

再使用填充柄进行填充即可得到 JSON 格式的输出。请注意,这种方法需要注意删除最后一行的 , ,否则牌堆将会报错。

结语

当你看到这里,恭喜你,你已经是一个编写 JSON 牌堆的专业人士了,尽情为你的骰娘编写属于自己的牌堆吧!

本教程或许还有一些纰漏和未尽事宜,但如果你认真看完了,你大可以推测出我们没有想到并写在这份文档里面的内容。

感谢看到这里的你,也感谢所有为这份文档提供帮助的人w

15 天 后

最近在看json牌堆,有个问题想问一下。
如果我做了很多引用用的子牌堆(比如文中奶茶.json中的大小、甜度之类的),那么我的.help draw会变得非常冗长,而且用户可以绕过主牌堆直接抽子牌堆,有没有什么办法能让dice只显示主牌堆吗?
另外,我之前在master手册里看到

牌堆名以 “_” 开头时,无法直接使用 draw 命令抽取。

但是我实际试了一下,在牌堆名前加上"_ “后(”_甜度")还是会被显示在.help draw中并可以被直接抽取,是使用方法有问题还是这个功能本身不可用了呢?

    twfx1207
    关于概率实现问题:如果想要尽可能缩减牌堆体积并且保留概率实现,请尽快使用 563 及以上版本,其中添加了单独的概率实现方法。
    关于不可见牌堆问题:请确认你的版本(当然同样建议升级)

      Hikari Sakurai 我现在的版本是2.3.8Express10(556),由于563有一些文字编码问题就一直没升级。想问下不可见牌堆的正确写法是怎样的呢

        twfx1207 这么说还是不好确定,请附上你的具体版本,如 Dice! by 溯洄 Shiki.Ver 2.3.8Express10(556)[May 16 2020 12:54:18]

          Hikari Sakurai 我找到问题了,修改牌堆以后只用.system load不会重置缓存,需要重载插件。重载完以后牌堆就会正常隐藏了。

            twfx1207 如果你最开始没加下划线,然后加了下划线以后load的话,这是正常情况,因为load只会增加/修改条目而不会删除

            2 年 后
            说点什么吧...