如题,这是一篇晚来的售后服务(因为我有发mod合并工具,可能有的人合并失败但找不到问题所在。。。)
所以简单说一下可能的情况和解决办法:
这种情况一般有两种可能,一是你的mod的ini文件中含有类似“IB0”的内容,如下图:
有位大佬也提到这部分代码可能导致卡顿掉帧等问题,通过搜索“IB0”可以找到,然后删除所有找到的这些代码行,有些mod不止有一个ib文件,所以可能还包含“IB1”“IB2”等等,如果找到也要删除。(这些代码应该是旧版本的MMT工具写入的,作用不清楚,其他mod并没有类似代码)
第二种可能是,你的mod的ini文件中引用了多余的文件,这些文件被写入了代码但并未被使用,虽然不影响mod的使用,但合并工具在运行时找不到这些文件就会出错。
解决办法有两种,如果你的设备有python环境,可以换用py脚本来代替exe程序,我在脚本中加入了错误处理功能,遇到缺失的文件会跳过然后继续执行。
另一个办法是使用我的文件一致性检查工具,找到那些多余的代码然后手动删除。
如图,其实这种情况也是上面提到的IB0的问题引起的,处理方法同上。
检查一下合并后的ini文件的资源部分的引用路径有没有中文。
3dmigoto不能识别中文路径,所以也就找不到这些文件,自然就不会生效。解决办法就是修改mod文件夹名称不要用中文。
还有一种罕见的情况会导致切换键不生效。
因为合并工具是通过在mod的Position部分的hash下写入$active = 1来实现控制活动角色切换的。
如果是使用GIMI-Mod合并工具合并的mod,打开merged.ini,你可以找到下面这样的代码行:
如果是使用命名空间合并工具合并的mod,打开MasterXXX.ini,你可以看到下面这样的代码行:
所以如果你合并的mod都是仅修改贴图的mod,这类mod文件中一般并不包含XXXPositon.buf文件,ini文件的代码中也不会有Position的hash值,合并工具找不到这个hash值,合并后切换键自然也就不会生效。
解决办法就是到其他同角色的mod中的ini文件里找到一个Position的hash值,填到上图中它该在的位置。
这种问题常见于发光mod中,合并后角色的脸部可能变黑。原因当初我也找了很久,最后发现是发光mod的命名不规范导致的。。。
比如这个mod改了脸,在改脸的ini文件中使用了类似[Resource1]这种无意义的数字命名法,然后在改发光的ini文件中,也使用了[Resource1]这种无意义的数字命名法。。。两个文件单独分开不会产生冲突,但是一旦合并为一个ini文件,那么自然就会产生引用冲突,结果就是发光贴图跑到脸上去了。由于发光贴图的透明部分其实是黑色进行了透明度反转,所以最终效果就是脸黑了。
解决办法就是打开合并ini后的config.ini文件(不是最终生成的那个切换文件,只是在你预处理时合并生成的ini),找到这些使用数字命名法的代码,改为不冲突的(最好是有意义的)名字。
另外也希望各位在写ini时不要偷懒用数字了。
拒绝9855、1233从我做起(
好歹咱写的也算是代码了,命名还是规范一点好。
这个问题我没有遇到过,解决办法是在nico佬的知识库里面看到的。
如果你合并的mod使用了不同的制作工具,在MMT制作的mod中,你可能在Overrides部分的VertexLimitRaise指令标题中看到如下代码:
使用ZZMI制作的mod则是这样的:
区别就是有没有中间那串数字,这是一种动态顶点数量突破,还是为了性能问题,加上这串数字可以减少不必要的内存浪费。下面是nico佬的解释:
解决这个问题的办法可以是手动的把所有动态顶点数量突破改为静态的,即去掉中间的数字。
by 哈米猫特HammyCatte
更新于 2024-10-19