TC官方合作论坛

 找回密码
 立即注册
查看: 10155|回复: 48

【蓝思雨精品教程】TC版大家来找碴源码分享,给新手拓宽...

  [复制链接]
发表于 2013-7-30 20:32:44 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 蓝丝雨 于 2014-3-8 16:44 编辑

【蓝丝雨精品教程】为终身会员提供全天候一对一贴心辅导,让您学习无忧!!
【蓝丝雨精品教程】以商业项目为本 从实例实战出发 全面剖析脚本构成 写出成品才是王道

【教学方法】
      1.全天24小时,全年无休,随时提问,马上解答。
      2.每周一、四晚19:0022:00风雨无阻,QQ群语音一对一辅导。
      3.终身辅导
      4.每月推出新游戏教程供学员学习
      5.指导学员开发自已喜爱的项目
【我承诺】
      一旦购买,终身免费
     精心辅导,免费更新
     检查进度,及时跟踪
     包教包会,学不会退款
【教程价值体现】
     多:教程内容系统全面,类型多,数量多  
     快:教程更新快,辅导响应快  
     好:教程质量好,学员评价好     
     省:学员学习省心,教程价格省钱
//--------------------------------------------------------分隔线---------------------------------------------------------//
【内容简介】这一节课给新手分享些思路, 起到抛砖引玉的作用, 下面用详细的注释结合代码给大家作以详细的解释
                    这个案例是有针对性的, 大家来找碴网址(http://www.4399.com/flash/20389_3.htm)点击进入
思路: 1.首先要定位到两张图的基本点,这是个前提,定位准确才能开展后面的工作
         2.通过获取坐标点像素取得两张图的不同点坐标,方法是每5个像素点取一次
            没有必要每一个都要取,那样的话脚本运行效果不慢了,也不智能
         3.取完不同点后,再根据不同点的多少作出判断用以鼠标点击第二张图的方式

使用方法: 先打开网址链接,然后再运行脚本,具体效果你可以在我的脚本基础上再次
                发挥,以达到最佳效果

空间 大家来找碴
//默认空间
//声明变量 大家来找碴网址http://www.4399.com/flash/20389_3.htm
变量 Hwnd, x1, y1, x2, y2
变量 P1_x1, P1_y1, P2_x1, P2_y1,P1_x1_Array = 数组[], P1_y1_Array = 数组[], Index
变量 Old1_x1, Old1_y1, Old2_x1, Old2_y1
变量 intX, intY, Tid, Global_bCtrl = true

//退出按钮_点击操作
功能 退出_点击()
    //退出脚本时关闭线程
    if(Tid > 0)
        thread.closethread(Tid, 0)
    endif
    Global_bCtrl = false    //将控制开关赋值为假, 终止循环
    辅助.退出()
功能结束

功能 热键0_热键()
    //这里添加你要执行的代码
    //首先获取游戏窗口句柄
    Hwnd = window.getmousemovewndhand()
    调试输出("父窗口句柄: " & Hwnd)
    if(Hwnd > 0)
        //获取窗口区大小
        window.getclientrect(Hwnd, x1, y1, x2, y2)
        调试输出("x1: " & x1 & " y1: " & y1 & " x2: " & x2 & " y2: " & y2)
        //定位两张图的基本点 这里以大家来找碴 中的大字 来作为基本点, 这里很关键,如果基本点定位不准确,会影响找图的效果
        color.findpic(x1,y1,x2,y2,"rc:\\大.bmp",#101010,1.0,0,intX,intY)
        if(intX > 0 && intY > 0)
            调试输出("大intX: " & intX & " 大intY: " & intY)
            P1_x1 = intX + 11, P1_y1 = intY + 79    //这里定位左边第一张图的基本点
            P2_x1 = intX + 259, P2_y1 = intY + 79   //这里定位右边第二张图的基本点
            Old1_x1 = P1_x1, Old2_x1 = P2_x1        //保存第一张图的基本点,后面遍历时会用到
            Old1_y1 = P1_y1, Old2_y1 = P2_y1        //保存第二张图的基本点,后面遍历时会用到
            Tid = thread.beginthread("大家来找碴.任务线程","")  //开启任务线程, 来进行找图点击
        else
            调试输出("没有找到大.bmp")
        endif   
    else
        help.messagebox("请将鼠标指向游戏窗口内")
    endif
功能结束
//------------------任务线程----------------------------------------//
function 任务线程()
    var zbX, zbY, Count, i, j, Array_Len
    var P1_cr1, P2_cr1
    Count = 0
    //开启线程进行像素点对比 通过循环来做找图任务
    while(Global_bCtrl)
        Index = 0
        color.findpic(x1,y1,x2,y2,"rc:\\钟表.bmp",#101010,1.0,0,zbX,zbY)
        if(zbX > 0 && zbY > 0)
            mouse.mousemove(zbX, zbY)  //每次都将鼠标定位到钟表图上,否则影响找图的效果
        endif
        //初始化坐标点
        P1_x1 = Old1_x1, P1_y1 = Old1_y1
        P2_x1 = Old2_x1, P2_y1 = Old2_y1
        //这里通过遍历来对比两张图的不同点, 思路是每移动五个像素点来进行对比,遍历次数是宽:245/5 = 49 高:340/5 = 68  宽高:245/340
        for(j = 1; j <= 68; j++)
            for(i = 1; i <= 49; i++)
                //得到指定点颜色
                P1_cr1 = color.getpixelcolor(P1_x1, P1_y1)
                P2_cr1 = color.getpixelcolor(P2_x1, P2_y1)
                if(P1_cr1 != P2_cr1)
                    Count++
                    if(Count == 5)  //这里又做了些控制,因为一旦出现不同点时都是连续的,所以每5次保存一次不同点坐标
                        Count = 0   //否则后面每次单击时会出现很多错误处,这里你可以调大来试验效果
                        //保存不同点坐标值
                        调试输出("P1_cr1: " & P1_cr1 & " P2_cr1: " & P2_cr1)
                        P1_x1_Array = arraysp.alloc(P1_x1_Array, true, Index + 1)  //重定义数组
                        P1_y1_Array = arraysp.alloc(P1_y1_Array, true, Index + 1)
                        P1_x1_Array[Index] = P2_x1   //注意这里保存的是第二张图的不同点坐标
                        P1_y1_Array[Index] = P2_y1
                        Index = Index + 1
                    endif
                endif
                P1_x1 = P1_x1 + 5   //每次移动5个像素点
                P2_x1 = P2_x1 + 5
            endfor
            P1_x1 = Old1_x1
            P2_x1 = Old2_x1
            P1_y1 = P1_y1 + 5
            P2_y1 = P2_y1 + 5
        endfor
        调试输出("颜色值已经分析完")
        arraysp.size(P1_x1_Array, Array_Len)
        调试输出("数组大小: " & Array_Len)
        i = 0
        while(i < Array_Len)
            if(Array_Len < 500)   //这里分两种情况, 一种是不同点像素小于500个, 鼠标每隔两个像素点单击一次, 这里你可以调大试效果
                if(i < Array_Len)
                    mouse.mousemove(P1_x1_Array, P1_y1_Array)
                    mouse.leftclick(1)
                    help.sleep(10)
                    i = i + 2
                endif
            else  //这里是不同像素点大于500个的,经测试发现有2000多个不同点的,鼠标每隔四个像素点单击一次,这里你可以调大试效果
                if(i < Array_Len)
                    mouse.mousemove(P1_x1_Array, P1_y1_Array)
                    mouse.leftclick(1)
                    help.sleep(10)
                    i = i + 4
                endif
            endif
        endwhile
        //将数组内的值清空
        arraysp.clear(P1_x1_Array)
        arraysp.clear(P1_y1_Array)
        //判断下一张图是否出现, 当返回值为1时说明游戏结束了.跳出循环结束脚本
        if(大家来找碴.判断下张图(x1, y1, x2, y2) == 1)
            break
        endif
    endwhile
endfunction
//------------------判断下一张图是否出现-----------------------------//
function 判断下张图(P_x1, P_y1, P_x2, P_y2)
    var bCtrl, intX, intY,Start
    bCtrl = false
    调试输出("检测下一张是否出现")
    Start = datetime.now()
    while(datetime.diff("s", Start, datetime.now()) < 10)
        color.findpic(P_x1, P_y1, P_x2, P_y2, "rc:\\开始.bmp", #101010,1.0,0, intX, intY)
        if(intX > 0 && intY)
            break
        else
            help.sleep(100)
            //开始找完成图片
            color.findpic(P_x1, P_y1, P_x2, P_y2, "rc:\\完成.bmp|rc:\\结束.bmp", #101010,1.0,0, intX, intY)
            if(intX > 0 && intY > 0)
                //说明游戏已经结束
                bCtrl = true
                break
            endif
        endif
    endwhile
    help.sleep(200)
    调试输出("下一张图已经出现")
    if(bCtrl)
        return 1
    else
        return -1
    endif
endfunction  

功能 热键1_热键()
    //这里添加你要执行的代码
    if(Tid > 0)
        thread.closethread(Tid, 0)
    endif
    Global_bCtrl = false
    辅助.退出()
功能结束
空间结束

源码下载:
感谢大家关注蓝丝雨精品教程《商业辅助是怎样炼成的》大家如果有什么问题可以回复交流。
购买终身会员的童鞋请与销售专员联系,销售QQ:276102675 (验证信息:TC)

点击进入公司淘宝店:点击进入
鉴别.gif
回复

使用道具 举报

发表于 2013-7-30 20:35:38 | 显示全部楼层
gdfs随碟附送第三方
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-30 20:53:55 | 显示全部楼层
占位,顶贴子.
回复 支持 反对

使用道具 举报

发表于 2013-7-30 21:02:09 | 显示全部楼层
回复 1楼蓝丝雨的帖子

有用
回复 支持 反对

使用道具 举报

发表于 2013-7-30 21:12:04 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

发表于 2013-7-30 21:39:10 | 显示全部楼层
学习下
回复 支持 反对

使用道具 举报

发表于 2013-7-30 22:10:02 | 显示全部楼层
来学习下
回复 支持 反对

使用道具 举报

发表于 2013-8-11 12:50:59 | 显示全部楼层
1111111111
回复 支持 反对

使用道具 举报

发表于 2013-9-14 11:16:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2013-9-14 12:00:33 | 显示全部楼层
受教了.谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-6-19 04:28 , Processed in 0.063679 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表