satan53x / SExtractor

从GalGame脚本提取和导入文本
GNU General Public License v3.0
225 stars 15 forks source link

Reallive引擎 #1

Closed yqw1231 closed 1 year ago

yqw1231 commented 1 year ago

QK6E Y9F%Z5%WU2$2VWAMAW 您好,我打算使用您的工具提取Reallive引擎的文本(Seen.txt),工作目录底下就一个txt文件,选项如图所示,但是生成的文件夹是空文件夹,可以请您指导一下吗?

satan53x commented 10 months ago

因为存在暴力截断,所以vnt提取的行数应该一定更长吧,所以我想的是用合并的方法

不是,截断不影响提取,截断是你导入的时候自己勾选的操作。提取都是完整的句子不会截断。 截断填充是保证译文长度和原文一样,提取的时候都没有译文肯定不影响啊。 提取之所以不一样是因为提取方法不一样,SE是暴力提取,VNT是解析命令提取(所以它译文长度可以变,不需要截断译文)。

satan53x commented 10 months ago

不过比较奇怪的是为什么VNT不报错还导入不回去?这个就没遇到过了。

yqw1231 commented 10 months ago

不过比较奇怪的是为什么VNT不报错还导入不回去?这个就没遇到过了。

现象就是vnt会直接把script_jp里的东西直接拷贝到script_cn,理由是发现script_cn所有文件的修改时间都和jp里的一样

yqw1231 commented 10 months ago

因为存在暴力截断,所以vnt提取的行数应该一定更长吧,所以我想的是用合并的方法

不是,截断不影响提取,截断是你导入的时候自己勾选的操作。提取都是完整的句子不会截断。 截断填充是保证译文长度和原文一样,提取的时候都没有译文肯定不影响啊。 提取之所以不一样是因为提取方法不一样,SE是暴力提取,VNT是解析命令提取(所以它译文长度可以变,不需要截断译文)。

其实关于这点我还是有些不明白,比如说我的第一个json文件,vnt提取出两句话,但是SExt只能提取出一句话,然后这句话和vnt提取的第二句话相同: image image

satan53x commented 10 months ago

恩,和截断无关,单纯SE的这个正则提取不到第一句话。 截断是针对译文的,导入译文时打开截断填充之后,比如你这句话認証に成功しました。,译文中假设是认证成功了。。。。。。。。,那么译文比原文长,就会截断成认证成功了。。。。。

satan53x commented 10 months ago

因为在txt里,每句话的字节长度是有记录的,但是SE暴力提取并不会修改这个记录,所以需要译文和原文长度一致。 VNT会解析txt文件结构,会修改这个记录,所以译文可以变长。

yqw1231 commented 10 months ago

那请问我如果不选择截断的话,遇到比原文长的译文,游戏里会有什么现象呢?是会自动挪到下一句吗

satan53x commented 10 months ago

那请问我如果不选择截断的话,遇到比原文长的译文,游戏里会有什么现象呢?是会自动挪到下一句吗

这个引擎应该会卡死或者闪退。 因为文本长度有记录,会告诉引擎这句话有多少个字节,然后引擎就会读相应的长度,如果你文本长度变了但是记录没变,还是之前日文的长度,那之后的命令就会读歪。

satan53x commented 10 months ago

一般这种有字节长度记录的引擎都会写成单独的引擎脚本,纯正则的暴力提取是没法修改这种记录的。 但是因为VNT已经有这个引擎了,而且这个引擎的命令格式比较复杂,就懒得重复造轮子,所以我一般是推荐解密后用VNT。

yqw1231 commented 10 months ago

一般这种有字节长度记录的引擎都会写成单独的引擎脚本,纯正则的暴力提取是没法修改这种记录的。 但是因为VNT已经有这个引擎了,而且这个引擎的命令格式比较复杂,就懒得重复造轮子,所以我一般是推荐解密后用VNT。

但裸足少女这游戏却没法被vnt回封,这就很难受了。。。

satan53x commented 10 months ago

你可以试试VNT原版,但是只有命令行没有图形界面,具体用法参看他的github页面说明。 不然就只能截断了。SE截断之后超过长度会有会黄色警告打印,一般是要人工缩句,等于是润色了。

yqw1231 commented 10 months ago

我试过vnt原版,也是一样的效果,我到时候再试试提取的时候用vnt原版。我用galtransl提取的时候,发现seen.txt,他会提取成seen.json,感觉和提取其他引擎文本的格式不一样,然后我把seen.json 回封的时候又会报错,就是上面的截图。所以我试着把名字改成seen.txt.json,然后发现不会报错了,但是却没把json_cn里的文本回封回去,我觉得应该是因为我改了名字,所以他没识别出json_cn里的文本。但是我不改名字会报错,所以我目前也是没有啥办法

Cosetto commented 10 months ago

Append "--RealLive" to VNT's command if you want to extract/insert reallive script. But still, don't try to translate Hadashi's RealLive with VNT, it will only output corrupted scripts. Apparently, vntextpatch only works with old RealLive format.

yqw1231 commented 10 months ago

Append "--RealLive" to VNT's command if you want to extract/insert reallive script. But still, don't try to translate Hadashi's RealLive with VNT, it will only output corrupted scripts. Apparently, vntextpatch only works with old RealLive format.

yeah,my problem is can use vnt extract reallive script,but can not insert the trans to script

yqw1231 commented 10 months ago

你可以试试VNT原版,但是只有命令行没有图形界面,具体用法参看他的github页面说明。 不然就只能截断了。SE截断之后超过长度会有会黄色警告打印,一般是要人工缩句,等于是润色了。

所以说你这里没提取出来的,我得把他合到别的句子里去,然后超出长度的就去润色。警告打印是在控制台生成的是吗,我倒是还没见到过

satan53x commented 10 months ago

你没勾选截断填充就不会截断,要你自己在导入的时候勾选

Cosetto commented 10 months ago

Like I said, the output scripts by VNT will only break the game, I'd already tested. I guess the most stable tool for Hadashi right now is text_conv image

yqw1231 commented 10 months ago

你没勾选截断填充就不会截断,要你自己在导入的时候勾选

嗯,是的,我之前是有勾选的,现在是默认会把截断的内容放到cutoff.json里是吗

yqw1231 commented 10 months ago

Like I said, the output scripts by VNT will only break the game, I'd already tested. I guess the most stable tool for Hadashi right now is text_conv image

thank you,I will try it.

satan53x commented 10 months ago

嗯,是的,我之前是有勾选的,现在是默认会把截断的内容放到cutoff.json里是吗

对,超长的可以在cutoff.json里修改,也可以直接在译文json里修改,两种方式都有效。 cutoff.json里的负数是需要削减的字节数(一个汉字两字节)。正数不用管,会自动填充空格。

yqw1231 commented 10 months ago

嗯,是的,我之前是有勾选的,现在是默认会把截断的内容放到cutoff.json里是吗

对,超长的可以在cutoff.json里修改,也可以直接在译文json里修改,两种方式都有效。

大佬,刚刚那个老外发的,是不是和你用的方法一样呀

Cosetto commented 10 months ago

Like I said, the output scripts by VNT will only break the game, I'd already tested. I guess the most stable tool for Hadashi right now is text_conv image

thank you,I will try it.

But arc_conv has a problem, you need to switch your pc's region to Japanese. Else, the script would be right this... image After switching region: image

satan53x commented 10 months ago

大佬,刚刚那个老外发的,是不是和你用的方法一样呀

不是,工具不一样,他是用arc_conv项目里边的text_conv,应该也是可以变长的,但是提取出的格式不是json。

yqw1231 commented 10 months ago

Like I said, the output scripts by VNT will only break the game, I'd already tested. I guess the most stable tool for Hadashi right now is text_conv image

thank you,I will try it.

But arc_conv has a problem, you need to switch your pc's region to Japanese. Else, the script would be right this... image After switching region: image

thanks

yqw1231 commented 10 months ago

大佬,刚刚那个老外发的,是不是和你用的方法一样呀

不是,工具不一样,他是用arc_conv项目里边的text_conv,应该也是可以变长的,但是提取出的格式不是json。

好的

Cosetto commented 10 months ago

Example command: Dump: text_conv.exe rlseen src_file > script_file Insert: text_conv.exe rlseen src_file out_file < script_file

yqw1231 commented 10 months ago

Example command: Dump: text_conv.exe rlseen src_file > script_file Insert: text_conv.exe rlseen src_file out_file < script_file

ok,thank you

yqw1231 commented 10 months ago

image 大佬,这个是cutoff.json的内容,请问这里面上下两个文本有什么区别吗,我看文字是一样的,是修改哪一部分的呢,还有就是底下的负数“-8”,代表什么意思呢?

satan53x commented 10 months ago

上边是key下边是value,修改下边那一个,其实就是译文json里的文本,匹配到key替换为value。 -8是原文和译文的字节数差值,一个汉字等于两个字节,-8就是指要缩短4个字。 (缩短4个字之后再运行一次这个-8就会变成0,当然,多缩一点也可以,会补齐空格,最后只要是非负数就行)

如果你看到负数比较大,比如图中这个-23,那多半是有GPT翻译掉了换行\r\n之类的问题,这种最好是直接去译文里对比确认。 (直接修改译文json不会影响已经存在cutoff里的key值,而是如果还超长会在末尾新增key,不存在的key你可以手动在cutoff里把这个item整个删除也不影响)

yqw1231 commented 10 months ago

噢,好的,感谢,然后现在SExtra和VNT在提取上的不同应该就只在提出的文本量不一样吧,会存在一句话分成两句提取的情况吗?

satan53x commented 10 months ago

不确定,建议是用BeyondCompare之类的对比工具对比。或者VSCode也可以对比。

yqw1231 commented 10 months ago

不确定,建议是用BeyondCompare之类的对比工具对比。或者VSCode也可以对比。

我的意思是,提取的句子,和游戏里显示的一句话,会相同吗,还是说可能会被拆分

satan53x commented 10 months ago

不会。最多是VNT和SE的多行拼接\r\n不一样,都不会拆分单行。

yqw1231 commented 10 months ago

image image image 第一个是VNT提取的,第二个是大佬你的工具提取的,第三个是原文,确实挺怪的,感觉还是大佬你的适合一些。

satan53x commented 10 months ago

这个可能文件里就是分开的,因为文本有注音。 VNT可能是处理过,把括号都去掉了,我是正则暴力提取,没有处理。 其实还有种方式就是先全导出为txt,再二次提取可以重新组织格式,然后强制指定人名,获取的格式是最好的。但是需要一定的正则功底。

yqw1231 commented 10 months ago

这个可能文件里就是分开的,因为文本有注音。 VNT可能是处理过,把括号都去掉了,我是正则暴力提取,没有处理。 其实还有种方式就是先全导出为txt,再二次提取可以重新组织格式,然后强制指定人名,获取的格式是最好的。但是需要一定的正则功底。

啊,我感觉你这里是对的呀。

satan53x commented 10 months ago

啊,我感觉你这里是对的呀。

内容上都没啥错,导回去都是差不多的,就是格式上的问题,message和name不在一起。不过影响不大。

yqw1231 commented 10 months ago

反正大佬我就用你的来提取了

yqw1231 commented 10 months ago

image image 大佬,请问遇到这种问题该怎么解决呢?感觉像是因为有注音的缘故。

satan53x commented 10 months ago

恩,因为有注音,所以他这几个文本在文件里本来就是分开的,开了截断填充会补足比原文短的部分,所以这些空白其实是补的空格。 这种情况只有人工润色了,想办法把句子变长一点。

yqw1231 commented 10 months ago

这个注音如果要提取也是通过正则提取吗?我看新作那个siglus引擎也是有注音,但是有提取的

satan53x commented 10 months ago

倒不是提取注音的问题,即使提取了也还是会有空格,因为你这些文本在文件里本来就是分开的,暴力提取长度不能变,所以是你注音之前的那一段文本会补空格。 你这个补空格的长度是对比原日文的长度,你可以找对应行数的日文对比一下。 遇见的,是美丽的这句补的。

yqw1231 commented 10 months ago

倒不是提取注音的问题,即使提取了也还是会有空格,因为你这些文本在文件里本来就是分开的,暴力提取长度不能变,所以是你注音之前的那一段文本会补空格。 你这个补空格的长度是对比原日文的长度,你可以找对应行数的日文对比一下。 遇见的,是美丽的这句补的。

好的,谢谢大佬

yqw1231 commented 10 months ago

image image 大佬,请问这个是提取的bug吗

satan53x commented 10 months ago

看了一下确实,之前加的正则这个格式没分开,不过不影响翻译,你正常翻译之后导入一样的吧。 如果需要还原日文的,可以换成中文的,它们在字节上是一样的,8179和817A。 根据你这个情况我改进了一下正则。当然,如果已经翻译了还是用上边这个方法修正,不是必须要更新正则。

00_skip=[^\x81-\xFE][^\x40-\xFC]$
10_search=\x40[\x00-\xFF]{2}【(?P<name>[\x40-\xFE]+?)】([\x40-\xFE]*)$
11_search=\x40[\x00-\xFF]{2}([\x40-\xFE]+)$
20_search=^【(?P<name>[\x40-\xFE]+?)】([\x40-\xFE]*)$
21_search=^([\x40-\xFE]{4,})$
ignoreDecodeError=1
seprate=\x23\x00
yqw1231 commented 10 months ago

看了一下确实,之前加的正则这个格式没分开,不过不影响翻译,你正常翻译之后导入一样的吧。 如果需要还原日文的,可以换成中文的,它们在字节上是一样的,8179和817A。 根据你这个情况我改进了一下正则。当然,如果已经翻译了还是用上边这个方法修正,不是必须要更新正则。

00_skip=[^\x81-\xFE][^\x40-\xFC]$
10_search=\x40[\x00-\xFF]{2}【(?P<name>[\x40-\xFE]+?)】([\x40-\xFE]*)$
11_search=\x40[\x00-\xFF]{2}([\x40-\xFE]+)$
20_search=^【(?P<name>[\x40-\xFE]+?)】([\x40-\xFE]*)$
21_search=^([\x40-\xFE]{4,})$
ignoreDecodeError=1
seprate=\x23\x00

好的谢谢大佬,我更新一下正则吧还是,也没啥大损失

yqw1231 commented 9 months ago

大佬,请问是不是正则提取有bug呀,好像前面的一些文件没这情况,后面的全都出问题了 image

satan53x commented 9 months ago

什么BUG?你这截图里没看出问题啊?%A是它引擎自定义的变量啊,你这游戏是不是能设定名字什么的?

yqw1231 commented 9 months ago

什么BUG?你这截图里没看出问题啊?%A是它引擎自定义的变量啊,你这游戏是不是能设定名字什么的?

不是的,这个不是自定义变量,而且也没有设定名字,前面提取的文本,萝泽是没有接%A的。我明天丢游戏里看看是啥效果吧

satan53x commented 9 months ago

你直接用原日文包和原日文exe看它正游戏里怎么显示的呗