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
可以实现对于Regex
正则表达式匹配后的指令,运行Func
函数。
传入参数
对于如下函数原型:
function temFunc(Msg)
Msg
将会传入一个结构体,你可以如此调用它的成员:
Msg.fromGroup
Msg.str[1]
它将有以下成员:
返回值
导入模块
json = require("dkjson")
在上述语句中,你只需要将实际的dkjson.lua
文件放入Dicexxxxxxx/plugin/lib
下,就可以自动导入。
你可以这样做到将dkjson
导入到本脚本中,并以json
为模块名进行调用。
内置模块
结合现有功能提供以下内置模块以便于扩展指令的程序设计直接对本体进行干预。
dice模块
draw
将msg
经过抽牌堆处理后作为返回值传出。
send
dice.send(msg,tergetId,msgType)
本函数无返回值。
实现发送消息。
int2string
rv = dice.int2string(str)
将字符串转换为数字。
rd
处理掷骰表达式。
md5
计算MD5。
DiceDir
本函数无入参。
获取Dice存档绝对路径。
mkDir
rv = dice.mkDir(path)
创建目录。
TCNtoSCN
rv = dice.TCNtoSCN(str)
将繁体字转换为简体字。
SCNtoTCN
rv = dice.SCNtoTCN(str)
将简体字转换为繁体字。
GBKtoUTF8
rv = dice.GBKtoUTF8(str)
将GBK编码转换为UTF8编码。
UTF8toGBK
rv = dice.UTF8toGBK(str)
将UTF8编码转换为GBK编码。
UrlEncode
rv = dice.UrlEncode(str)
进行Url编码。
UrlDecode
rv = dice.UrlDecode(str)
进行Url解码。
getPcSkill
Skill_Val = dice.getPcSkill(QQ,Group,Skill)
读人物卡属性值。
setPcSkill
dice.setPcSkill(QQ,Group,Skill,Skill_Val)
本函数无返回值。
写人物卡属性值。
getPcName
Name = dice.getPcName(QQ,Group)
读人物卡名称。
setPcName
dice.setPcName(QQ,Group,New_Name)
本函数无返回值。
写人物卡名称。
fReadJson
res = dice.fReadJson(file,json_obj,json_obj,...)
本函数入参不定数量。
本函数可以读取任意路径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,...)
本函数入参不定数量。
本函数可以读取任意路径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,...)
本函数入参不定数量。
本函数可以在任意文件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)
获取对应网页源代码并保存到指定路径文件。