骰子掷骰器

:discourse2: 摘要 Dice Roller 为您的 Discourse 帖子添加了一个功能丰富的骰子滚动器,满足您基于论坛的游戏需求!
:hammer_and_wrench: 仓库链接 https://github.com/discourse/discourse-dice
:open_book: Discourse 主题新手? Discourse 主题使用入门指南

安装此主题组件

:information_source: 管理员提示:安装后请考虑禁用 discourse narrative bot disable public replies 设置,因为此主题组件完全取代了机器人的骰子滚动行为。

:game_die: 基本用法

该主题组件会解析格式为 [wrap=dice] 的投掷指令。

[wrap=dice]d20[/wrap]
[wrap=dice]d100[/wrap]
[wrap=dice]2d6[/wrap]

您可以投掷多个同类型的骰子,应用加法修饰符,并自动将结果与成功阈值进行比对:

[wrap=dice]2d6+3t12[/wrap]

image

:woman_scientist: 高级功能:暴击、分割投掷

您可以使用 crit= 选项指定特定的 自然 投掷结果被视为“暴击”。暴击检查在加法修饰符应用之前进行。

[wrap=dice crit=1,100]1d100[/wrap]
[wrap=dice crit=1,20]d20+3[/wrap]

image

如果您的论坛中某些特定的暴击值具有特殊意义,管理员可以添加额外的 CSS 来强调它们。在此示例中,投出 1 的暴击值会被标红。

如果您允许对多个投掷结果进行同一阈值的检查,可以结合使用 i Individual(独立) 修饰符和 t Thresholds(阈值)。最终将汇总通过阈值的成功骰子数量。

[wrap=dice]5d100t60i[/wrap]
[wrap=dice]3d20-5t0i[/wrap]

:information_source: 目前显示的是修饰符应用前的投掷结果。未来可能会根据反馈进行调整。

:no_entry: 限制

为避免因过大的帖子内容造成恶意破坏,管理员可在 主题设置 中调整每次投掷允许的最大骰子数量。默认值为 80 个骰子。

不允许 0 面或 1 面骰子。不允许投掷 0 个骰子,出于性能原因,也不允许面数超过约 6700 万的骰子。

:gear: 技术细节与作弊防范

投掷结果使用 JavaScript 计算,随机数生成器(RNG)以帖子 ID 和创建时间戳作为种子,按顺序遍历帖子正文。在帖子创建之前,投掷数值不可见。

会对投掷应用几种特殊的格式样式,以将其与帖子中的普通文本区分开来。但这并不能阻止人们发布图片!

投掷数值不会自动保存在帖子正文中。这对存档需求构成了问题。解决此问题需要使用插件。

如果您需要在帖子中编辑额外的骰子投掷,它们必须添加在底部,以保留之前所有投掷的结果。在帖子顶部添加新的骰子投掷将会随机化所有投掷的结果。因此,如果帖子中存在任何错误的投掷,将导致后续所有投掷无法正常工作。
编辑器预览会告诉您骰子规格是 :game_die: 正确还是 :warning: 错误。

虽然这些措施有助于防止意外作弊,但蓄意作弊者可能会尝试预测提交帖子的时间。如果您打算将其用于任何有价值的用途,请让无法获得奖励的可信用户发布帖子,或使用独立来源,例如 https://random.org,该网站提供用于可审计抽奖和抽彩的付费服务。

记得要玩得开心

设置

名称 描述
max dice
翻译 默认值
dice.result.success_count.one (%{count} 次成功)
dice.result.success_count.other (%{count} 次成功)
dice.excessive.quantity.one 骰子数量过多(最大 %{count})
dice.excessive.quantity.other 骰子数量过多(最大 %{count})
dice.excessive.faces 骰子面数不能超过 67,000,000
dice.missing.faces 无效的骰子规格:缺少面数
dice.invalid.generic 无效的骰子规格。格式示例:2d20+3
dice.invalid.quantity 骰子数量不能为 0
dice.invalid.faces 骰子面数不能为 0 或 1
dice.invalid.modifier 修饰符不能为 0
dice.invalid.threshold 阈值不能为 0
dice.invalid.crits crits 属性中的数字无效。(应为 crits=4,5,6)
dice.invalid.halt_after_error 由于之前的错误,投掷已停止。请修复错误以查看结果。

:discourse2: 由我们托管? 主题组件可在我们的标准版、商业版和企业版计划中使用。

33 个赞

如果您有兴趣在 Discourse 中使用 AI 角色实现更通用的掷骰子功能,我在我管理的社区中进行了此操作,效果非常好。我设置了一个 AI 角色,允许它使用“随机选择器”工具,将“最大上下文帖子”设置调整为 1,并为其提供了以下说明:

我将该角色与一个用户(在本例中为 @dice)连接起来,因此可以通过在任何帖子中说类似 @dice 3d6 的内容来调用它,机器人将回复结果。你可以在我社区的这个主题中看到它的实际效果(如果你对桌面游戏感兴趣,欢迎加入该社区 - 它仍然很新)。

当然,这使用了 AI,因此需要 LLM API 密钥。我使用的是 GPT-4o-mini,因此成本非常低,特别是考虑到我目前的用量。

5 个赞

对于有兴趣的人,我已将原始组件更新为新的 API。我不想使用 LLM 来掷一个简单的骰子,也不想使用机器人,我非常喜欢原始组件……

无论如何,我不得不请 Claude 帮忙,所以如果有人发现 AI BLABLABLA,是的,你说对了,我承认。我用它了。

对于那些仍然感兴趣的人,我正在托管分支(原始 git 已存档)。

期待反馈和批评(甚至侮辱,我不在乎)。

4 个赞