TC官方合作论坛

标题: ★★★★☆欢迎大家来此发帖提问 定期来帮助大家 解答问题 [打印本页]

作者: T_暗乄殇灬    时间: 2013-2-4 16:03
标题: ★★★★☆欢迎大家来此发帖提问 定期来帮助大家 解答问题
   若在学习TC中,遇到一些基本的问题可以在此发帖提问!欢迎大家来此发帖,共同讨论您在学习中遇到的一些问题。


作者: T_暗乄殇灬    时间: 2013-2-4 16:03
占楼备用
作者: honge10000    时间: 2013-2-4 17:39
哈哈,版主,这个我喜欢,,刚学习没多久啊,问题多多,希望版主不吝赐教,不要感到问题多才好哦....
作者: T_暗乄殇灬    时间: 2013-2-4 17:46
回复 3楼honge10000的帖子

嗯嗯
作者: honge10000    时间: 2013-2-4 19:44
游戏操作流程是这样的:  点击NPC老兵--->再点对话框中的字"进入庄园"---->接着再点又出现的对话框中的字"前往庄园",,游戏人物就会被传送进入庄园
其中PNC老兵是绿色,,两次对话框中的字都是黄色..写的程序只完成了一步:点击NPC老兵,,接着找到了字,鼠标也放在了字的位置,却显示没找到...有什么问题???该如何解决???

代码如下:
  1. 功能 比奇进庄园()//寻找老兵进庄园
  2.     dm.SetPath("D:\\我的文档\\TC学习\\游戏字库")
  3.     dm.SetDict(0,"1字库.txt")
  4.     窗口句柄=窗口.找到窗口("传奇外传")
  5.     是否绑定=dm.BindWindow(窗口句柄,"dx","normal","dx",0)
  6.     intX,intY
  7.     dm.FindStr(0,0,800,600,"老兵","00ff00-000000",1.0,intX,intY)
  8.     如果(intX>0)
  9.         dm.MoveTo(intX+30,intY+3)
  10.         dm.LeftDoubleClick()//点击NPC老兵
  11.     否则
  12.         辅助.消息框("没找到")
  13.     如果结束
  14.     辅助.等待(50)
  15.     dm.FindStr(0,0,800,600,"进入庄园","ffff00-000000",1.0,intX,intY)
  16.     如果(intX>0)
  17.         辅助.消息框(intX)
  18.         辅助.消息框(intY)
  19.         dm.MoveTo(intX+20,intY+6)
  20.         dm.LeftDoubleClick()
  21.     否则
  22.         辅助.消息框("没找到")
  23.     如果结束
  24.     辅助.等待(50)
  25.     //intX,intY
  26.     dm.FindStr(0,0,800,600,"前往庄园","ffff00-000000",1.0,intX,intY)
  27.     如果(intX>0)
  28.         //辅助.消息框(intX)
  29.         //辅助.消息框(intY)
  30.         dm.MoveTo(intX+20,intY+3)
  31.         dm.LeftDoubleClick()
  32.     否则
  33.         辅助.消息框("没找到")
  34.     如果结束
  35. 功能结束
复制代码



作者: T_暗乄殇灬    时间: 2013-2-5 12:06
回复 5楼honge10000的帖子


回答时间晚了点,还望见谅!

你的程序中出现了这样一个问题,当鼠标刚好去点击NPC老兵的时候 这个老兵对话框还没有消失就进入了"找进入庄园" 而这时肯定是找不到 结果就会弹出消息框没有找到 在点击消息框后就找"前往庄园"命令了,而那时才出现"找进入庄园"的消息框。
解决方法:
1、你可以尝试在找完"NPC老兵"和找完"进入庄园"后,延时的时间改长一点,比如:辅助.等待(2000) 再执行找进入庄园的命令,找完进入庄园后再延时长一点再找前往庄园。
2、将您的代码改为3个循环语句,分别为:找NPC老兵、找进入庄园、前往庄园。当NPC老兵找到时就点击NPC老兵跳出循环,接着进入找"进入庄园"的对话框循环里面,找到后点击对话框跳出循环,再进入找"前往庄园"的对话框循环里面,最后找到点击前往庄园对话框再跳出,这样就防止一次找不到的结果,而循环则可以解决一次找不到接着找,直到找到为止。



作者: honge10000    时间: 2013-2-6 22:21
回复 6楼T_暗乄殇灬的帖子

感谢楼主的详细解答,我先试试....
作者: honge10000    时间: 2013-2-7 13:33

[attach]7708[/attach]
采用等待2秒和循环找图找字,找到字后鼠标停在字上不点击,我用鼠标点击"进入庄园"后,鼠标马上移到找到的字"前往庄园"上,却不点击...

困扰很久了...哎...真搞不明白咋回事

作者: T_暗乄殇灬    时间: 2013-2-7 13:57
回复 8楼honge10000的帖子

方法1:移动和点击后面都加上延时,大概100毫秒的样子。
方法2:增加鼠标点击次数。
方法3:如果都不行的话,可能是绑定模式有问题,虽然这种模式下支持了鼠标的移动,但是不支持鼠标的点击。你可以这样测试:将绑定鼠标的模式改为前台的模式(也就是normal) ,如果normal下是会点击的话,那么就可以确定这种鼠标参数进行绑定后不支持鼠标点击。
理解绑定模式的三个参数:哪个参数指的谁就改哪个参数,其它参数可不用变。
作者: honge10000    时间: 2013-2-7 19:06
回复 9楼T_暗乄殇灬的帖子

经验哪,,,谢谢楼主的宝贵经验....
作者: 520294900    时间: 2013-2-14 15:42
"代码进行封装"这句是什么意思..封装
作者: T_暗乄殇灬    时间: 2013-2-17 02:37
回复 11楼520294900的帖子

通俗的说就是把一些具有相同功能放到一起作为一个函数,然后我们用到的时候通过传递不同的参数来执行这个函数里面的命令。比如鼠标的一些操作我们就可以进行封装,因为鼠标包括了鼠标的移动、鼠标移动后左键单击、鼠标移动后左键双击、鼠标移动后右键单击。

功能 通用方法(x,y,模式)
   如果(模式==1) //【传递进来的参数为1,则执行鼠标移动操作】
       鼠标.移动(x,y)
       辅助.等待(50)
   如果结束
   如果(模式==2) //【传递进来的参数为2,则执行鼠标移动后左键单击一次】
      鼠标.移动(x,y)
      辅助.等待(50)
      鼠标.左键单击(1)
      辅助.等待(50)
  如果结束
  如果(模式==3) //【传递进来的参数为3,则执行鼠标移动并且左键双击一次】
     鼠标.移动(x,y)
     辅助.等待(50)
     鼠标.左键双击(1)
     辅助.等待(50)
   如果结束
功能结束

这样就算一个封装,然后我们通过空间名点上这个函数,并且传递实参就能达到你想要的目的了,就不再每次用到鼠标移动的时候又去重写代码。
如:空间名.通用方法(100,100,2)  //调用封装好的函数实现鼠标移动到(100,100)的位置,然后鼠标左键单击一次。

作者: as128214121    时间: 2013-3-9 22:32
tc简单程序开发工具怎么样制作。。在自 动登入的时候会自动选区啊??...还有怎么找字,谢谢lz
作者: T_暗乄殇灬    时间: 2013-3-14 19:54
回复 13楼as128214121的帖子

到官方页面下载软件,观看新手教程 初步认识TC这款软件之后尝试找一些视频或者文章 自己慢慢练习
入了VIP VIP里面应该有大量教程 至于自动登录里面应该也能找到  目前找字功能需要用到外部插件  插件的使用相信还是很多文章有说的  可以在TC论坛淘下宝
作者: jianqiumy    时间: 2013-3-18 21:09
真是太好了,
想请教一 个问题:麻烦版主一下.
是找字问题,帮我看看要怎么改才可以,
这代码是找到第一个字就接着找第二个字,要是第一个字没了就不会找第二个字
有什么办法可以让它,如果没有找到第一个字就去找第二个字呢


   X,Y
    循环(真)
返回值 = dm.FindStr(0,0,2000,2000,"你好","000000-000000",1.0,X,Y)
如果(返回值==-1 )
辅助.等待(50)
否则
      跳出
      如果结束
    循环结束
    鼠标.移动(X,Y)
    辅助.等待(500)

    X,Y
    循环(真)
返回值 = dm.FindStr(0,0,2000,2000,"很不好","000000-000000",1.0,X,Y)
如果(返回值==-1 )
辅助.等待(50)
否则
      跳出
      如果结束
    循环结束
    鼠标.移动(X,Y)
    辅助.等待(500)
作者: T_暗乄殇灬    时间: 2013-3-25 11:50
回复 15楼jianqiumy的帖子

  1.     在此先表示下道歉,直至今日才回答你的问题,还望见谅!
  2.     //[思路分为2种情况,第一种情况为找到"你好"之后就去找"很不好",第二种情况为直接找"很不好",这样就能实现你说的情况]  
  3.     X=0,Y=0
  4.     循环(真)
  5.         //[情况一:当找到了很好之后进入下一个循环找很不好,找到很不好之后跳出整个循环,没有找到很好则执行情况二的语句]
  6.         如果(dm.FindStr(0,0,2000,2000,"你好","000000-000000",1.0,X,Y)!=-1 ) //[不等于-1表示找到]
  7.             鼠标.移动(X,Y)
  8.             辅助.等待(500)
  9.             X=0,Y=0
  10.             循环(真)
  11.                 如果(dm.FindStr(0,0,2000,2000,"很不好","000000-000000",1.0,X,Y)==-1 ) //[等于-1表示没有找打}
  12.                     辅助.等待(50)
  13.                 否则
  14.                     鼠标.移动(X,Y)
  15.                     辅助.等待(500)
  16.                     跳出
  17.                 如果结束
  18.             循环结束
  19.             跳出 //[最后跳出整个循环语句]
  20.         如果结束
  21.         
  22.         //[情况二:判断是否出现很不好,找到后执行移动代码后跳出整个循环]
  23.         X=0,Y=0
  24.         如果(dm.FindStr(0,0,2000,2000,"很不好","000000-000000",1.0,X,Y)!=-1 )//[不等于-1表示找到]
  25.             鼠标.移动(X,Y)
  26.             辅助.等待(500)
  27.             跳出 //[跳出整个循环语句]
  28.         如果结束
  29.         辅助.等待(50)
  30.     循环结束
复制代码

作者: jianqiumy    时间: 2013-3-26 22:00
回复 15楼jianqiumy的帖子

[code]    在此先表示下道歉,直至今日才回答你的问题,还望见......
T_暗乄殇灬 发表于 2013-3-25 11:50:38

谢谢老师~~~~你辛苦了,谢谢你的解答~~~~让我学习了
作者: jianqiumy    时间: 2013-3-26 22:30
还想请问老师一个问题,
问题如下:
空间 发送内容
功能 登陆()
        句柄=窗口.找到窗口("","Edit")
        如果(窗口.激活(句柄))
发送内容.
向窗口输入内容(内容)
如果结束
功能结束
功能 向窗口输入内容(内容)
   窗口.发送字符串(句柄,内容)
功能结束
功能 向窗口输入内容(内容)
    键盘.发送字符串(内容)
功能结束
用上面这2个方法都能正常发送内容,但点确定后说密码错,是什么原因?
只有用超级键盘才正常,很不解!!

功能 向窗口输入内容(内容)
    超级键盘.发送字符串(内容)
功能结束
空间结束

作者: T_暗乄殇灬    时间: 2013-3-26 23:12
回复 18楼jianqiumy的帖子

这个应该是向这个窗口发送密码的内部进行了特殊的处理 处理后一般都是乱码什么的  而超级键盘是驱动级的模拟输入可能就没有被和谐吧  一般的发送为普通发送字符串。
作者: jianqiumy    时间: 2013-3-26 23:17
回复 18楼jianqiumy的帖子

这个应该是向这个窗口发送密码的内部进行了特殊的处理 处理后一般都是乱码什么的  而超级键盘是驱动级的模拟输入可能就没有被和谐吧  
T_暗乄殇灬 发表于 2013-3-26 23:12:39 哦哦~~~~~谢谢老师解答~~~

作者: qq910950471    时间: 2013-4-5 00:44
来一个A星用到游戏中的详细教程吧!
作者: q741230412    时间: 2013-4-5 17:49
TC用户教程系列之地下城与勇士自动过图方法
怎么没看到在那呢???
作者: T_暗乄殇灬    时间: 2013-4-5 20:09
回复 21楼qq910950471的帖子

A星我没怎么用,知道的也甚少 你可以和论坛出过A星教程的大神探讨探讨
作者: T_暗乄殇灬    时间: 2013-4-5 20:10
回复 22楼q741230412的帖子

还没放出来 近期都没时间
作者: chenyin0524    时间: 2013-4-8 23:12
请问怎么才能下载TC这个软件呢,官网论坛都没有,急求,谢谢
作者: T_暗乄殇灬    时间: 2013-4-9 00:54
回复 25楼chenyin0524的帖子

http://www.tyuyan.com/
作者: zhmap    时间: 2013-4-18 22:45
标题: 请教问题
请教老师一个问题,先谢谢了!
测试1中人物跑到NPC车夫处需要一定的时间,这时间如何掌握?到达后再执行下一个任务即测试2中的代码,这两功能如何连接起来?
  1. 功能 测试1()
复制代码




作者: zhmap    时间: 2013-4-18 22:52
  1. 功能 测试1(窗口句柄)
  2.     变量 x,y
  3.     循环(真)
  4.         ret =主功能.找字(0,0,1440,900,"X","fdfae1-102030|e5d276-102030|cdab0b-102030",x,y)
  5.         如果(x>0)
  6.             主功能.临时日志("去找王城车夫,......")
  7.             辅助.等待(辅助.随机数(50,200))
  8.             dm.MoveTo(x+17,y+6)         
  9.             辅助.等待(辅助.随机数(100,500))
  10.             dm.LeftClick()
  11.             辅助.等待(辅助.随机数(100,500))
  12.             dm.SendString(窗口句柄,"636")
  13.             
  14.             辅助.等待(辅助.随机数(50,200))
  15.             dm.MoveTo(x+80,y+6)         
  16.             辅助.等待(辅助.随机数(100,500))
  17.             mm.LeftClick()
  18.             辅助.等待(辅助.随机数(100,500))
  19.             
  20.             mm.SendString(窗口句柄,"583")
  21.             辅助.等待(辅助.随机数(100,500))
  22.             mm.MoveTo(x+152,y+6)         
  23.             辅助.等待(辅助.随机数(100,500))
  24.             dm.LeftClick()
  25.             辅助.等待(辅助.随机数(100,300))
  26.             dm.KeyPressChar("m")
  27.             跳出
  28.         否则
  29.             dm.KeyPressChar("m")
  30.             继续
  31.         如果结束
  32.     循环结束
  33.     返回 1
  34.    
  35. 功能结束
  36. 功能 测试2()
  37.     x,y
  38.     循环(真)
  39.         help.sleep(1000)
  40.         ret =主功能.找字(857,5,1001,37,"636|583","ffffff-000000",x,y)
  41.         if(x>0)
  42.            
  43.            i=405,j=305
  44.             
  45.             dm.moveto(i,j)
  46.             辅助.等待(1000)
  47.             循环(i<576)
  48.             i=i+20
  49.             辅助.等待(1000)
  50.             dm.moveto(i,j)
  51.             if(鼠标.获取特征码()==28769865)
  52.             辅助.等待(1000)
  53.            
  54.             dm.LeftClick()
  55.             跳出
  56.             else
  57.                 继续
  58.                
  59.             endif
  60.             循环结束
  61.             
  62.             跳出
  63.         否则
  64.             
  65.          
  66.             继续
  67.         endif
  68.     循环结束
  69.     返回 1
  70. 功能结束
复制代码
27楼的代码
作者: pdsleo    时间: 2013-4-25 23:51
用天使插件 怎么 实现 写屏功能啊
作者: T_暗乄殇灬    时间: 2013-4-26 01:11
回复 28楼zhmap的帖子

方法1、假如游戏里面有坐标,那么可以通过坐标判断是否到达需要的目的地。当人物移动的时候坐标会发生变化,表示人物正在移动,当坐标未移动的时候判断人物当前坐标是否已经到达了目的地坐标,若没有则再次寻路到NPC,若已经到达则点击NPC执行下一步动作。
方法2、通过到达NPC后的固定图标,循环的找这个图标,若出现了该图标则表示已经到达。
方法3、若人物只是在一个城镇里面移动,那么点击移动NPC后打开地图,直接找到达目的那个小区域人物图标是否出现,这个小区域发现了人物图标,那么也就到达了。
作者: T_暗乄殇灬    时间: 2013-4-26 01:12
回复 29楼pdsleo的帖子

天使插件目前好像还没有很好的写屏功能  可以不妨尝试一下365插件
作者: jianqiumy    时间: 2013-5-12 16:20
问题解决了~~老师好,打扰了~~~


作者: wqddwyx    时间: 2013-8-13 09:58
老师给我看看, 我这个是DNF 召唤师 自动召唤的代码, 为什么总是召唤不全. (这次点能召唤的,下次就不一定能召唤成功了)

空间 找地下
//默认空间

//开始按钮_点击操作
功能 开始_点击()
    整型 游戏句柄
    游戏句柄=窗口.找到窗口("地下城与勇士")
    如果(游戏句柄==0)
        辅助.消息框("无法找到游戏窗口")
    否则
        //窗口.置顶(游戏句柄)
        窗口.设置位置(游戏句柄,0,0)
        //辅助.等待(5000)
        //中暗
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //中火
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //火龙
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //小雷
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //小火
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //小冰
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(700)
        //小暗
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //上光
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(37,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //上火
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //上冰
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)  
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //上暗
        超级键盘.按键(38.1)
        辅助.等待(100)
        超级键盘.按键(39.1)
        辅助.等待(100)
        超级键盘.按键(38.1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(2100)
        //路易斯
        //辅助.等待(1000)
        超级键盘.按键(39,1)
        辅助.等待(150)
        超级键盘.按键(40,1)
        辅助.等待(150)
        超级键盘.按键(39,1)
        辅助.等待(150)
        超级键盘.按键(32,1)
        辅助.等待(2500)
        //一加贝拉
        超级键盘.按键(37,1)
        辅助.等待(150)
        超级键盘.按键(40,1)
        辅助.等待(150)
        超级键盘.按键(39,1)
        辅助.等待(150)
        超级键盘.按键(32,1)
        辅助.等待(1500)
        //护盾
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(32,1)
        辅助.等待(1500)
        //小雷
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //小火
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //小冰
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //小暗
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(40,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        //上光
        超级键盘.按键(38,1)
        辅助.等待(100)
        超级键盘.按键(39,1)
        辅助.等待(100)
        超级键盘.按键(37,1)
        辅助.等待(100)
        超级键盘.按键(90,1)
        辅助.等待(1100)
        
    如果结束
功能结束

//退出按钮_点击操作
功能 退出_点击()
   
    辅助.退出()
功能结束


功能 热键0_热键()
    //这里添加你要执行的代码
    找地下.开始_点击()
   
功能结束

空间结束
//空间结束语句
作者: zwtderek1986    时间: 2013-10-16 18:21
在TC中正常注册大漠插件,我是一个空间一个T文件|(查找字库中的文字)
1、在主空间中能正常调用大漠插件
2、但是我把参数传递到外空间(子空间)中调用大漠插件没效果
请求大神指点啊!!!!!




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