satan53x / SExtractor

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

CScript选项提取不完整。 #99

Closed PiDanShouRouZhouXD closed 1 month ago

PiDanShouRouZhouXD commented 3 months ago

image 另外,可能是由于选项不完整,选择任意选项后会直接导致游戏退出。 请问可能是由于什么原因?

satan53x commented 3 months ago

是在剧本里的选项附近有跳转指针(每个选项一个),当时我没有处理,是人工修改的。 以前我在御爱写了修正教程,但是御爱没了就看不到了。 你可以自己找下,就在选项的文本附近,修改成新的地址就行。 或者是上传一下剧本那个资源包,我看下能不能改成自动修正。

PiDanShouRouZhouXD commented 3 months ago

script.zip 您看下,感谢

satan53x commented 3 months ago

更新了,选项也确实有问题,3个选项的第3个提取不到,也修正了。 只有选项不同,不需要重翻,手动在trans中加上缺少的那个也行。

satan53x commented 3 months ago

不过我没游戏测试,你试下跳转地址的自动修正正不正常呢。

PiDanShouRouZhouXD commented 3 months ago

不过我没游戏测试,你试下跳转地址的自动修正正不正常呢。

image image

过了一句话之后还是会报错

satan53x commented 3 months ago

看了下剧本文件,好像你这个游戏除了选项跳转之外,还有没有选项的情况下也会跳转,你把剧本用解密脚本解密之后搜SEL_关键字就能看到,那3个选项之后第二句后边就有。

satan53x commented 3 months ago

而且常规跳转这个指令字节和选项跳转的指令不一样。以前这个引擎都没遇到过这种情况 都是只有选项跳转。 实在不行就截断吧。 主要一般我都写得比较简单,没有解析整个文件,默认会忽略掉不认识的指令,兼容性好一些。 这个常规跳转指令特征值有点短,我怕读歪,明天我试下加上识别这个指令呢。

satan53x commented 3 months ago

更新了常规跳转的修正,需要加入fixJump参数:extraData=compress,fixJump 打开debug信息可以看到打印。(只允许跳转字符串是ascii字符串) 分支跳转修正是强制开启的,不加入fixJump也会进行修正。

PiDanShouRouZhouXD commented 3 months ago

更新了常规跳转的修正,需要加入fixJump参数:extraData=compress,fixJump 打开debug信息可以看到打印。(只允许跳转字符串是ascii字符串) 分支跳转修正是强制开启的,不加入fixJump也会进行修正。

感谢,我尝试一下。

satan53x commented 3 months ago

可以再更新一下,扩大了最大的选项数量和跳转分支数量。

PiDanShouRouZhouXD commented 3 months ago

可以再更新一下,扩大了最大的选项数量和跳转分支数量。

测试了一部分,目前看来是修好了,非常感谢。

PiDanShouRouZhouXD commented 3 months ago

还是有bug: image 还是有选项没提取到 比如rec02_04的 背筋を駆け抜ける射精感に譲二は悶え、絶頂へと向かっていく。 的后面,有个选项: 麻衣の口に出す 麻衣の顔に出す 好像hs的选项都没翻到。

感觉确实有点难搞。现在用HOOK方案能基本满足需求,如果解封包实在太复杂就算了吧,总之辛苦了(

satan53x commented 3 months ago

按理说没提取到最多乱码吧,不应该报错啊。 你这个应该是选项指令不一样,你这游戏咋这么多指令啊,一般来说一个游戏同类型指令都是一样的。 你在.py里边355行,把[0x15,0x1A], dealSel0,里边加上个0x16应该就能提取到了。 我待会儿把ctrlStr改成json字符串读取,就不用改脚本了。

satan53x commented 1 month ago

https://github.com/satan53x/SExtractor/issues/115