客户端游戏 活跃维护

DiceParser

Rolisteam/DiceParser

强大的掷骰器可用作 Discord 机器人、IRC 机器人、命令行工具以及在 Rolisteam 中使用:1d20 4, 1L[head,arm,leg,belly,chest], 1d6 1d8, 8 5*3

134
Stars 标星
31
Forks 分支
9
Watchers 关注
13
Open Issues
C++
主要语言
GPL-3.0
开源协议
1.4 MB
仓库大小
6 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Rolisteam/DiceParser
git clone https://github.com/Rolisteam/DiceParser.git
git clone git@github.com:Rolisteam/DiceParser.git
README.md master

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。

骰子解析器

Rolisteam 骰子解析器运行骰子命令。它可在多个平台上使用。语法简单而强大。

完整文档在这里

邀请加入你的 Discord 服务器

许可

  • GPL 第三版

功能

  • 99.9% 正常运行时间
  • 掷任何类型的骰子
  • 可自定义前缀
  • 自定义别名/宏以改善游戏体验
  • 管理彩色骰子
  • 多种运算符

示例:

3D100

掷3个百面骰

10D10e[=10]s

掷10个十面骰,10触发爆炸,并对结果进行排序。

100291D66666666s

掷100291个66666666666面骰并对结果进行排序

15D10c[>7]

掷15个十面骰,并统计大于7的骰子数量

1D8 2D6 7

掷1个八面骰并将结果加上2个六面骰的结果,再加7。

D25

掷1个二十五面骰

88-1D20

88减去1个二十面骰的点数

8+8+8

计算:24

100/28*3

计算:100/28 = 3 3*3 = 9

更多示例在:https://invent.kde.org/rolisteam/rolisteam-diceparser/-/blob/master/HelpMe.md

语法

语法大概是这样的:

Program =: Instruction [InstructionSeparator, Instruction]* Comment
InstructionSeparator = ;
Instruction =: Expression ([Operator, Expression]* | [Option]*)
Operator =: ScalarOperator
Expression =: OpenParenthesis Expression closeParenthesis
| Option*
| [Operator, Expression]*
| Operand Dice
| Command
| function
| NodeOperator [Option]*
| ValuesList
| Dice (Operand == 1)
Operand =: DynamicVariable | Number | String
OpenParenthesis = (
closeParenthesis = )
OpenList = [
CloseList = ]
ListSeparator = ,
ValuesList=: OpenList (DynamicVariable | Number)? [ ListSeparator,(DynamicVariable | Number)]*  CloseList
Dice =: DiceOperator [uniqueValue] DiceParameter
DiceOperator =: D ParameterDice | L ParameterList
DiceParameter =: ParameterDice | ParameterList
ParameterDice =: Number|Range
ParameterList =: List
List=: OpenList String[Probability] [ListSeparator,String[Probability]]* CloseList
Probability=: OpenList (Range|Percentage) CloseList
Percentage =: number
function =: functionName OpenParenthesis [function_args] closeParenthesis
function_args =: Instruction [InstructionSeparator, Instruction] | Operand | ValidatorList
functionName =: repeat
Option =: Keep
| KeepAndExplode
| Filter
| Sort
| Count
| Reroll
| RerollUntil
| RerollAndAdd
| Explode
| Merge
| Bind
| Occurences
| Unique
| Paint
| If
| Split
| Group
Range =: OpenList Number RangeSeparator Number CloseList
RangeSeparator =: ..
ScalarOperator =: [x,-,*,x,/,**]
number =: [-] [0-9]+ | constantValue
OpenVaribale=: ${
CloseVariable=: }
constantValue =: OpenVaribale (id | label) CloseVariable
id=[_,a-z][_,A-z,0-9]* # must respect rules of QML id
label=.*
variable = OpenVaribale [0-9]+ CloseVariable
ValidatorList =: OpenList CompareMethod Validator [LogicOpetator CompareMethod Validator]* CloseList
LogicOpetator =: AND | XOR |  OR
CompareMethod =: Each |  All | Scalar | ANY
Each=:
All=: *
Scalar=: :
ANY=: .
AND =: &
XOR =: ^
OR =: |
Ascendant=:l
Validator =: BooleanValidator | RangeValidator | OperationValidator
CompareOpetator =: = | > | >= | < | <= | !=
RangeValidator =: Range
OperationValidator =: Modulo operandNode BooleanValidator
Modulo =: %
BooleanValidator =: [=]Operand | [CompareOpetator Operand]
ListOfValue=: String[Range],ListOfValue | String[Range]
String =: .*[^ListSeparator]
Keep =: k[Ascendant] Number
KeepAndExplode =: K[Ascendant] number
Filter =: f ValidatorList
Sort =: s[Ascendant]
Count =: c ValidatorList
Reroll =: r ValidatorList
RerollUntil =: R ValidatorList
RerollAndAdd =: a ValidatorList
Merge =: m
Bind =: b
Occurences =: OccurencesWidth ( ListSeparator  number | ValidatorList)
OccurencesWidth =: number
unique =: u
Painter =: p PainterParameters
PainterParameters =: OpenList PairColorOccurence [ListSeparator , PairColorOccurence]* CloseList
PairColorOccurence =: Color PairSeparator Number
PairSeparator =: :
If =: i [compareMethod] ValidatorList Bloc[Bloc]
compareMethod =: OnEach | OneOfThem | AllOfThem | onScalar
OnEach =: ''
OneOfThem = '.'
AllOfThem = '*'
onScalar = ':'
Bloc =: OpenBranch Expression CloseBranch
OpenBloc =: {
CloseBloc =: }
Split =: y
Group =: g Number
Sort =: s
Group =: number
Explode =: e ValidatorList
NodeOperator = Jumpbackward
Jumpbackward =: @
Merge =: m | m Expression
Command =: help | la
uniqueValue = u
Comment =: StartComment String
StartComment =: #

编译

git clone --recursive https://invent.kde.org/rolisteam/rolisteam-diceparser.git
cd rolisteam-diceparser
mkdir build
cd build
cmake ../ -DBUILD_CLI=ON
make
sudo make install
本站来源与版权声明
  • 本文标题:DiceParser - 强大的掷骰器可用作 Discord 机器人
  • 本文链接:https://www.cn121.com/clientgame/rolisteam-diceparser.html
  • 原项目:Rolisteam/DiceParser 版权归原作者 Rolisteam 及贡献者所有
  • 收录信息:本站于 2026-10-05 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 GPL-3.0(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 Rolisteam/DiceParser。
  • 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。