喧闹手册
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 |
获取对应网页源代码并保存到指定路径文件。