TC官方合作论坛

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

[问题] 请教大神们一个棘手的问题,请进来看看,帮帮忙,谢谢了

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

马上加入TC

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

x
本帖最后由 ekeen 于 2015-3-3 17:40 编辑

空间 飞飞
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 18:19:44 | 只看该作者
TC没人了吗?
回复 支持 反对

使用道具 举报

板凳
发表于 2015-3-3 18:38:50 | 只看该作者
这么长的代码 还那么多重复的 看着头晕晕的
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-3-3 19:20:53 | 只看该作者
q273814 发表于 2015-3-3 18:38
这么长的代码 还那么多重复的 看着头晕晕的

没有代码的话不能够明白问题的意思吧,代码段落很清楚啊,也不多
回复 支持 反对

使用道具 举报

5#
发表于 2015-3-3 19:37:14 | 只看该作者
请采纳如果我的回答帮助到了你 !

找字1 或 找字2  应该是个变量   你写成字符串了

你看你的代码:

dm_ret = dm.FindStrFast(8,82,214,262,"找字1","ffdf00-102030",1,intX,intY)//左边区域找买药的买
dm_ret = dm.FindStrFast(8,82,214,262,"找字2","ffdf00-102030",1,intX,intY)//左边区域找买药的买


温馨提示3 : 我不是来灌水的 , 不要冤枉我
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2015-3-3 20:33:50 | 只看该作者
今非 发表于 2015-3-3 19:37
请采纳←如果我的回答帮助到了你 !

找字1 或 找字2  应该是个变量   你写成字符串了

我这是举例,不是实际代码
回复 支持 反对

使用道具 举报

7#
发表于 2015-3-3 20:39:30 | 只看该作者
ekeen 发表于 2015-3-3 20:33
我这是举例,不是实际代码

你下断点  看看 返回值  和 X Y坐标  和 你的字库  字体是否一样
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2015-3-3 20:46:36 | 只看该作者
今非 发表于 2015-3-3 20:39
你下断点  看看 返回值  和 X Y坐标  和 你的字库  字体是否一样

这么说吧,我识别血量的一个线程,找怪物的一个线程,当我能够识别到血量的时候,就找不到怪物的名字,当我找到怪物的名字就识别不了血量的名字,用的是一个字库,原先可以同时正确识别
回复 支持 反对

使用道具 举报

9#
发表于 2015-3-4 08:42:14 | 只看该作者

对象句柄=线程.创建临界区()

创建临界区试下
回复 支持 反对

使用道具 举报

10#
发表于 2015-3-5 00:10:14 | 只看该作者
ekeen 发表于 2015-3-3 19:20
没有代码的话不能够明白问题的意思吧,代码段落很清楚啊,也不多

还不多 段落清晰 = =...
这代码我要用的话肯定得扣工资
不过你代码逻辑没问题
从你下面红色字的意思看 可能是同一个大漠对象在同时访问字库做不同识别的时候会出现问题
可是我记得以前的时候没遇到过这种情况 我这没装TC 没办法实验
你试试先单独弄个测试项目 用同一个字库 开两个线程同时识别不同的东西 看有没有问题
如果没问题 那就是你代码问题了
如果不行 你就试着用不同的字库吧
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

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

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

© 2001-2013 Comsenz Inc.

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