TC官方合作论坛

 找回密码
 立即注册
查看: 416|回复: 5
打印 上一主题 下一主题

[问题] 请大神帮我看看代码,问题在哪里?

[复制链接]
跳转到指定楼层
楼主
发表于 2015-3-3 19:30:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

x
空间 飞飞
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:03 | 只看该作者
你是如何判定找字或者找图失败的?
是通过代码没有执行还是调试输出看变量来判定?
回复 支持 反对

使用道具 举报

板凳
发表于 2015-3-3 20:09:16 | 只看该作者
你前面一个一样的帖子  已经回答你了哈
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-3-3 20:32:14 | 只看该作者
龍飛 发表于 2015-3-3 19:54
你是如何判定找字或者找图失败的?
是通过代码没有执行还是调试输出看变量来判定? ...

调试输出查看的,运行两个线程就没事,三个就不行了
回复 支持 反对

使用道具 举报

5#
发表于 2015-3-3 21:00:05 | 只看该作者
ekeen 发表于 2015-3-3 20:32
调试输出查看的,运行两个线程就没事,三个就不行了

你把创建大漠的代码放热键里试试看。
你发的代码除了会抢资源外,也没发现其他问题。
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-9-23 19:25 , Processed in 0.250355 second(s), 23 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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