EasyRun|节点链式和常用函数
- 作者: 爾ф氵曼埗
- 热度: 59308092
- 更新: 2024-02-27 23:09:06
# 引入插件
compile("EasyRun:1.1.1_release_addfun_lenEx")
# 使用说明
# 使用前必要说明:
1. 文档中的函数参数为三个点...表示参数不限个数, 亦可空, 带[]括号, 则表示参数可省略
2. 所有函数使用pcall封装, 即使出错脚本也不会停止
3. 函数传参做了一系列处理, 当你传入的参数不符合要求, 将会print日志
4. 插件免费使用
5. 插件使用问题, 各种技术交流, 可加QQ群: 339557523
# 使用简介:
# 一.导入插件:compile("EasyRun")
# 二.常用函数:
1.随机函数:
random([num1][,num2]) -- 随机数字(参数不区分大小顺序, 当不传入参数时, 在0和1之间随机一个数字, 当传入一个参数时, 在1到此参数之间随机一个数字, 当传入两个参数时, 在此两个参数之间随机一个数字)
randomChar() -- 随机一个汉字
randomArr(arr) -- 随机取数组中的一个元素
random() => 0
random(123) => 100
random(50,100) => 66
random(100,50) => 88
randomChar() => 看
randomArr({1,2,3,4,5,6,}) => 3
2
3
4
5
6
2.字符串处理函数:
findStr(str,str1) -- 查找字符串,找到返回字符串的起始位置,没找到返回nil
split(str,reps) -- 分割字符串
replace(str, beReplace, toStr) -- 替换字符串中指定的内容
trim(str) -- 删除字符串首尾空
len(str) -- 取字符串长度(汉字占三位)
lenEx(str) -- 取字符串实际长度
mid(str,start,num) -- 取字符串内容,start为起始位置,num为截取的字符长度(注意一个汉字长度为3,其他字符一个长度为1)
midEx(str,str1,str2) -- 取字符串str中两个字符串str1,str2之间的内容,不包括str1,str2
left(str,str1) -- 取字符串str中的字符串str1左边所有内容,不包括str1()
right(str,str1) -- 取字符串str中的字符串str1右边所有内容,不包括str1
findStr('wozainageweizhi','ge') => 8
split("1|2|3", "|") => ["1", "2", "3"]
replace("靓仔~搭车么咯?", "靓仔", "靓女") => "靓女~搭车么咯?"
trim(" 小 姐姐 ") => "小 姐姐"
len("猜猜我是谁") => 15 (汉字每一个字占三位长度)
len("abc") => 3
lenEx("猜猜我是谁") => 5
mid("123456789",3,3) => "345"
midEx("123456789","123","789") => "456"
left("123456789","789") => "123456"
right("123456789","123") => "456789"
2
3
4
5
6
7
8
9
10
11
3.时间处理函数:
year([time]) -- 返回时间中的年份(参数为时间戳,省略时为当前系统时间)
month([time]) -- 返回时间中的月份(参数为时间戳,省略时为当前系统时间)
day([time]) -- 返回时间中在当前月份的第几天(参数为时间戳,省略时为当前系统时间)
hour([time]) -- 返回时间中当天的第几个小时(参数为时间戳,省略时为当前系统时间)
minute([time]) -- 返回时间中的分钟(参数为时间戳,省略时为当前系统时间)
second([time]) -- 返回时间的秒数(参数为时间戳,省略时为当前系统时间)
weekDay([time]) -- 返回时间中在星期的第几天(参数为时间戳,省略时为当前系统时间)
yearDay([time]) -- 返回时间中在当年的第几天(参数为时间戳,省略时为当前系统时间)
toDate([time][, format]) -- 时间戳转成指定格式的日期(time参数省略时为当前系统时间,format省略时默认格式为"%Y-%m-%d %H:%M:%S")
toUnixTime([date]) -- 日期转成时间戳(省略时为当前系统时间)
compareTime(date) -- 将指定日期与当前网络时间对比,指定日期大于当前网络时间返回true,小则返回false
lateTime(late[,date]) -- 计算几天之后的日期
now(...) -- 取当前系统时间,参数省略时返回日期格式时间,填入任意参数返回时间戳
netTime(...) -- 取当前网络时间,参数省略时返回日期格式时间,填入任意参数返回时间戳
以当前时间为"2020-05-08 22:03:40",当前时间戳为1588946620,来举例
year(1588946620) => 2020
month(1588946620) => 5
day(1588946620) => 8
hour(1588946620) => 22
minute(1588946620) => 3
second(1588946620) => 40
weekDay(1588946620) => 5
yearDay(1588946620) => 129
toDate(1588946620) => "2020-05-08 22:03:40"
toUnixTime("2020-05-08 22:03:40") => 1588946620
compareTime("2021-05-08 22:03:40") => true (指定日期比当前日期大)
compareTime("2019-05-08 22:03:40") => false (指定日期比当前日期小)
lateTime(5) => "2020-05-13 22:03:40"
now() => "2020-05-08 22:03:40",参数省略时返回日期格式时间
now(1) => "1588946620",填入任意参数返回时间戳
netTime() => "2020-05-08 22:03:40",参数省略时返回日期格式时间
netTime(1) => "1588946620",填入任意参数返回时间戳
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
4.文件读写函数:
(例子只演示txt文本文件,实际上文件读写函数理论上是支持所有文本类文件的,诸如后缀名为lua,js等等的文件)
read(filePath) -- 读取文件内容
readLine(filePath,num) -- 读取文件指定行内容
readLines(filePath) -- 读取文件内容到数组
linesNumber(filePath) -- 取文件内容行数
write(filePath,str) -- 写内容到文件(覆盖写入)
writeLine(filePath,line,str) -- 在文件指定行写入内容
writeLineTC(filePath,line,str) -- 在文件指定行写入内容(未测试, 用法和writeLine一样, 如果使用writeLine写入出现空行请使用此函数)
writeLines(filePath,strArr) -- 把数组中的内容写到文件
writeLinesTC(filePath,strArr) -- 把数组中的内容写到文件(未测试, 用法和writeLines一样, 如果使用writeLines写入文件出现空行请使用此函数)
addEnd(filePath,str) -- 在文件内容最后加入内容
deleteLine(filePath,line) -- 删除文件指定行内容
replaceFile(filePath,str,toStr) -- 替换文件指定内容
read("/sdcard/test.txt") -- 读取test文件的内容
readLine("/sdcard/test.txt",5) -- 读取test文件第5行的内容
readLines("/sdcard/test.txt") -- 读取test文件的内容并保存到数组中
linesNumber("/sdcard/test.txt") -- 取test文件内容总行数
write("/sdcard/test.txt","123456789") -- 把"123456789"写入到test文件中(覆盖写入,test之前的内容会被清空)
writeLine("/sdcard/test.txt",5,"123456789") -- 在test文件第5行写入"123456789"
writeLines("/sdcard/test.txt",{"123","456","789"}) -- 在test文件中分别写入"123","456","789"
addEnd("/sdcard/test.txt","12456789") -- 在test文件最后面写入"123456789",test文件之前的内容被保留
deleteLine("/sdcard/test.txt",3) -- 删除test文件第3行的内容
replaceFile("/sdcard/test.txt","123","456") -- 把test文件中的"123"替换成"456"
2
3
4
5
6
7
8
9
10
5.其他
longClick(x,y[,time]) -- 长按
longClick(100,100,500) => 在点(100,100)处长按500毫秒
longClick(100,100) => 在点(100,100)处长按1000毫秒,time参数省略,默认1000毫秒
2
rangeClick(x1,y1,x2,y2) -- 在指定范围内随机一个坐标进行点击
rangeClick(100,100,200,200) => 在(100,100,200,200)内随机点击一个坐标
# 三.颜色处理:
getColorRGB(hex) 16进制字符串颜色转换R,G,B十进制整数值
local r,g,b=getColorRGB("#123456")
print(r) => 18
print(g) => 52
print(b) => 86
print(r..g..b) => 185286
2
3
4
5
getColorHex({r,g,b}) 颜色RGB转换成16进制字符串形式
local color = getColorHex({18,52,86})
print(color) => "#123456"
2
# 四.节点链式:
# (一)时间睡眠类:
as([t]) 动作时间间隔,此方法可不调用,不调用时默认500ms
bas(t) 动作开始前睡眠一段时间,此方法可不调用,不调用则不睡眠
aas(t) 动作结束后睡眠一段时间,此方法可不调用,不调用则不睡眠
注:时间睡眠类分为全局调用和单个动作调用(同类型睡眠在单个动作和全局同时被调用时,对于该动作来说,只调用单个动作中的睡眠)
(1).全局调用(需在脚本开头调用),在所有动作中都生效(如果同时单个动作中也设置了同类型睡眠,那么对于该动作来说,只有在该动作中设置的睡眠生效)
rule:as([t]) -- 所有动作时间间隔为t毫秒
rule:bas(t) -- 所有动作开始前先睡眠t毫秒
rule:aas(t) -- 所有动作结束后再睡眠t毫秒
rule:as(t):bas(t):aas(t) -- 多个睡眠,可使用链式
2
3
4
(2).单个动作调用
R():text("QQ"):as(1000):tap() -- as在链式中放在动作前(tap为动作,as放在tap前)
R():text("QQ"):bas(1000):tap() -- bas在链式中放在动作前(tap为动作,bas放在tap前),在点击QQ之前先睡眠1秒
R():text("QQ"):aas(1000):tap() -- aas在链式中放在动作前(tap为动作,aas放在tap前),在点击QQ之后睡眠1秒
2
3
####(二)检索(查找)类:
findOnce() 查找一次节点,找到返回节点检索规则,没找到返回nil
findOne() 一直查找节点直到找到节点(阻塞)
isExist() 判断节点是否在当前页面
waitFor() 等待节点出现(阻塞)
withInFind(...) 在指定时间内查找节点,找到返回节点规则,超过指定时间没找到返回nil
(1).直接在节点规则中加入链式
R():text("QQ"):findOnce() -- 查找一次QQ
R():text("QQ"):findOne() -- 一直查找QQ直到找到为止
R():text("QQ"):isExist() -- 判断QQ是否在当前页面
R():text("QQ"):waitFor() -- 一直等待直到QQ出现为止
R():text("QQ"):withInFind() -- 在5秒内查找QQ,找到返回节点规则,超时没找到返回nil,此处参数省略,默认5秒
R():text("QQ"):withInFind(10) -- 在10秒内查找QQ,找到返回节点规则,超时没找到返回nil
2
3
4
5
6
(2).把节点规则赋值给变量后调用
local QQ = R():text('QQ')
QQ:findOnce() -- 查找一次QQ
QQ:findOne() -- 一直查找QQ直到找到为止
QQ:isExist() -- 判断QQ是否在当前页面
QQ:waitFor() -- 一直等待直到QQ出现为止
QQ:withInFind() -- 在5秒内查找QQ,找到返回节点规则,超时没找到返回nil,此处参数省略,默认5秒
QQ:withInFind(10) -- 在10秒内查找QQ,找到返回节点规则,超时没找到返回nil
2
3
4
5
6
7
####(三)动作类:
(1)按键类:
forBack() 一直按返回键直到节点出现(阻塞)
此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):forBack() -- 一直按返回键直到QQ出现在当前页面为止
2
(2)输入类:
enter(str) 在节点里输入文本
此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):enter("你好")
2
(3)滑动类:
swipe(x1,y1,x2,y2,time) 节点出现后滑动页面
此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text('QQ'):swipe(100,100,200,200,500) -- 出现QQ时滑动页面
2
(4)点击类
# 1.直接点击节点类
tap() 点击节点
untilTap() 一直查找节点直到找到节点并点击(阻塞)
withInTap(...) 在指定时间内查找节点,找到节点那么点击节点,超过时间没找到则不点击
此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):tap() -- 查找一次QQ,找到点击,没找到则不点击
R():text("QQ"):findOne():tap() -- 直到找到QQ并点击
R():text("QQ"):isExist():tap() -- 如果QQ在当前页面则点击QQ,不在则不点击
R():text("QQ"):withInFind():tap() -- 在5秒内如果找到QQ则点击QQ,超过时间没找到则不点击,此处参数省略,默认5秒
R():text("QQ"):withInFind(10):tap() -- 在10秒内如果找到QQ则点击QQ,超过时间没找到则不点击
R():text("QQ"):untilTap() -- 直到找到QQ并点击(效果与findOne():tap()相同)
R():text("QQ"):withInTap() -- 在5秒内如果找到QQ则点击QQ,超过时间没找到则不点击,此处参数省略,默认5秒(效果与withInFind():tap()相同)
R():text("QQ"):withInTap(10) -- 在10秒内如果找到QQ则点击QQ,超过时间没找到则不点击(效果与withInFind():tap(10)相同)
2
3
4
5
6
7
8
9
# 2.随机点击节点类
randomTap(...) 在节点的范围缩减...个像素的范围内进行随机点击,参数不填时默认缩减1像素
untilRandomTap(...) 一直查找节点直到找到节点并在节点的范围缩减...个像素的范围内进行随机点击,参数不填时默认缩减1像素(阻塞)
withInRandomTap(t,tt) 在指定时间t内查找节点(t参数省略时默认5秒),如果找到节点那么在节点的范围缩减tt个像素(tt参数不填时默认缩减1像素)的范围内进行随机点击,超过时间没找到则不点击
只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):randomTap(5) -- 查找一次QQ,如果找到QQ那么在节点的范围缩减5个像素的范围内进行随机点击,参数不填时默认缩减1像素,没找到QQ则不点击
R():text("QQ"):untilRandomTap(5) -- 一直查找QQ直到找到QQ那么在QQ节点的范围缩减5个像素的范围内进行随机点击,参数不填时默认缩减1像素
R():text("QQ"):withInRandomTap(10,5) -- 在10秒内(参数省略时默认5秒)如果找到QQ那么在节点的范围缩减5个像素(参数不填时默认缩减1像素,如果填写此参数,则前面的超时参数也要填写)的范围内进行随机点击,超过时间没找到则不点击
2
3
4
# 3.指定坐标范围随机点击类
rangeTap(x1,y1,x2,y2) 当出现节点时,在指定的范围内进行随机点击
untilRangeTap(x1,y1,x2,y2) 一直查找节点直到找到节点并在指定的范围内进行随机点击(阻塞)
withInRangeTap(t,x1,y1,x2,y2) 在指定时间t内查找节点,如果找到节点那么在指定的范围内进行随机点击,超过时间没找到则不点击
只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):rangeTap(100,100,200,200) -- 查找一次QQ,如果找到QQ那么在(100,100,200,200)范围内进行随机点击
R():text("QQ"):untilRangeTap(100,100,200,200) -- 一直查找QQ直到找到QQ那么在(100,100,200,200)的范围内进行随机点击
R():text("QQ"):withInRandomTap(10,100,100,200,200) -- 在10秒内如果找到QQ那么在(100,100,200,200)范围内进行随机点击,超过时间没找到则不点击
2
3
4
# 4.点击节点中心坐标类
tapCenter() 点击节点中心坐标
untilTapCenter() 一直查找节点直到找到节点并点击节点中心坐标(阻塞)
withInTapCenter(...) 在指定时间内查找节点,如果找到节点那么点击节点中心坐标,超过时间没找到则不点击
用法和直接点击类一样,请参考直接点击类
# 历史版本
更新记录
- 2021-08-15 19:45:40 1.1.4_release_repair_replace2
- 2021-06-24 18:45:19 1.1.1_release_repair_replace
- 2021-06-23 13:59:24 1.1.1_release_addfun_lenEx
- 2021-06-08 17:59:38 1.1.0_release_android_filecode
- 2021-05-03 14:10:29 1.0.9_release_comment_md5
- 2020-12-29 08:16:06 1.0.8_release_revise_tips_7
- 2020-11-07 18:06:16 1.0.8_release_revise_tips_6