- 按键认证大神
- 728264
- 3501
- 18
- 1898 朵
- 27453 个
- 1717 个
- 82980
- 2011-08-04
|
1#
t
T
发表于 2022-04-16 19:12
|
|只看楼主
我们在制作一些打怪的脚本时,经常会遇到怪物和物品颜色接近、文字接近的情况,今天就跟大家分享一下,如何将怪物和物品分开进行查找。思路:如下图可知,怪物和物品显示的间隔(y间隔)为固定,且怪物和物品的名字不显示在同一行,即Y坐标不会相等,那么我们就可以利用这一点,将不属于怪物或物品的Y坐标范围内的图像进行涂改,从而达到只显示怪物或者物品的效果。以本游戏为例,游戏客户区大小为1024x768,即图像显示范围为0,0,1023,767。游戏中怪物和物品文字为宋体9号字,带文字描边的行高(文字的起点位置和终点位置的Y差值)为17。怪物和怪物之间的y间隔为32,物品和物品之间的y间隔为32。游戏画面可见范围内,第一个非物品的坐标范围为0,5,1023,22,第一个非怪物的坐标范围为0,28,1023,45。知道这些,我们就可以利用如图灵之类的第三方插件进行图像修改了,修改后的图片再进行文字识别或找图,效率和准确率都会提高。物品间隔:怪物间隔:原始图片:显示怪物:显示物品:源码:- PutAttachment "C:\","*.bmp"
- Call Plugin.TURING.Draw_CreateCanvas(1024, 768)//创建画布
- Call Plugin.TURING.Draw_Image(0, 0, "C:\原始图片.bmp", 100)//选择图片,绘制图像
- '也可以用大漠等插件获取指定区域的图像数据,用作图片来源
- 'Call Plugin.TURING.Pixel_FromMemory(data, size, 2)//获取内存数据中的图片
- 'Call Plugin.TURING.Draw_Image(0, 0, "", 100)//将内存数据中的图片,绘制图像
- Dim x1, y1, x2, y2,y递增
- x1 = 0
- y1 = 5
- x2 = 1023
- y2 = 22
- y递增 = 32
- Do
- If y1 > 767 Then
- Exit Do
- End If
- Call Plugin.TURING.Draw_Block(x1, y1, x2, y2,0,0,0)//绘制方块,方块颜色为黑色
- y1 = y1 + y递增
- y2 = y2 + y递增
- Loop
- Call Plugin.TURING.Pixel_Preview()//显示预览
- 'TracePrint Plugin.TURING.GetMemoryDataBmp(data1, size1)//获取处理后图片的内存数据,用于大漠等插件调用
- Call Plugin.TURING.Draw_Image(0, 0, "C:\原始图片.bmp", 100)//选择图片,绘制图像
- '也可以用大漠等插件获取指定区域的图像数据,用作图片来源
- 'Call Plugin.TURING.Pixel_FromMemory(data, size, 2)//获取内存数据中的图片
- 'Call Plugin.TURING.Draw_Image(0, 0, "", 100)//将内存数据中的图片,绘制图像
- x1 = 0
- y1 = 28
- x2 = 1023
- y2 = 45
- y递增 = 32
- Do
- If y1 > 767 Then
- Exit Do
- End If
- Call Plugin.TURING.Draw_Block(x1, y1, x2, y2,0,0,0)//绘制方块,方块颜色为黑色
- y1 = y1 + y递增
- y2 = y2 + y递增
- Loop
- Call Plugin.TURING.Pixel_Preview()//显示预览
- 'TracePrint Plugin.TURING.GetMemoryDataBmp(data2, size2)//获取处理后图片的内存数据,用于大漠等插件调用
复制代码 源文件:- yuanma.zip (, 下载次数:273)
|