Obsidian 插件:Dice Roller

Obsidian 插件:Dice Roller

插件名片

  • 插件名称:Dice Roller
  • 插件作者:Jeremy Valentine
  • 插件说明:为你的笔记增加一点随机性,你可以通过插入特定语法的方式,在需要生成随机数字,字母地方,生成变动的数据,甚至是变动的笔记,用于你来随机回顾笔记。
  • 插件分类:[’ 搜索/排序 ’, ’ 界面相关 ’, ‘obsidian 插件 ’, ‘readme’]
  • 项目地址:点我访问
  • 国内下载地址:下载安装

概述

为你的笔记增加一点随机性,你可以通过插入特定语法的方式,在需要生成随机数字,字母地方,生成变动的数据,甚至是变动的笔记,用于你来随机回顾笔记。

原文出处

下面自述文件的来源于 Readme


Readme(翻译)

下面是 obsidian-dice-roller 插件的自述翻译

骰子掷放器

警告:我们正在所有 Javalent 存储库中开始将 Readme 转换为 Javalent 的插件文档。请收藏此链接,并在参考此 readme 之前首先查看该链接。

Obsidian.md 的内联骰子掷放器。

用法

只需在笔记中插入一个带有公式的代码块(例如 `dice: XdX`),在预览模式下,它将被替换为掷骰子结果。然后可以通过点击结果来重新掷骰子。

公式

骰子公式 可以在设置中添加,允许您为常用的掷骰定义别名。这适用于下面定义的 _ 所有 _ 骰子类型。

掷骰子

解析器支持任意数量的骰子或静态数字的加法、减法、乘法、除法和指数运算。在解析公式之前会移除空格。

它支持完整的运算顺序,所以甚至可以嵌套在括号中!

示例
`dice: 1d2`
`dice: 3d4 + 3`
`dice: 1d12 + 1d10 + 5`
`dice: 3d4+3d4-(3d4 * 1d4) - 2^1d7`

Dataview 集成

该插件对于数字骰子中的 Dataview 内联字段具有基本支持。

请注意,如果您有多个同名的内联字段,插件只会使用一个,并且无法控制它使用的字段 - 它将是由 Dataview 索引的最后一个字段。

示例:

field:: 3
field2:: 5

`dice: field`

`dice: 1d6 + field`

`dice: 1d6*field2 + field`

面可以作为一个原始数字或者一个 [min, max] 数组提供。

例子:`dice: 1d[3,5]` 将会掷出一个介于 3 和 5 之间的骰子。

省略值

既可以省略掷骰子的次数,也可以省略骰子的面数。

掷骰子的次数将默认为“1”。

骰子的面数将默认为“100”。

这些默认值可以在设置中更改。

百分位骰子

解析器支持百分位骰子。`dice: Xd%` 将掷出 X 个百分位骰子。

对于自定义百分比(例如用于旅行者的 1d66),您可以使用 XdX% - 请参阅 百分比修饰符

使用 `dice: XdF` 来掷一个 fudge/fate 骰子。关于这种类型的骰子的更多信息,请参见 这里

使用 `dice: 1dS` 来掷一个 Fantasy AGE 特技骰。结果将显示总点数以及如果成功的话特技点数。

骰子修饰符

解析器支持几种修饰符。如果骰子已经被修改,它将在工具提示中显示它是如何被修改的。

修饰符仅支持基本数字骰子。

如果修饰符有一个参数,如果未提供,默认为 1。

修饰符语法描述
最小/最大Xd[Y, Z]掷出一个最小为 Y,最大为 Z 的骰子。
保留最高k{n}/kh{n}保留最高的 {n} 个骰子。
保留最低kl{n}保留最低的 {n} 个骰子。
丢弃最低dl{n}丢弃最低的 {n} 个骰子。
丢弃最高dh{n}丢弃最高的 {n} 个骰子。
爆炸!{n}, !i骰子爆炸 {n} 次。如果提供了 i,将会无限次爆炸(最多 100 次)。
爆炸并合并!!{n}, !!i与爆炸相同,但爆炸的骰子在显示中被求和,而不是单独显示。
重新投掷r{n}, ri重新投掷最小的骰子 {n} 次。如果提供了 i,将会无限次重新投掷(最多 100 次)。
排序s(a), sd按升序或降序排序结果。
使唯一u骰子将重新投掷,直到所有结果都是唯一的。

最小/最大

创建一个自定义骰子,最小值为 Y,最大值为 Z。

示例

公式结果
dice: 4d[7, 8][7, 7, 8, 7]
dice: 1d[20, 20][20]

保持最高

语法:XdXk{n} / XdXkh{n}

保留最高的{n}个骰子。{n}是可选的,默认为 1。被丢弃的骰子将显示为 Nd。

示例

公式结果
dice: 2d20k / dice: 2d20kh[7d, 18] = 18
dice: 4d20k2 / dice: 4d20kh2[4d, 12, 15, 3d = 27

保持最低

语法:XdXkl{n}

保留最低的 {n} 次掷骰结果。{n} 是可选的,默认为 1。被丢弃的骰子将显示为 Nd

示例

公式结果
dice: 2d20kl[7, 18d] = 7
dice: 4d20kl2[4, 12d, 15d, 3] = 7

删除最低分

语法:XdXdl{n}

删除最低的 {n} 个骰子。{n} 是可选的,默认为 1。被删除的骰子将显示为 Nd

示例

公式结果
dice: 2d20dl[7d, 18] = 18
dice: 4d20dl2[4d, 12, 15, 3d = 27

最高分剔除

语法:XdXdh{n}

保留最低的 {n} 次掷骰结果。{n} 是可选的,默认为 1。被丢弃的骰子将显示为 Nd

示例

公式结果
dice: 2d20dh[7, 18d] = 7
dice: 4d20dh2[4, 12d, 15d, 3 = 7

爆炸

语法:XdX!{n|i}

如果提供了 {n}{i},则 Explode 将为每个最大骰子点数再掷一次。如果掷出的点数小于最大点数,或者已经进行了 {n} 次尝试,则停止掷骰。为了防止滥用,{i} 的最大次数为 100 次。

爆炸的骰子将显示为 N!

示例

公式结果
dice: 2d20![7, 20!, 8] = 35
dice: 2d4!3[3, 4!, 4!, 2] = 13
dice: 1d1!i[1!, 1!, 1!, ... , 1!, 1!, 1] = 100

爆炸与合并

等同于 explode,但是爆炸的骰子在工具提示显示中被合并。

示例

公式结果
dice: 2d20!![7, 28!] = 34
dice: 2d4!!3[3, 10!] = 13
dice: 1d1!!i[100!] = 100

重新投掷

语法:XdXr{n|i}

重新投掷最小的骰子。如果提供了 {n}{i},则会继续重新投掷,直到投掷出大于最小值的数字,或者已经尝试了 {n} 次。

重新投掷的骰子会替换其原始投掷结果,而不是像爆炸骰子那样添加新的投掷结果。

重新投掷的骰子在工具提示中显示为 Xr

示例

公式结果
dice: 2d20r[7r, 18] = 15
dice: 2d4r3[3, 3r] = 6
dice: 1d2ri[2r] = 2

自定义百分比骰子

语法:XdX%

自定义百分比骰子的类型。它将为提供的每个面位数字掷骰,并将它们组合成一个结果。

示例

公式结果
dice: 1d66%[6, 3] = 6,3
dice: 1d7367%[4, 2, 4, 1] = 4,2,4,1

条件

骰子条件

从版本 6.0.0 开始,骰子投掷支持条件参数。这允许您指定一组要求,其中骰子必须满足其中之一才能包含在投掷中。如果骰子满足此要求,它将被视为 1(通过),如果不满足,则视为 0(失败)。

此外,还可以提供 负等于 条件;如果骰子满足此要求,它将被视为 -1

支持以下条件:

条件效果
={n}仅当投掷结果等于 {n} 时才成功。
=!{n}*仅当投掷结果不等于 {n} 时才成功。
>{n}仅当投掷结果大于 {n} 时才成功。
<{n}仅当投掷结果小于 {n} 时才成功。
>={n}仅当投掷结果大于或等于 {n} 时才成功。
<={n}仅当投掷结果小于或等于 {n} 时才成功。
-={n}=-{n}投掷结果等于 {n} 将被视为 -1。

* 请注意,由于与 Explode 发生冲突,支持 !={n} 作为骰子条件。如果需要,请使用 =!{n}

修改器条件

ExplodeExplode and CombineRe-roll 修改器都支持可选的条件运算符。如果提供了条件运算符,它会改变应用修改器的骰子结果。

支持的条件:

条件效果
={n}仅修改等于 {n} 的骰子结果。
=!{n}仅修改不等于 {n} 的骰子结果。
>{n}仅修改大于 {n} 的骰子结果。
<{n}仅修改小于 {n} 的骰子结果。
>={n}仅修改大于或等于 {n} 的骰子结果。
<={n}仅修改小于或等于 {n} 的骰子结果。

这些条件可以完全链式使用。

示例

公式描述结果
dice: 1d4!=3爆炸骰子等于 3 的点数[4, 2, 3!, 2] = 11
dice: 1d4!i=!3无限次爆炸骰子不等于 3 的点数[4!, 2!, 3, 2!, 3, 2!, 1!, 4!, 3] = 24
dice: 1d4r<3重新投掷小于 3 的点数[4, 1, 2, 4] -> [4, 4r, 3r, 4] = 15
dice: 1d4r<2>3重新投掷小于 2 且大于 3 的点数[4, 1, 2, 4] -> [3r, 2r, 2, 2r] = 9

段落滚动器

骰子滚动器可以给出一个链接到一个笔记或标签,它将返回一个随机的块从笔记/笔记中。

这个功能仍在开发中,可能无法按预期工作。

Ctrl / Command - 点击结果将打开相关的笔记。

用法:

示例结果
`dice: [[Note]]`Note 返回一个随机块
`dice: 3d[[Note]]`Note 返回 3 个随机块

区块类型

Obsidian 有几种不同的区块类型。目前,插件的默认行为是从返回结果中过滤掉thematicBreakyaml

要返回特定的区块类型,可以在任何区块滚动器的末尾添加 |<type>。可以通过用逗号分隔它们来链接它们。

用法:

示例结果
`dice: [[Note]]|paragraph`返回 paragraph 区块
`dice: #tag|paragraph,heading,yaml`返回 paragraphheadingyaml 区块
`dice: #tag|-|paragraph,heading-3,yaml`单个随机笔记返回 paragraph、3 级 headingyaml 区块

我无法控制 Obsidian 将每个区块视为什么(例如,图像可能会被返回为 paragraph)。

相信 这是 Obsidian 中定义的区块类型列表,但请谨慎使用。

类型
blockquote
break
callout
code
delete
emphasis
footnoteReference
footnote
heading
html
imageReference
image
inlineCode
linkReference
link
listItem
list
paragraph
root
strong
table
text
thematicBreak
toml
yaml
definition
footnoteDefinition

标题

可以通过在类型的末尾添加大小来进一步筛选标题的大小:

`dice: [[Note]]|heading-2`

行滚动器

可以使用以下语法告诉骰子滚动器从任何笔记中返回一行随机内容:

`dice: [[Note]]|line`

注意:插件会过滤掉长度为零的行,但根据笔记内容,你可能仍然会得到“空白”行。

标签掷骰器

如果安装了 Dataview 插件,掷骰器还可以返回标签的结果。

默认情况下,这将从每个具有该标签的文件中返回 1 个结果。您可以在设置中更改此行为,或使用下面所示的可选的 +- 参数来更改。

如果返回了多个文件的结果,则可以通过点击块来重新掷骰该文件的结果。点击容器或骰子图标将重新掷骰所有返回的结果

标签掷骰器支持与上述相同的块类型参数。

示例结果
`dice: #tag`从具有 #tag 的笔记中返回一个随机块,行为取决于设置(默认为every
`dice: #tag|-`从具有 #tag一个随机笔记中返回一个随机块
`dice: #tag|+`从具有 #tag每个笔记中返回一个随机块

链接

如果“始终返回标签链接”设置打开,或者在标签末尾添加了“|link”,则会返回一个随机笔记的链接,而不是返回节。

目前,无论指定的投掷次数是多少,都只会返回一个链接。这可能会在以后的版本中发生改变。

表格掷骰器

掷骰器还可以给定一个链接到笔记中的表格,它将读取并返回表格中的随机结果。

用法:

在一个笔记中(比如 Note.md),创建一个表格,并可选择给它一个块标识:

Header
A
B
C

^block-id

然后,在骰子公式中,使用一个指向表格块引用的 wikilink:

`dice: [[Note^block-id]]`

插件将读取表格并返回一个随机结果。

要返回多个元素,在 wikilink 之前使用一个 dice公式

  • `dice: X[[Note^block-id]]`
  • `dice: 1d4+1[[Note^block-id]]`
  • `dice: Xd[[Note^block-id]]`

请注意,出于向后兼容的原因,d 被解释为 d1,而不是像常规骰子公式中的 d100

在预览模式下,您可以使用Ctrl + 单击结果,在新窗格中打开块引用。

多个表头

如果插件提供的表格有多个表头,除非您指定要使用的表头,否则插件将返回整行数据:

表头表头 2
AD
BE
CF

^block-id

`dice: [[Note^block-id]]|表头2`

查找表

通过将块 ID 传递给具有以下格式的表格,骰子掷子器也可以用作查找表:

| dice: 1d20 | 标题     |
| ---------- | -------- |
| 1-2        | 选项1   |
| 3-4        | 选项2   |
| 5-10       | 选项3   |
| 11         | 选项4   |
| 13,14      | 选项5   |
| 15-20      | 选项6   |

要求:

  1. 表格必须只有两列
  2. 第一列必须是有效的骰子掷子语法

表格掷子器将掷动提供的骰子公式,并返回匹配的结果。

选项也可以是一个掷子器(任何类型的)。这允许您嵌套掷子器:例如,您可以提供对不同宝藏表的引用,当返回宝藏表时,掷子器将从该表中获得随机结果。

示例:

| dice:1d% | 结果                                   |
| -------- | -------------------------------------- |
| 01–50    | 无                                     |
| 51–60    | `dice: [[Encounters^easy-encounters]]` |
| 61–100   | `dice: [[Encounters^hard-encounters]]` |

^encounter

`dice: [[ThisNote^encounter]]`

2D 表格滚动器

在表格滚动器的末尾添加“|xy”将返回表格中的一个随机单元格(而不是行),除非有一个名为 xy 的列

列表滚动器

骰子滚动器还可以在注释中给出一个列表的链接,它将读取并返回列表中的一个随机结果。

用法:

在一个注释中(比如 Note.md),创建一个列表,并可选择给它一个块标识:

-   a
-   b
-   c
-   d

^block-id

然后,在骰子公式中,使用一个指向表格的块引用的维基链接:

`dice: [[Note^block-id]]`

插件将读取列表并返回一个随机结果。

要返回多个元素,请使用:

`dice: Xd[[Note^block-id]]`

在预览模式下,您可以使用 Ctrl + 单击结果,以在新窗格中打开块引用。

工具提示

在预览模式下,当你将鼠标悬停在结果上时,会出现一个工具提示。

它在顶部显示用于计算结果的公式,并在底部显示计算出的结果。

保存结果

从 6.1.0 版本开始,可以使用 Globally Save Results 设置或以下语法保存骰子结果:

语法描述
dice+: ...保存结果。如果开启了 Globally Save Results,与 dice: ... 相同。
dice-: ...不保存结果。如果关闭了 Globally Save Results,与 dice: ... 相同。

替换笔记内容

可以使用 dice-mod: <formula> 语法告诉插件用计算得到的骰子结果替换笔记的文件内容。

插件将使用以下语法替换笔记的内容:

<formula> -> <full results> -> <combined results>

示例:

dice-mod: 3d100 + 12 => 3d100 + 12 -> [75, 20, 75] + 12 -> 182

默认情况下,插件会显示公式和结果。

可以通过在设置中关闭“修改时添加公式”或在 dice-mod 投掷中添加 |noform 来全局关闭此功能。

替换区块

如果在一个区块滚动器上使用 dice-mod 插件,该插件将尝试找到结果区块的区块 ID,以便可以嵌入其中。

如果该区块没有区块 ID,该插件将尝试为该区块创建一个区块 ID。这将修改正在滚动的文件。

骰子标志

可以附加到下面显示的骰子公式中的标志,可以修改骰子的行为方式。

不想在结果中看到骰子按钮吗?

您可以在设置中关闭它,或者在任何掷骰中添加 |nodice 来关闭它!

这两个标志可以用来控制是否在 dice-mod 滚动中显示骰子公式。

想要在笔记中掷骰子吗?

骰子掷子器 公式的末尾使用 |render 标志,插件将掷 3D 骰子来计算结果。

有关更多信息,请参阅 图形化骰子

这两个标志可以用来控制是否显示带有掷骰结果的骰子公式。

它们可以用于 dice-mod骰子机

可以在设置中全局开启或关闭,使用 显示带有结果的公式 来控制 骰子机,使用 使用修改骰子时添加公式 来控制 dice-mod

想要初始骰子值为平均值而不是随机值吗?

骰子掷子器 公式的末尾使用 |avg 标志,插件将使用骰子结果的平均值来初始化结果。

工具提示将指示结果为平均值并显示平均值。

示例:dice: 2d6+3|avg 给出结果 10,并在工具提示中显示 average: [3.5,3.5]+3

下一次掷骰将不再使用平均值,而是使用正常的随机骰子结果。另一方面,使用 Alt 键点击重新掷骰将强制使用平均值。

|none

想要在点击重新投掷图标之前不显示任何值吗?

骰子投掷器 公式的末尾使用 |none 标志,插件将使用空值初始化结果。

工具提示将指示结果为 none。

下一次投掷将使用随机骰子结果显示正常结果。另一方面,使用 Ctrl + 单击重新投掷将强制使用 none。

想要在笔记中不显示骰子结果的情况下掷骰子吗?

骰子掷子器 公式的末尾使用 |text(my text) 标志,插件将显示您的 ‘my text’ 并允许您点击它来触发掷骰子。

掷骰子的结果只在工具提示中可见。

例如,对于 DnD 的豁免投掷,请使用:dice: 1d20 + 2|nodice|text(Dexterity +2)。当将鼠标悬停在 Dexterity +2 上时,您将看到一个随机的豁免投掷结果(按照通常的方式点击重新掷骰子)。

骰子视图

该插件附带了一个可以添加到工作区的骰子视图。

如果你关闭了“启动时打开骰子视图”设置,或者关闭了骰子视图,可以使用命令面板中的“打开骰子视图”命令重新打开它。

骰子视图上有常见的 D20 骰子集的按钮,可以设置为带有优势或劣势的投掷,并且可以添加修饰符。

公式也可以直接在“骰子公式”文本框中编写。这些公式可以使用文本框下方的加号按钮保存,以便快速重新投掷。

图形化骰子

如果在设置中打开了“显示骰子视图投掷的图形”选项,或者在骰子公式中使用了 |render标记,则可以使用骰子视图来投掷 3D 骰子。

:pencil: 只有基本的 D20 套装(D4、D6、D8、D10、D12 和 D20)可以进行图形化投掷。

有关设置,请参见 图形化骰子

在其他插件中的使用

具有编写 JavaScript 能力的插件(如 DataView)可以通过访问 Obsidian 应用程序对象来与 Dice Roller 插件进行交互:

const diceRollerPlugin = app.plugins.getPlugin("obsidian-dice-roller");

一旦您获得了插件的实例,您可以使用 getRoller 方法生成各种类型的掷骰器,例如骰子掷骰器、标签掷骰器等:

//定义
getRoller(diceString: string, sourceFile: string = ""): Promise<Roller>;

//示例
const diceRoller = await diceRollerPlugin.getRoller("1d3+3d8");

数组滚动器

使用 JavaScript 接口可以使用一种特殊类型的滚动器,您可以直接传入一个您想要结果的数组。

//定义
getArrayRoller(options: any[], rolls: number = 1): Promise<ArrayRoller>;

ArrayRoller {
    /** 滚动数组滚动器并生成一组新的结果。 */
    roll(): Promise<any>

    /** 包含数组滚动器的容器元素的属性。使用此属性将其附加到笔记的DOM上 */
    containerEl: HTMLElement;

    /** 包含随机生成结果的数组的属性。每次滚动数组滚动器时,此属性都会更改。 */
    results: any[]
}

//示例
const diceRoller = await diceRollerPlugin.getArrayRoller([1, 2, 3, 4, 5], 2);

设置

通用设置

全局保存结果

该插件将尝试保存和重新加载所有骰子结果。可以使用 - 在骰子公式中进行覆盖,例如:`dice-: ...`

请注意,该插件将尝试保存。保存内联代码块的结果是棘手且困难的 - 插件必须记住每个骰子投掷在笔记中的位置,以便正确保存和重新加载结果。在 Obsidian 之外对笔记进行的任何更改都会导致插件丢失此状态,下次重新打开笔记时将重新投掷。

如果您需要永久结果,最可靠的方法是使用 dice-mod 投掷,它将实际修改底层笔记,使结果永久。有关更多信息,请参阅 替换笔记内容

骰子显示

设置控制骰子结果的显示方式。

显示带有结果的公式

用于计算结果的公式将与结果一起显示。

在结果旁边会出现一个骰子按钮,明显显示这是一个骰子掷子器。

在使用修改骰子时,将会在将结果写入笔记时附加计算结果的公式。

控制 骰子掷子 行为的设置。

默认表情

如果未指定表情,插件将使用此数字作为默认表情 - 有关更多信息,请参见 表情

四舍五入结果

确定在返回十进制数时的舍入行为。

始终渲染骰子

笔记中的骰子投掷结果将始终被渲染。使用 |norender 标记来阻止这种行为。

表滚动

设置控制 表滚动 的行为。

显示查找表结果

查找表结果将显示所掷的数字以及来自表格的结果。

滚动区段

控制 滚动区段 行为的设置。

在部分结果中添加“复制内容”按钮,允许您将该部分的注释内容复制到剪贴板中。

标签滚轮

控制 标签滚轮 行为的设置。

按标签滚动所有文件

将返回具有指定标签的每个文件的结果。如果关闭此设置,则将返回具有该标签的随机文件的结果。可以使用 `dice: #tag|-` 进行覆盖。

始终返回标签链接

标签滚动器默认情况下将像 链接滚动器 一样工作。此选项与指定 `dice: #tag|link` 相同。

骰子视图

在启动时打开骰子视图

骰子视图 将在启动时自动打开。否则,可以使用命令“打开骰子视图”来打开它。

图形化骰子的设置,用于控制其行为。

骰子视图 中进行的投掷将使用图形显示。

显示骰子图形的时间

控制骰子图形显示多长时间后消失。这应该是一个毫秒数。如果留空,则需要点击才能清除骰子。

骰子基本颜色

骰子文本颜色

骰子公式

骰子公式可以在设置中创建。公式必须被赋予一个别名;当插件检测到公式别名时,它将使用定义的公式进行投掷。这适用于所有类型的投掷。

安装

从 Obsidian v0.9.8 开始,您可以通过以下步骤在 Obsidian 中激活此插件:

  • 打开设置 > 第三方插件
  • 确保安全模式处于关闭状态
  • 点击浏览社区插件
  • 搜索此插件
  • 点击安装
  • 安装完成后,关闭社区插件窗口并激活新安装的插件

来自 GitHub

  • 从 GitHub 存储库的 Releases 部分下载最新版本
  • 从 zip 文件中提取插件文件夹到您的 vault 的插件文件夹:<vault>/.obsidian/plugins/ 注意:在某些机器上,.obsidian 文件夹可能是隐藏的。在 MacOS 上,您可以按 Command+Shift+Dot 来在 Finder 中显示该文件夹。
  • 重新加载 Obsidian
  • 如果提示安全模式,您可以禁用安全模式并启用插件。 否则,请前往设置,第三方插件,确保安全模式关闭,并从那里启用插件。

您可以按照相同的步骤来更新插件。

警告

该插件没有稳定性保证,可能会导致数据丢失的错误。

请确保您有自动备份。

TTRPG 插件

如果您正在使用 Obsidian 来运行/计划 TTRPG,您可能会发现我的其他插件很有用:



反馈交流

其他渠道

版权声明