[Oliva]青果扩充手册(进阶)

For Oliva.1.2.11

世界是属于每一个人的。要创造一个充满逻辑并尊重每一个人的世界。 ——《Новый Элемент Расселения》A.D.1960 Москва

DIXE(OLIVADICE)

欢迎使用由仑质(BenzenPenxil)所发布的青果扩充核心 Oliva Dice!,在使用本核心前,你应当已经是一个能够处理较为复杂问题的骰主,并且已经充分阅读了Dice! Version 2 文档,如果没有,请先阅读那份文档,本文档将不会对那份文档中所提到的各类特性进行说明,日后会考虑单独编写文档,这要取决于实际情况。

青果扩充核心 Oliva Dice!是由仑质(BenzenPenxil)基于已有的Dice!V2核心进行代码层的修改后进行发布的分支版本,该项目的代码仓库与分支地址为lunzhiPenxil/Dice - Oliva。 该版本核心会引入一些本人认为足够好,同时又不够成熟到提交到其它分支版本的功能,并针对一些特定场景进行优化,如果你不清楚这些改动的意图与初衷,或者觉得这些改动不符合你的想法,请确保你能够以合理的方式清晰有条理地使用现代汉语(简体中文 - 北京)提出意见,否则请认为 “这个垃圾的修改版本实在是太难用了!我还是继续用原来那个版本比较好”

如果你对本页面内容都没有价值观性质的疑问的话,欢迎加入仑质的青果用户群讨论本分支版本相关内容。

  • [青果铺] 661366095

  • [青果批发车间] 828786809 官方骰娘小青果酱的用户群

想要获取最新当前最新版本,请在此处下载:

或者你可以使用备用链接:

本核心扩充功能如下:

优化过的黑名单相关机制

1.2.2:漏洞修复 1.2.4:云黑名单漏洞修复

Dicelist相关调整

Shiki分支的Dice! 核心在某版本引入了Dicelist概念,这是一种为黑名单信息广播所设计的自动授权系统,由简单的静态页面API实现信息的发布,核心会在初始化阶段拉取相关API的信息以设置本机的Dicelist名单,将会在BelieveDicelist项为1时接受该名单上的账号所发送的黑名单信息,该API的具体地址为:http://shiki.stringempty.xyz/DiceList/ 本核心在此基础上引入了一个基于Github Pages的静态页面API,地址为:http://benzenpenxil.xyz/Oliva-DiceList/ 并且设置了相关配置项用于调整Dicelist的拉取

上传云记录相关调整

Shiki分支的Dice! 核心在某版本引入了对于黑名单的云记录,具体细节为:

  • 任何CloudBlackShare设置为1的骰娘在触发自动拉黑后会通过简单的POST指令对一个设置为shiki.stringempty.xyz域名的基于PHP的服务器进行无鉴权的数据上传

  • 任何CloudBlackShare设置为1的骰娘在完成上传后服务器会返回一个值,该值将作为黑名单信息广播广播时的wid项(该称呼可能随时间推移发生改变)

  • 任何CloudBlackShare设置为1的骰娘都将经过通过简单的POST指令对一个设置为shiki.stringempty.xyz域名的基于PHP的服务器进行黑名单信息的比对验证,如果存在记录且具有云黑效力,则无视发送者权限接受并同步该黑名单。

  • 设置为shiki.stringempty.xyz域名的基于PHP的服务器曾被发现有严重的SQL注入漏洞,等。

  • 经过确认,该功能的设计者——Shiki——认为,终极理想状态的设计应当是:“是云黑”“具有云的效力”“有wid”是完全等同的。

  • CloudBlackShare项默认为1

  • CloudBlackShare项未被收录于Dice! 2.3.8Exp10(556)最终的Master_ManualUser_Manual中。

  • CloudBlackShare项的缺失最终由本人仑质发现并提出,被收录于Dice! 2.4.0Beta3(563)的文档中,该更改相关的Pull requestsAzusaYukina提交,你可以在这里查看:AzusaYukina - Update Master_Manual.md - 新增了 CloudBlackShare 的解释

  • CloudBlackShare项相关的简单的POST指令对一个设置为shiki.stringempty.xyz域名的基于PHP的服务器进行无鉴权的云记录上传更新与验证逻辑已经开源于Github页面,并且由于项目所选的开源协议必须开源。

故而,基于这些细节,CloudBlackShare项的默认值被我修改为0,且在设置完成时将会发送strConfSetToUnsafe的警告。

调整配置项

  • CloudBlackShare

    缺省默认:0(原本为1

    该项将会决定是否进行云记录的上传与验证。

    详见本小节上传云记录相关调整上传云记录相关调整部分。

额外配置项

  • DisabledListenWarning

    缺省默认:0

    该项为非0时将会屏蔽Warning响应流程,这个设计主要用于暂时避免吃Warning后由于框架问题导致的大规模无差别退群问题。

  • BelieveShikiExceptGroup

    缺省默认:0

    控制是否拉取http://shiki.stringempty.xyz/DiceCloud/except_group.json的ExceptGroup。

    当为0时,不拉取。

    当为1时,拉取并装载。

    完全更改ExceptGroup需要进行应用的重载。

  • BelieveShikiDicelist

    缺省默认:0

    控制是否拉取http://shiki.stringempty.xyz/DiceList/的Dicelist。

    当为0时,不拉取。

    当为1时,拉取并装载。

    完全更改Dicelist需要进行应用的重载。

  • BelieveOlivaDicelist

    缺省默认:0

    控制是否拉取http://benzenpenxil.xyz/Oliva-DiceList/的Dicelist。

    当为0时,不拉取。

    当为1时,拉取并装载。

    完全更改Dicelist需要进行应用的重载。

  • BelieveThirdDicelist

    缺省默认:0

    控制是否拉取来自第三方的Dicelist。

    当为0时,不拉取。

    当为1时,拉取并装载。

    该部分暂未完成。

额外自定义回复

  • strConfSetToUnsafe

    缺省默认:已经切换至存在缺陷的功能!请确保知晓这个操作可能导致的后果!

Helpdoc模糊匹配

1.1.3:模糊匹配.help最终稳定

  • 指令:.help [所查条目]

对Helpdoc功能进行了加强,在没有对应条目时将进行模糊匹配搜索,搜索与排序算法基于最长子字符串最小编辑距离两个算法的组合。

额外自定义回复

  • strHlpNotFound

    缺省默认:{strHelpNotFound}

  • strHlpRecommend

    缺省默认:已为您找到以下近似条目:

额外配置项

  • HelpMode

    缺省默认:1

    Help指令模式控制项。

    当为0时,关闭模糊匹配。

    当为1时,开启模糊匹配,匹配推荐算法为仑质所改进后设计的最长子串与最短编辑距离组合算法

    当为2时,开启模糊匹配,匹配推荐算法由Shiki基于倒排算法所改进。

扩充版今日人品Jrrp

1.2.1:本地Jrrp 1.2.3:重写Jrrp牌堆

  • 指令:.jrrp

对jrrp进行了较大扩充,较为复杂。

额外关键词

  • {dashes}

    该关键词在使用指令时将被替换为一个缓冲条,用于展示jrrp的数值大小

  • 所有牌堆引用方式{xxx}{%xxx}

    该关键词在使用指令时将被替换为对应牌堆的抽取结果。

额外配置项

  • LocalJrrp

    缺省默认:1

    本地Jrrp控制项。

    当为0时,关闭本地Jrrp,使用其它分支版本同样的由溯洄提供的在线Jrrp生成服务器结果。

    当为1时,开启本地Jrrp,本地生成的Jrrp采用散列哈希算法。

    当为2时,开启本地Jrrp,本地生成的Jrrp采用散列哈希算法,并使用本机QQ号对算法进行加盐,从而使得结果因骰娘账号变化而不同。

  • LocalJrrpMin

    缺省默认:1

    本地Jrrp最小值控制项。

    LocalJrrp为0时无效。

    该值将会使得本地Jrrp结果的最小值为其所设置的大小。

  • LocalJrrpRange

    缺省默认:100

    LocalJrrp为0时无效。

    该值将会使得本地Jrrp结果范围宽度为其所设置的大小。

    结合LocalJrrpMin项可以将本地Jrrp出值控制为:[LocalJrrpMin][LocalJrrpMin]+[LocalJrrpRange]-1

  • JrrpDashesRange

    缺省默认:25

    本地Jrrp{dashes}关键词长度控制项。

    该值将会使得本地Jrrp结果{dashes}关键词宽度为其所设置的大小。

暗检定

1.2.0:多种特殊检定

  • 指令:.rah [技能]

可以进行暗检定,查看结果需要使用.ob指令进入旁观模式,骰娘将会私聊发送结果。

额外自定义回复

  • strHiddenCheck

    缺省默认:{pc}进行{attr}暗检定

对抗检定

1.2.0:多种特殊检定

  • 指令:.rav [技能] [@对方]

可以直接进行对抗检定。

魔都模组

1.2.6:CNMODS魔都模组查询

  • 指令:.cnmods roll

抽取一个魔都模组。

  • 指令:.cnmods luck ([页码])

查看魔都推荐。

  • 指令:.cnmods search [名称] ([页码])

在线查找模组。

  • 指令:.cnmods get [编号]

获取对应模组。

额外配置项

  • CnmodsMode

    缺省默认:1

    魔都模组功能控制项。

    当为0时,关闭魔都模组功能。

    当为1时,开启魔都模组功能,以分享卡片的形式发送结果。

    当为2时,开启魔都模组功能,以文本的形式发送结果。

改进后的Reply功能

1.2.7:正则匹配自定义Reply

正则Reply

简单来说,没有新增任何指令,只是追加改进了.reply指令所设置的回复词的输入匹配逻辑输出返回逻辑。 当你将ReplyMode设置为2时,这个功能将不会有任何效果,reply依然如旧。 当你决定使用这个功能时,只需要确保ReplyMode设置为3将原先.reply指令中的被匹配条替换为正则表达式即可。

  • 例如:

    使用指令:.reply (.+)调用牌堆(.+) $1牌堆调用结果:{$2}

    输入:仑质调用牌堆麻将牌

    输出:仑质牌堆调用结果:五筒

    请留意空格。

额外配置项

  • ReplyMode

    缺省默认:3

    Reply模式控制项。

    当为1时,同时使用完全匹配与正则匹配,且完全匹配流程优先级更高。

    当为2时,只使用完全匹配。

    当为3时,只使用正则匹配。

    当为其它时,不匹配任何Reply项。

请尽量避免滥用该功能,仑质不对该功能的任何滥用后果负责。 在此基础上,请尽情发挥想象力。

计划

将会在本功能实现一个基础脚本语言,语法要设计成什么类型暂时还未敲定,欢迎交流。

自定义心跳标准

1.2.8:自定义心跳标准

简介

Shiki分支中,设置心跳上报与否的配置项不存在,相关逻辑为强制启用,且所有的上报服务器路径、端口、内容都是直接硬编码写死在相关代码中的,不存在鉴权,对于一个使用AGPL协议的开源项目而言,这是非常愚蠢的,Shiki分支中相关代码如下图。

Shiki分支中心跳上报的线程函数

标准

当前所采用的方式是POSTapplication/x-www-form-urlencoded表单方式,Dice!将会每隔300秒执行一次上报。 上报目标服务器的地址端口,还有鉴权所需的token都可以通过相关方法进行设置。 Dice!仅负责定期上报至指定服务器,如何监测这个上报结果需要使用者自行解决。 可供参考的处理方案有仑质的骰娘列表页面,如果需要有将自己的骰娘添加到该页面请先使用青果TOKEN获取一个新的token,再加入青果核心群与仑质协商相关事宜。

POST表单的上报参数具体如下:

参数键值

上报值

备注

token

身份校验Token

strConfigPulseToken所设置的值

user_id

本机QQ号

time_ts

当前服务器时间戳

version

本机Dice插件版本

name

本机昵称

masterid

Master的QQ号

interval

确认存活容忍时间(秒)

当前固定为530

isGlobalon

是否全局启动

DisabledGlobal相反

isPublic

是否公开

Private相反

isVisible

是否愿意可见

CloudVisible相同

额外配置项

  • PulseMode

    缺省默认:0

    该项将会决定如何进行心跳的上传与验证。

    本配置项采用二进制开关设计,类似linux中的chmod指令。

    当0x001为真时,选择对Shiki的心跳服务器进行上报。

    当0x010为真时,选择对自定义的心跳服务器进行上报,默认为指向仑质的心跳服务器,但除非设置了有效的Token,否则不会上报

    如果你不懂这种看起来奇怪设置方式,没关系,我会为你在下方列出全部的配置情况:

配置值

自定义心跳上报

Shiki私人心跳

0

×

×

1

×

2

×

3

额外自定义字段

该部分与设定自定义回复的方式相同。

  • strConfigPulseHost

    缺省默认:api.dice.center

  • strConfigPulseXpath

    缺省默认:/dicestatusup/

  • strConfigPulsePort

    缺省默认:80

  • strConfigPulseToken

    缺省默认:NULL

DX3规则掷骰

1.2.9:新增dx掷骰指令 1.2.9:掷骰渲染

  • 指令:dx(x) [骰子个数](a/c)[加骰参数]

.dxx会直接给出结果而.dx会给出每个骰子的点数 固定10面骰,每有一个骰子点数达到加骰参数,则加骰一次,最后计算额外加骰轮数的十倍与最后一轮最大值之和 具体用法请参考相关游戏规则 同理,当你在.r的掷骰表达式中使用XcY格式的指令时,可以进行这种掷骰。

自定义更新源

1.2.10:自定义更新源

  • 指令:.cloud update (list/分支名)

该功能会以一种可以自定义的方式完成更新源的获取与更新 该种结构的好处是,更新不再强依赖版本,对不同大更新版本的理论兼容性会更强。

名词解释

因为我不可能将一本词典搬移到此处,也无意进行海外发行,所以此处使用现代汉语(简体中文 - 北京),本部分专门用于解释部分名词,以防万一。

Dice!V2

Dice!V2是一个基于QQ传输协议的,借助各种封装过的机器人平台,以C++编写,并以附加动态链接库(DLL)的方式运行的,提供骰值服务、跑团相关服务与骰值机器人管理功能的项目。

对于具备开发能力的用户或开发者,该项目的源代码基于AGPL-3.0开源协议在Github进行开源。

对于不具备开发能力的用户,通常使用其编译后的二进制文件,或是在对应平台经过二次封装后的文件。

服务器

服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:CPU、硬盘、内存,系统、系统总线等。

必要的服务器

指Dice!V2作为一个普通的机器人平台扩充功能DLL运行的情形下,QQ传输协议所实现的传输服务器对象与该平台所依赖的服务器。

必要

必要,非这样不行;不可缺少的。

稳固的服务器

指可以稳定服务超过10年以上的企业级服务器。

稳固

稳固,稳恒固定,出自郁达夫《出奔》。

企业级

用来形容某物达到了像企业一样的专业级别、高水准。

企业

企业一般是指以盈利为目的,运用各种生产要素(土地、劳动力、资本、技术和企业家才能等),向市场提供商品或服务,实行自主经营、自负盈亏、独立核算的法人或其他社会经济组织。

他者服务器

非当前Dice!V2插件的用户个人所运营的服务器。

他者

他者,是西方后殖民理论中常见的一个术语,在后殖民的理论中,西方人往往被称为主体性的“自我”,殖民地的人民则被称为“殖民地的他者”,或直接称为“他者”。“他者”(the other)和“自我”(Self)是一对相对的概念,西方人将“自我”以外的非西方的世界视为“他者”,将两者截然对立起来。所以,“他者”的概念实际上潜含着西方中心的意识形态。宽泛地说,他者就是一个与主体既有区别又有联系的参照。通过选择和确立他者在一定程度上可以更好地确定和认识自我,但其中隐含的自我中心主义有着严重的缺陷或弊端,一个主体若没有他者的对比对照将完全不能认识和确定自我。在后殖民主义研究的一系列概念和范畴中的一个最具特色并作为中心范畴的是“本土”(native)与“他者”(the other)以及这二者之间的关系问题。本土和他者是相对的,它会随着参照物的不同而改变。

刚愎自用

刚愎自用,汉语成语,意思是十分固执自信,不考虑别人的意见。出自《左传·宣公十二年》。