EasyRun|节点链式和常用函数

  • 作者: 爾ф氵曼埗
  • 热度: 59308092
  • 更新: 2024-02-27 23:09:06

# 引入插件

   compile("EasyRun:1.1.4_release_repair_replace2")
1

# 使用说明

使用前必要说明:

  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 1 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" 1 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",填入任意参数返回时间戳 1 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" 1 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毫秒 1 2 rangeClick(x1,y1,x2,y2) -- 在指定范围内随机一个坐标进行点击

rangeClick(100,100,200,200) => 在(100,100,200,200)内随机点击一个坐标 1

# 三.颜色处理:

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 1 2 3 4 5 getColorHex({r,g,b}) 颜色RGB转换成16进制字符串形式

local color = getColorHex({18,52,86}) print(color) => "#123456" 1 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) -- 多个睡眠,可使用链式 1 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秒 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 1 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 1 2 3 4 5 6 7

# (三)动作类:

(1)按键类:

forBack() 一直按返回键直到节点出现(阻塞)

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类 R():text("QQ"):forBack() -- 一直按返回键直到QQ出现在当前页面为止 1 2 (2)输入类:

enter(str) 在节点里输入文本

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类 R():text("QQ"):enter("你好") 1 2 (3)滑动类:

swipe(x1,y1,x2,y2,time) 节点出现后滑动页面

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类 R():text('QQ'):swipe(100,100,200,200,500) -- 出现QQ时滑动页面 1 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)相同) 1 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像素,如果填写此参数,则前面的超时参数也要填写)的范围内进行随机点击,超过时间没找到则不点击 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)范围内进行随机点击,超过时间没找到则不点击 1 2 3 4

# 4.点击节点中心坐标类

tapCenter() 点击节点中心坐标

untilTapCenter() 一直查找节点直到找到节点并点击节点中心坐标(阻塞)

withInTapCenter(...) 在指定时间内查找节点,如果找到节点那么点击节点中心坐标,超过时间没找到则不点击

用法和直接点击类一样,请参考直接点击类


# 历史版本

更新记录