TC官方合作论坛

标题: 请大神帮我看看代码,问题在哪里? [打印本页]

作者: ekeen    时间: 2015-3-3 19:30
标题: 请大神帮我看看代码,问题在哪里?
空间 飞飞
dm=com("dm.dmsoft")
变量 dm,窗口句柄,线程主动打怪,练级辅助线程
//
功能 主动攻击_点击()
    线程主动打怪=线程.开启("飞飞.主动打怪","")
    help.sleep(200)
    练级辅助线程=线程.开启("飞飞.练级类检测","")
功能结束
//
功能 主动打怪()//
    变量 intX,intY
    循环(真)
        help.sleep(1000)  
        dm_ret = dm.FindStrFast(8,82,214,262,"找字1","ffdf00-102030",1,intX,intY)//左边区域找买药的买
        if(intX>=0)
            dm.MoveTo(intX,intY)
            help.sleep(30)
            dm.LeftClick()
        endif
        help.sleep(700)
        dm_lb = dm.FindPic(750,426,790,463,"找图1.bmp","000000",0.9,0,intX, intY)
        if(dm_lb>=0)
            dm.MoveTo(intX,intY)
            help.sleep(30)
            dm.LeftClick()
        endif   
        识别2= dm.Ocr(10,560,43,572,"ffffff-102030",1.0)
    循环结束
功能结束
//
功能 练级类检测()
    变量 intX,intY
    循环(真)
        help.sleep(700)
        dm_lb = dm.FindPic(750,426,790,463,"找图2.bmp","000000",0.9,0,intX, intY)
        if(dm_lb>=0)
            dm.MoveTo(intX,intY)
            help.sleep(30)
            dm.LeftClick()
        endif
        help.sleep(1000)  
        dm_ret = dm.FindStrFast(8,82,214,262,"找字2","ffdf00-102030",1,intX,intY)//左边区域找买药的买
        if(intX>=0)
            dm.MoveTo(intX,intY)
            help.sleep(30)
            dm.LeftClick()
        endif
        识别2 = dm.Ocr(10,560,43,572,"ffffff-102030",1.0)
    循环结束
功能结束
//
功能 热键0_热键()//绑定窗口
    窗口句柄=窗口.鼠标所在窗口句柄()
    dm.SetPath(辅助.获取资源路径("rc:"))
    dm.SetDict(0,"飞飞.txt")   
    dm.SetWindowState(窗口句柄,12)
    dm.MoveWindow(窗口句柄,-5,-5)
    辅助.等待(2000)
    dm_ret = dm.BindWindow(窗口句柄,"dx2","dx","dx",0)
    如果(dm_ret!=1)
        help.messagebox("窗口绑定失败,错误码:"&dm.GetLastError())
        help.exit()
    否则
        辅助.设置托盘(编辑框.获得文本("编辑框窗口标题")&"窗口绑定成功",假)  
    如果结束
功能结束
//
功能 初始化()//注册插件
    help.sleep(300)
    是否成功=辅助.注册插件("dm.dmsoft",真)
    如果(是否成功)
        编辑框.设置文本("调试用","插件注册成功\r\n"&编辑框.获得文本("调试用"))   
    否则
        辅助.消息框("插件注册失败")
    如果结束
功能结束
//
功能 退出_点击()
    dm.UnBindWindow()
    辅助.等待(50)
    辅助.退出()
功能结束
空间结束


原先都正常的代码,并且正常使用了挺长一段时间。但是由于进来增加功能又添加了一些线程进来。现在的问题是:
只要我把《主动打怪》里的找图1,改为找字的方式,原先在《练级辅助线程》的orc识别就失败了,找字也失败了。
反过来了,把《练级辅助线程》找图2,改为找字的方式,原先在《主动打怪》的orc识别就失败了,找字也失败了。
更加严重的问题是,只要我新添加线程,都会导致原先的各个线程的找字识别失败。

我这本身就是单开版本,是不是每个线程都需要创建大漠对象,是的话改如何创建呢?我是新手,希望有知道的前辈能够指点一下,不胜感激!


作者: 龍飛    时间: 2015-3-3 19:54
你是如何判定找字或者找图失败的?
是通过代码没有执行还是调试输出看变量来判定?
作者: 今非    时间: 2015-3-3 20:09
你前面一个一样的帖子  已经回答你了哈
作者: ekeen    时间: 2015-3-3 20:32
龍飛 发表于 2015-3-3 19:54
你是如何判定找字或者找图失败的?
是通过代码没有执行还是调试输出看变量来判定? ...

调试输出查看的,运行两个线程就没事,三个就不行了
作者: 龍飛    时间: 2015-3-3 21:00
ekeen 发表于 2015-3-3 20:32
调试输出查看的,运行两个线程就没事,三个就不行了

你把创建大漠的代码放热键里试试看。
你发的代码除了会抢资源外,也没发现其他问题。
作者: ekeen    时间: 2015-3-3 22:26
龍飛 发表于 2015-3-3 21:00
你把创建大漠的代码放热键里试试看。
你发的代码除了会抢资源外,也没发现其他问题。 ...

help.sleep(1000)
        角色血量 = 类型.转整型(dm.Ocr(10,560,43,572,"ffffff-102030",0.9))
       就这样一句代码,偶尔会识别不出
测试识别,开启三个线程同时识别不同区域的字,无错,真邪门了




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1