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