easyclick之大话西游2经典版修罗任务设计开发(1)

大话西游2经典版修罗任务设计开发

修罗任务是大话经典任务之一。是人物获得经验的主要来源之一。接下来我们就来分析下任务这个任务,放上
代码。所有代码均有注释,通俗易懂,方便学习。
其中包含了本次任务的很多公共方法,下面会有专门介绍

公共方法

主要公共方法介绍,主要包含了ocr识别、找图、找色等一些常用的基础方法。其中、找图和找色完全可以用其中的一种就可以做,为了学习,把这些方法都用上了。

/**
 * @param type 1地图识别  2 坐标识别  3修罗任务识别  4识别申请列表种族  5五倍任务识别 
 * 6飞行状态识别(飞、降) 7修罗次数 8五环完成对话识别		(该方法识别的方式有很多,字库
 * 、找色、图片等等,我这里使用的是文字识别api)
 */
shibie(type)
/**
 * 2S间隔判断是否移动 true 没移动 fasle移动中	(该方法为了效率,我自己通过Tesseract OCR训练了一一套数字字库,没有使用在线api识别是因为该方法调用过于频繁,我怕自己服务器压力受不了)
 */
is_move1()
/**
 *坐标转换,把任务坐标转换成对应的小地图坐标
 *
 * @param piont 任务坐标点
 * @param lit_map_right  小地图右上真实坐标
 * @param big_map_right 大地图右上像素坐标
 * @param big_map_left  大地图左下像素坐标
 * @param type 不传偏差小传了偏差大
 * @returns {*}
 * (改方法是通过比例把任务坐标转换成小地图坐标,点击小地图自动寻路过去)
 */
toRealxy(piont, lit_map_right, big_map_right, big_map_left, type)

/**
 * 1 信息弹窗  2 找暂离队伍的颜色  3对话采挖时弹出的对话“不”字 4 加蓝 5加血 6飞行飞字 7自动战斗按钮的小三角 8对话按钮
 * @param type 找色类型
 * @returns {boolean}
 */
finColor(type, is_log)

任务流程分解

   对于脚本,都是把一个固定流程分解以后,逐步实现其流程。那么只需要分解修罗流程就可以写好这个任务
的脚本。
0、去任务NPC地图
1、领任务
2、点击寻路
3、去任务点的路上
4、战斗
5、返回重新领取任务
下面我们定义修罗任务的基础参数
let xl_task = {
   
	//任务坐标点
    point: "",
    //任务地图
    map: "",
    //当前人物设定的法术
    xl_fashu: "",
    //当前队伍的人员信息
    xl_team: [],
    //修罗地图找坐标次数计数
    count_nmb: 0,
    acount_nmb: 0,
    shibie_acount_nmb: 0,
    //返回地图时是否使用的飞行道具回去
    is_huichengfu: false,
    //任务开始时间计时
    start_time: 0,
    //到达任务地图时间
    task_map_time: 0,
    //需要对话的怪物点NPC列表信息
    xl_click_point: [],
    //0 去灵兽 1领任务 2点击寻路  3去任务点的路上 4战斗  5使用回城符文
    step: 0
}

流程-领任务

任务领取,我们需要分析其各种情况。各种情况的基础条件就是当前人物是否在移动中,移动我们就不做任何
处理,未移动我们就做处理

领取修罗任务
下面我们贴出去步骤0的去灵兽的代码

// 0 去灵兽
xl_task.go_lingshou = function () {
   
    logd("0:进入去领修罗任务");
    closeother()
    //判断当前地图
    if (shibie(1) == "灵兽村") {
   
        logd("在灵兽村");
        if (xl_task.is_huichengfu) {
   
            if (findPic("close_right_down1280.png", 2, "关闭物品栏", true)) {
   
                findPicAndClick("close_right_down1280.png", 2, "关闭物品栏")
            }
            if (!findPic("duiwu1280.png", 11, "满员标志")) {
   
                logd("队伍不满员");
                duiwu_stat();
            }
            is_chixiang();
            while (finColor(2)) {
   
                if (findPic("duiwu1280.png", 11, "满员标志")) {
   
                    logd("队伍满员");
                } else {
   
                    duiwu_stat();
                }
            }
            logd("在灵兽村使者旁边,准备做好开始领任务");
            sleep(500);
            click_point(map_big_to_little_point.当前地图, "灵兽村地图");
            sleep(800);
            if (findPic("click_search_npc1280.png", 19, "小地图搜索按钮")) {
   
                findPicAndClick("click_search_npc1280.png", 19, "小地图搜索按钮");
            } else {
   
                wb_task.step = 0;
                return;
            }
            sleep(500);
            //1280分辨率
            click_point("480,208", "点击搜索框");
            sleep(800);
            imeInputText(null, "灵兽村使者")
            sleep(1000);
            click_point("1150,610", "搜索按钮");
            sleep(800);
            click_point("490,270", "点击搜索结果")
            xl_task.step = 1;
            return
        }
        if (is_move1()) {
   
            logd("没有移动");
            let now_point = shibie(2);
            let now_points = now_point.split(",");
            if (parseInt(now_points[0]) > 99 && parseInt(now_points[0]) < 135 && parseInt(now_points[1]) > 80 && parseInt(now_points[1]) < 100) {
   
                logd("在灵兽村使者旁边,为领任务做准备(队伍吃香)");
                if (!findPic("duiwu1280.png", 11, "满员标志")) {
   
                    logd("队伍不满员");
                    duiwu_stat();
                }
                is_chixiang();
                while (finColor(2)) {
   
                    if (findPic("duiwu1280.png", 11, "满员标志")) {
   
                        logd("队伍满员");
                    } else {
   
                        duiwu_stat();
                    }
                }
                logd("在灵兽村使者旁边,准备做好开始领任务");
                sleep(500);
                click_point(map_big_to_little_point.当前地图, "灵兽村");
                sleep(800);
                if (findPic("click_search_npc1280.png", 19, "小地图搜索按钮")) {
   
                    findPicAndClick("click_search_npc1280.png", 19, "小地图搜索按钮");
                } else {
   
                    wb_task.step = 0;
                    return;
                }
                sleep(500);
                //1280分辨率
                click_point("480,208", "点击搜索框");
                sleep(800);
                imeInputText(null, "灵兽村使者")
                sleep(1000);
                click_point("1150,610", "搜索按钮");
                sleep(800);
                click_point("490,270", "点击搜索结果")
                xl_task.step = 1;
                return
            } else {
   
                logd("不在在灵兽村使者旁边,点击地图到他旁边");
                click_point(map_big_to_little_point.当前地图, "灵兽村")
                sleep(600)
                findPicAndClick("click_fly1280.png", 28, "飞行旗隐藏")
                sleep(300);
                click_point("625,280", "系统信息弹框");
                sleep(500)
                //1280分辨率 修罗点
                click_point("590,310", "修罗领取任务点");
                sleep(500)
                findPicAndClick("close_little_map1280.png", 1, "关闭小地图");
                return;
            }
        }
    } else {
   
        logd("不在灵兽村");
        if (xl_task.is_huichengfu) {
   
            closeother();
            findPicAndClick("open_package1280.png", 13, "背包按钮");
            sleep(600);
            if (findPic("open_package1280.png", 13, "背包按钮")) {
   
                findPicAndClick("open_package1280.png", 13, "背包按钮");
                sleep(600);
            }
            click_point("896,140", "任务物品栏");
            sleep(500);
            click_point("896,140", "任务物品栏");
            sleep(500);
            findPicAndClick("xiuluo_back1280.png", 10, "修罗回城福");
            sleep(800);
            findPicAndClick("xiuluo_use1280.png", 9999, "使用按钮");
            xl_task.is_huichengfu = false;
            sleep(800)
            xl_task.step = 0
            return;
        }
        if (is_move1()) {
   
            logd("没有移动");
            findPicAndClick("open_big_map1280.png", 18, "打开大地图");
            sleep(600)
            //找到灵兽村
            click_point(map_big_to_little_point.灵兽村, "灵兽村");
            sleep(600)
            findPicAndClick("click_fly1280.png", 28, "飞行旗隐藏")
            sleep(300);
            click_point("625,280", "系统信息弹框");
            sleep(500)
            //1280分辨率 修罗点
            click_point("590,310", "修罗领取任务点");
            sleep(500)
            findPicAndClick("close_little_map1280.png", 1);
            return;
        }
    }
}

领任务

去灵兽代码中,我们有xl_task.step = 1;设置当前任务状态为领任务的操作,那么接下来我们就要处理领任务
的操作了,下面我们贴出代码。

在这里插入图片描述

xl_task.get_task = function () {
   
    logd("1:进入开始识别领取修罗任务并领任务");
    let per_time = time();
    while (!findPic("xiuluo_talk1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值