事件起因
❝女朋友平时酷爱王者荣耀,所以她没事的时候也喜欢拉拉我打两把,这不前段时间还买了一个王者荣耀的李白联名口红向我炫耀,心里不免有点吃醋,一个3D人物能有真人赏心悦目吗?于是我暗下决心,决定苦练农药技巧,在她面前秀上一把。其实对于王者荣耀,我的技术也不算太差,和她一起玩的时候总能拿到MVP,就是赢不了,究其原因,我觉得是我女朋友的问题,因为游戏过程中经常出现我一个人单挑三人,就差她残血补刀,奈何她总是喜欢喵在草丛或者撒腿就跑,整局下来还嫌弃我菜,说我手速不行,在我被群殴的时候,总希是望自己拥有不死之身,于是就有了秒换复活甲的想法。。。
❞
准备工作
这次开发依旧使用的AutoJs来进行脚本的开发。 测试工具是本人的OnePlus 8T。
程序逻辑
在开发过程中,由于AutoJs抓取不了游戏界面的布局控件,所以只能采取模拟人手点击的方式来进行制作。
运行测试
测试截图:
体验地址:https://wwa.lanzous.com/imPQKigp0fe
其他
用户使用前需要打开悬浮窗权限,并且需要在横屏下图标才能显示出来,可以长按移动进行移动,注意不要点击到图标。
缺点:其他手机在使用的过程中,相应的参数可能需要重新进行调整,否则会出现点击错位的情况。
代码
var window = floaty.window(
<frame id="logo" w="60" h="50" alpha="0.8" >
<button id="move" text=" 移动 " w="9" h="40" bg="#77ffffff" textSize="10sp" marginLeft="40" padding="0 -5 0 0" visbility="invisible" alpha="0.5"/>
<img id="img_logo" w="40" h="40" circle="true" src="https://s1.ax1x.com/2020/10/14/0IsInx.png" />
</frame>
)
window.setPosition(1913,239);
setInterval(() => {
}, 1000);
let wx, wy, downTime, windowX, windowY;
window.move.setOnTouchListener(function (view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
wx = event.getRawX();
wy = event.getRawY();
windowX = window.getX();
windowY = window.getY();
downTime = new Date().getTime();
return true;
case event.ACTION_MOVE:
// 如果按下的时间超过 xx 秒判断为长按,调整悬浮窗位置
if (new Date().getTime() - downTime > 300) {
window.setPosition(windowX + (event.getRawX() - wx), windowY + (event.getRawY() - wy));
}
return true;
case event.ACTION_UP:
// 手指弹起时如果偏移很小则判断为点击
if (Math.abs(event.getRawY() - wy) < 30 && Math.abs(event.getRawX() - wx) < 30) {
toastLog(" 长按调整位置 ")
}
return true;
}
return true;
});
window.img_logo.click(() => {
threads.start(function(){
click(173,489);//点击金币
sleep(5);
click(319,629);//点击防御
sleep(5);
click(1659,650);//点击复活甲
sleep(15);
click(1933,862);//点预购
sleep(15);
click(771,927);//点击第一个
sleep(15);
click(1963,874);//出售
sleep(20);
click(1990,110);//点击x
sleep(20);
click(276,436);//点击购买装备
});
});