跳转至

喧闹手册

OlivaDice 喧闹手册

For 2.5.2CHAOS4

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

DIXE(OLIVADICE)

喧闹测试

欢迎参加喧闹测试,目前该项目正处于第一阶段。

你可以在通过在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 = {}

function temFunc(Msg)
    Reply = ""
    return Reply
end

command[Regex] = Func

指令映射

对于如下指令映射原型:

command[Regex] = Func

变量名称 数据类型 说明 缺省
command table 用于暴露指令的映射表 此为必须项
Regex string 设置指令的正则表达式 此为必须项
Func string 指令对应所映射的函数名称 此为必须项

可以实现对于Regex正则表达式匹配后的指令,运行Func函数。

传入参数

对于如下函数原型:

function temFunc(Msg)

Msg将会传入一个结构体,你可以如此调用它的成员:

Msg.fromGroup
Msg.str[1]
它将有以下成员:

成员名称 数据类型 说明
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 该字符串将原路返回并回复至触发者 此为必须项

导入模块

json = require("dkjson")

在上述语句中,你只需要将实际的dkjson.lua文件放入Dicexxxxxxx/plugin/lib下,就可以自动导入。
你可以这样做到将dkjson导入到本脚本中,并以json为模块名进行调用。

内置模块

结合现有功能提供以下内置模块以便于扩展指令的程序设计直接对本体进行干预。

dice模块

draw
rv = dice.draw(msg)
形参名称 数据类型 说明 缺省
msg string 你所需要进行转换的消息 -
返回值名称 数据类型 说明 缺省
rv string 返回经过抽牌堆处理后的结果 -

msg经过抽牌堆处理后作为返回值传出。


send
dice.send(msg,tergetId,msgType)
形参名称 数据类型 说明 缺省
msg string 你所需要发送的消息 -
tergetId integer 目标id,可以是QQ或群号,需结合msgType -
msgType integer 消息类型,0为私聊,1为群聊 -

本函数无返回值。

实现发送消息。


int2string
rv = dice.int2string(str)
形参名称 数据类型 说明 缺省
str string 记录了某个整数的字符串 -
返回值名称 数据类型 说明 缺省
rv integer 转换完成后的数值 0

将字符串转换为数字。


rd
rv = dice.rd(str)  
形参名称 数据类型 说明 缺省
str string 掷骰表达式 -
返回值名称 数据类型 说明 缺省
rv integer 掷骰后的出目 0

处理掷骰表达式。


md5
rv = dice.md5(str)  
形参名称 数据类型 说明 缺省
str string 被处理字符串 -
返回值名称 数据类型 说明 缺省
rv string MD5计算结果 0

计算MD5。


DiceDir
rv = dice.DiceDir()  

本函数无入参。

返回值名称 数据类型 说明 缺省
rv string Dice存档绝对路径,UTF8编码 0

获取Dice存档绝对路径。


mkDir
rv = dice.mkDir(path)  
形参名称 数据类型 说明 缺省
path string 需要创建的目录路径 -
返回值名称 数据类型 说明 缺省
rv integer 创建结果,0为成功 -

创建目录。


TCNtoSCN
rv = dice.TCNtoSCN(str)  
形参名称 数据类型 说明 缺省
str string 需要转换的字符串,UTF8编码 -
返回值名称 数据类型 说明 缺省
rv string 转换完成的字符串,UTF8编码 -

将繁体字转换为简体字。


SCNtoTCN
rv = dice.SCNtoTCN(str)  
形参名称 数据类型 说明 缺省
str string 需要转换的字符串,UTF8编码 -
返回值名称 数据类型 说明 缺省
rv string 转换完成的字符串,UTF8编码 -

将简体字转换为繁体字。


GBKtoUTF8
rv = dice.GBKtoUTF8(str)  
形参名称 数据类型 说明 缺省
str string 需要转换的字符串,GBK编码 -
返回值名称 数据类型 说明 缺省
rv string 转换完成的字符串,UTF8编码 -

将GBK编码转换为UTF8编码。


UTF8toGBK
rv = dice.UTF8toGBK(str)  
形参名称 数据类型 说明 缺省
str string 需要转换的字符串,UTF8编码 -
返回值名称 数据类型 说明 缺省
rv string 转换完成的字符串,GBK编码 -

将UTF8编码转换为GBK编码。


UrlEncode
rv = dice.UrlEncode(str)  
形参名称 数据类型 说明 缺省
str string 需要转换的字符串 -
返回值名称 数据类型 说明 缺省
rv string 完成编码转换的字符串 -

进行Url编码。


UrlDecode
rv = dice.UrlDecode(str)  
形参名称 数据类型 说明 缺省
str string 需要转换的字符串 -
返回值名称 数据类型 说明 缺省
rv string 完成解码转换的字符串 -

进行Url解码。


getPcSkill
Skill_Val = dice.getPcSkill(QQ,Group,Skill)  
形参名称 数据类型 说明 缺省
QQ integer 其QQ号 -
Group integer 所在群号 -
Skill string 属性名称 -
返回值名称 数据类型 说明 缺省
Skill_Val integer 所取属性值 -

读人物卡属性值。


setPcSkill
dice.setPcSkill(QQ,Group,Skill,Skill_Val)  
形参名称 数据类型 说明 缺省
QQ integer 其QQ号 -
Group integer 所在群号 -
Skill string 属性名称 -
Skill_Val integer 所写属性值 -

本函数无返回值。

写人物卡属性值。


getPcName
Name = dice.getPcName(QQ,Group)  
形参名称 数据类型 说明 缺省
QQ integer 其QQ号 -
Group integer 所在群号 -
返回值名称 数据类型 说明 缺省
Name string 所取人物卡名称 -

读人物卡名称。


setPcName
dice.setPcName(QQ,Group,New_Name)  
形参名称 数据类型 说明 缺省
QQ integer 其QQ号 -
Group integer 所在群号 -
New_Name string 所写人物卡名称 -

本函数无返回值。

写人物卡名称。


fReadJson
res = dice.fReadJson(file,json_obj,json_obj,...)  
形参名称 数据类型 说明 缺省
file string Json文件路径 -
json_obj string, integer Json键值 -
json_obj string, integer Json键值 -
... string, integer Json键值 -
本函数入参不定数量。
返回值名称 数据类型 说明 缺省
res string 所取Json的dump结果 -

本函数可以读取任意路径Json的任意结构体内容,并返回对应内容的dump。
例如对于如下path路径下的文件:

{
    "author":"仑质",
    "key":{
        "Key1":"测试文本1",
        "Key2":"测试文本2",
        "List":[
            "列表文本1",
            "列表文本2"
        ]
    }
}

有如下res

res = dice.fReadJson(path,"author")  

res
"仑质"

res = dice.fReadJson(path,"key")  

res
{"Key1":"测试文本1","Key2":"测试文本2","list":["列表文本1","列表文本2"]}

res = dice.fReadJson(path,"key","Key1")  

res
"测试文本1"

res = dice.fReadJson(path,"key","List",1)  

res
"列表文本2"


fGetJson
res = dice.fGetJson(file,default,json_obj,json_obj,...)  
形参名称 数据类型 说明 缺省
file string Json文件路径 -
default string 缺省值 -
json_obj string, integer Json键值 -
json_obj string, integer Json键值 -
... string, integer Json键值 -
本函数入参不定数量。
返回值名称 数据类型 说明 缺省
res string 所取Json的结果 -

本函数可以读取任意路径Json的任意结构体内容,并返回对应内容的精细化处理结果,并在访问失败时返回缺省值。
例如对于如下path路径下的文件:

{
    "author":"仑质",
    "key":{
        "Key1":"测试文本1",
        "Key2":"测试文本2",
        "List":[
            "列表文本1",
            "列表文本2"
        ]
    }
}

有如下res

res = dice.fReadJson(path,"啥也没有","author")  

res
仑质

res = dice.fReadJson(path,"啥也没有","key")  

res
啥也没有

res = dice.fReadJson(path,"啥也没有","key","Key1")  

res
测试文本1

res = dice.fReadJson(path,"啥也没有","key","List",1)  

res
列表文本2

res = dice.fReadJson(path,"啥也没有","key","Fish")  

res
啥也没有


fSetJson
dice.fSetJson(file,new_value,json_obj,json_obj,...)  
形参名称 数据类型 说明 缺省
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")

即可实现写入与修改:

{
    "author":"仑质",
    "key":{
        "Key1":{
            "Key1_1":"测试文本1_1",
            "Key1_2":"测试文本1_2"
        },
        "Key2":"测试文本2"
    }
}

fDownWebPage
rv = dice.fDownWebPage(url,file)  
形参名称 数据类型 说明 缺省
url string 对应网址 -
file string 所需保存的文件路径 -
返回值名称 数据类型 说明 缺省
rv integer 下载保存结果,0为成功 0

获取对应网页源代码并保存到指定路径文件。