我是靠谱客的博主 超级朋友,最近开发中收集的这篇文章主要介绍AutoJs学习-MC我的世界自动钓鱼,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

往期文章分享
  • 点击跳转=>《导航贴》- Unity手册,系统实战学习
  • 点击跳转=>《导航贴》- Android手册,重温移动开发

????关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

在这里插入图片描述

本文约5千字,新手阅读需要7分钟,复习需要2分钟收藏随时查阅不再迷路

文章目录

    • ????关于作者
    • ????实践过程
    • ????其他

????实践过程

//我的世界MC自动钓鱼。
//适用场景。
//最好有一个附魔的钓鱼竿。
//最好是在海边。
//面向海水。
//拿着钓鱼竿。
//钓鱼的时候尽量让浮漂在屏幕中间。
//然后点开始按钮就行了。
//



//请求截图
if (!requestScreenCapture(true)) {
    //横屏截图。
    toast("请求截图失败");
    exit();
};

auto();
//适配各种屏幕自动缩放坐标。
setScreenMetrics(1080, 1920);

//定义悬浮窗控制模块,命名为(悬块)。
var 悬块 = function(window, view) {
    //判断是否缺少构造参数。
    if (!window || !view) {
        //缺少构造参数,抛出错误。
        throw "缺参数";
    };
    //记录按键被按下时的触摸坐标
    this.x = 0, this.y = 0;
    //记录按键被按下时的悬浮窗位置
    this.windowX, this.windowY;
    //按下时长超过此值则执行长按等动作
    this.downTime = 500;
    //记录定时执行器的返回id
    this.Timeout = 0;
    //创建点击长按事件
    this.Click = function() {};
    this.LongClick = function() {};
    //可修改点击长按事件
    this.setClick = function(fun) {
        //判断参数类型是否为函数?
        if (typeof fun == "function") {
            this.Click = fun;
        };
    };
    this.setLongClick = function(fun, ji) {
        //判断参数类型是否为函数?
        if (typeof fun == "function") {
            this.LongClick = fun;
            //判断参数是否可为设置数字?
            if (parseInt(ji) <= 1000) {
                this.downTime = parseInt(ji);
            };
        };
    };

    view.setOnTouchListener(new android.view.View.OnTouchListener((view, event) => {
        //判断当前触控事件,以便执行操作。
        switch (event.getAction()) {
            //按下事件。
            case event.ACTION_DOWN:
                //按下记录各种坐标数据。
                this.x = event.getRawX();
                this.y = event.getRawY();
                this.windowX = window.getX();
                this.windowY = window.getY();
                //创建一个定时器用来定时执行长按操作。
                this.Timeout = setTimeout(() => {
                    this.LongClick();
                    this.Timeout = 0;
                }, this.downTime);
                return true;
                //移动事件。
            case event.ACTION_MOVE:
                //移动距离过大则判断为移动状态
                if (Math.abs(event.getRawY() - this.y) > 5 && Math.abs(event.getRawX() - this.x) > 5) {
                    //移动状态清除定时器
                    if (this.Timeout) {
                        //定时器存在则清除定时器。
                        clearTimeout(this.Timeout);
                        this.Timeout = 0;
                    };
                    //移动手指时调整悬浮窗位置
                    window.setPosition(this.windowX + (event.getRawX() - this.x), this.windowY + (event.getRawY() - this.y));
                };
                return true;
                //抬起事件。
            case event.ACTION_UP:
                if (this.Timeout) {
                    //手指抬起时,定时器存在,说明没有移动和按下时间小于长按时间。
                    //清除定时器。
                    clearTimeout(this.Timeout);
                    this.Timeout = 0;
                    //执行点击事件。
                    this.Click();
                };
                return true;
        };
        //控件的触控事件函数必须要返回true。否则报错。
        return true;
    }));
};





//创建并生成一个悬浮窗。
var window = floaty.window(
    //创建一个按钮,并设置其id宽高文字等属性。
    <button  id="but" w="200px" h="200px" text="开始"/>
);
//输出提示信息。
toastLog("长按悬浮窗关闭本脚本");
//空运行定时器保持脚本运行中,这是悬浮窗脚本所必需的。
setInterval(() => {}, 500);
//声明一个变量用来控制线程。
var thread = null;
//创建一个新的悬浮控制模块 ad 并带入参数(所要控制的悬浮窗和用来控制悬浮窗移动的控件)。
var ad = new 悬块(window, window.but);
//设置长按事件。
ad.setLongClick(function() {
    //输出气泡信息。
    toast("脚本已关闭");
    //脚本停止代码。
    exit();
});
//设置点击事件。
ad.setClick(function() {
    //变量值为空则代表线程没有开启。变量值不为空,则判断线程是不是正在运行。
    if (thread ? !thread.isAlive() : true) { //线程没有运行。
        ui.run(() => {
            window.but.setText("停止");
        });
        //新建一个线程,赋值给变量thread
        thread = threads.start(Main);
    } else {
        thread.interrupt();
        ui.run(() => {
            window.but.setText("开始");
        });
    };
});


//960,540,960,820,
function Main() {
    while (true) {
        var img = captureScreen();
        if (!判断(img)) {
            toastLog("钓鱼");
            click(960, 820);
            sleep(1000);
            click(960, 820);
            sleep(2000);
        };
        img.recycle();
        sleep(50);
    };
};

function 判断(img) {
    var w = parseInt(img.getWidth());
    var h = parseInt(img.getHeight());
    var x = Math.floor(w / 2);
    var y = Math.floor(h / 3);
    var s = y / 72;
    for (let i = 0; i < 72; i++) {
        var color = img.pixel(x, Math.floor(y + i * s));
        if (颜色(color)) {
            return true;
        };
    };
    return false;
};


function 颜色(color) {
    var r = colors.red(color),
        g = colors.green(color),
        b = colors.blue(color);

    if (weiyi([r - g, g - b, b - r]) < 30) {
        return true;
    };
    return false;
};

function weiyi(ary) {
    var sum = 0;
    for (var i = 0; i < ary.length; i++) {
        sum += Math.pow(ary[i], 2);
    };
    return Math.sqrt(sum);
};

????其他

????作者:小空和小芝中的小空
????转载说明-务必注明来源:https://zhima.blog.csdn.net/
????这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气????,日后定有一番大作为????!!!旁边有点赞????收藏????今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

最后

以上就是超级朋友为你收集整理的AutoJs学习-MC我的世界自动钓鱼的全部内容,希望文章能够帮你解决AutoJs学习-MC我的世界自动钓鱼所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部