骰子掷具

: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 计算,使用以帖子 ID 和创建时间戳为种子的随机数生成器(RNG),按帖子正文顺序依次生成。在帖子发布之前,掷骰结果不可见。

对掷骰结果应用了多种特殊格式样式,以便与帖子中的普通文本区分开来。但这并不能阻止人们直接发布图片!

掷骰结果 不会 自动保存到帖子正文中。这给存档需求带来了问题。解决此问题需要借助插件。

如果您需要在帖子中添加额外的骰子掷骰,必须将其添加在底部,以保留之前所有掷骰的结果。如果在帖子顶部添加新的骰子掷骰,将会重新随机化所有掷骰的结果。因此,帖子中 任何错误的掷骰 都会导致后续所有掷骰失效。

编辑器预览会告知您的骰子规格是 :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 crit 属性中的数值无效。(应为 crit=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 个赞