wo3 (Uid:83604) 【火辣,括呐ok闹小爆虾>w<】 举报 打赏 抹布 引用 只看 链接
2009-09-28 14:48:08   管理记录:本帖被 小呆喵 执行加亮操作(2009-10-21)
1.什么是pack包补丁?它和data类补丁的区别是?
pack类补丁与data类补丁其实没有本质的区别,都属于替换类补丁。两者之间的关系,就是相当于rar压缩包vs未压缩的文件。而洛奇内含这个"解压缩"程序并可以自动读取pack。
2.pack类补丁和data类补丁的读取优先级顺序?
假如使用了内存补丁等data有效化补丁程序,那么优先级为:data类补丁>高版本pack>低版本pack;
假如没有使用内存补丁等data有效化补丁程序,那么优先级为:高版本pack>低版本pack>data类补丁。
因此客观上来说,用pack类补丁可以不需要data有效化了。
3.pack的版本号……
上条提到版本号问题,这个是什么意思?非常简单。
我们每次游戏大大小小的更新都有如R100等的字样,这就是版本号。
例如,cn_mabinogi_patch_99_to_100.exe 这个更新程序,就表明是官方的将游戏从R99版本升级为R100版本,里面含有的pack为99_to_100.pack。稍微有点补丁知识的人都知道,拆这个pack就是一个以data为根目录的文件夹和文件。正是由此——我们可以模仿官方的升级程序pack,打造出pack并设定版本号,让游戏读取我们的pack——这就是pack的工作机理。(而data类补丁也是类似,只是更加“懒惰”地不打包,并最优先读取它)
4.pack之于data补丁的好处
1)pack文件可以定义版本号,相对于现版本低中高均可。
*定义高了可以保证此pack永久有效,主要适用于100%不会过期失效造成游戏故障的这类补丁。
例如宝箱怪黑化补丁等pmg、jpg等类型的补丁;
*定义同级版本号或者定义低些,可以使此pack在未来自动失效——这个适用于很多xml类补丁,能保证自动避免游戏bug。
例如淘金文字化,蚂蚁洞全开补丁,丢失头等技能锁定柱子。
2)pack文件便于管理。
丢入package即可生效,删除或改乱扩展名为即可使补丁失效。例如打区域boss时彻底去除人宠的补丁,事先丢入package,我只需要在不用时把补丁扩展名改成“.pack1111”,用的时候改回为“.pack”即可。
相比来说,data文件夹,安装容易,删除可就难了——各类data会混在一起看不出谁是谁。一不小心错删漏删都是很恼火的;另外深邃的一级级文件夹探索进去找文件也很辛苦,点的你头大……
3)增强补丁的隐蔽性。
打个包相当于加个外壳,对于补丁作者来说可以起到一定的补丁内容隐蔽的效果,可以防止一些不太懂补丁的半吊子拿去乱改乱用-w-
下图是我的package文件夹:

5.终于进入正题——制作pack文件
首先你要有做好的测试无误的data补丁,下面以宝箱黑化补丁为例好了:
1)首先工具是海森堡的MabiPackageTool工具,在补丁区搜索下载即可。
2)把data补丁准备好,下图是展开的data结构


3)打开MabiPackageTool,按照图示操作选择输入文件夹(上一步的data文件夹)、输出文件(此处叫作1.pack)和版本号(此补丁想要长期有效,故选择一个超大版本号——版本号怎么填请参见问题4的1))


4)点完成,打包完毕


5)设置pack文件为只读,否则我们的pack将在下面一步中被游戏自动删掉!一定注意!
具体就是在1.pack上面右击--属性--钩选“只读”


6)把1.pack丢入游戏目录下的package文件夹。大功告成。如此作出来的补丁和data补丁无差

6.pack补丁的缺点和使用建议
没错,就是打个包麻烦=w=。另外据说认为,游戏对pack"解压缩"再用可能会比data直接读取慢一点(这是一家之言,没证据……)建议对于长期使用的补丁采用pack打包,一劳永逸;对于临时使用,调试制作中的补丁,就还是用data补丁好了。

*补充:优先级读取和已读取则终止的原理(感谢海豚提议)
假设系统环境为安装了data有效化,我们以data/db/itemdb.xml文件为例讲解。刚才说了,优先级是data类补丁>高版本pack>低版本pack。我们在data中放了一个版本A的data/db/itemdb.xml文件(data类补丁);我在pack文件夹中放置了一个版本B的data/db/itemdb.xml文件打包后的pack文件,版本号200(高版本pack);另外游戏本身的pack中有很多也含有很多版本的data/db/itemdb.xml文件,例如99_to_100.pack,里面的版本号为100;98_to_99.pack,里面的版本号为99……

好,那么游戏程序需要读取相关内容调用data/db/itemdb.xml文件时,是如何工作的呢。
首先程序就去data文件夹,找此文件——
找到了(版本A)——就终止继续搜寻
没找到(也就是data中没有此文件)——寻找向最高版本pack——翻找R200的那个pack——

找到了(版本B)——就终止继续搜寻
没找到——寻找向次高版本pack——翻找R100的那个pack——

找到了——就终止继续搜寻
没找到——寻找向次高版本pack——翻找R99的那个pack——

……

(最终)找到了——就终止继续搜寻
[ 此帖被wo3在2009-09-29 08:47重新编辑 ]

Sherlock。 (Uid:776) 【山河远阔,人间烟火,无一是你,无一不是你。】 举报 打赏 抹布 引用 只看 链接

2009-09-28 15:43:32  
原来我是沙发...
其实我两边都有...data和pack
变量的data
常量的pack

月羽雪兔 (Uid:66222) 【今强者劫弱 众者暴寡 勇者凌怯 壮者傲幼】 举报 打赏 抹布 引用 只看 链接
2009-09-28 17:32:03  
懂了懂了-  -多谢LZ

2009-09-28 17:47:34  
明白了,那么软件呢?请上传啦,谢谢!

2009-09-28 17:51:06  
引用第3楼duhanzhi于2009-09-28 17:47发表的  :
明白了,那么软件呢?请上传啦,谢谢!


用搜尋找海森堡就找得到的東西還上傳來做啥
嫌論壇硬盤太大嗎o_o?


2009-09-28 18:35:57  
1,不建议同版本出现2个相同pack包含的文件(后果不明)
2,建议对优先级读取和已读取则终止的原理做下解释,这篇文章写的不清楚

2009-10-01 01:32:25  

灵光一闪,天上掉下一个『OTL月饼』(数量×2)。
唔。懒得管。。。。支持楼主。辛苦了

2009-10-01 09:03:34  

灵光一闪,天上掉下一个『OTL月饼』(数量×2)。
了解了...步骤又多了一步

2009-10-07 22:16:42  

铛铛铛,拣到一个『XD月饼』(数量×2)。
好复杂的说,学习下

2009-12-08 10:59:43   Re:手把手教你打pack包,讓散裝補丁使用更合理(申精-0-)
軟件似乎已經移除  搜尋許久未果....

帖子浏览记录 版块浏览记录
YY大杂烩 » 补丁区