TC官方合作论坛

 找回密码
 立即注册
查看: 4411|回复: 4

[TS插件] TC结合天使插件多对象多开示例

[复制链接]
发表于 2013-6-7 22:13:00 | 显示全部楼层 |阅读模式

马上加入TC

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

x
空间 TC结合天使插件多对象多开示例 //我们现在结合天使插件,多开记事本发送文本为例写一个多开的示例 //众所周知:记事本有一个子窗口其类名为:Edit,所以我们必须找到它对它发送文本才可以 天使=数组[0//先定义个天使的全局对象备用 线程句柄数组=数组[0//定义一个线程句柄数组备用 功能 主线程()   父句柄数组,大小,子句柄字串,子句柄数组,edit_hwnd,大小1,下标1   句柄组合字串=系统.枚举("记事本",0//枚举记事本   如果(句柄组合字串==""//判断是否开启程序     辅助.消息框("目标程序未开启")     返回 假   如果结束 //由于分割结果没有分隔符也是可以分割成功的,所以我们单开和多开一起处理   字符串.分割(句柄组合字串,"|",父句柄数组)   数组空间.大小(父句柄数组,大小)   遍历(下标=0;下标<大小;下标++//遍历每个记事本的每个子句柄,找出类名为Edit的句柄.     子句柄字串=系统.枚举(父句柄数组[下标],3)     字符串.分割(子句柄字串,"|",子句柄数组)     数组空间.大小(子句柄数组,大小1)     遍历(下标1=0;下标1<大小1;下标1++)       如果(窗口.类名(子句柄数组[下标1])=="Edit")         edit_hwnd=子句柄数组[下标1//找到我们想要的子句柄 这个时候 我们可以开线程了         线程参数=edit_hwnd&","&下标         天使对象=com("ts.tssoft")         数组空间.增加(天使,天使对象)         句柄值=线程.开启("TC结合天使插件多对象多开示例.子线程",线程参数)         数组空间.增加(线程句柄数组,句柄值)       如果结束     遍历结束   遍历结束 功能结束 功能 子线程(参数//接受参数 var 参数=句柄数组&","&i   变量 下标,窗口句柄,绑定返回值,参数数组   字符串.分割(参数,",",参数数组//分割出传过来的参数 i和窗口句柄的值   窗口句柄=参数数组[0]   下标=参数数组[1]   天使[下标]=com("ts.tssoft"//创建天使对象   绑定返回值=天使[下标].BindWindow(窗口句柄,"gdi","windows","windows",1//绑定   辅助.等待(1000)   如果(绑定返回值==0)     辅助.消息框("绑定失败")     返回 假   否则    //这里表示绑定成功,这后面如果是游戏脚本的可以自己根据情况写.    //部分游戏会出现鼠键操作无效 可在绑定前后用setwindowstate 激活窗口试试     天使[下标].LockInput(1)//多个线程相互控制窗口就靠这个对象: 天使[下标]     天使[下标].MoveTo(359,239//插件命令MOveTo和moveto一样不分大小写     天使[下标].SendString(窗口句柄,"123456"//对对传进来的记事本发送我们想要的文本   如果结束 功能结束 功能 开始_点击()   线程.开启("TC结合天使插件多对象多开示例.主线程","") 功能结束 空间结束



这是tc的例子,这个程序难道不关吗?咋关,有大侠知道吗?
回复

使用道具 举报

发表于 2013-6-7 23:18:52 | 显示全部楼层
说实话,看到这段代码,我头直接晕了,看不下去。格式都没有。。。

启动线程时保存好线程句柄,要关的时候直接用句柄去关呗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 07:16:31 | 显示全部楼层
回复 2楼cylhb的帖子

这是TC说明里面的一段代码,大家可以看一下tc,是多开代码没错,但是循环后运行2小时左右就死机了,看系统进程,游戏占内存越来越大,好像不能自己释放内存!!!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 07:26:04 | 显示全部楼层
如果循环应该咋循环呢?我开了2个线程控制一个窗口,麻烦版主费心

  1. 空间 TC多开测试

  2. Ts=array[0]

  3. 功能 主线程()
  4.     var 返回值,数组大小,i
  5.     句柄数组=array[1]
  6.     返回值=系统.枚举("江南天下",0)
  7.     //严格来讲 这里需要对,返回值是否为空,来判断是否有开窗口,查找分割符 来判断是否为单开,
  8.     //判断数组大小来判断开启的窗口数量,为了精简易懂,上面都略过.多开的时候记得写上
  9.     字符串.分割(返回值,"|",句柄数组)
  10.     数组空间.大小(句柄数组,数组大小)//判断数组大小
  11.     for(i=0;i<数组大小;i++)
  12.         Ts=数组空间.重定义(Ts,true,i+1)//由于每开启一个线程就多需要一个天使对象,这里必须重新定义天使对象数组大小
  13.         var 参数=句柄数组[i]&","&i//合并参数 窗口句柄和i的值,i的值是为了传递给Ts[i] 这个对象,每开启一次i+1
  14.         //有的朋友就在这里就绑定窗口,其实也是可以的,但我不太喜欢这种做法.
  15.         线程.开启("TC多开测试.子线程",参数)//开启分线程
  16.         辅助.等待(1000)//等待一下,避免多个线程同时绑定窗口,导致绑定失败
  17.         线程.开启("TC多开测试.线程复活",参数)//开启分线程
  18.         辅助.等待(10000)
  19.     endfor
  20. 功能结束

  21. 功能 子线程(参数)//接受参数   var 参数=句柄数组[i]&","&i
  22.    
  23.     var i,窗口句柄,绑定返回值
  24.     变量 intX,intY
  25.     参数数组=array[1]
  26.     字符串.分割(参数,",",参数数组)//分割出传过来的参数 i和窗口句柄的值
  27.     窗口句柄=参数数组[0]
  28.     i=参数数组[1]
  29.     Ts[i]=com("ts.tssoft")//创建天使对象

  30.     绑定返回值=Ts[i].BindWindow(窗口句柄,"dx2","dx","dx",101)//绑定
  31.     Ts[i].SetPath(辅助.获取资源路径("rc:"))
  32.     Ts[i].SetDict(0,"ts_soft.txt")//设置字库路径
  33.     //句柄=Ts[i].GetMousePointWindow()
  34.     辅助.等待(1000)
  35.     if(绑定返回值==0)
  36.         help.messagebox("绑定失败")
  37.         返回 假
  38.     else
  39.         
  40.         //这里表示绑定成功,这后面想干嘛,你干嘛..
  41.         //部分游戏会出现鼠键操作无效 可在绑定前后用setwindowstate 激活窗口试试
  42.         //Ts[i].LockInput(1) //对象记得用Ts[i],多个线程相互控制窗口就靠这个对象
  43.         //Ts[i].MoveTo(359,239)
  44.         //窗口.激活(窗口句柄)
  45.         //Ts[i].SendString(窗口句柄,"123456")
  46.         //辅助.消息框("绑定成功"&i)
  47.         Ts[i].MoveWindow(窗口句柄,-15,0)
  48.         //窗口.设置位置(句柄,-10,0)
  49.         //Ts[i].SetMouseDelay("dx",55)
  50.         
  51.         找仓库:
  52.         help.sleep(3000)
  53.         Ts[i].FindStr(0,0,2000,2000,"桃园", "fefe00-000000",1.0,intX,intY)//大漠找字
  54.         如果(intX>0)
  55.             help.sleep(20)//延时
  56.             
  57.         否则
  58.             help.sleep(1500)
  59.             Ts[i].KeyPress(80)
  60.             //辅助.消息框("p没打开")   
  61.             help.sleep(1500)
  62.         如果结束
  63.         
  64.         .......
  65.         
  66.         help.sleep(2000)
  67.         goto 找仓库
  68.     endif
  69.    
  70. 功能结束
  71. //功能 线程挖矿()
  72. //Ts[i].初始化()

  73. //help.sleep(1500)
  74. //Ts[i].找仓库()
  75. ////Ts[i].找防具店()
  76. ////Ts[i].找杂货()
  77. ////Ts[i].去挖矿()
  78. ////Ts[i].回去()

  79. ////弹一个"执行任务1"的消息框

  80. ////循环结束语句
  81. ////返回 真
  82. ////函数返回语句
  83. //功能结束
  84. //功能函数用完后结束该功能
  85. 功能 线程复活(参数)
  86.     变量 intX,intY
  87.     var i,窗口句柄,绑定返回值
  88.     参数数组=array[1]
  89.     字符串.分割(参数,",",参数数组)//分割出传过来的参数 i和窗口句柄的值
  90.     窗口句柄=参数数组[0]
  91.     i=参数数组[1]
  92.     循环(真)
  93.         //当条件为真时,该执行一个无限循环语句
  94.         辅助.等待(1000)
  95.         //等待1000毫秒,然后再执行下面语句
  96.         
  97.         //死亡检测
  98.         子程序在这里
  99.         //弹一个"执行任务1"的消息框
  100.     循环结束
  101.     //返回 真
  102. 功能结束


  103. 功能 开始_点击()
  104.     线程.开启("TC多开测试.主线程","")
  105. 功能结束

  106. 功能 退出_点击()
  107.     var 返回值,数组大小,i
  108.     句柄数组=array[1]
  109.     返回值=系统.枚举("江南天下",0)
  110.     //严格来讲 这里需要对,返回值是否为空,来判断是否有开窗口,查找分割符 来判断是否为单开,
  111.     //判断数组大小来判断开启的窗口数量,为了精简易懂,上面都略过.多开的时候记得写上
  112.     字符串.分割(返回值,"|",句柄数组)
  113.     数组空间.大小(句柄数组,数组大小)//判断数组大小
  114.    
  115.    
  116.     for(i=0;i<数组大小;i++)
  117.         Ts=数组空间.重定义(Ts,true,i+1)//由于每开启一个线程就多需要一个天使对象,这里必须重新定义天使对象数组大小
  118.         var 参数=句柄数组[i]&","&i//合并参数 窗口句柄和i的值,i的值是为了传递给Ts[i] 这个对象,每开启一次i+1
  119.         //有的朋友就在这里就绑定窗口,其实也是可以的,但我不太喜欢这种做法.
  120.         Ts[i].UnBindWindow()//解除绑定窗口
  121.         //线程.关闭("TC多开测试.子线程",参数)//开启分线程
  122.         //辅助.等待(1000)//等待一下,避免多个线程同时绑定窗口,导致绑定失败
  123.         //线程.关闭("TC多开测试.线程复活",参数)//开启分线程
  124.         辅助.等待(1000)
  125.     endfor
  126.    
  127.    
  128.     辅助.退出()
  129. 功能结束

  130. 功能 热键0_热键()
  131.     //这里添加你要执行的代码
  132.    
  133.     线程句柄=线程.开启("TC多开测试.开始_点击","")
  134.    
  135. 功能结束


  136. 功能 热键1_热键()
  137.     var 返回值,数组大小,i
  138.     句柄数组=array[1]
  139.     返回值=系统.枚举("江南金鼓",0)
  140.     //严格来讲 这里需要对,返回值是否为空,来判断是否有开窗口,查找分割符 来判断是否为单开,
  141.     //判断数组大小来判断开启的窗口数量,为了精简易懂,上面都略过.多开的时候记得写上
  142.     字符串.分割(返回值,"|",句柄数组)
  143.     数组空间.大小(句柄数组,数组大小)//判断数组大小
  144.    
  145.    
  146.     for(i=0;i<数组大小;i++)
  147.         Ts=数组空间.重定义(Ts,true,i+1)//由于每开启一个线程就多需要一个天使对象,这里必须重新定义天使对象数组大小
  148.         var 参数=句柄数组[i]&","&i//合并参数 窗口句柄和i的值,i的值是为了传递给Ts[i] 这个对象,每开启一次i+1
  149.         //有的朋友就在这里就绑定窗口,其实也是可以的,但我不太喜欢这种做法.
  150.         Ts[i].UnBindWindow(参数)//解除绑定窗口
  151.         //线程.关闭("TC多开测试.子线程",0)//开启分线程
  152.         //辅助.等待(1000)//等待一下,避免多个线程同时绑定窗口,导致绑定失败
  153.         //线程.关闭("TC多开测试.线程复活",0)//开启分线程
  154.         辅助.等待(1000)
  155.     endfor
  156.    
  157.    
  158.     //辅助.退出()
  159.     //辅助.等待(2000)
  160.     //在开始_点击函数中调用开始执行函数
  161.     // 线程句柄=线程.开启("Ts[i].退出_点击","")
  162.    
  163. 功能结束

  164. 空间结束
复制代码
回复 支持 反对

使用道具 举报

发表于 2014-8-26 10:58:26 | 显示全部楼层
新手学习中
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-5-17 18:41 , Processed in 0.039854 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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