basicFunction
使用《署名—非商业性使用—相同方式共享 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的使用:【指令脚本/思想】巴拉巴拉骰娘自检和偷懒自定义报错什么的