0%

secondary

目前正在努力ing…

前言

使用《署名—非商业性使用—相同方式共享4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans

WARNING ⚠️
提供了dice解决复读问题的一种方法思路,但不免会有诸多不便。

采用读写json方式。

后记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
msg_order={}

require("basicFunction")
json = require("json")

msg_order[".repjoker"]="repjoker"

default_uid_json = [[{"uid":2753364619,"msg":"好耶","time":1657773120}]]
default_gid_json = [[{"gid":971050440,"msg":"简律纯","time":1657773120}]]
uid_path = "plugin//repeat-joker//uid.json"
gid_path = "plugin//repeat-joker//gid.json"

if(getUserConf(getDiceQQ(),'repjoker_') ~= true) then
mkDirs(getDiceDir()..'//plugin//repeat-joker')
write_file(uid_path,default_uid_json)
write_file(gid_path,default_gid_json)
setUserConf(getDiceQQ(),'repjoker_',true)
--> repeat-joker:初始化完成~
end

function repjoker(msg)
local default_data = ""
local data = ""
local son_orders = fitemSort(Match(msg.fromMsg,#'.repkiller'+1))
if(fitems[1] == "list") then
if(fitems[2] == "uid") then
default_data = "{\"uid_list\":["..read_file(uid_path).."]}"
data = json.decode(default_data)
return "{self}共【"..#data.uid_list.."】条私聊记录:"..default_data
elseif(fitems[2] == "gid") then
default_data = "{\"gid_list\":["..read_file(gid_path).."]}"
data = json.decode(default_data)
return "{self}共【"..#data.gid_list.."】条群聊记录:\n"..default_data
end
elseif(fitems[1] == "uid") then
default_data = "{\"uid_list\":["..read_file(uid_path).."]}"
data = json.decode(default_data)
if(fitems[2] == nil) then
if(getUserConf(msg.uid,'uid-help') ~= true) then
setUserConf(msg.uid,'uid-help',true)
return "{nick}你的对象呢?\n是这样用哒:\n.repjoker uid <QQ号>\n记住了以后可不会再告诉你了"
else
return "{nick}又没有对象了吗?"
end
else
local uid = getAtQQ(fitems[2])
data = json.decode(string.gsub(default_data,'%s',''))
for i=1,#data.uid_list do
if(data.uid_list[i].uid == tonumber(uid)) then
k = i
out = "已为{nick}找到"..getUserConf(tonumber(data.uid_list[k].uid),"nick#").."最近的一条发言记录:\n"..stamp2Time(data.uid_list[k].time)..":"..data.uid_list[k].msg
break
else
out = "{self}处没有关于".. getUserConf(tonumber(uid),"nick#").."的发言记录哦~"
end
end
end
return out
elseif(fitems[1] == "gid") then
default_data = "{\"gid_list\":["..read_file(gid_path).."]}"
data = json.decode(default_data)
if(fitems[2] == nil) then
return getGroupConf(tonumber(msg.gid),"name").."("..msg.gid..")还没有人复读过哦~#期待"
else
local gid = getAtQQ(fitems[2])
data = json.decode(string.gsub(default_data,'%s',''))
for i=1,#data.msg do
if(data.gid[i] == tonumber(gid)) then
k = i
break
else
out = "{self}处没有关于群".. getGroupConf(tonumber(gid),"name").."("..gid..")的用户发言记录哦~"
end
end
end
return out
elseif(fitems[1] == "test") then
write_(msg.fromMsg,msg.uid,msg.fromGroup)
end
end

function write_(str,uid,gid)
if(gid == "0") then
write_file(uid_path,",{\"uid\":"..uid..",\"msg\":\""..str.."\",\"time\":"..os.time().."}")
else
write_file(gid_path,",{\"gid\":"..gid..",\"msg\":\""..str.."\",\"time\":"..os.time().."}")
end
end

一个失败品…

使用《署名—非商业性使用—相同方式共享 4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权。
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans

起因

非常无聊,于是用正则以及dice的lua回复写了一个调用ai实例,总结了两个ai,青云客与思知。

使用方法:
调用青云客:setUserConf(getDiceQQ(),’ai’,1)
调用思知:setUserConf(getDiceQQ(),’ai’,2)

后记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.reply set
Regex=(.*)
Lua=
if getUserConf(getDiceQQ(),'ai') == 1 then
url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=" .. msg.fromMsg
res,data = http.get(url)
json = require("json")
j = json.decode(data)
return j.content
elseif getUserConf(getDiceQQ(),'ai') == 2 then
url = "https://api.ownthink.com/bot?spoken=" .. msg.fromMsg
res,data = http.get(url)
json = require("json")
j = json.decode(data)
return j.data.info.text
end

reborn
高考成绩出来了,重开吧,摆烂!

使用《署名—非商业性使用—相同方式共享 4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权。
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans

基本信息

  • 作者: 简律纯
  • 联系方式:qq:a2c29k9
  • 版本:v1.2 fix
  • 更新日期:2022/06/24
  • 简介:投胎
  • 关键词:reborn
  • 许可协议:CC BY-NC-SA 4.0

详细介绍

首先感谢 @Natsume 随机国家
算起来Natsume的这个帖子已经两年整了。
ta说这似乎没什么用,于是我便突发奇想昨天晚上熬夜整了个重开模拟器。

效果图

下载

reborn v1.2 fix.zip

后记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---------------------------------------------------------------------
--reborn.重生|投胎 脚本
--countryu取自Natsume(https://forum.kokona.tech/d/118)
--作者:简律纯(qq:A2C29K9)
--2022.06.24 Fixed
---------------------------------------------------------------------
msg_order={}

function born(msg)
local countryu = { "芬兰","瑞典","挪威","冰岛","丹麦","法罗群岛(丹)" ,"爱沙尼亚","拉脱维亚","立陶宛","俄罗斯","白俄罗斯","乌克兰","摩尔多瓦","波兰","捷克","斯洛伐克","匈牙利","德国","奥地利","瑞士","列支敦士登","英国","爱尔兰","荷兰","比利时","卢森堡","法国","摩纳哥","罗马尼亚","保加利亚","塞尔维亚","黑山","马其顿","阿尔巴尼亚","希腊","斯洛文尼亚","克罗地亚","波斯尼亚和墨塞哥维那","意大利","梵蒂冈","圣马力诺","马耳他","西班牙","葡萄牙","安道尔","中国","蒙古","朝鲜","韩国","日本","菲律宾","越南","老挝","柬埔寨","缅甸","泰国","马来西亚","文莱","新加坡","印度尼西亚","东帝汶","尼泊尔","不丹","孟加拉国","印度","巴基斯坦","斯里兰卡","马尔代夫","哈萨克斯坦","土库曼斯坦","塔吉克斯坦","乌兹别克斯坦","吉尔吉斯斯坦","阿富汗","伊拉克","伊朗","叙利亚","约旦","黎巴嫩","以色列","巴勒斯坦","巴林","卡塔尔","科威特","沙特阿拉伯","阿拉伯联合酋长国","阿曼","也门","格鲁吉亚","亚美尼亚","阿塞拜疆","塞浦路斯","土耳其","埃及","利比亚","苏丹","突尼斯","阿尔及利亚","摩洛哥","亚速尔群岛(葡)","马德拉群岛(葡)","埃塞俄比亚","厄立特里亚","索马里","吉布提","肯尼亚","坦桑尼亚","乌干达","卢旺达","布隆迪","塞舌尔","赞比亚","安哥拉","津巴布韦","马拉维","莫桑比克","博茨瓦纳","纳米比亚","斯威士兰","莱索托","马达加斯加","科摩罗","毛里求斯","留尼旺(法)","圣赫勒拿","(英)南非","乍得","中非","喀麦隆","加蓬","圣多美","赤道几内亚","刚果民主共和国(刚果)","普林西比","毛里塔尼亚","塞内加尔","冈比亚","马里","布基纳法索","几内亚","几内亚比绍","塞拉利昂","利比里亚","科特迪瓦","佛得角","加纳","多哥","贝宁","尼日尔","加那利群岛(西)","澳大利亚","新西兰","巴布亚新几内亚","所罗门群岛","瓦努阿图","密克罗尼西亚","马绍尔群岛","帕劳","瑙鲁","基里巴斯","图瓦卢","萨摩亚","斐济群岛","汤加","库克群岛(新)","关岛(美)","新喀里多尼亚(法)","法属波利尼西亚","皮特凯恩岛(英)","瓦利斯与富图纳(法)","纽埃(新)","托克劳(新)","美属萨摩亚","北马里亚纳(美)","加拿大","美国","墨西哥","格陵兰(丹)","危地马拉","伯利兹","萨尔瓦多","洪都拉斯","尼加拉瓜","哥斯达黎加","巴拿马","巴哈马","古巴","牙买加","海地","多米尼加共和国","安提瓜和巴布达","圣基茨和尼维斯","多米尼克","圣卢西亚","圣文森特和格林纳丁斯","格林纳达","特立尼达和多巴哥","波多黎各(美)","英属维尔京群岛","巴巴多斯","美属维尔京群岛","蒙特塞拉特(英)","瓜德罗普(法)","马提尼克(法)","荷属安的列斯","安圭拉","阿鲁巴(荷)","特克斯和凯科斯群岛(英)","开曼群岛(英)","百慕大(英)","哥伦比亚","委内瑞拉","圭亚那","法属圭亚那","苏里南","厄瓜多尔","秘鲁","玻利维亚","巴西","智利","阿根廷","乌拉圭","巴拉圭"}
-- 国家

local cardu = {"你患有败血症\n","你发育不良\n","你得了新冠病毒\n","你居然没有屁眼\n","你喜欢和小狗抢食物\n","你看得见空气中浮动的黑色粒子\n".."你有两个脑袋\n","你喜欢咬脚趾甲\n","你喜欢吃墙灰\n","你患有糖尿病\n","你的小心脏是露出来的\n","你是畸形儿\n","你看上去像个傻子\n","你长得很丑\n"}
-- 病情描述,可增加

local apper = {"你有着大大的眼睛\n","你的睫毛很长很好看\n","你总是很好奇的看着世界\n","你五官端正\n","你出生时没有大哭大闹\n","你长得很可爱\n","你看上去很乖巧\n"}
-- 健康描述,可增加

local parent_good_tab = {"很穷,因此","看你很可爱于是"}
local parent_bad_tab = {"认为你长得太丑于是","对你议论纷纷,不过他们","发现你大有问题便把你扔了,但还是"}
-- 父母行为

local sexu = ranint(1,100)
--男女比例与下文53对应

local health = ranint(1,2)
--健康与否

if(sexu<=53) then sex = "男孩子" elseif(sexu==1) then sex = "雌雄同体" else sex = "女孩子" end
-- 没有采用drawDeck(0,msg.fromQQ,"性别")的原因是这样可以自定义男女比例

local country = countryu[ranint(1,#countryu)] -- 抽取国家
local card = "" -- 抽选病情
local state = ranint(1,20) -- 投胎成功概率
local weight = ranint(20,35)/10 -- 新生儿体重,折合公斤
local weightu = "" -- 初始化关于体重的评价
local healthu = "" -- 初始化健康与否
local apperu = ""
local parent_good = ""
local parent_bad = ""

if(state==5) then -- 失败概率为1/20
dead_weight = ranint(9,18)/10
return "{nick}投胎失败!\n你没能活到出生,祝你下次好运!\n你的父母收到了一具"..dead_weight.."公斤的死尸x(没错就是你)"
else
-- 投胎失败

if(weight==3.2) then
weightu = "是标准体重哦~"
-- 对体重等于3.2kg的评价
elseif(weight<=2.4) then
weightu = "有一点点轻呢。"
-- 对体重小于2.4kg的评价
elseif(weight>3.2) then
weightu = "可能是父母的原因让你有点点小胖吧~"
-- 对体重大于3.2kg的评价
end

if(country=="中国") then name = drawDeck(0,msg.fromQQ,"随机姓名_zh") or drawDeck(0,msg.fromQQ,"随机姓名_enzh")
-- 中国人当然要有中文名
elseif(country=="日本") then name = drawDeck(0,msg.fromQQ,"随机姓名_jp")
-- 霓虹進的名字
else name = drawDeck(0,msg.fromQQ,"随机姓名_en") or drawDeck(0,msg.fromQQ,"随机姓名_enzh")
-- 剩下一律包含en
end

if(health==1) then
healthu,apperu = "你很健康呢!\n",""
local start = ranint(1,#apper//2)
for i=start,ranint(start+1,#apper) do
apperu = apperu..apper[i]
end
-- 健康描述
parent_good = parent_good_tab[ranint(1,#parent_good_tab)]

else

healthu = "你并不是一个健康的孩子:\n"

local start = ranint(1,#cardu//2)
for i=start,ranint(start+1,#cardu) do
card = card..cardu[i]
end
-- 病情描述
parent_bad = parent_bad_tab[ranint(1,#parent_bad_tab)]

end

return "{nick}投胎成功!\n你出生在"..country..",是"..sex.."\n体重:"..weight.."公斤 "..weightu.."\n"..healthu..apperu..card.."你的父母".. parent_good..parent_bad.."给你起名"..name
-- 推起来输出
end

end

msg_order["reborn"]="born"

secondary

目前正在努力ing…
利用 error()pcall()进行lua自定义报错

前言

使用《署名—非商业性使用—相同方式共享4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans
作者:简律纯
联系方式:qq:A2C29K9
更新日期:2022/5/28

WARNING ⚠️
本帖是作为利用basicFunction自带的chat指令并结合修改chat指令内tryCatch部分的函数名来进行报错排查的示例帖。

简言之让报错更好看一点,更容易理解一点。

taboo前些日子(好久了)评论了basicFunction 的tryCatch函数,他说,

骰娘自检可以安排到行程上了

虽然和写tryCatch的初衷完全不一样,但是返校后在考试过程中突然发现这会是一个很不错的想法,于是单独写一篇帖子介绍它。

开始

1. 准备工作

首先我们在basicFunction的chat指令函数里的tryCatch部分写上这些代码,图片中的抓取报错函数示例是 read_file()函数,输入的参数是path,文件路径;返回值为文件内容。

这段代码的意思是如果报错信息里有nil这个字符串那返回自定义报错回复内容,否则返回read_file函数的返回内容。

2.第一次测试

接着输入 #basicFunction:tryCatch,不带任何参数,它等效于 #basicFunction:read_file接着的确报错了,但是因为 read_file()函数的path参数为空,报错信息中有nil字符串,于是被替换成了预先写好的自定义报错回复内容。
接着我使用 #basicFunction:read_file myDiary.txt 查看了此文件,由于这个文件并不存在,于是krypton返回了read_file里写好的自定义回复。

3.修改

那么我们使用 #basicFunction:write_file myDiary.txt [内容]来创建这个文件并且写下点什么烂人诅咒

4.第二次测试

已经写好了此文件,我们再用 #basicFunction:read_file myDiary.txt查看一下,来确保有此文件并且写入了内容。

5.第三次测试

一切顺利,这时候我们再输入正确的指令来试试抓取报错

因为这次输入了参数,即 #basicFunction:tryCatch myDiary.txt等效于 #basicFunction:read_file myDiary.txt,所以顺理成章的返回了里面的文本内容。

后记

附上tryCatch函数的内容,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-----------------------------------------------------[15]:
-- 功能:监听错误报告如有则反馈
-- 参数:函数名
-- 返回:错误信息
-- 说明:lua有两个函数可以捕获异常,分别是pcall(fun[,arg1,...])和xpcall(fun,errfun,[,arg1,...]),对比这两个函数,xpcall多了异常处理,这里仅采用pcall()做示例
tryCatch = function(fun,arg1,arg2,arg3,arg4,arg5)
local ret,errMessage=pcall(fun,arg1,arg2,arg3,arg4,arg5);
wrong=ret and "false" or "true"
--print("是否错误:\n"..错误.." \n\n出错信息:\n" .. (errMessage or "无"));
if wrong=="true" then--错误提示
local ret,errMessage=pcall(fun,arg1,arg2,arg3,arg4,arg5)
return "\n错误详情:\n"..errMessage
else--无错误正常执行
ret,back=pcall(fun,arg1,arg2,arg3,arg4,arg5);
return "没有错误发生,返回值如下:\n"..back
end
end

secondary

NOTICE
2.0 或许在明天就出了?

前言

说句实话在昨天2.0也只是个创建了一个空文件夹的存在,但是今天突然就写完了,并且写得彻彻底底的,总之能用便是了!

只需要两步即可完成操作

开始

添加回复命令

在开始之前,你需要对自己家的骰娘输入以下命,其中,require "catchError"是必须的库,其他可根据需要添加。

1
2
3
4
5
6
.reply set
Prefix=#
Lua=
require "catchError"
require "basicFunction"
return load("return "..string.gsub(msg.fromMsg,2))()

好的,目前你已经完成了三分之二了!
接下来让我们完成最后一步操作。

安装库

1.下载catchError
2.将lua库丢进Diceki\lua\文件夹下
3.在聊天窗口使用.system load命令

PRIMARY
第二次当越共,曲子在写啦在写啦…

一些记录

灵感

其实也没有什么灵感,莹莹和我说按照自己风格来,那么我就尽量写的悲伤一点吧。

WARNING
这是关于chat-ActObjectValue的隐藏更新页面,你不应该在这里进行任何操作!

1.0数组写法

1
2
3
4
5
6
*FINAL VERSION
#<get|set><User|Group><Today|Conf> <Object> <Ng> [Value]
*例1,获取2753364619用户的jrrp:
#getUserToday 2753364619 jrrp
*例2,特别地,清空:
#setUserConf 2753364619 好感度 nil

2.0函数写法

1
2
3
4
5
6
*Ver:2.0
#<get|set><User|Group><Today|Conf>(<Object>,<Ng>[,Value])
*例1,获取2753364619用户的jrrp:
#getUserToday("2753364619","jrrp",0)
*例2,清空操作:
#setUserConf("2753364619","好感度",nil)

使用《署名—非商业性使用—相同方式共享 4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans
许可协议:CC BY-NC-SA 4.0
声明:本脚本适合有一定脚本编写基础的master使用,所造成的一切损失作者概不负责。

WARNING
1.0已不再更新,或许你可以期待一下2.0

基本信息

  • 默认设置参数输入格式:#setUserConf
    清空和获取同理。
  • 注意:必须写UserConf或者UserToday,否则不输出。
  • 作者:简律纯
  • 联系方式:qq:A2C29K9
  • 版本:1.0(FINAL)
  • 更新日期:2022/6/16

关键词:#set #get #help log #help chataov

下载

chat-ActObjectValue.zip

简介

在测试时总会遇到要重置或获取或设置某个用户配置的情况,但苦于没有这方面的指令,所以写了一个,目前可以在聊天窗口中设置用户全局配置或当日配置。
当然,你也可以使用更多花里胡哨的东西。


清 空 可 使 用 set nil

进阶用法

  • Chat-AOV;

1.赋予所有人权限:
#setUserConf <DiceQQ> <chat_perm> 1
2.赋予单个用户权限:
.user trust <用户> 4

  • Dice;

1.查看|修改 jrrp:
#get|setUserToday <用户> <jrrp>
2.查看|修改 用户信任trust:
#get|setUserConf <用户> <trust>
3.查看|修改 群配置rc房规:
#get|setGroupConf <群号> <rc房规> <参数>
4.清空/重置 配置:
#setUserConf 2753364619 好感度 nil

TODO list

  • 各类报错回复
  • 设置数据类型

关于5.8更新内容的示例

5.8重点更新了记录的查看方式,新增了 start_crrt配置。

使用命令 #setUserConf <骰娘QQ> start_crrt <值> 进行更改,其更改将会改变 #help log的返回内容:
start_crrt 默认为0,这时查看日志会显示最新的一条。

start_crrt修改为1至5范围内的数字,会显示最近的2至6条记录。

设置范围6至30时会显示对应数量的记录,但不是在群里,bot会私发给指令发出者。

如何安装使用?

1.解压安装包
2.将安装包内文件与文件夹全部放入plugin文件夹
3.使用命令.system load

使用《署名—非商业性使用—相同方式共享 4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans

作者:简律纯
联系方式:qq:A2C29K9
更新日期:2022/5/15
关键词: #basicFunction:

前言

basicFunction 的定位非常清晰,那就是作为脚本制作者的配置扩展,通过在lua脚本中 require "basicFunction"使用其中的函数。

下载

basicFunction-alpha(2).zip

最后

衷心希望大家指正其中的错误和不足,促使 basicFunction 不断进步完善

如何使用

搭载

——开始之前的一些必要工作。
1.下载 _basicFunction_并解压得到 _basicFunction.lua_文件
2.将解压得到的 _basicFunction.lua_文件放入 DiceQQ\plugin\文件夹
3.在确保前两步万无一失的情况下回到聊天窗口使用 .system load命令重载 _basicFunction_脚本

看到这里,你已经成功安装完成了!接下来让我们快速开始吧!

在聊天窗口使用

为了方便测试函数,简律纯特别的写了一个聊天窗口指令,用于测试这些函数

> [xxx]. #basicFunction:help

这是一条用于获取帮助与更新的指令,不建议在群聊中使用。

> [1] #basicFunction:table_draw

  • 功能:随机抽取一条数组内元素
  • 参数:数组
  • 返回:字符串
  • 示例:

>[2] #basicFunction:num_or_string

  • 功能:判断是否为num类型,若是则自动转为num类型,否则为string
  • 参数:x:待转换字符串
  • 返回:number类型数据或string类型数据
  • 示例:

>[3] #basicFunction:getAtQQ

  • 功能:取at对象的qq
  • 参数:字符串(尤指CQ码)
  • 返回:文本形式的qq号
  • 示例:

>[4] #basicFunction:write_file

  • 功能:追加写文件,没有则创建
  • 参数:文件路径,文件内容
  • 返回:提示文本
  • 说明:文件根目录DiceQQ//,我在生成文件时写了点注释,就比如会在当文件读写时在第一行特别注明文件名。
  • 示例:

>[5] #basicFunction:read_file

  • 功能:读取文件全部内容
  • 参数:文件路径
  • 返回:有内容则返回字符串否则返回错误提示
  • 示例:

>[6] #basicFunction:filter_spec_chars

  • 功能:捕获并提取所有中文,合并后输出
  • 参数:待捕获中文的字符串
  • 返回:所有中文合并后的字符串
  • 示例:

>[7] #basicFunction:getFileName

  • 功能:取文件名,有扩展名
  • 参数:文件路径
  • 返回:字符串
  • 示例:

>[8] #basicFunction:getFileName2

  • 功能:取文件名,无扩展名
  • 参数:文件路径
  • 返回:字符串
  • 示例:

>[9] #basicFunction:utfStrLen

  • 功能:返回文本中的字符总数目
  • 参数:字符串
  • 返回:数字
  • 示例:

>[10] #basicFunction:MD5

  • 功能:转字符串为MD5
  • 参数:待转换字符串
  • 返回:MD5
  • 示例:

>[11] #basicFunction:table_exists

  • 功能:判断数组中是否存在指定字符串
  • 参数:数组,查找的字符串
  • 返回:有则为true,没有则什么都不返回
  • 示例:
    先看一下内部代码,设定了一个tables

    接着输入看看效果

>[12] #basicFunction:encodeBase64

  • 功能:返回字符串base64加密后的文本
  • 参数:待加密字符串
  • 返回:base64加密后文本
  • 说明:因为不支持 math.pow 所以把写好的解密删了
  • 示例:

>[13] #basicFunction:string.split

  • 功能:分割字符串
  • 参数:待分割字符串,分隔符
  • 返回:字符串表
  • 示例:

>[14] #basicFunction:string.count

  • 功能:统计字符串中字符的个数
  • 参数:待统计的字符串
  • 返回:总字符个数、英文字符数、中文字符数
  • 示例:

>[15] #basicFunction:string.width

  • 功能:计算字符串的宽度
  • 参数:字符串
  • 返回:数字
  • 说明:这里一个中文等于两个英文,后面的情况同理,此函数和 _utfStrLen_原理类似
  • 示例:

>[16] #basicFunction:string.tocenter

  • 功能: 把字符串扩展为长度为len,居中对齐, 其他地方以filledChar补齐
  • 参数: 需要被扩展的字符、数字、字符串表,被扩展成的长度,填充字符(可以为空)
  • 返回:字符串
  • 示例:

>[3+14] #basicFunction:string.toleft

  • 功能: 把字符串扩展为长度为len,左对齐, 其他地方用filledChar补齐
  • 参数:需要被扩展的字符、数字、字符串表,被扩展成的长度,填充字符(可以为空)
  • 返回:字符串
  • 说明:中文相当于2个英文
  • 示例:

>[18] #basicFunction:string.toright

  • 功能: 把字符串扩展为长度为len,右对齐, 其他地方用filledChar补齐
  • 参数:需要被扩展的字符、数字、字符串表,被扩展成的长度,填充字符(可以为空)
  • 返回:字符串
  • 示例:

>[19] #basicFunction:string.ltrim

  • 功能:对齐,去除通配符
  • 参数:文本
  • 返回:文本
  • 示例:暂无

>[20] #basicFunction:string.rtrim

  • 功能:对齐,去除通配符
  • 参数:文本
  • 返回:文本
  • 示例:暂无

>[21] #basicFunction:string.trim

  • 功能:对齐,去除通配符
  • 参数:文本
  • 返回:文本
  • 示例:暂无

>[22] #basicFunction:ranStr

  • 功能:随机输出字符串
  • 参数:数字(输出个数)
  • 返回:字符串
  • 示例:

>[23] #basicFunction:tryCatch

  • 功能:监听错误报告如有则反馈
  • 参数:函数名
  • 返回:错误信息
  • 说明:lua有两个函数可以捕获异常,分别是pcall(fun[,arg1,…])和xpcall(fun,errfun,[,arg1,…]),对比这两个函数,xpcall多了异常处理,这里仅采用pcall()做示例
  • 示例:在没有改代码的情况下如果直接输入参数,将把输入的文本当做函数名找错
    我们看代码部分,我已经修改好了参数,好,现在它将会调用自己了
    让我们猜一下会输出什么?

    是啊,没有错误,因为是奔着找错的目的执行 _找错_函数,当它能完整运行时自然是没有错误,简言之:

错误的错误就是没有错误(好耶!我又说了一句凡人名言)

那么,换成别的函数还会如此吗?
这里以 bubbleSort 函数为例因为很快就要讲到ta了

很好,果然不负众望的报错并让krypton拦截了

那么输入参数会发生什么?
…to be continue

>[24] #basicFunction:bubbleSort

  • 功能:冒泡(升序)排序
  • 参数:tab:目标表
  • 返回:排好序的文本
  • 示例:
    tab = {3, 4, 61, 7, 5, 8, 56, 14, 11, 10} return bubbleSort(tab)

>[25] #basicFunction:load

  • 功能:安全执行lua语句
  • 说明:暂时弃用
  • 示例:暂无

>[26] #basicFunction:sortTable_delRepeat

  • 功能:将重复出现的数字全部删除(后续数字往前移)
  • 参数:tab:数组
  • 返回:去完重的字符串(多半还是降序的)
  • 示例:

>[27-1] #basicFunction:Round

  • 功能:四舍五入(常用)
  • 参数:num:待计算数字
  • 返回:计算结果
  • 示例:

>[27-2] #basicFunction:Round2

  • 功能:四舍五入(奇进偶舍)
  • 参数:num:待计算数字 i:保留几位小数
  • 返回:计算结果
  • 示例:

>[28] #basicFunction:Multiply

  • 功能:相乘,同时判断了是否有null值
  • 参数:都看得懂吧//两个数字…
  • 返回:计算结果
  • 示例:

>[29] #basicFunction:Divide

  • 功能:相除
  • 参数:denominator:除数 numerator:被除数
  • 返回:计算结果
  • 示例:

>[30-1] #basicFunction:Ceil

  • 功能:取整
  • 参数:数字
  • 返回:结果
  • 示例:

>[30-2] #basicFunction:Ceil2

  • 参数:数字
  • 返回:结果
  • 说明:第二种取整思路
  • 示例:

>[31] #basicFunction:unicode2Chinese

  • 功能:利用JSON解析器把Unicode转中文汉字
  • 参数:uni:完整的json格式Unicode码
  • 返回:汉字字符串
  • 示例:

>[32] #basicFunction:stamp2Time

  • 功能:时间戳转时间
  • 参数:Stamp:时间戳
  • 返回:字符串
  • 示例:

>[33] #basicFunction:Match

  • 功能:匹配截取字符串
  • 参数:msg:待匹配的字符串 num:截取位置
  • 说明:汉字长度为2,特别注意
  • 示例:

>[34-1] #basicFunction:fitemSort

  • 功能:取数据存入数组
  • 参数:字符串
  • 返回:数组
  • 示例:暂无

>[34-2] #basicFunction:ffitemSort

  • 功能:取数据存入数组
  • 参数:字符串
  • 返回:数组
  • 示例:暂无

> FUNCTION INDEX&LIST:

[1]table_draw(tab) LINE:48
[2]num_or_string(x) LINE:55
[3]getAtQQ(str) LINE:67
[4]write_file(path, text) LINE:79
[5]read_file(path) LINE:88
[6]filter_spec_chars(s) LINE:103
[7]getFileName(path) LINE:133
[8]getFileName2(path) LINE:140
[9]utfstrlen(str) LINE:147
[10]MD5(str) LINE:168
[11]table_exists(tables,value) LINE:395
[12]encodeBase64(source_str) LINE:408
[13]string.split(str, delimiter) LINE:443
[14]string.count(str) LINE:460
[15]string.width(str) LINE:470
[16]string.tocenter(str, len, filledChar) LINE:479
[17]string.toleft(str, len, filledChar) LINE:511
[18]string.toright(str, len, filledChar) LINE:540
[19]string.ltrim(str) LINE:573
[20]string.rtrim(str) LINE:577
[21]string.trim(str) LINE:581
[22]ranStr(num) LINE:588
[23]tryCatch(fun) LINE:604
[24]bubbleSort(tab) LINE:620
[25]弃用 LINE:646
[26]sortTable_delRepeat(tab) LINE:653
[27-1]Round(num, i) LINE:672
[27-2]Round2(num, i) LINE:681
[28]Multiply(num1,num2) LINE:702
[29]Divide(denominator,numerator) LINE:718
[30-1]Ceil(num) LINE:734
[30-2]Ceil2(num) LINE:753
[31]unicode2Chinese(uni) LINE:765
[32]stamp2Time(Stamp) LINE:782
[33]Match(msg,num) LINE:789
[34-1]fitemSort(rest) LINE:798
[34-2]ffitemSort(rest) LINE:809

在lua编写过程中使用

由于时间来不及,在lua中使用的教程与进阶用法将会在日后补齐。
to be…

一些实例

getAtQQ的使用:【指令脚本】爬/丢/赞
tryCatch的使用:【指令脚本/思想】巴拉巴拉骰娘自检和偷懒自定义报错什么的