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

喧闹测试
欢迎参加喧闹测试,目前该项目正处于第一阶段。
你可以在通过在DiceXXXXXXXX/plugin/目录下创建.lua脚本文件来增加扩展指令,脚本基本结构如下。
文件格式范例
command = {}
function duel(Msg)
    a1 = dice.rd("1d100")
    a2 = dice.rd("1d100")
    a3 = dice.rd("1d100")
    a4 = dice.rd("1d100")
    a5 = dice.rd("1d100")
    b1 = dice.rd("1d100")
    b2 = dice.rd("1d100")
    b3 = dice.rd("1d100")
    b4 = dice.rd("1d100")
    b5 = dice.rd("1d100")
    rv = ""
    rv = rv .."决斗A:\n"
    rv = rv .. dice.int2string(a1) .. " + "
    rv = rv .. dice.int2string(a2) .. " + "
    rv = rv .. dice.int2string(a3) .. " + "
    rv = rv .. dice.int2string(a4) .. " + "
    rv = rv .. dice.int2string(a5) .. "\n= "
    A = a1 + a2 + a3 + a4 + a5
    rv = rv .. dice.int2string(A)
    rv = rv .."\n决斗B:\n"
    rv = rv .. dice.int2string(b1) .. " + "
    rv = rv .. dice.int2string(b2) .. " + "
    rv = rv .. dice.int2string(b3) .. " + "
    rv = rv .. dice.int2string(b4) .. " + "
    rv = rv .. dice.int2string(b5) .. "\n= "
    B = b1 + b2 + b3 + b4 + b5
    rv = rv .. dice.int2string(B)
    rv = rv .. "\n"
    if(A > B)
    then
        rv = rv .. "A胜"
    elseif(A < B)
    then
        rv = rv .. "B胜"
    else
        rv = rv .. "此乃平局"
    end
    return rv
end
command["(\\.|。)duel"] = "duel"
脚本原型
对于如下脚本原型:
指令映射
对于如下指令映射原型:
| 变量名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| command | table | 用于暴露指令的映射表 | 此为必须项 | 
| Regex | string | 设置指令的正则表达式 | 此为必须项 | 
| Func | string | 指令对应所映射的函数名称 | 此为必须项 | 
可以实现对于Regex正则表达式匹配后的指令,运行Func函数。
传入参数
对于如下函数原型:
Msg将会传入一个结构体,你可以如此调用它的成员:
| 成员名称 | 数据类型 | 说明 | 
|---|---|---|
| msg | string | 所匹配的回复全文 | 
| str | table | 正则表达式的子表达式,需使用下标调用,如Msg.str[1] | 
| str_max | integer | 子表达式数量+1 | 
| msgType | integer | 消息类型,0为私聊,1为群聊 | 
| selfId | integer | 本机QQ | 
| fromQQ | integer | 本条消息发送者QQ | 
| fromGroup | integer | 本条消息所在群号 | 
| tergetId | integer | 如果为私聊则为本条消息发送者QQ,否则为本条消息所在群号 | 
| fromQQTrust | integer | 本条消息发送者的信任度 | 
| fromQQInfo | integer | 本条消息发送者的群内权限,0为私聊,1为群员,2为管理,3为群主 | 
返回值
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| Reply | string | 该字符串将原路返回并回复至触发者 | 此为必须项 | 
导入模块
在上述语句中,你只需要将实际的dkjson.lua文件放入Dicexxxxxxx/plugin/lib下,就可以自动导入。
你可以这样做到将dkjson导入到本脚本中,并以json为模块名进行调用。  
内置模块
结合现有功能提供以下内置模块以便于扩展指令的程序设计直接对本体进行干预。
dice模块
draw
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| msg | string | 你所需要进行转换的消息 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 返回经过抽牌堆处理后的结果 | - | 
将
msg经过抽牌堆处理后作为返回值传出。
send
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| msg | string | 你所需要发送的消息 | - | 
| tergetId | integer | 目标id,可以是QQ或群号,需结合msgType | 
- | 
| msgType | integer | 消息类型,0为私聊,1为群聊 | - | 
本函数无返回值。
实现发送消息。
int2string
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 记录了某个整数的字符串 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | integer | 转换完成后的数值 | 0 | 
将字符串转换为数字。
rd
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 掷骰表达式 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | integer | 掷骰后的出目 | 0 | 
处理掷骰表达式。
md5
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 被处理字符串 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | MD5计算结果 | 0 | 
计算MD5。
DiceDir
本函数无入参。
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | Dice存档绝对路径,UTF8编码 | 0 | 
获取Dice存档绝对路径。
mkDir
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| path | string | 需要创建的目录路径 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | integer | 创建结果,0为成功 | - | 
创建目录。
TCNtoSCN
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 需要转换的字符串,UTF8编码 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 转换完成的字符串,UTF8编码 | - | 
将繁体字转换为简体字。
SCNtoTCN
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 需要转换的字符串,UTF8编码 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 转换完成的字符串,UTF8编码 | - | 
将简体字转换为繁体字。
GBKtoUTF8
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 需要转换的字符串,GBK编码 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 转换完成的字符串,UTF8编码 | - | 
将GBK编码转换为UTF8编码。
UTF8toGBK
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 需要转换的字符串,UTF8编码 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 转换完成的字符串,GBK编码 | - | 
将UTF8编码转换为GBK编码。
UrlEncode
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 需要转换的字符串 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 完成编码转换的字符串 | - | 
进行Url编码。
UrlDecode
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| str | string | 需要转换的字符串 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | string | 完成解码转换的字符串 | - | 
进行Url解码。
getPcSkill
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| integer | 其QQ号 | - | |
| Group | integer | 所在群号 | - | 
| Skill | string | 属性名称 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| Skill_Val | integer | 所取属性值 | - | 
读人物卡属性值。
setPcSkill
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| integer | 其QQ号 | - | |
| Group | integer | 所在群号 | - | 
| Skill | string | 属性名称 | - | 
| Skill_Val | integer | 所写属性值 | - | 
本函数无返回值。
写人物卡属性值。
getPcName
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| integer | 其QQ号 | - | |
| Group | integer | 所在群号 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| Name | string | 所取人物卡名称 | - | 
读人物卡名称。
setPcName
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| integer | 其QQ号 | - | |
| Group | integer | 所在群号 | - | 
| New_Name | string | 所写人物卡名称 | - | 
本函数无返回值。
写人物卡名称。
fReadJson
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| file | string | Json文件路径 | - | 
| json_obj | string, integer | Json键值 | - | 
| json_obj | string, integer | Json键值 | - | 
| ... | string, integer | Json键值 | - | 
| 本函数入参不定数量。 | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| res | string | 所取Json的dump结果 | - | 
本函数可以读取任意路径Json的任意结构体内容,并返回对应内容的dump。
例如对于如下path路径下的文件:
有如下
res
res为
"仑质"
res为
{"Key1":"测试文本1","Key2":"测试文本2","list":["列表文本1","列表文本2"]}
res为
"测试文本1"
res为
"列表文本2"
fGetJson
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| file | string | Json文件路径 | - | 
| default | string | 缺省值 | - | 
| json_obj | string, integer | Json键值 | - | 
| json_obj | string, integer | Json键值 | - | 
| ... | string, integer | Json键值 | - | 
| 本函数入参不定数量。 | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| res | string | 所取Json的结果 | - | 
本函数可以读取任意路径Json的任意结构体内容,并返回对应内容的精细化处理结果,并在访问失败时返回缺省值。
例如对于如下path路径下的文件:
有如下
res
res为
仑质
res为
啥也没有
res为
测试文本1
res为
列表文本2
res为
啥也没有
fSetJson
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| file | string | Json文件路径 | - | 
| new_value | string | 需要写入的值 | - | 
| json_obj | string | Json键值 | - | 
| json_obj | string | Json键值 | - | 
| ... | string | Json键值 | - | 
| 本函数入参不定数量。 | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| res | string | 所取Json的结果 | - | 
本函数可以在任意文件Json写入任意键值对结构体的内容。
例如对于path路径下的文件:
dice.fSetJson(path,"仑质","author")
dice.fSetJson(path,"有点问题","key","Key1","Key1_1")
dice.fSetJson(path,"测试文本1_2","key","Key1","Key1_2")
dice.fSetJson(path,"测试文本2","key","Key2")
dice.fSetJson(path,"测试文本1_1","key","Key1","Key1_1")
即可实现写入与修改:
fDownWebPage
| 形参名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| url | string | 对应网址 | - | 
| file | string | 所需保存的文件路径 | - | 
| 返回值名称 | 数据类型 | 说明 | 缺省 | 
|---|---|---|---|
| rv | integer | 下载保存结果,0为成功 | 0 | 
获取对应网页源代码并保存到指定路径文件。