Sunckkk~|*一定要使用最新版本* 强大的sunckkk~插件,持续更新

  • 作者: Sunckkk
  • 热度: 6154487
  • 更新: 2024-02-27 23:08:18

# 引入插件

   compile("Sunckkk~:2.2")
1

# 使用说明

[TOC]

# 节点操作函数:

# GetNodeXY(rule) -获取节点中点坐标

参数解析 : rule(节点检索条件)

代码示例:

GetNodeXY(R()id("com.freespace.aplug:id/tv_title_title")text("节点精灵 ")type("TextView"))

1
2

结果:返回所有符合条件的节点坐标的全局变量

帮助:若要获取第二个符合调件的节点的X和Y坐标,使用以下代码

print(sckNodex2..","..sckNodey2)
1

# 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,30true)
1

结果:指定次数(times)找到节点点击后结束此函数,并在日志中打印“找到节点”,若指定次数(times)未找到符合条件节点也会结束,并在日志中打印“超过次数”(times设为负数将无限循环知道找到节点)。

# clickNode(rule,multiple)----模拟人点击符合条件的节点

参数解析:rule(节点检索条件),multiple(随机倍数)

代码示例;

clickNode(R()id("com.freespace.aplug:id/tv_title_title")text("节点精灵 ")type("TextView"),30)
1

结果: 在节点的范围内随机点击,随机倍数为30

帮助:即使随机超过节点范围的最大值也会变为节点的边界坐标-1,但是建议不要过大,防止无法正确点击,最好自己测试取最佳值,30代表的就是30个坐标的偏移

# 动作函数:

# Longpress(x,y,time) --长按

参数解析:x,y(长按点的坐标),time(长按时间,单位是毫秒)

代码示例 :

Longpress(100,200,1000)
1

结果:摁住某点指定时间

# rsleep(sleeptime,multiple) --随机睡眠

参数解析:sleeptime(睡眠时间。单位是毫秒),multiple(随机倍数)

代码示例:

rsleep(1000,5)
1

结果:在995,1005之间随机时长睡眠

# rclick(x,y,multiple) --随机点击

参数解析:x,y(指定点的坐标),multiple(随机倍数)

代码示例:

rclick(100,200,5)
1

结果:在(95-105,195-205)之间随机点击

帮助:mutiple的值不要设置过大,导致到处乱点,数值自己测试多少最佳

# KillAppForce(pkgname)--强行结束指定app,免root,目前仅支持部分设备,待更新

参数:pkgname(应用包名)

代码示例:

KillAppForce("com.tencent.mobileqq")
1

结果:进入app详情页,结束QQ

# 多指滑动(arr,time)--多指滑动

参数:arr(滑动的坐标数组,前两个是第一个手指起始坐标,第三四个是第一指结束坐标)time(滑动时长)

代码示例:

local arr = {100,200,300,100}
多指滑动(arr,500)
1
2

帮助:根据数据元素个数进行多指操作,2指arr中应该有8个元素,3指应当有12个元素,以此类推。

使用此函数可以实现双指捏合,多指滑动,以及多点点击以及长按

# PressKey(value)--按下某键

参数: value: (【0-9】【A-Z】空格 按键码也可https://blog.csdn.net/qq_25430563/article/details/89182144)

代码示例:

PressKey('A')
1

# S_tap(x,y)--root点击

参数:x,y(需要点击的x和y坐标)

代码示例:

S_tap(10,10)
1

# S_Tap(x,y)--根据安卓版本自动选择点击方式,低于7会调用root点击

参数:x,y(需要点击的x和y坐标)

代码示例:

S_Tap(10,10)
1

# S_swipe(x1,y1,x2,y2,time)--root点击

参数:x1,y1,x2,y2(从x1,y1滑动到x2,y2耗时time毫秒)

代码示例:

S_swipe(10,10,100,200,300)
1

# 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)
1

# 更多按键操作:Enter() 按下回车 VolUp() 音量加 VolDn() 音量减

# 字符串操作函数

# splitStr(strurl , strchar , bafter) --字符串分割,返回一个字符串

参数解析:strurl (要分割的字符串), strchar (切点字符), bafter(返回切割前部分,还是返回后部分)

代码示例:

i = splitStr("nihao,woshi,xiaoming" , "," , "true") --已,为分割字符,将nihao,woshi,xiaoming分割成两部分,并返回后半部分
print(i)
--结果是“xiaoming”,若想取前半部分则将true改为false
1
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]
1
2
3

# ArrayInsert(arr,value,pos)--插入数据到数组

参数:arr(要插入的数组)value(要插入的值)pos(插入位置)

代码示例:

local arr = {1,2,3,4,5}
ArrayInsert(arr,"6",5)
print(arr)
1
2
3

结果:{1,2,3,4,5,6}

# ArrayRemove(arr,pos)--删除数组成员

参数: arr(要修改的数组) pos(要删除的位置)

代码示例:

local arr = {12345}
ArrayRemove(arr,5)
1
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群 	
1
2

# GotoAppSettingsPage(packagename)--跳转至指定应用设置界面,可用于强行停止应用

参数解析:packagename (应用包名)

代码示例:

GotoAppSettingsPage("com.freespace.aplug") --跳转至节点精灵设置界面
1

# Callnum(phonenum) --拨打指定号码的电话

参数解析 :phonenum(电话号码)

代码示例:

Callnum("10086")--给10086打电话
1

# SendMessage(Tonum,content) --给指定号码发指定内容的短信

参数解析: Tonum(需要发送到的电话号码) content(内容)

代码示例:

SendMessage("10086","欢迎使用Sunckkk~插件")
1

# DeleteApp(packagename) --卸载指定App

参数解析:packagename(包名)

代码示例:

DeleteApp("com.freespace.aplug")--卸载节点精灵(后果自负)
1

# SearchApp(Appname) --搜索指定的app

参数解析:Appname(应用名)

代码示例:

SearchApp("节点精灵") --搜索节点精灵
1

# OpenWeb(url) -- 打开网址

参数解析:url(网址)

代码示例:

OpenWeb("www.baidu.com") -- 用系统浏览器打开百度
1

# 时间函数

# GetOlineUnixtimestamp()--获取毫秒级网络时间戳

代码示例:

local i = GetOlineUnixtimestamp()
print (i)
1
2

结果:返回是格林威治时间1970年01月01日00时00分00秒起至当下的总毫秒数,如1591952950616

# getTimeStamp(t)--将毫秒时间戳转换为包含年月日时分秒的表

代码示例:

 local i = GetOlineUnixtimestamp()
 local arr = getTimeStamp(t)
1
2

帮助:秒级时间戳需要先*1000才能正常使用

# GetOnlineTime() --获取网络时间

代码示例:

local i= GetOnlineTime() --获取一个包含年月日时分秒的表
1

结果: 返回值为一个包含年月日时分秒的表

帮助:返回结果如下{"second":"09","hour":"18","year":"2020","day":"10","minute":"11","month":"06"}。若要获取时,则使用以下代码:依此类推

local i= GetOnlineTime() 
local hour = i['hour']
1
2

# Timer(id, time)---定时器

参数:id (计时器id)time(计时时间,单位是秒)

代码示例:

TimeSign(1)
while true do 
	if Timer(1,5) then
		print("时间到了")
	else
		print("时间未到")
	end
end
1
2
3
4
5
6
7
8

# Week_of_month(date)----一个月的第几周

参数:date:秒级时间戳

代码示例:

local a = Week_of_month("1594022498")
print(a)
1
2

# 文件函数

特别注意:部分函数需要root,在该函数处会做声明

# GetDirFile(dirname)--获取包含当前路径的所有文件名

参数:dirname(需要获取的文件目录)

代码示例:

local a = GetDirFile("sdcard/")
print(a)
1
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)
1
2

# IsFileExist(filename)--判断文件是否存在

参数:filename(文件名)

代码示例:

if IsFileExist("sdcard/a.txt") then
	print("yes")
else
	print("false")
end
1
2
3
4
5

# FileWrite(filename,str)--添加内容到文件

参数:filename(文件名)str(写入内容)

代码示例:

if IsFileExist("sdcard/a.txt") then
	FileWrite("a.txt","Sunckkk")
else
    print("文件不存在")
end
1
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
1
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
1
2
3
4
5

# DeleteFile(filename)-- 删除文件

参数:filename(需要删除的文件名)

代码示例:

DeleteFile("sdcard/a.txt")
1

以下函数需要root权限:

# mkdir(dirname)-- 新建目录

代码示例:

mkdir("sdcard/Sunckkk")
1

# DeleteDir(dirname)-- 删除目录

代码示例:

DeleteDir("sdcard/Sunckkk")
1

# 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")
1

# GetPowerOnTime()--获取开机时间

参数:无

代码示例:

local i = GetPowerOnTime()
1

结果: 返回开机到现在的秒数,精确到小数点以后第二位

# GetMACAdress()--获取设备的MAC地址

# SetMACAdress(address)-- 设置设备的MAC地址

参数:address(字符串,新的MAC地址)

代码示例:

SetMAC("aa:bb:cc:dd:ee")
1

# SetIME(num)--设置输入法

参数:num( 整数型,输入法编号 0:百度小米版输入法 1:讯飞输入法 2:谷歌输入法 3:手心输入法 4:GO输入法 5;触宝输入法 6:QQ拼音 7:百度输入法 8:章鱼输入法 9:按键精灵输入法 10:搜狗输入法 )

代码示例:

SetIME(0)
1

# GetNotiMessage(PackageName)--获取通知栏信息

参数:PackageName(包名)

代码示例:

GetNotiMessage("com.freespace.aplug")
1

# WifiControl(Boolean)--关开wifi

参数:Boolean(布尔值。true or false ,true未开启,false为关闭)

代码示例:

WifiControl(true)--开wifi
WifiControl(false)--关wifi
1
2

# DataControl(Boolean)--开关数据连接

参数: Boolean(布尔值。true or false ,true未开启,false为关闭)

代码示例:

DataControl(true)--开数据
DataControl(false)--关数据
1
2

# IsConnectWifi()--检测wifi是否开启

代码示例:

if IsConnectWifi() then
	print("Wifi连上了")
else
	print("Wifi没有连上")
end
1
2
3
4
5

# IsBluetoothOpen()--判断蓝牙是否开启

代码示例:

if IsBluetoothOpen() then
	print("蓝牙开启")
else
	print("蓝牙没开启")
end
1
2
3
4
5

# GetAndroidVersion()-获取安卓系统的版本号

代码示例:

local i = GetAndroidVersion()
print(i)
1
2

# Reboot()--重启

代码示例:

Reboot()
1

# ShutDown()--关机

代码示例:

ShutDown()
1

# IsVirtualMeachine()----判断设备是否虚拟机

代码示例:

if IsVirtualMeachine() then
	print("虚拟机器")
else
	print("真机")
end
1
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
1
2
3
4
5
6
7
8
9

# SetPhoneTime(日期,时间) --设置手机时间

参数解析: 日期(2020年6月10号,应写成20200610)

时间(19点41分10秒,应写成194110)

代码示例:

SetPhoneTime(20200610,194110)
1

# GetStatusBarHeight()-- 获取通知栏的高度

代码示例:

print("通知栏的高度是"..GetStatusBarHeight())
1

# GetRAMpercent()--获取剩余内存百分比

代码示例:

print("当前剩余内存百分比是"..GetRAMpercent())
1

# ScreenIsOn()--是否亮屏(检测光感是否开启)

代码示例:

if ScreenIsOn() then 
	print("屏幕亮了")
else
	print("屏幕没亮")
end
1
2
3
4
5

# OpenAirplaneMode()--开启飞行模式

代码示例:

OpenAirplaneMode()
1

# CloseAirplaneMode()--关闭飞行模式

代码示例:

CloseAirplaneMode()
1

# IsAutoBrightness()--获取是否自动调节亮度

代码示例:

if IsAutoBrightness() then
	print("自动调节亮度开启")
else
	print("自动调节亮度关闭")
end
1
2
3
4
5

# GetBrightness()--获取当前屏幕亮度

代码示例:

print("当前屏幕亮度是:"..GetBrightness())
1

# SetBrightness(num) ----设置当前屏幕亮度

参数: num (亮度值)

代码示例:

SetBrightness(99)
1

# GetScreenSleep()--获取屏幕休眠时间

代码示例:

print("当前屏幕休眠时间是:"..GetScreenSleep())
1

# SetScreenSleeptime(value)--设置屏幕休眠时间

参数:value(休眠时间)

代码示例:

SetScreenSleeptime(30)
1

# SetNavigationBar(isDisplay)--设置隐藏\显示虚拟键

参数:isDisplay(boolean值,true or false)

代码示例:

SetNavigationBar(false) --隐藏虚拟键
SetNavigationBar(true) --显示虚拟键
1
2

# GetSIMStatus()-- 获取sim卡状态

返回值: true (sim卡已经插入) ,false(sim卡未插入)

代码示例:

if GetSIMStatus() then 
	print("sim卡已经插入")
else
	print("sim卡未插入")
end
1
2
3
4
5

# KillBg(pkgnamearr)--清理后台

参数:pkgnamearr(不清理的包名数组)

代码示例:

local pkgnamearr = {"com.tencent.mobileqq"}
KillBg(pkgnamearr)
1
2

结果:清理除了QQ以外的后台程序

# AppClean(packagename)--清理应用缓存

参数:packagename(清理缓存的包名)

代码示例:

AppClean("com.freespace.aplug")
1

结果:清理节点精灵的缓存

# CallingStatus()--获取通话状态,返回值为0,表示待机状态、1表示来电未接听状态、2表示电话占线状态

代码示例:

if CallingStatus() ==0 then
	print("待机")
elseif CallingStatus() ==1 then
	print("未接听")
elseif CallingStatus() ==2
	print("电话占线状态")
end
1
2
3
4
5
6
7

# GotCallInNumber()--获取来电号码

代码示例:

print("来电是:"..GotCallInNumber())
1

# GetSySIME()--获取系统上的输入法

代码示例:

local arr = GetSySIME()
for k,view in arr do
    print(view)
end
1
2
3
4

# KeepScreenOn(Boolean)-- 保持屏幕常亮

参数: Boolean(布尔值,true or false)

代码示例:

KeepScreenOn(true) --开启屏幕常亮
KeepScreenOn(false) --关闭屏幕常亮
1
2

# 随机函数

# GetArrElementRand(arr,num)--随机取数组中指定个数的元素

参数:arr (需要被取的数组) num(要取的元素个数)

代码示例:

local arr = {0,1,2,5,7,36,10}
print(GetArrElementRand(arr,3))
1
2

结果:

--第一次
[1,2,7]
--第二次
[0,10,5]
1
2
3
4

# RandArray(arr)--随机取数组内容

参数: arr(需要被取的数组)

代码示例:

local arr = {0,1,2,5,7,36,10}
print(RandArray(arr))
1
2

结果:

--第一次
1
--第二次
36
1
2
3
4

# RandomLetterSmall()--随机小写字母

代码示例:

print(RandomLetterSmall())
1

# RandomLetterBig()--随机大写字母

代码示例:

print(RandomLetterBig())
1

# RandLetter()--随机字母

代码示例:

print(RandLetter())
1

# RandomChinese()--随机汉字

代码示例:

print(RandomChinese())
1

# 联众打码

# 联众打码(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)
1

帮助: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
1
2
3
4

# 联众打码报错(username,password,captchaid,softwareId,softwareSecret)

参数:username,password(联众账号密码)captchaid(需要报错的打码id,从打码接口返回的数据中获得,如20200611:000000000042357771677 softwareId,softwareSecret(自己的软件id和密钥,可参与分成,在联众官网申请)非必要参数

代码示例:

联众打码报错("你的联众账号","你的密码","20200611:000000000042357771677")
1

帮助:获取captchaid可用上面Json解析以后的j来获取。代码如下:

local captchaid = j['data']['captchaId']
1

# 联众点数查询(username,password,softwareId,softwareSecret)

参数:username,password(联众账号密码) softwareId,softwareSecret(自己的软件id和密钥,可参与分成,在联众官网申请)非必要参数

代码示例:

联众点数查询("你的联众账号","你的密码")
1

帮助:获取返回数据同样使用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



1
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)
1

# 历史版本

更新记录