自动喜欢/发动态功能可正常使用
自动回复功能扣掉了
下方源码适用于积木5.9.55版本,别的版本自测(需要对应版本可去豌豆荚下载)
需要看名字
"ui";
var 本地 = storages.create("造雾者-积目脚本")
var 名 = storages.create('造雾者-积目人名')
var 包名 = 'com.fenzotech.jimu' //积目包名
var 应用名 = "积目" //积目应用名
var 关键词回复话术 = 本地.get("关键词回复话术库")
var 随机话术 = 本地.get("随机话术库")
ui.layout(
<frame>
<vertical>
<appbar>
<toolbar id="toolbar" title="造雾者-积目多功能脚本" />
<tabs id="tabs"/>
</appbar>
<viewpager id="viewpager">
<ScrollView>
<frame>
<vertical padding="15 5 15 0">
<text text=" "/>
<Switch id="autoService" text="无障碍服务" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="15sp" textSize="18sp"/>
<text text=" "/>
<linear>
<text text="开启功能:" textStyle="bold" textSize="18"/>
</linear>
<text text=" "/>
<horizontal>
<radiogroup w="*" marginLeft="50px" orientation="horizontal">
<radio id="功能1" text="划喜欢"checked="true"size="40px"/>
<text text=" "/>
<radio id="功能2" text="发动态"checked="false"size="40px"/>
<text text=" "/>
<radio id="功能3" text="自动回复"checked="false"size="40px"/>
</radiogroup>
</horizontal>
<text text=" "/>
<text text=" "/>
<text text="任务参数:" textStyle="bold" textSize="18"/>
<horizontal>
<text text="动态文案"/>
<input id="动态文案" hint="发布动态的文案" layout_weight="1"/>
</horizontal>
<text text=" "/>
<button id="启动" text="启动脚本"/>
</vertical>
</frame>
</ScrollView>
<ScrollView>
<frame>
<vertical padding="15 5 15 0">
<text text=""/>
<text text ="格式:" textColor="red" textSize="15dp"/>
<text text =" 关键词1-回复话术1-回复话术2-...-回复话术99" textColor="red" textSize="15dp"/>
<text text =" 关键词2-回复话术1-回复话术2-...-回复话术99" textColor="red" textSize="15dp"/>
<text text ="(回复话术没有上限,越多越好)" textSize="10dp"/>
<text text=""/>
<text text ="关键词回复话术库:" textColor="red" textSize="15dp"/>
<input text="{{关键词回复话术}}" id="关键词回复文本"/>
<button text="保存" id="关键词回复保存"/>
</vertical>
</frame>
</ScrollView>
<ScrollView>
<frame>
<vertical padding="15 5 15 0">
<text text=""/>
<text text ="格式:" textColor="red" textSize="15dp"/>
<text text =" 随机话术1" textColor="red" textSize="15dp"/>
<text text =" 随机话术2" textColor="red" textSize="15dp"/>
<text text ="(随机话术没有上限,越多越好)" textSize="10dp"/>
<text text=""/>
<text text ="随机话术库:" textColor="red" textSize="15dp"/>
<input text="{{随机话术}}" id="随机话术文本"/>
<button text="保存" id="随机话术保存"/>
</vertical>
</frame>
</ScrollView>
</viewpager>
</vertical>
</frame>
);
//设置滑动页面的标题
ui.viewpager.setTitles(["启动页面", "关键词回复话术库", "随机话术库"]);
//让滑动页面和标签栏联动
ui.tabs.setupWithViewPager(ui.viewpager);
ui.启动.on("click", function() {
threads.start(function() {
cumtomUI()
主线程()
})
})
ui.关键词回复保存.on("click", function() {
threads.start(function() {
本地.put("关键词回复话术库", ui.关键词回复文本.text())
toast("关键词回复话术库保存成功")
})
})
ui.随机话术保存.on("click", function() {
threads.start(function() {
本地.put("随机话术库", ui.随机话术文本.text())
toast("随机话术库保存成功")
})
})
function 主线程() {
var 动态文案 = ui.动态文案.text()
if (ui.功能2.isChecked()) {
发动态(动态文案)
}
if (ui.功能1.isChecked()) {
滑动线程()
}
}
function 发动态(文案) {
返回发现()
sleep(random(3, 5) * 1000)
while (true) {
var 社区 = text('社区').findOnce()
var 附近 = text('附近').findOnce()
var 发布1 = id("iv_add").findOnce()
var 发布2 = text("发布动态").findOnce()
var 发动态 = text("发动态").findOnce()
var 发布 = text('发布').findOnce()
if (发布) {
小延迟()
小延迟()
setText(文案)
小延迟()
控件点击(发布)
小延迟()
break;
} else if (发动态) {
控件点击(发动态)
小延迟()
} else if (发布2) {
控件点击(发布2)
小延迟()
} else if (发布1) {
控件点击(发布1)
小延迟()
} else if (附近) {
控件点击(附近)
小延迟()
} else if (社区) {
控件点击(社区)
小延迟()
}
}
}
function 滑动线程() {
threads.start(function() {
while (true) {
sleep(random(1000, 1500))
三选一()
误入检测()
}
})
var jc = 0
返回发现()
while (true) {
var 检测 = text('发现').findOnce()
if (检测) {
左右滑()
jc = 0
} else {
jc = jc + 1
sleep(1000)
}
if (jc > 3) {
返回发现()
}
}
}
function 左右滑() {
小延迟()
while (true) {
var sj = random(1, 5)
if (sj == 1) {
左滑()
} else {
右滑()
}
sleep(500, 1000)
}
}
function 右滑() {
swipe(random(200, 250), device.height / 2 + random(-150, 150), device.width - random(50, 100), device.height / 2 + random(-150, 150), random(1500, 2000))
}
function 左滑() {
swipe(device.width - random(50, 100), device.height / 2 + random(-150, 150), random(200, 250), device.height / 2 + random(-150, 150), random(1500, 2000))
}
function 三选一() {
var 发送 = id('sendClickContainer').depth(9).indexInParent(1).findOnce()
var 表情 = id('ivSendEmoji').clickable(true).findOnce()
var 稍后 = id('tvClose').text('稍后再聊').depth(6).findOnce()
if (发送 && 表情 && 稍后) {
var sj = random(1, 5)
if (sj <= 2) {
var 发送 = id('sendClickContainer').depth(9).indexInParent(1).findOnce()
log("随机结果:发送文案")
发送.click()
} else if (sj <= 4) {
var 表情 = id('ivSendEmoji').clickable(true).findOnce()
log("随机结果:发送表情")
表情.click()
} else {
var 稍后 = id('tvClose').text('稍后再聊').depth(6).findOnce()
log("随机结果:稍后再聊")
稍后.click()
}
}
}
function 误入检测(){
var 喜欢 = id('ll_like').findOnce()
if(喜欢){
back()
}
var 有料 = text('有料').findOnce()
if(有料){
返回发现()
}
var 附近 = text('附近').findOnce()
if(附近){
返回发现()
}
var 动态 = text('动态').findOnce()
if(动态){
返回发现()
}
}
function 返回发现() {
while (true) {
var 检测 = text("发现").findOnce()
if (检测) {
小延迟()
putLog('已回到发现')
文本点击('发现')
小延迟()
while (true) {
var 发现 = id('new_discover_card_discover').text('发现').findOnce()
if (发现) {
控件点击(发现)
break
} else {
log('遍历控件中')
sleep(1000)
}
}
break
} else if (currentPackage() == 包名) {
back()
sleep(1500)
} else {
putLog('打开积目')
launchApp(应用名)
小延迟()
}
}
}
function 小延迟() {
var a = random(2000, 3500)
putLog("延迟" + a / 1000 + "秒")
sleep(a)
}
function 文本点击(文本) {
var 控件 = text(文本).findOnce()
if (控件) {
控件点击(控件)
return true;
} else {
putLog("没有发现" + 文本)
return false;
}
}
function 控件点击(控件) {
var 控件x = (控件.bounds().left + 控件.bounds().right) / 2 + random(-3, 3)
var 控件y = (控件.bounds().top + 控件.bounds().bottom) / 2 + random(-3, 3)
putLog("点击位置:" + 控件x + "," + 控件y)
click(控件x, 控件y)
}
function 匹配纯数字(str) {
var reg = /^[0-9]*$/
if (reg.test(str)) {
return true;
}
return false;
}
function cumtomUI() {
let resource = context.getResources();
w = floaty.rawWindow(
<relative >
<frame bg="#44ffcc00" w="*" h="{{device.height / 4+200}}">
<vertical w="*">
<card id="indx2" w="*" margin="0 0 0 1" h="30" background="#000000" cardCornerRadius="3"
cardElevation="2dp" gravity="center_vertical" >
<horizontal gravity="center_vertical" w="*" >
<text w="auto" h="auto" textSize="14" margin="8 0 20 0" textColor="#00ffd8" text="造雾者-积目多功能脚本" />
</horizontal>
</card>
<View w="*" h="2px" bg="#c0c0c0" />
<com.stardust.autojs.core.console.ConsoleView
id="console"
background="#7f000000"
h="*" />
</vertical>
</frame>
</relative>
);
w.setTouchable(false);
w.setPosition(0, (device.height - device.height / 4 - 290)); //设置悬浮窗位置
w.setSize(device.width, device.height / 4 + 285) //设置悬浮窗大小
w.console.setConsole(runtime.console);
let c = new android.util.SparseArray();
let Log = android.util.Log;
c.put(Log.VERBOSE, new java.lang.Integer(colors.parseColor("#dfc0c0c0")));
c.put(Log.DEBUG, new java.lang.Integer(colors.parseColor("#ffffffff")));
c.put(Log.INFO, new java.lang.Integer(colors.parseColor("#ff64dd17")));
c.put(Log.WARN, new java.lang.Integer(colors.parseColor("#ff2962ff")));
c.put(Log.ERROR, new java.lang.Integer(colors.parseColor("#ffd50000")));
c.put(Log.ASSERT, new java.lang.Integer(colors.parseColor("#ffff534e")));
w.console.setColors(c);
try {
ui.run(function() {
input_container = w.console.findViewById(getResourceID("input_container", "id"))
input_container.attr("visibility", "gone");
})
} catch (error) {}
function getResourceID(name, defType) {
return resource.getIdentifier(name, defType, context.getPackageName());
};
setInterval(() => {}, 1000);
}
function putLog(txt) {
var 颜色 = ['l', 'e', 'v', 'i']
let type = 颜色[random(0, 3)]
let colBox = {
'l': "log",
'v': 'verbose',
'i': 'info',
'e': 'error'
}
console[colBox[type]](" " + txt)
}
function 滑动() {
var x1;
var x2;
var y1;
var y2;
if (random(1, 2) == 1) {
x1 = device.width / 2 + random(20, 120)
} else {
x1 = device.width / 2 - random(20, 120)
}
if (random(1, 2) == 1) {
x2 = device.width / 2 + random(20, 120)
} else {
x2 = device.width / 2 - random(20, 120)
}
y1 = device.height - 300 - random(200, 300)
y2 = random(450, 550)
曲线滑动(x1, y1, x2, y2, random(1500, 3000));
}
function bezier_curves(cp, t) {
cx = 3.0 * (cp[1].x - cp[0].x);
bx = 3.0 * (cp[2].x - cp[1].x) - cx;
ax = cp[3].x - cp[0].x - cx - bx;
cy = 3.0 * (cp[1].y - cp[0].y);
by = 3.0 * (cp[2].y - cp[1].y) - cy;
ay = cp[3].y - cp[0].y - cy - by;
tSquared = t * t;
tCubed = tSquared * t;
result = {
"x": 0,
"y": 0
}
result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;
return result;
}
function 曲线滑动(qx, qy, zx, zy, time) {
var xxy = [time];
var point = [];
var dx0 = {
"x": qx,
"y": qy
}
var dx1 = {
"x": random(qx - 100, qx + 100),
"y": random(qy, qy + 50)
}
var dx2 = {
"x": random(zx - 100, zx + 100),
"y": random(zy, zy + 50),
}
var dx3 = {
"x": zx,
"y": zy
}
for (var i = 0; i < 4; i++) {
eval("point.push(dx" + i + ")");
}
for (let i = 0; i < 1; i += 0.08) {
xxyy = [parseInt(bezier_curves(point, i).x), parseInt(bezier_curves(point, i).y)]
xxy.push(xxyy);
}
gesture.apply(null, xxy);
}
function 向上滑() {
var x1 = device.width / 2
var y1 = device.height / 5
var x2 = device.width / 2
var y2 = device.height
var t = random(2000, 3000)
swipe(x1, y1, x2, y2, t)
putLog("滑上")
}
function 向下滑() {
var x1 = device.width / 2
var y1 = device.height - device.height / 5
var x2 = device.width / 2
var y2 = 0
var t = random(2000, 3000)
swipe(x1, y1, x2, y2, t)
putLog("滑下")
}
//需要完整源码dd作者名
//作者:造雾者
//扣:1340468168
//v:zwz-000-000
//收徒&定制