Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一脸懵逼地过来问问这是啥情况啊 #27

Closed
NeyaCat opened this issue Nov 4, 2019 · 5 comments
Closed

一脸懵逼地过来问问这是啥情况啊 #27

NeyaCat opened this issue Nov 4, 2019 · 5 comments

Comments

@NeyaCat
Copy link

NeyaCat commented Nov 4, 2019

图片
翻译的时候每一个字符都连续翻译了好多次,而且不止这一个游戏如此,多个游戏都出现了这样的状况…迷茫,是有什么需要配置的地方还是这种字体的识别率问题还是bug啊?

@luojunyuan
Copy link
Contributor

切换狗子
image
参照vnr如何玩龙头马头太阳等rpg游戏,都是一样的

@NeyaCat
Copy link
Author

NeyaCat commented Nov 5, 2019

关键所有能用的钩子都是这种情况啊,无一例外,剩下的就是些无法使用的钩子了,没有翻译的。目前我测试的游戏里,英文是基本能稳定识别的,单词不会出现wwwhhhaaattt'''sss yyyooouuurrr nnnaaammmeee这种情况,但是日语会,只要是日语,都会,就我测试的这几个游戏全都会。不过测试游戏中有一个中文的倒是有正常翻译的钩子,关键是现在测试过的日语的所有能识别到文字的钩子都是复数的翻译,几个能用的效果是一样的,像你图所展示的这种正常能用的一个都没有啊
1
2
5

@NeyaCat
Copy link
Author

NeyaCat commented Nov 5, 2019

欧好吧,我应该多测一个,刚刚试了一个可以,但也就这一个有…为啥会出现这种循环好多次的情况啊,这个软件是咋识别文字的?为何有些可以用有些又无法使用呢?
6

@tinyAdapter
Copy link
Member

文本提取核心是这个开源项目:Textractor

原理说起来比较复杂,你可以理解成用一些手段扫描游戏进程里可能出现文本的内存段,并把结果直接抽出来。至于效果的好坏主要看对应游戏引擎与文本显示有关的代码是怎么写的。

对于你目前遇到的这种特别规律的重复文本问题,本身是可以通过把config\texts.json配置文件里的modifier.deduplicate属性由false改为true,开启文本去重功能来解决的,但是目前打包的最新版有BUG,只能去除两个重复,下一版才会修复(PR)。

我现在让AppVeyor编译了最新的代码,你可以试一下v0.9.1。

@luojunyuan
Copy link
Contributor

欧好吧,我应该多测一个,刚刚试了一个可以,但也就这一个有…为啥会出现这种循环好多次的情况啊,这个软件是咋识别文字的?为何有些可以用有些又无法使用呢?
6

比如这个 /HW8@0:gdi32.dll:GetGlyphOutlineW 码
textractor 每次会在程序调用GetGlyphOutlineW这个函数时,检测esp+8这个地址内的数值,以UTF-16编码(W选项)的方式解释
有些时候为了句子中的一个字,这个函数会被调用两次或多次,这就造成了一个字重复多次的情况产生
所以需要再找别的地址来找语句的内存地址
其次,也可以通过外部方法处理提取到重复字符^ ^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants