游戏脚本技术:按键精灵辨识字体
来源:按键学院【按键精灵】当游戏里需要识别的文字量很大,而又不知道是什么字体,无法制作字库的时候,
我们该怎么办呢?
难道就甘心逐个提取文字点阵制作字库吗?
想想那工作量就吓尿~
例子
假如我们要做《神武》游戏的自动任务脚本,我们需要识别下图中红框部分的文字,识别到之后点击文字即可自动寻路到任务处。
我们先用大漠综合工具提取一个字的点阵,
这里我们提取“门派指引人”中的门字
这里要注意,我们截图的时候,门字下面的下划线不能截取
第一步:截图之后,我们取文字颜色
第二步:点击提取单个点阵
第三步:在定义文字输入框里输入“门”字
第四步:点击回车添加到当前字库
第五步:右击我们新添加的门字选择查询系统字库
看啊!它说可能的字体有那么多。
这。
如果只有几个可能的字体,我们还可以一个个测下来
这么多的话。
测还是要测,但是怎么测才能节省成本呢?
PS:如果弹出的结果是,在系统库里没有发现这个字
也可以用下面的处理方法,千万不能放弃治疗
有的情况下,大漠工具会有识别不出的情况
肉眼点阵比较法
我们知道有很多游戏,它的字体使用的就是我们的系统字体
而我们又知道大多数游戏里的字体是9号字
好,小编的系统是微软雅黑字体的
打开记事本,输入门字,然后把记事本的字体设置为微软雅黑9号字,接着截取记事本里的门字的点阵和游戏的对比
记事本:
游戏中:
点阵差那么多,一看就知道不是了。
那么我们就试试宋体9号字
为什么是宋体?因为普遍的游戏用的是宋体字
记事本:
游戏中:
哈哈~点阵对上了,就是宋体9号字~
指定生成字库法
如果是要用大漠综合工具生成系统字库之后,再加载到脚本里去找字
这样太麻烦了,而且每次生成字库花费的时间还多
所以,我们使用GetDictInfo 函数然后创建指定的文字
小编利用GetDictInfo函数,做了一个简单的测字体脚本,方便大家测字
在该脚本界面上,输入字体,字号,文字的颜色已经要测试的文字,启动脚本即可效果:
代码:
Call 注册大漠()
Set dm = CreateObject("dm.dmsoft")
Call dm.SetPath("c:\test")
// 读取选项
字体= Form1.字体.text
字号=Form1.字号.text
字= Form1.字.text
字体颜色= Form1.字体颜色.text
Call CreateFont(字,字体, 字号, 0, "字库.txt")
//找字
dm_ret = dm.FindStr(0, 0, 2000, 2000, 字, 字体颜色, 1.0, intX, intY)
TracePrint dm_ret
If intX >= 0 and intY >= 0 Then
MessageBox 字
Else
MessageBox "没找到"
End If
Sub CreateFont(Words, Font, Size, Index, Path)
Dim TempStr
T empStr = dm.GetDictInfo(Words, Font, Size, 0)
T empArray = Split(T empStr,"|")
For i = 0 to UBound(T empArray)
dm.AddDict Index,T empArray(i)
Next
Erase T empArray
If Len(Path) > 0 Then
Call dm.SaveDict(0, Path)
End If
End Sub
Function 注册大漠()
Dim i
//释放附件内容
PutAttachment "C:\test_game", "*.*"
Set ws = createobject("Wscript.Shell")
For i = 0 To 20
//注册atl跟dm插件
ws.run("regsvr32 atl.dll -s")
ws.run ("regsvr32 C:\test_game\dm.dll -s")。