插件详情
名称:Sunckkk~
导入:compile("Sunckkk~:2.2")
作者:Sunckkk
简介:*一定要使用最新版本* 强大的sunckkk~插件,持续更新
[TOC] ## `节点操作函数:` #### GetNodeXY(rule) -获取节点中点坐标 参数解析 : rule(节点检索条件) 代码示例: ```lua GetNodeXY(R():id("com.freespace.aplug:id/tv_title_title"):text("节点精灵 "):type("TextView")) ``` 结果:返回所有符合条件的节点坐标的全局变量 帮助:若要获取第二个符合调件的节点的X和Y坐标,使用以下代码 ```lua print(sckNodex2..","..sckNodey2) ``` #### findNode(rule,delay,times,isclickNode) --查找指定节点并点击 参数解析:rule(节点检索条件),delay(查找延时,单位是毫秒),times(查找次数,若填负数则无限查找直到找到节点),isclickNode(布尔值 true or false,找到后是否点击节点,不可点击将使用坐标点击) 代码示例: ```lua findNode(R():id("com.freespace.aplug:id/tv_title_title"):text("节点精灵 "):type("TextView"),1000,30,true) ``` 结果:指定次数(times)找到节点点击后结束此函数,并在日志中打印“找到节点”,若指定次数(times)未找到符合条件节点也会结束,并在日志中打印“超过次数”(times设为负数将无限循环知道找到节点)。 #### clickNode(rule,multiple)----模拟人点击符合条件的节点 参数解析:rule(节点检索条件),multiple(随机倍数) 代码示例; ```lua clickNode(R():id("com.freespace.aplug:id/tv_title_title"):text("节点精灵 "):type("TextView"),30) ``` 结果: 在节点的范围内随机点击,随机倍数为30 帮助:即使随机超过节点范围的最大值也会变为节点的边界坐标-1,但是建议不要过大,防止无法正确点击,最好自己测试取最佳值,30代表的就是30个坐标的偏移 ## `动作函数:` #### Longpress(x,y,time) --长按 参数解析:x,y(长按点的坐标),time(长按时间,单位是毫秒) 代码示例 : ```lua Longpress(100,200,1000) ``` 结果:摁住某点指定时间 #### rsleep(sleeptime,multiple) --随机睡眠 参数解析:sleeptime(睡眠时间。单位是毫秒),multiple(随机倍数) 代码示例: ```lua rsleep(1000,5) ``` 结果:在995,1005之间随机时长睡眠 #### rclick(x,y,multiple) --随机点击 参数解析:x,y(指定点的坐标),multiple(随机倍数) 代码示例: ```lua rclick(100,200,5) ``` 结果:在(95-105,195-205)之间随机点击 帮助:mutiple的值不要设置过大,导致到处乱点,数值自己测试多少最佳 #### KillAppForce(pkgname)--强行结束指定app,免root,目前仅支持部分设备,待更新 参数:pkgname(应用包名) 代码示例: ```lua KillAppForce("com.tencent.mobileqq") ``` 结果:进入app详情页,结束QQ #### 多指滑动(arr,time)--多指滑动 参数:arr(滑动的坐标数组,前两个是第一个手指起始坐标,第三四个是第一指结束坐标)time(滑动时长) 代码示例: ```lua local arr = {100,200,300,100} 多指滑动(arr,500) ``` 帮助:根据数据元素个数进行多指操作,2指arr中应该有8个元素,3指应当有12个元素,以此类推。 使用此函数可以实现双指捏合,多指滑动,以及多点点击以及长按 #### PressKey(value)--按下某键 参数: value: (【0-9】【A-Z】空格 按键码也可https://blog.csdn.net/qq_25430563/article/details/89182144) 代码示例: ```lua PressKey('A') ``` #### S_tap(x,y)--root点击 参数:x,y(需要点击的x和y坐标) 代码示例: ```lua S_tap(10,10) ``` #### S_Tap(x,y)--根据安卓版本自动选择点击方式,低于7会调用root点击 参数:x,y(需要点击的x和y坐标) 代码示例: ```lua S_Tap(10,10) ``` #### S_swipe(x1,y1,x2,y2,time)--root点击 参数:x1,y1,x2,y2(从x1,y1滑动到x2,y2耗时time毫秒) 代码示例: ```lua S_swipe(10,10,100,200,300) ``` #### S_Swipe(x1,y1,x2,y2,time)--根据安卓版本自动选择滑动方式,低于7会调用root滑动 参数:x1,y1,x2,y2(从x1,y1滑动到x2,y2耗时time毫秒) 代码示例: ```lua S_Swipe(10,10,100,200,300) ``` #### 更多按键操作:Enter() 按下回车 VolUp() 音量加 VolDn() 音量减 ## `字符串操作函数` #### splitStr(strurl , strchar , bafter) --字符串分割,返回一个字符串 参数解析:strurl (要分割的字符串), strchar (切点字符), bafter(返回切割前部分,还是返回后部分) 代码示例: ```lua i = splitStr("nihao,woshi,xiaoming" , "," , "true") --已,为分割字符,将nihao,woshi,xiaoming分割成两部分,并返回后半部分 print(i) --结果是“xiaoming”,若想取前半部分则将true改为false ``` #### string.split(input, delimiter) --字符串分割,返回一个包含结果的数组 参数解析 : input (要分割的字符串),delimiter(切点字符) 代码示例: ```lua i = string.split("nihao,woshi,xiaoming" , "," ) --已,为分割字符,将nihao,woshi,xiaoming分割返回一个数组 print(i) --结果是["nihao","woshi","xiaoming"],要取出woshi,使用 i[2] ``` #### ArrayInsert(arr,value,pos)--插入数据到数组 参数:arr(要插入的数组)value(要插入的值)pos(插入位置) 代码示例: ```lua local arr = {1,2,3,4,5} ArrayInsert(arr,"6",5) print(arr) ``` 结果:{1,2,3,4,5,6} #### ArrayRemove(arr,pos)--删除数组成员 参数: arr(要修改的数组) pos(要删除的位置) 代码示例: ```lua local arr = {1,2,3,4,5} ArrayRemove(arr,5) ``` 结果:{1,2,3,4} ## `安卓意图` 注意:部分手机可能不能正确执行 #### GotoQQChatPage(qq_num,GroupOrPerson) --跳转至指定QQ号聊天界面 参数解析:qq_num (需要跳转的QQ号或者QQ群号),GroupOrPerson(指定为QQ号或者QQ群号) 代码示例: ```lua GotoQQChatPage("626935717",true) --跳转到QQ号为626935717的聊天页面 GotoQQChatPage("418704037",false) -- 跳转到节点精灵官方qq群 ``` #### GotoAppSettingsPage(packagename)--跳转至指定应用设置界面,可用于强行停止应用 参数解析:packagename (应用包名) 代码示例: ```lua GotoAppSettingsPage("com.freespace.aplug") --跳转至节点精灵设置界面 ``` #### Callnum(phonenum) --拨打指定号码的电话 参数解析 :phonenum(电话号码) 代码示例: ```lua Callnum("10086")--给10086打电话 ``` #### SendMessage(Tonum,content) --给指定号码发指定内容的短信 参数解析: Tonum(需要发送到的电话号码) content(内容) 代码示例: ```lua SendMessage("10086","欢迎使用Sunckkk~插件") ``` #### DeleteApp(packagename) --卸载指定App 参数解析:packagename(包名) 代码示例: ```lua DeleteApp("com.freespace.aplug")--卸载节点精灵(后果自负) ``` #### SearchApp(Appname) --搜索指定的app 参数解析:Appname(应用名) 代码示例: ```lua SearchApp("节点精灵") --搜索节点精灵 ``` #### OpenWeb(url) -- 打开网址 参数解析:url(网址) 代码示例: ```lua OpenWeb("www.baidu.com") -- 用系统浏览器打开百度 ``` ## `时间函数` #### GetOlineUnixtimestamp()--获取毫秒级网络时间戳 代码示例: ```lua local i = GetOlineUnixtimestamp() print (i) ``` 结果:返回是格林威治时间1970年01月01日00时00分00秒起至当下的总毫秒数,如1591952950616 #### getTimeStamp(t)--将毫秒时间戳转换为包含年月日时分秒的表 代码示例: ```lua local i = GetOlineUnixtimestamp() local arr = getTimeStamp(t) ``` 帮助:秒级时间戳需要先*1000才能正常使用 #### GetOnlineTime() --获取网络时间 代码示例: ```lua local i= GetOnlineTime() --获取一个包含年月日时分秒的表 ``` 结果: 返回值为一个包含年月日时分秒的表 帮助:返回结果如下{"second":"09","hour":"18","year":"2020","day":"10","minute":"11","month":"06"}。若要获取时,则使用以下代码:依此类推 ```lua local i= GetOnlineTime() local hour = i['hour'] ``` #### Timer(id, time)---定时器 参数:id (计时器id)time(计时时间,单位是秒) 代码示例: ```lua TimeSign(1) while true do if Timer(1,5) then print("时间到了") else print("时间未到") end end ``` #### Week_of_month(date)----一个月的第几周 参数:date:秒级时间戳 代码示例: ```lua local a = Week_of_month("1594022498") print(a) ``` ## `文件函数` **特别注意:部分函数需要root,在该函数处会做声明** #### GetDirFile(dirname)--获取包含当前路径的所有文件名 参数:dirname(需要获取的文件目录) 代码示例: ```lua local a = GetDirFile("sdcard/") print(a) ``` 返回结果: 数组,示例如下 ["","984/main.ns\n","905/main.ns\n","440/main.ns\n","440/lib.ns\n","440/limit.ns\n","440/color.ns\n","1116/main.ns\n","1107/ui.ns\n","1107/main.ns\n","trace_export/20200324_002346_c2c_20200324002345954.slk.mp3\n""974/ui.ns\n","974/main.ns"] 帮助:要拿出想要的第二个文件名需要进行如下操作 ```lua local b = a[2] splitStr(b , "\n" , false) ``` #### IsFileExist(filename)--判断文件是否存在 参数:filename(文件名) 代码示例: ```lua if IsFileExist("sdcard/a.txt") then print("yes") else print("false") end ``` #### FileWrite(filename,str)--添加内容到文件 参数:filename(文件名)str(写入内容) 代码示例: ```lua if IsFileExist("sdcard/a.txt") then FileWrite("a.txt","Sunckkk") else print("文件不存在") end ``` #### FileWriteLines(filename, Lines)--添加多行内容到文件 参数:filename(文件名)Lines(数组,包含写入内容) 代码示例: ```lua local Lines = {"Sunckkk","NO.1"} if IsFileExist("sdcard/a.txt") then FileWriteLines("sdcard/a.txt", Lines) else print("文件不存在") end ``` #### ReNameFile(oldname, newname)--重命名文件,也可用于移动文件,替换文件 参数:oldname(旧文件名)newname (新文件名) 代码示例: ```lua if IsFileExist("sdcard/a.txt") then ReNameFile("sdcard/a.txt", "sdcard/b.txt") else print("文件不存在") end ``` #### DeleteFile(filename)-- 删除文件 参数:filename(需要删除的文件名) 代码示例: ```lua DeleteFile("sdcard/a.txt") ``` ***以下函数需要root权限:*** #### mkdir(dirname)-- 新建目录 代码示例: ```lua mkdir("sdcard/Sunckkk") ``` #### DeleteDir(dirname)-- 删除目录 代码示例: ```lua DeleteDir("sdcard/Sunckkk") ``` #### MoveFile(file1, file2)-- 移动文件 | mv 文件名 文件名 | 将源文件名改为目标文件名 | | ---------------------- | :----------------------------------------------------------- | | MoveFile文件名 目录名 | 将文件移动到目标目录 | | MoveFile 目录名 目录名 | 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名 | | MoveFile目录名 文件名 | 出错 | #### Touchfile(file)--用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 参数:具体参数请百度,Linux Touch #### CopyFile(file1, dirname) 参数:具体参数请百度,Linux cp ## `adb指令` #### Execute(cmd)---- 执行并返回execute命令的结果 [cmd:执行的命令行] [返回结果文本] **adb指令大全**:https://blog.csdn.net/zhonglunshun/article/details/78362439 ## `设备操作函数` ##### **特别注意:部分需要root** #### UpdatePictureForce(picpath)--强制刷新指定目录下的图片到图库展示 参数: picturepath(图片路径) 代码示例: ```lua UpdatePicture("sdcard/a.png") ``` #### GetPowerOnTime()--获取开机时间 参数:无 代码示例: ```lua local i = GetPowerOnTime() ``` 结果: 返回开机到现在的秒数,精确到小数点以后第二位 #### GetMACAdress()--获取设备的MAC地址 #### SetMACAdress(address)-- 设置设备的MAC地址 参数:address(字符串,新的MAC地址) 代码示例: ```lua SetMAC("aa:bb:cc:dd:ee") ``` #### SetIME(num)--设置输入法 参数:num( 整数型,输入法编号 0:百度小米版输入法 1:讯飞输入法 2:谷歌输入法 3:手心输入法 4:GO输入法 5;触宝输入法 6:QQ拼音 7:百度输入法 8:章鱼输入法 9:按键精灵输入法 10:搜狗输入法 ) 代码示例: ```lua SetIME(0) ``` #### GetNotiMessage(PackageName)--获取通知栏信息 参数:PackageName(包名) 代码示例: ```lua GetNotiMessage("com.freespace.aplug") ``` #### WifiControl(Boolean)--关开wifi 参数:Boolean(布尔值。true or false ,true未开启,false为关闭) 代码示例: ```lua WifiControl(true)--开wifi WifiControl(false)--关wifi ``` #### DataControl(Boolean)--开关数据连接 参数: Boolean(布尔值。true or false ,true未开启,false为关闭) 代码示例: ```lua DataControl(true)--开数据 DataControl(false)--关数据 ``` #### IsConnectWifi()--检测wifi是否开启 代码示例: ```lua if IsConnectWifi() then print("Wifi连上了") else print("Wifi没有连上") end ``` #### IsBluetoothOpen()--判断蓝牙是否开启 代码示例: ```lua if IsBluetoothOpen() then print("蓝牙开启") else print("蓝牙没开启") end ``` #### GetAndroidVersion()-获取安卓系统的版本号 代码示例: ```lua local i = GetAndroidVersion() print(i) ``` #### Reboot()--重启 代码示例: ```lua Reboot() ``` #### ShutDown()--关机 代码示例: ```lua ShutDown() ``` #### IsVirtualMeachine()----判断设备是否虚拟机 代码示例: ```lua if IsVirtualMeachine() then print("虚拟机器") else print("真机") end ``` #### BatteryStatus()--判断充电状态 返回值: status(0,未充电或者其他状态;1,交流电源充电;2,usb充电;3,无线充电。) 代码示例: ```lua if BatteryStatus() == 1 then print("交流电源充电") elseif BatteryStatus() == 2 then print("usb充电") elseif BatteryStatus() == 3 then print("无线充电") else print("未充电或其他") end ``` #### SetPhoneTime(日期,时间) --设置手机时间 参数解析: 日期(2020年6月10号,应写成20200610) 时间(19点41分10秒,应写成194110) 代码示例: ```lua SetPhoneTime(20200610,194110) ``` #### GetStatusBarHeight()-- 获取通知栏的高度 代码示例: ```lua print("通知栏的高度是"..GetStatusBarHeight()) ``` #### GetRAMpercent()--获取剩余内存百分比 代码示例: ```lua print("当前剩余内存百分比是"..GetRAMpercent()) ``` #### ScreenIsOn()--是否亮屏(检测光感是否开启) 代码示例: ```lua if ScreenIsOn() then print("屏幕亮了") else print("屏幕没亮") end ``` #### OpenAirplaneMode()--开启飞行模式 代码示例: ```lua OpenAirplaneMode() ``` #### CloseAirplaneMode()--关闭飞行模式 代码示例: ```lua CloseAirplaneMode() ``` #### IsAutoBrightness()--获取是否自动调节亮度 代码示例: ```lua if IsAutoBrightness() then print("自动调节亮度开启") else print("自动调节亮度关闭") end ``` #### GetBrightness()--获取当前屏幕亮度 代码示例: ```lua print("当前屏幕亮度是:"..GetBrightness()) ``` #### SetBrightness(num) ----设置当前屏幕亮度 参数: num (亮度值) 代码示例: ```lua SetBrightness(99) ``` #### GetScreenSleep()--获取屏幕休眠时间 代码示例: ```lua print("当前屏幕休眠时间是:"..GetScreenSleep()) ``` #### SetScreenSleeptime(value)--设置屏幕休眠时间 参数:value(休眠时间) 代码示例: ```lua SetScreenSleeptime(30) ``` #### SetNavigationBar(isDisplay)--设置隐藏\显示虚拟键 参数:isDisplay(boolean值,true or false) 代码示例: ```lua SetNavigationBar(false) --隐藏虚拟键 SetNavigationBar(true) --显示虚拟键 ``` #### GetSIMStatus()-- 获取sim卡状态 返回值: true (sim卡已经插入) ,false(sim卡未插入) 代码示例: ```lua if GetSIMStatus() then print("sim卡已经插入") else print("sim卡未插入") end ``` #### KillBg(pkgnamearr)--清理后台 参数:pkgnamearr(不清理的包名数组) 代码示例: ```lua local pkgnamearr = {"com.tencent.mobileqq"} KillBg(pkgnamearr) ``` 结果:清理除了QQ以外的后台程序 #### AppClean(packagename)--清理应用缓存 参数:packagename(清理缓存的包名) 代码示例: ```lua AppClean("com.freespace.aplug") ``` 结果:清理节点精灵的缓存 #### CallingStatus()--获取通话状态,返回值为0,表示待机状态、1表示来电未接听状态、2表示电话占线状态 代码示例: ```lua if CallingStatus() ==0 then print("待机") elseif CallingStatus() ==1 then print("未接听") elseif CallingStatus() ==2 print("电话占线状态") end ``` #### GotCallInNumber()--获取来电号码 代码示例: ```lua print("来电是:"..GotCallInNumber()) ``` #### GetSySIME()--获取系统上的输入法 代码示例: ```lua local arr = GetSySIME() for k,view in arr do print(view) end ``` #### KeepScreenOn(Boolean)-- 保持屏幕常亮 参数: Boolean(布尔值,true or false) 代码示例: ```lua KeepScreenOn(true) --开启屏幕常亮 KeepScreenOn(false) --关闭屏幕常亮 ``` ## `随机函数` #### GetArrElementRand(arr,num)--随机取数组中指定个数的元素 参数:arr (需要被取的数组) num(要取的元素个数) 代码示例: ```lua local arr = {0,1,2,5,7,36,10} print(GetArrElementRand(arr,3)) ``` 结果: ```lua --第一次 [1,2,7] --第二次 [0,10,5] ``` #### RandArray(arr)--随机取数组内容 参数: arr(需要被取的数组) 代码示例: ```lua local arr = {0,1,2,5,7,36,10} print(RandArray(arr)) ``` 结果: ```lua --第一次 1 --第二次 36 ``` #### RandomLetterSmall()--随机小写字母 代码示例: ```lua print(RandomLetterSmall()) ``` #### RandomLetterBig()--随机大写字母 代码示例: ```lua print(RandomLetterBig()) ``` #### RandLetter()--随机字母 代码示例: ```lua print(RandLetter()) ``` #### RandomChinese()--随机汉字 代码示例: ```Lua print(RandomChinese()) ``` ## `联众打码` #### 联众打码(x1,y1,x2,y2,username,password,captchatype,softwareId,softwareSecret)--使用联众进行打码 参数:x1,y1,x2,y2 (需要打码的坐标范围)username,password(联众账号密码)captchatype(打码类型,官网价格页面可查询,滑块建议使用1318)**softwareId,softwareSecret(自己的软件id和密钥,可参与分成,在联众官网申请)非必要参数** 代码示例: ```lua local i = 联众打码(0,0,300,500,"你的联众账号","你的密码",1318) ``` 帮助:i 的值为{"code":0,"data":{"recognition":"805,272","captchaId":"20200611:000000000042357771677"},"message":""}是一个json数据,可用jsonDecode函数进行解析,代码如下: ```lua local j = JsonDecode(i) if j['code'] == '0' then local 返回的结果 = j['data']['recognition'] end ``` #### 联众打码报错(username,password,captchaid,softwareId,softwareSecret) 参数:username,password(联众账号密码)captchaid(需要报错的打码id,从打码接口返回的数据中获得,如20200611:000000000042357771677 **softwareId,softwareSecret(自己的软件id和密钥,可参与分成,在联众官网申请)非必要参数** 代码示例: ```lua 联众打码报错("你的联众账号","你的密码","20200611:000000000042357771677") ``` 帮助:获取captchaid可用上面Json解析以后的j来获取。代码如下: ```lua local captchaid = j['data']['captchaId'] ``` #### 联众点数查询(username,password,softwareId,softwareSecret) 参数:username,password(联众账号密码) **softwareId,softwareSecret(自己的软件id和密钥,可参与分成,在联众官网申请)非必要参数** 代码示例: ```lua 联众点数查询("你的联众账号","你的密码") ``` 帮助:获取返回数据同样使用JsonDecode函数,具体代码和上一样 #### 快手极速版打码示例: ```lua compile('Sunckkk~') function 打码结果转换(打码结果) 打码结果 = 打码结果['data']['recognition'] 打码结果 = splitStr(打码结果, ",",false) --裁剪出坐标 打码结果 = tonumber(打码结果) --将坐标转换未数字,才能使用slid函数 return 打码结果 end function 滑块验证(username,password) local 滑块 = R():text("向右拖动滑块填充拼图"):name("com.kuaishou.nebula"):getBrother(2) local 拼图 = find(R():text("captcha"):type("View"):getChild():getChild():getChild(3)) local 图片 = find(R():text("captcha"):type("View"):getChild():getChild():getChild(2)) if 拼图 then 拼图左上角 = 拼图.rect.left --获取拼图界面的左上角的坐标 else print("未找到拼图") end GetNodeXY(滑块) --调用获取滑块的中点坐标的函数 滑块Y = sckNodey1 --取出滑块的Y坐标 local 打码结果 = 联众打码(图片.rect.left,图片.rect.top,图片.rect.right,图片.rect.bottom,username,password,"1318") --进行联众打码 打码结果 = JsonDecode(打码结果) if 打码结果 then if 打码结果["code"] == "10102006" then print("用户名密码错误") else local 最终结果 = 打码结果转换(打码结果) slid(拼图左上角,滑块Y,最终结果+40,滑块Y,1000) end else print("打码失败") 滑块验证(username,password) --递归调用一次,重新打码 end end ``` ## `百度OCR` #### 百度识图(x1,y1,x2,y2,client_id,client_secret,bool)------百度OCR 参数: x1,y1,x2,y2 (识别区域), client_id,client_secret (百度ocr应用的`API Key`,应用的`Secret Key`),bool(是否需要使用返回位置接口,如果传入true则调用高精度接口[可不填]) 代码示例: ```lua 百度识图(x1,y1,x2,y2,client_id,client_secret) ```