DIY

梦幻怪物识别

英雄盖世[特训班学员(果壳门生)] [学号:G18] Rank: 12Rank: 12Rank: 12 果壳学院特训班学员 果壳币: 140

发表于 2020-11-14 22:03:21 | 1 条回复 | 208 次浏览

王子哥哥,文字被挡住了,如果不通过内存读取,有什么方法可以准确的识别出各种怪物


888.JPG





发新帖
果壳王子[果壳校长] [王子殿下] Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20 果壳热讲师 独家品牌学院 果壳热大导师 果壳学院创始人 果壳热教职工 果壳热平台站长 果壳学院校长/副校长 果壳学长 果壳热研究生 果壳币: 6541

发表于 2020-11-20 11:25:50

  1. Sub 注册大漠
  2.     need_ver = "3.1233"
  3.     // 插件需要用到atl系统库,有些XP精简系统会把atl.dll精简掉. 为了防止注册失败,这里手动注册一下atl.dll
  4.     Set ws = createobject("Wscript.Shell")
  5.     ws.run "regsvr32 atl.dll /s"
  6.     set ws=nothing
  7.     // 释放附件>>>>>>>>>>>>>>>>>>>
  8.     PutAttachment ".\Plugin", "RegDll.dll"
  9.     PutAttachment "c:\梦幻资源", "dm.dll"
  10.     Delay 100
  11.     Dim iPath_
  12.     iPath_ = Plugin.SysEx.GetDir(0)
  13.     If Plugin.RegDll.Reg("c:\梦幻资源\dm.dll")=1 Then
  14.         TracePrint "——大漠注册成功——"
  15.     End If
  16.     // 这里判断是否注册成功
  17.     set dm = createobject("dm.dmsoft")
  18.     ver = dm.Ver()
  19.     TracePrint "大漠版本号:"&ver
  20.     if ver <> need_ver then
  21.         // 先释放先前创建的dm
  22.         set dm = nothing
  23.         // 再尝试用regsvr32 来注册. 这里必须使用绝对路径。以免有别人把dm.dll释放在系统目录.造成版本错误.
  24.         Set ws = createobject("Wscript.Shell")
  25.         ws.run "regsvr32 c:\梦幻资源\dm.dll /s"
  26.         set ws=nothing
  27.         Delay 1500  
  28.         // 再判断插件是否注册成功
  29.         set dm = createobject("dm.dmsoft")
  30.         ver = dm.Ver()
  31.         if ver <> need_ver then
  32.             // 这时,已经确认插件注册失败了。 弹出一些调试信息,以供分析.
  33.             messagebox "插件版本错误,当前使用的版本是:"&ver&",插件所在目录是:"&dm.GetBasePath()
  34.             messagebox "请关闭程序,重新打开本程序再尝试"
  35.             ExitScript
  36.         end if
  37.     End If
  38.     dm.SetPath "c:\梦幻资源"
  39. End Sub
  40. 注册大漠
  41. hwnd = dm.EnumWindow(0,"梦幻西游 ONLINE","WSGAME",1+2)//大漠查找梦幻窗口(通过标题和类名),返回窗口句柄
  42. Call dm.BindWindow(hwnd, "normal", "normal", "normal", 0)//大漠绑定梦幻窗口
  43. TracePrint "窗口句柄:"&hwnd
  44. index=dm.FindPic(0,0,640,480, "吸血鬼1.bmp|吸血鬼2.bmp|吸血鬼3.bmp|吸血鬼4.bmp|吸血鬼5.bmp|", "303030", 0.8, 0, bmpx, bmpy)//大漠找多图  
  45. If index >= 0 Then
  46.     TracePrint "找到第"&index+1&"只宝宝 - "&"X坐标:"&bmpx &" Y坐标:"&bmpy
  47. End If
复制代码

代码说明:
关键代码是利用大漠FindPic命令实现找多图的效果,每张图片共同构成一只吸血鬼的各种动态结构。
因为吸血鬼一起在运动中,可以理解为是一张动态图,那么问题锁定——我们要解决和处理的就是对动态图片的识别。
如何识别?答案参照上述代码——将同一只吸血鬼的不同动态片断截取,保存为图片,总共收集大概5张这样(如果还不够精确就继续收集),然后填写到大漠FindPic命令参数中,每张图片用"|"符号来间隔——即可实现找多图(找动态图)的效果!
注:index返回的是找到的图片序号,该序号从0开始索引,如果index返回-1则表示所有图片皆未找到。


果壳热:编程有意思,人人可为师。
欢迎报名果壳热特训班:点击报班

回复 道具 举报

发新帖

手机版

© 2020-2030 果壳热 All rights reserved.

Powered by GUOHOT XS8.8. Theme designed by GUOKEHOT.

top bottom