核心指令
本节内容
本节将介绍海豹核心的核心指令。
核心指令是无法被关闭的指令。与之相对的概念是扩展指令,扩展指令可以被关闭。
.master 骰主指令
此指令只能由具有 Master 权限的用户使用。
.master add @A 为 A 添加 Master 权限。
.master del @A 移除 A 的 Master 权限。
.master list 查看当前 Master 权限列表。
.master relogin 30 秒后重新登录。
.master reboot 重新启动海豹核心(需要二次确认)。
.master checkupdate 检查并进行远程更新(需要二次确认)。
.master unlock <解锁码> 清空 Master 权限列表,并给自己重新添加 Master 权限。
注意:保护好你的骰子
我们认为,拥有海豹核心的最终判定方式是可以接触到 WebUI。因此,该解锁码仅能通过 WebUI 的「综合设置 - 基本设置」获取。
你可以将 Master 权限授予若干位维护人员。但是,确保只有你完全信任的人能够接触到你骰子的 WebUI 与本地文件。
如果你的 WebUI 可以通过公开互联网访问,确保你设置了合适的密码。
.bot 骰子管理
你必须 AT 骰子账号,才能使用 bot 命令。为了简单,在以下示例中略去 AT 的部分。
示例
.ext 扩展管理
除了本节所述的「核心指令」之外,海豹的其他功能都作为「扩展」提供。每一个扩展提供若干指令和其他功能,并可以单独开关。你可在每个群聊中启用不同的扩展。
.ext <扩展名> (on|off) 开启、关闭指定扩展。
.ext <扩展名> 查询指定扩展的信息。
.ext list 查看扩展列表和开启情况。
目前,海豹提供 7 个内置扩展,它们的详细信息在本章的后续内容中逐一介绍。同时,海豹核心也支持通过装载 JavaScript 脚本添加第三方扩展。
示例
可以在 UI 界面中「综合设置 - 基本设置」的最底下,设置各个扩展及其指令的默认开启状态。
.r 骰点
.r <表达式> (<原因>)
别名:.roll
常用示例
示例
或许你已注意到,.r 指令的表达式在不包含骰子算符时,相当于计算器。海豹的计算只支持整数,出现的小数被立即舍弃。
多轮骰点
示例
在骰点中使用属性值
你可在表达式中包含属性值或其他变量。
示例
此时木落的侦查技能点是 53
奖励骰与惩罚骰
CoC 规则中,对于百分骰的一种补偿骰法,通过额外骰一定数量的十位骰,选择组成的最好结果或最坏结果。
示例
优势骰与劣势骰
D&D 规则中对 20 面骰的一种补偿骰法。额外骰一次,取较高或较低结果。
示例
优势骰与劣势骰也可使用通用的表达式表达
示例
fvtt 骰点兼容
示例
fate 命运骰
一种特殊的六面骰,六个面分别为 -、-、0、0、+、+,分别代表 -1、0、1。
骰点时投掷 4 次,加在一起为结果。
示例
WOD 骰点
WOD 骰点规则是一个多轮骰点规则,国内多见于无限团。
进行 WOD 骰点需要设定以下参数:骰池数量 X、加骰线 Y、骰子面数 Z、成功线 N,其中 X Y 是必须的,成功线默认为 8,骰子面数默认为 10。
骰 X 个 Z 面骰,每有一个大于等于成功线 N 的骰,成功数加 1,每有一个大于等于加骰线 Y 的骰,加骰数加 1,进入下一轮。
在第二轮中,骰上一轮中加骰数个 Z 面骰,重复进行计算。以此类推。
最后计算总计成功数。
表达式形如 XaY[mZ][kN]。其中的大写字母用相应参数替换。
示例
在计算过程中,每一轮骰点被包含在一对花括号 {} 中;达到加骰线 Y 的骰点用 <> 标记;达到成功线 N 的骰点用 * 标记。
你可指定 Y = 0,这时不进行加骰而只骰一轮。
你可将 kN 替换成 qM,这时,最终计算的是小于等于 M的骰子总数。
示例
双十字骰点
双十字规则是一种多轮的骰点规则。
进行双十字骰点需要设定以下参数:骰池数量 X、暴击线 Y、骰子面数 Z,其中 X Y 是必须的,骰子面数 Z 默认为 10。
骰 X 个 Z 面骰,出目大于等于暴击线的骰子称为此骰子「暴击」。只要存在暴击的骰子,就称本轮暴击,进入下一轮;否则计算最终骰点。
第二轮中,骰 上一轮中暴击的骰子数 个 Z 面骰,统计暴击数,判断进入下一轮或结束。以此类推。
最终的骰点结果为:暴击轮数 * 10 + 最后一轮中最大点数。
表达式形如 XcY[mZ]。其中的大写字母用相应参数替换。
示例
在计算过程中,每一轮骰点被包含在一对花括号 {} 中;达到暴击线 Y 的骰点用 <> 标记。
混合运算
以上所有骰法,加、减、乘、除、乘方等 5 个数学运算,以及括号 () 可以被组合使用,以进行更复杂的运算。
示例
特别地,上文所述的「骰法」d b p f a c 均可作为运算符使用。
示例
.rh 暗骰
这个指令的格式与普通骰点 .r 完全相同,区别在于发送骰点结果的方式。
在发送指令的群聊中,海豹核心会进行提示,但提示不包含骰点结果。
骰点结果将由海豹核心私聊给指令发送者。
收不到结果?
在 QQ 平台上,如果你不是海豹账号的好友,将无法进行私聊。也就无法收到暗骰结果。
示例
.rx / .rxh 特殊骰点
这个指令的格式与普通骰点 .r 完全相同,区别在于允许额外 AT 其他人,以使用对方的属性。
这种操作称为「代骰」,你会在许多其他指令中看到代骰用法。
示例
此时木落的侦查是 75,Szz 的侦查是 80
.nn 角色名设定
.nn 查看当前角色名。
.nn <角色名> 修改角色名,角色名中不能带有空格。
.nn clr 重置角色名,即,将角色名设置为 IM 平台的昵称。
角色名被用于在进行各种操作和记录 Log 时显示。
示例
.pc 角色卡管理
信息
为了使用这个指令,需要先介绍海豹核心管理你角色卡的方式。
在每个群聊(对于这里,私聊也被认为是一个特殊的群聊)中,你都自动拥有一张独立的角色卡。这些角色卡互相无任何影响。
你还可以拥有若干与特定群聊无关的角色卡,这些角色卡可以被绑定到任意数量的群聊。这时,绑定的群聊中角色数据互相同步,在一处的修改就会影响其他各处。
pc 指令的作用是管理上述第二种群聊无关角色卡。
.pc new <角色名> 新建一张角色卡,并绑定到当前群聊。
.pc tag <角色名> 将指定角色卡绑定到当前群聊。
.pc tag 不带有角色名参数,将本群的绑定关系解除。你在本群的角色将会恢复为独立卡的数据。
.pc untagAll <角色名> 将指定角色卡从其绑定的所有群解绑。
.pc list 列出你所保存的所有角色。
.pc save (<角色名>) 将你当前群聊中的独立卡数据保存为个人角色卡。你可指定保存的角色名,如不指定,将使用当前群聊中你的角色名。
.pc load <角色名> 使用指定角色卡的数据覆盖当前群聊的独立卡。这不会将角色卡绑定到当前群聊。
.pc del/rm <角色名> 删除指定角色卡。
.find 词条查询指令
海豹核心默认搭载了 CoC 的《怪物之锤》、《魔法大典》和 D&D 规则的一系列资料。这些资料在海豹的 data/helpdpc 目录下的不同文件中被整理成词条,并支持使用此指令进行查询。
.find (#<分组名>) <关键字> 用关键字进行词条查询;如果提供了分组名,则只在指定分组中进行查询。
「分组名」是指海豹 data/helpdoc 目录下的子目录名。对于内置的帮助文档,分组名分别是「COC」和「DND」。
别名:.查询
查询功能在不同设备上的实现是不同的。在 x86 设备上,海豹核心使用稍微更多的内存使用全文搜索,这赋予了查询指令强大的获取能力。在其他平台上,由于搜索库的限制,海豹核心使用词条标题模糊搜索。
从 v1.4.2 版本起,你可以在 WebUI 的「扩展功能 - 帮助文档」中设置分组的别名。
指定默认查询分组 v1.4.2
从 v1.4.2 版本起,海豹支持在每个群组中分别设置默认的查询分组。
.find config --group 查看当前群组的默认查询分组。
.find config --group=<分组名> 设置当前群组的默认查询分组。
.find config --groupclr 清除当前群组的默认查询分组。
示例
全文搜索
示例
因为多个文本匹配度相近,因此没有列出最佳匹配条目的正文内容。用这条指令可以查看:
示例
这么好用,那代价是什么呢?
更多的内存占用和变慢的启动速度。
大致来说,每 1 MB 帮助文本会产生约 15 MB 额外内存占用。
快速文档查找
示例
致谢
CoC《怪物之锤》的整理者为:蜜瓜包、October;
CoC 魔法大典的整理者为:魔骨、NULL、Dr.Amber;
D&D 系列资料的整理者主要为 DicePP 项目组成员,包括Farevell、梨子、花作噫、邪恶、惠惠、赵小安等。
这些资料的原始出处和译者很多已经不可考,此处无法一一列出,甚为遗憾。
也在此感谢一代又一代无名作者和译者做出的工作。
.help 帮助指令
.help (<词条名>) 显示指定词条的帮助文档。
.help reload 重新装载帮助文档。仅 Master 可用。
.send 向骰主发送消息 / 回复消息
.send <消息内容>
拥有 Master 权限的用户将看到消息内容和发送者的 IM 账号,如果是来自群组,也能看到群号。
示例
.send to <对方ID> <消息内容>
Master 可以通过这个指令进行回复。目标 ID 可以是群号,也可以是个人的 IM 账号。将收到的消息中的对应 ID 复制到此处即可。
示例
.set 设定默认骰子面数 / 设定游戏系统
.set info 查看当前默认骰子面数。如果从未设置过,将显示为「0」。
.set dnd 设置群内骰子面数为 20,并自动开启 D&D 扩展。
.set (coc|coc7) 设置群内骰子面数为 100,并自动开启 CoC 扩展。
.set <面数> 设定群内默认骰子面数。
.set <面数> --my 设定个人专属默认骰子面数。
.set clr 清除群内骰子面数设置。
.set clr --my 清除个人骰子面数设置。
如果通过「规则模板」机制添加了自设规则,并有相关配置,可以使用 .set <规则名> 切换为对应规则的默认骰面数。你可以通过 .set help 来查看当前可用的关键字。
示例
.botlist 机器人列表
这个指令用于标记同一群聊内的其他机器人。
当一个账号被标记后,对于与 TA 相关的消息,海豹核心会按以下规则进行忽略:
- 如果 TA 被 AT,忽略;
- 如果是 TA 发出的消息,忽略。
这可避免机器人互相响应造成的危险的循环。
.botlist add @A @B @C 标记 A、B、C 为机器人。
.botlist add @A @B --s 同上,不过骰子不会做出回复。
.botlist del @A @B @C 去除 A、B、C 的标记。
.botlist list 查看当前标记列表。
.welcome 新人入群欢迎
.welcome (on|off) 开启、关闭功能
.welcome show 查看当前欢迎语
.welcome set <欢迎语> 设定欢迎语
.ping 指令响应测试 v1.4.2
从 v1.4.2 版本起,海豹支持 .ping 指令,用于指示海豹回复你一条消息。
.ping 海豹回复你一条消息。
为什么要有这个指令?
对于绝大多数情况,这个指令似乎都没有实际作用。事实上,这个指令的存在是为了解决 QQ 官方 Bot 在频道私聊中的以下问题:
如果你向机器人连续发送 3 条频道私聊消息而没有收到回复,在机器人回复你之前,你将无法继续发送频道私聊消息。 而机器人并不会主动向你发送消息,这就造成了死锁。
此时,你可以在频道中向海豹核心发送 .ping 指令,海豹核心会在频道私聊中回复你,以打破死锁。
提示
如果出现类似场景,可以发现 QQ 会提示你已经禁止再向骰子发送私聊消息,要求在骰子回应后才能再次发送。
但用户已经无法再通过私聊发送正确的指令,触发骰子的回应了。
此时,用户可以去频道公屏发送一个 .ping 指令。
.alias 定义快捷指令 & .& 使用快捷指令 v1.4.3
从 v1.4.3 版本起,海豹支持使用.alias 定义快捷指令。同时使用 .&/.a <快捷指令> 触发快捷指令。
.alias <别名> <指令> 将 .&<别名> 定义为指定指令的快捷触发方式。在群聊中默认定义群快捷指令。
.alias --my <别名> <指令> 将 .&<别名> 定义为个人快捷指令。
.alias del/rm <别名> 删除快捷指令。在群聊中默认删除群快捷指令。
.alias del/rm --my <别名> 删除个人快捷指令。
.alias show/list 显示目前可用的快捷指令。
使用快捷指令的方式如下,支持携带参数:
.& <别名> [可能的参数] 或 .a <别名> [可能的参数]
海豹支持 个人快捷指令 和 群快捷指令 两种模式:
- 个人快捷指令:与用户关联,定义后用户可以在私聊、骰子所在的所有群进行使用。
- 群快捷指令:与群关联,定义后该群内所有人都可以使用。
快捷指令示例