TC官方合作论坛

标题: 基础问题,关于颜色识别,已哭笑不得地解决。 [打印本页]

作者: cyborg0975    时间: 2014-1-8 23:29
标题: 基础问题,关于颜色识别,已哭笑不得地解决。
本帖最后由 cyborg0975 于 2014-1-10 10:03 编辑

见楼下………………………………

作者: 陌上青衣。    时间: 2014-1-8 23:58
代码说明一切问题
作者: cyborg0975    时间: 2014-1-9 00:07
本帖最后由 cyborg0975 于 2014-1-9 21:18 编辑
陌上青衣。 发表于 2014-1-8 23:58
代码说明一切问题

仔细排查了一下,发现是一个循环的等待界面出了问题。代码如下,我觉得应该能跳出,但实际上一直没跳出。
用AB截图以后取的色。AB美中不足的是哪怕截屏了,显示的还是鼠标在显示器上的绝对坐标,就不能按照截图的位置来显示坐标么……
等待语句(循环,一直等某点变成某颜色):

  1.     n=0
  2.     color1
  3.     while(true)
  4.         if ( n>100)
  5.             break
  6.         endif
  7.         color1=color.getpixelcolor(xxxx,xxxx)
  8.         if (color1=="FFFFFF")
  9.             break
  10.         endif
  11.         n=n+1
  12.         help.sleep(50)
  13.     endwhile
复制代码
补充:刚刚发现老习惯害死人。可以清楚地看到,颜色的格式错了,应该是#FFFFFF.


作者: zxw445    时间: 2014-1-9 00:46
cyborg0975 发表于 2014-1-9 00:07
仔细排查了一下,发现是一个循环的等待界面出了问题。代码如下,我觉得应该能跳出,但实际上一直没跳出。
...

TC提供的AB抓抓不理想,用大漠综合工具先绑定游戏在获取某个坐标的颜色进行判断吧。
作者: cyborg0975    时间: 2014-1-9 00:55
zxw445 发表于 2014-1-9 00:46
TC提供的AB抓抓不理想,用大漠综合工具先绑定游戏在获取某个坐标的颜色进行判断吧。 ...

颜色的话绝对没问题,和鼠标悬停无关,我可以确定那个点的颜色。用大漠重新取了一次也还是一样。
主要是循环里面的跳出无法实现。
作者: zxw445    时间: 2014-1-9 01:05
cyborg0975 发表于 2014-1-9 00:55
颜色的话绝对没问题,和鼠标悬停无关,我可以确定那个点的颜色。用大漠重新取了一次也还是一样。
主要是 ...

把上面那段改成中文,我看看,英文我看不懂。。。
作者: cyborg0975    时间: 2014-1-9 10:55
zxw445 发表于 2014-1-9 01:05
把上面那段改成中文,我看看,英文我看不懂。。。

呃。语法应该是没问题的吧……当然用遍历也可以。
  1.         n=0
  2.         颜色1
  3.         循环(真)
  4.             如果 ( n>100)
  5.                 跳出
  6.             如果结束
  7.             颜色1=<a id="FunctionExample" target="_blank">图像.坐标点取色</a>(xxxx,xxxx)
  8.             如果(颜色1=="FFFFFF")
  9.                 跳出
  10.             如果结束
  11.             n=n+1
  12.             辅助.等待(50)
  13.         循环结束
复制代码
我是用线程来控制这个功能不重复开启的。难道说我一定要绑定窗口么?这个操作不涉及窗口内的相对坐标,我都是用屏幕上的绝对坐标完成的,应该不需要吧…………

作者: zxw445    时间: 2014-1-9 11:12
        n=0
        颜色1
        循环(真)
            调试输出(n)
            如果 ( n>100)
                跳出
            如果结束
            颜色1=图像.坐标点取色(xx,xxx)

            如果(颜色1=="FFFFFF")
                跳出
            如果结束
            n=n+1
            辅助.等待(50)
        循环结束
        调试输出("跳出来了")

用这样测试看看。看看有没有跳出或者n的值是否大于100就跳出



作者: cyborg0975    时间: 2014-1-9 19:43
本帖最后由 cyborg0975 于 2014-1-9 19:45 编辑
zxw445 发表于 2014-1-9 11:12
n=0
        颜色1
        循环(真)

我给几个有颜色判断的节点设置了调试输出,结果表明所有的识别都失败了,结果全是“没有找到”。
难道说,TC的颜色识别只支持判断窗口内坐标的?如果我用AB抓抓的句柄锁定,截图一片漆黑,看来是被游戏防住了。

我还是好好看看教程去……

作者: zxw445    时间: 2014-1-9 19:46
颜色1=图像.坐标点取色(xx,xxx)
调试输出(颜色1)

你这样看看是否能输出你所判断的颜色?
作者: cyborg0975    时间: 2014-1-9 19:55
本帖最后由 cyborg0975 于 2014-1-9 19:56 编辑
zxw445 发表于 2014-1-9 19:46
颜色1=图像.坐标点取色(xx,xxx)
调试输出(颜色1)

可以,之前就可以。所以这才是最诡异的地方……
楞是说不一样。我连2个值都比对过了,把颜色1输出以后,十六进制转十进制肯定一致。

等等,我刚刚才看仔细,你是说用大漠工具绑定游戏直接截取游戏窗口坐标?我再试试

作者: zxw445    时间: 2014-1-9 20:01
cyborg0975 发表于 2014-1-9 19:55
可以,之前就可以。所以这才是最诡异的地方……
楞是说不一样。我连2个值都比对过了,把颜色1输出以后,十 ...

多用调试输出  测试,因为有时候是代码出现差异导致输出不正确而判断错误,所以调试输出才是检测代码问题的工具。
作者: cyborg0975    时间: 2014-1-9 20:02
zxw445 发表于 2014-1-9 20:01
多用调试输出  测试,因为有时候是代码出现差异导致输出不正确而判断错误,所以调试输出才是检测代码问题 ...

用大漠绑定了。我再试试………………谢谢哈
作者: zxw445    时间: 2014-1-9 20:03
cyborg0975 发表于 2014-1-9 20:02
用大漠绑定了。我再试试………………谢谢哈

不用,如果写代码错了还不知道,敢发出来,,我就不客气了
作者: cyborg0975    时间: 2014-1-9 20:20
本帖最后由 cyborg0975 于 2014-1-9 20:31 编辑
zxw445 发表于 2014-1-9 19:46
颜色1=图像.坐标点取色(xx,xxx)
调试输出(颜色1)

我想我知道为什么了。因为……我的数据类型弄错了。
以前习惯于“FFFFFF”,现在得加一个#。不看攻略害死人啊………

作者: zxw445    时间: 2014-1-9 20:45
cyborg0975 发表于 2014-1-9 20:20
我想我知道为什么了。因为……我的数据类型弄错了。
以前习惯于“FFFFFF”,现在得加一个#。不看攻略害死 ...

没话可说。
作者: laynnnn    时间: 2014-1-10 09:51
日啊,没看过教程,装了tc就写,犯了同样错误!
作者: cyborg0975    时间: 2014-1-10 09:57
laynnnn 发表于 2014-1-10 09:51
日啊,没看过教程,装了tc就写,犯了同样错误!

我觉得TC还是不错的。以前用按键的时候大约相当于用VB,觉得确实太随意了。TC毕竟是C系的,有C语言严谨的一面。“==”也好,"#"也罢,都能让人考虑得更严谨。




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