模拟城市中文网

 找回密码
 入住
搜索
查看: 5904|回复: 3

关于在打包的文件中提取或删除某模组的操作[非初级]

[复制链接]
发表于 2010-3-11 16:54 | 显示全部楼层 |阅读模式
(鲸鱼的方法)


嗯....因为有人问到了,那我在这说一说吧~



首先是声明:
这个是一项进阶操作,并且在大多情况下你并不需要这样做.只在插件文件夹占地过多或者确实只需要某一prop pack包里面的一两个模组而其它东西对于你来说毫无用处时才有必要动手.
在确信有进行此项操作的必要之后才可以往下进行.在打开reader之前要对将要进行操作的文件进行备份.
在操作之前,最好先了解一下这个dat包里面所包含的所有内容.

提取模组的操作一般需要同时打开两个reader.删除模组的操作稍稍简单一些,就揉在一起说吧~~

===========================================================华丽地割开皮包===============================================================


以提取为例:
一,
打开两个reader,一个负责打开含有目标模组的dat文件并进行排序和查找,另一个reader放在一边待用.



,
打开dat之后可以熟悉一下里面的内容,这个对一会的排序提取工作有帮助.dat包里面常见的文件有xml file, FSH file, S3D file, exemplar file, LTEXT file等等..这里要说明一点,在这里每一个模组都可以看成一个文件组:每一个模组都至少包含有一堆FSH file和S3D file, 以及一个xml file或者exemplar file. 这是最基本的一个组成单元,有时候还会有一个LTEXT file或者其它文件,在排序的时候可以看到.所以在一会的提取模组时一定要仔细观察,是否这一模组的所有成分都已经复制到位了.



三,
前两步做好了之后就可以开工了~ 首先将所有条目按照"entry"排序.你会看到所有相同类型的条目都排列在一起了.接下来找到FSH file. 从第一个起查看每一个FSH,直到找到你需要的那个目标模组.



四,

定位了目标模组的FSH之后,接下来就要分组了. 任意选中一个FSH file, 然后点击"group"按照组来排序.(这时需要看一下此dat包作者的人品.如果作者设置的ID非常有条理的话,提取工作会方便很多,ID若是有大片重复的话就会很悲剧,比如jestarr的几个mega pack ...这个在第八步中有介绍.)



五,

首先说一下ID条理清晰的情况:按照group排序之后,与刚才选中的那个FSH file的group ID相同的S3D file会出现在这组FSH file的下面,这就是此模组的模型.(如果运气好的话你会发现此模组的xml file或者exemplar file也使用这一group ID).同时,这一模组若是有其它不常见的文件条目的话,在这时也会出现在这一组中.如果进行的是提取操作的话,就将所有group ID相同的项目全部选中,右键选择"copy file(s)",并激活一边待用的reader,在空白处点右键选择"paste file(S)".这样,这个模组的FSH和S3D就复制好了~ 如果是删除操作的话,同样也是选中FSH和S3D,右键选择"remove file".不管是复制粘贴还是删除,都要记住这个group ID,下面要用.




六,
复制粘贴或者删除了FSH和S3D,剩下的事情就是继续寻找该模组的exemplar file或者xml file. 关于怎样定位到需要的exemplar或者xml,似乎没有太好的方法... 我说一种自己使用的..

不管是exemplar还是xml文件,里面都会含有如"0x5ad0e817-0x333f791b-0x00030000"这样的一组数据.这个就是游戏在调用这个模组时需要用到的 Resource Key.在exemplar里那组数据的名称是"Resource Key Type 1",在xml里键名为"ResKey".




在这一组数据中有三个部分,观察一下就可以发现,这三部分分别对应的就是S3D file的Type, Group 和Instance三个ID值.所有S3D的Type值都是0x5ad0e817,所以第一部分不必看.需要注意的就是中间的group值.在第四步的最后说到了要记住FSH和S3D的group ID,现在就用到它的时候.按照Entry将所有项目重新排序,找到exemplar file或者xml file聚集的段位,依次检查每一个exemplar或者xml,看其中的Resource Key Type 1或者ResKey中是否包含有上面记下的group ID.如果包含的话,就选中它,按照中的方法将它也复制粘贴到待用的reader窗口中.



七,
如果没有遇到group ID大片重复的情况,第七步就应该是收尾工作了..如果你有不止一个模组需要提取或者删除,就重复一下~的几个动作.也许遇到的情况不尽相同,但是都大同小异. 在提取完毕之后, 最后一步是在新reader窗口点右键,选择"reindex"为新粘贴的条目排序,然后便可以保存为一个dat了. 同样,在删除模组后也要对这个dat做一下reindex,方法和上面所说的一样.然后保存.





八,
关于复杂的情况,即遇到了大片group ID相同的时候,我们就需要再把instance ID也作为参考标识来研究. 先拿出一组最常见的instance ID看看:

可以看出其中的规律了:
看00030xxxx这组数据,从右面数第三位的0~4表示游戏中zoom1~zoom4的五个视距,从右数第二位的0~4表示在这一视距中的东南西北四个视角.

仔细观察多个exemplar的Resource Key Type 1或者xml里的ResKey,你就会发现在大多数情况下,instance ID都为0x00030000.这个是在模组的group ID唯一的情况下的instance.那么当group ID出现重复时,为了区别于group ID相同的其它模组, instance ID就得有变化.不过规律和刚才列举的是一样的.所以我们现在要做的就是找到了目标模组的FSH,并按照group ID排序后,选中全部目标模组的FSH file,再以instance排序即可出现蓝白条相间的一个情况,其中白色条即是与FSH对应的S3D file.全部选中它们,复制粘贴或者删除即可.以后可以再参照3~7步重复动作了.






===========================================================又华丽地缝上了========================================================


一些注意事项:

●在一些情况下reader会崩溃..比如说删去了FSH file却没有同时删去所对应的S3D,那么当鼠标选中这组S3D时reader就会炸掉..所以在进行删除的操作时一定记得每有大动作之前先保存.这也是之前声明中提到的备份原档的重要性.不过如果之前保存了的话,崩溃了之后重新打开reader载入刚才保存好了的dat,再去找那组失去FSH的s3d时,reader就不会崩了.而此时的这组S3D都会显示为LOD大白箱,很容易辨认和删除.

●不知是我自己的情况还是通病,在reader中有时查看赋予贴图的S3D时会发现LOD箱上的贴图完全驴唇不对马嘴..没关系,只要是group ID查找的正确,那些S3D跑不了就是它们.
●不必原封不动地照搬这个帖子里的步骤来操作.有时候打开一个dat文件,你会发现它就是按照group排序好了的,这样的好处就是一组一组的复制或删除很方便,但是你的目标不好找 ~~

●所有有关ID的活计都是需要细心和耐心的...所以,一旦你决心要做这类的事情,就要有始有终.没什么技术上的事,就是找地址.坚持到最后就会成功的~~





嗯...应该就是这些了吧.......
不知道有几人能从头看到尾, 又有几人能看明鱼的这一大坨胡话
不管怎样,这篇帖子写得仓促,而且总有鱼没有考虑到的地方,欢迎大家在下面讨论

[ 本帖最后由 大鲸鱼 于 2010-3-11 19:18 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?入住

x

评分

参与人数 1威望 +2 收起 理由
天唐永thianz + 2 精品

查看全部评分

发表于 2010-3-11 20:25 | 显示全部楼层
慢慢学习中……
回复 支持 反对

使用道具 举报

发表于 2010-3-12 12:43 | 显示全部楼层
太强大了。。。。。试试看。 感激鲸鱼大哥
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-22 22:57 | 显示全部楼层
嗷.. 关于提取exemplar file的方法,鱼想重新说一次:
1楼中提到的关于exemplar的提取方法,嗯.. 看来应该只有在exemplar数量较少的情况下才适用,
今天为了找阿迦某图里面的某样东西,鱼下载了传说中的LBT Mega Pack.
果然是mega pack,解压之后dat文件有20几MB,光exemplar就好几页...
一条一条的找肯定疯掉的..

下面说一个plunder介绍的方法:
比如我相中了这个dat里面的一个地铁站,group ID为 0xb9a8ffa7. 那么我们需要将group ID记下,然后打开analyser 工具,如图:




exemplar analyser工具打开后,按最左面的seach键导入dat里面的exemplar.





点红圈中的"find properties/exemplar by value"键. 弹出一个对话框如下:



因为resource key type 1 的data type为 Uint32,所以将Uint32打上钩,然后在Value框中输入需要检索的group ID:0xb9a8ffa7,然后检索.

检索结果会在下面显示出来.注意第一个number.这里面这个exemplar file排行第34483位.


记住这个位数,关闭分析工具.回到reader主窗口.

以Num为所有项目排序,并找到第34483项.这个就是需要导出的exemplar file.

将它复制并粘贴到新reader窗口或者直接删除就可以了~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?入住

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入住

本版积分规则

小黑屋|手机版|模拟城市中文网

GMT+8, 2024-5-1 19:09 , Processed in 0.023572 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表