TC官方合作论坛

 找回密码
 立即注册
12
返回列表 发新帖

[其他] 虎牙TC学习,源码借鉴记录帖

  [复制链接]
 楼主| 发表于 2019-12-2 18:29:51 | 显示全部楼层

鼠键类。获取按键状态
  1. var hThread, run
  2. 功能 执行()
  3. while(run)
  4. var 键码 = 81 //Q键
  5. var 状态 = GetAsyncKeyState(键码)
  6. traceprint("Q键状态 :" & 状态)
  7. if(状态 != 0)
  8. traceprint("Q键已按下.")
  9. end
  10. sleep(200)
  11. end
  12. 结束

  13. 功能 启动_热键()
  14. var bool = 线程获取状态(hThread)
  15. if(bool == 0)
  16. run = 1
  17. hThread = 线程开启("执行", "")
  18. end
  19. 结束
  20. 功能 终止_热键()
  21. run = 0
  22. 结束
  23. //struct,api封装部分。
  24. //键盘码,Q81,E69,A65
  25. //鼠标左键0x1,鼠标右键0x2
  26. //取消键Cancel 0x3,鼠标中键0x4

  27. 功能 GetAsyncKeyState(键码)
  28. var ret = dllcall("user32.dll","long", "GetAsyncKeyState","long",键码)
  29. return ret
  30. 结束
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-13 21:31:55 | 显示全部楼层
本帖最后由 年迈的虎牙丶 于 2019-12-13 21:37 编辑

TC7.0 window版浏览器控件的使用
有时候遇上页游,想用TC内置的浏览器控件来做浏览器。但是内嵌的浏览器控件版本太低,现在基本不能运行相关的网页,我尝试了不同的方法,下面有两种方法可供参考。
1) 在项目管理的属性中,设置:使用本地IE为 True, 在系统中安装IE11,编译后,基本能运行现在的网页。但是对于部分在网页上运行的游戏,不能加速,速度较慢。可以用方法2
2)在项目管理的属性中,设置:使用本地IE为 False,然后在系统的注册表,添加如下表项,浏览器控件就能使用硬件加速,前提还是要安装IE11,我系统为win10,64位。
regcreatekey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION","应用程序.exe",#2af8,1) //表示把自己的应用程序作为浏览器使用
regcreatekey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION","应用程序.exe",#2af8,1) //设置自己的程序为浏览器。
regcreate("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl","FEATURE_GPU_RENDERING") //如果没有这个表项,创建这个表项。
regcreatekey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_GPU_RENDERING","应用程序.exe",1,1) //自己浏览器使能硬件加速。
regcreate("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl","FEATURE_GPU_RENDERING") //如果没有这个表项,创建这个表项。
regcreatekey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_GPU_RENDERING","应用程序.exe",1,1) //自己浏览器使能硬件加速。
------------------------------------------------------------------
TC7.0 安卓6.1制作汉字几点经验
这两天用安卓模拟器来试下能否用找字的方法,识别游戏中的图标、按钮等。刚开始感觉无从下手,网上也不容易找到答案。比如连不上模拟器,字库制作完毕莫法识别。经过两三天尝试,终于能正确识别到文字。 把相关经验共享出来,供参考。下一步试下完整的程序来识别。安卓模拟器,用了最新的夜神6.5版本。
1) 把模拟器的开发者选项弄出来(点击“关于平板电脑",然后点击几次"版本号",打开开发者选项),打开USB调试,通过TC顺利连接到模拟器(有时候不能连接,是因为模拟器的端口已经被占用,我遇上一次就是tadb.exe占用了端口,结束该进程,释放端口,就能连接上).
2)通过图色助手获取快照,模拟器不能获取,用置顶的方法,安装超级授权软件。然后重启模拟器,给与TTestAPP超级权限,顺利截图。
3)制作字库,这儿有一点要注意,TC7.0中的安卓,找字的函数固定使用的坐标体系模式0,不论是横屏还是竖屏。我要处理的是横屏,也是用模式0,快照出来的图像是在横屏上旋转了90°,用这个来制作相关的字库。
4) 识别的相似度最好不要取1.0,尝试下模糊度,我取0.9能基本能正确识别;坐标范围选取,不能按照横屏来的坐标点来,需要在3)快照出来的模式上,取选取范围。 3)中快照出来的图像,坐标(x,y)是和横屏不一样的。

5)有时候图色助手能找到,自己的程序找不到,可能是选取的颜色,在该图片中的背景色中有太多,导致找不到。这个时候可以设置一个较小的查找范围。



回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-19 23:21:14 | 显示全部楼层
大漠3.1233免注册
dm.dll (804 KB, 下载次数: 3)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-2 21:58:43 | 显示全部楼层
【内存教程】内存操作的好处

读取地址的值,代替找图 找色 找字,
调用游戏call,代替按鼠标/按键盘。
内存操作的好处是:适应所有系统,适应所有分辨率,最小化后台操作

网络游戏,
重要数据都储存在服务端;
在客户端,只负责显示。

网络游戏,只能读数据,不能改写数据。
如果客户端和服务器的数据不符,人物就掉线。
var 血量 = 读内存4字节(内存地址)
if(血量 < 指定值)
//按加血键.
end

var 座标x = 读内存浮点型(内存地址)
var 座标y = 读内存浮点型(内存地址)
if(座标x < 指定值 || 座标y > 指定值)
call 定点回位()
end

=======================================================
不要修改游戏。
不要修改游戏。
不要修改游戏数据。
.
重要的事情说三遍。
游戏是拥有著作权的,脚本作者,不作死就不会死。
在淘宝/简单游平台,月入过万的作者不在少数,成功的脚本作者,坚持绿色辅助路线,
不尝试修改游戏数据。
不轻易修改游戏数据。
做脚本行业的,不作死,就不会死。

读取内存数据,代替找图、找色、识字,
使用找call写call,代替按键盘/按鼠标。
最小化窗口,全后台操作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 17:38:03 | 显示全部楼层
  1. function start_click()
  2.     for(var i = 0; i < 100; i++)
  3.         traceprint(winhttp("百度网址", "get", "utf-8"))
  4.     end
  5.    
  6. end
  7. function winhttp(url, method, charset)
  8.     var http = com("WinHttp.WinHttpRequest.5.1")
  9.     http.Open(method, url, false)
  10.     http.send
  11.     var   xmlBody = http.Resp**eBody
  12.     var ObjStream = com("Adodb.Stream")
  13.     ObjStream.Type = 1
  14.     ObjStream.Mode = 3
  15.     ObjStream.Open
  16.     ObjStream.Write(xmlBody)
  17.     ObjStream.Position = 0
  18.     ObjStream.Type = 2
  19.     ObjStream.Charset = charset
  20.     var BytesToBstr = ObjStream.ReadText
  21.     ObjStream.Close
  22.     var ret = BytesToBstr
  23.     return ret
  24. end
复制代码
首先, 必须承认: TC很好用.
不过, 自带的一些访问网页的http玩意总感觉不爽.
于是,就找替代的,发现winhttp还是可以的.
上源码(网址那里我发不了,只能用文字代替):
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 22:11:24 | 显示全部楼层
多种渐开线采集的方法


  1. 变量 线程ID = 0
  2. //从这里开始执行

  3. //启动_热键操作
  4. 功能 启动_热键()
  5.     如果(线程ID == 0)
  6.         线程ID=线程开启("执行","")
  7.     否则
  8.         消息框("脚本正在执行中,请先停止再启动.")
  9.     结束
  10.    
  11. 结束

  12. //终止热键操作
  13. 功能 终止_热键()
  14.     如果(线程ID != 0)
  15.         线程关闭(线程ID)
  16.         线程ID = 0        
  17.     结束   
  18. 结束

  19. 功能 启动_失去焦点()
  20.     //这里添加你要执行的代码
  21.     热键销毁("启动")
  22.     热键注册("启动")
  23. 结束


  24. 功能 终止_失去焦点()
  25.     //这里添加你要执行的代码
  26.     热键销毁("终止")
  27.     热键注册("终止")
  28. 结束


  29. 功能 保存配置_点击()
  30.     //这里添加你要执行的代码
  31.     变量 键值 = 0,功能键 = 0
  32.     热键获取键码("启动",键值,功能键)
  33.     文件写配置("热键","启动键值",键值,"D:\\Main.ini")
  34.     文件写配置("热键","启动功能键",功能键,"D:\\Main.ini")
  35.    
  36.     热键获取键码("终止",键值,功能键)
  37.     文件写配置("热键","终止键值",键值,"D:\\Main.ini")
  38.     文件写配置("热键","终止功能键",功能键,"D:\\Main.ini")
  39. 结束


  40. 功能 CH_初始化()
  41.     //这里添加你要执行的代码
  42.     变量 键值 = 0,功能键 = 0
  43.     键值 = 文件读配置("热键","启动键值","D:\\Main.ini")
  44.     功能键 = 文件读配置("热键","启动功能键","D:\\Main.ini")
  45.     如果(键值 != "")
  46.         热键设置键码("启动",键值,功能键)
  47.         热键注册("启动")
  48.     结束
  49.    
  50.     键值 = 文件读配置("热键","终止键值","D:\\Main.ini")
  51.     功能键 = 文件读配置("热键","终止功能键","D:\\Main.ini")
  52.     如果(键值 != "")
  53.         热键设置键码("终止",键值,功能键)
  54.         热键注册("终止")
  55.     结束
  56.    
  57.     变量 提示内容 = "鼠标移动到热键控件里,使得热键控件具有输入焦点,之后输入自己的热键,点击保存配置按钮,那么修改后的热键就会立即生效."
  58.     标签设置文本("标签2",提示内容)
  59. 结束


  60. 功能 执行()
  61.     变量 方式
  62.     方式 = 下拉框获取文本("下拉框0")
  63.     选择(方式)
  64.         条件 "原型"
  65.         执行圆形()
  66.         条件 "椭圆形"
  67.         执行椭圆()
  68.         条件 "方形"
  69.         执行方形()
  70.     结束
  71. 结束

  72. 功能 执行椭圆()
  73.     变量 圆心x,圆心y,角度=0,半径=150,x,y,半径2=1
  74.     变量 派=3.1415926535897,种子=派/180,圈数=0
  75.     鼠标获取坐标(圆心x,圆心y)
  76.     循环(真)
  77.         x = 半径*数学余弦值(角度*种子)
  78.         y = 半径2*数学正弦值(角度*种子)
  79.         鼠标移动(圆心x+x,圆心y-y)
  80.         鼠标左键按下()
  81.         //等待(100)
  82.         角度 = 角度 + 20
  83.         如果(角度 % 20 == 0)
  84.             半径 = 半径 + 1
  85.             半径2 = 半径2 + 1
  86.             如果(角度 >= 360)
  87.                 角度 = 0
  88.                 圈数 = 圈数 + 1
  89.                 如果(圈数 == 10)
  90.                     跳出
  91.                 结束
  92.             结束
  93.         结束
  94.         等待(5)
  95.     结束
  96.     鼠标左键弹起()
  97. 结束


  98. 功能 执行圆形()
  99.     变量 圆心x,圆心y,角度=0,半径=1,x,y,半径2=1
  100.     变量 派=3.1415926535897,种子=派/180,圈数=0
  101.     鼠标获取坐标(圆心x,圆心y)
  102.     循环(真)
  103.         x = 半径*数学余弦值(角度*种子)
  104.         y = 半径*数学正弦值(角度*种子)
  105.         鼠标移动(圆心x+x,圆心y-y)
  106.         鼠标左键按下()
  107.         //等待(100)
  108.         角度 = 角度 + 20
  109.         如果(角度 % 20 == 0)
  110.             半径 = 半径 + 1
  111.             //半径2 = 半径2 + 1
  112.             如果(角度 >= 360)
  113.                 角度 = 0
  114.                 圈数 = 圈数 + 1
  115.                 如果(圈数 == 10)
  116.                     跳出
  117.                 结束
  118.             结束
  119.         结束
  120.         等待(5)
  121.     结束
  122.     鼠标左键弹起()
  123. 结束


  124. 功能 执行方形()
  125.     变量 圆心x,圆心y,角度=0,半径=1,x,y,半径2=1
  126.     变量 派=3.1415926535897,种子=派/180,圈数=0
  127.     变量 m = 0
  128.     鼠标获取坐标(圆心x,圆心y)
  129.     循环(真)
  130.         遍历(变量 i = 0; i < m+4; i++)
  131.             圆心x = 圆心x +15
  132.             鼠标移动(圆心x,圆心y)
  133.             鼠标左键按下()
  134.             等待(10)
  135.         结束
  136.         遍历(变量 i = 0; i < m; i++)
  137.             圆心y = 圆心y -15
  138.             鼠标移动(圆心x,圆心y)
  139.             鼠标左键按下()
  140.             等待(10)
  141.         结束
  142.         m = m + 1
  143.         遍历(变量 i = 0; i < m+4; i++)
  144.             圆心x = 圆心x -15
  145.             鼠标移动(圆心x,圆心y)
  146.             鼠标左键按下()
  147.             等待(10)
  148.         结束
  149.         遍历(变量 i = 0; i < m; i++)
  150.             圆心y = 圆心y +15
  151.             鼠标移动(圆心x,圆心y)
  152.             鼠标左键按下()
  153.             等待(10)
  154.         结束
  155.         m = m + 1
  156.         如果(m >=15)
  157.             跳出
  158.         结束
  159.     结束
  160.     鼠标左键弹起()
  161.    
  162. 结束
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-25 17:46:16 | 显示全部楼层

  1. 功能 列表框保存数组(列表框名)
  2.     变量 内容组 = 数组()
  3.     变量 选项数量
  4.     选项数量 = 列表框获取选项个数(列表框名)
  5.     遍历(变量 i = 0; i < 选项数量; i++)
  6.         数组追加元素(内容组, 列表框获取文本(列表框名, i))
  7.     结束
  8.     返回 内容组
  9. 结束
复制代码
列表框里面的东西以数组的形式保留下来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-4 17:31:38 | 显示全部楼层
DXF自动捡物源码
大概是找物品几次,找不到就跳出,找到了继续找,捡物超过时间跳出,每个小房间捡物超过一次跳出,
  1. 功能 自动捡物(是否组队, 身份)
  2.     变量 起始时间 = 当前时间(), 人物坐标 = 0, 物品 = 0, 是否站在物品上 = 0, intx = 0, inty = 0, 开关 = 假
  3.     如果(捡物 == 真)
  4.         写日志("[自动捡物]开始捡物")
  5.         循环(时间间隔("s", 起始时间, 当前时间()) < 10)
  6.             是否站在物品上 = 找图标准版(gzy, 21, 24, 795, 590, "捡物左.bmp|捡物右.bmp|站在物品上.bmp")
  7.             如果(是否站在物品上 == 1)
  8.                 调试输出("站在物品上")
  9.                 盒子按下键标准版(88)
  10.             否则
  11.                 开关 = 假
  12.                 遍历(变量 i = 0; i < 3; i++)
  13.                     物品 = 找图返回坐标(gzy, 125, 84, 643, 516, "物品.bmp", intx, inty)
  14.                     如果(物品 == 1)
  15.                         写日志("物品坐标X: " & intx & "坐标Y : " & inty)
  16.                         移动人物(是否组队, 身份, intx, inty)
  17.                         等待延迟(200, 300)
  18.                         调试输出("找到了物品")
  19.                         开关 = 真
  20.                         跳出
  21.                     否则
  22.                         traceprint("没有找到物品")
  23.                     结束
  24.                     等待(50)
  25.                 结束
  26.                 如果(开关 == 假)
  27.                     traceprint("捡物完毕")
  28.                     返回
  29.                 结束
  30.             结束
  31.             等待延迟(50, 80)
  32.         结束
  33.         traceprint("捡物时间到")
  34.         捡物 = 假
  35.         返回 1
  36.     结束
  37. 结束
复制代码


回复 支持 反对

使用道具 举报

发表于 2021-1-17 10:27:13 | 显示全部楼层
666666666
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-3-29 01:15 , Processed in 0.067830 second(s), 21 queries .

Powered by 海安简单软件服务部

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

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