• 喧闹手册

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 = {}

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

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

Last updated