设为首页收藏本站官方微博

汉化任务 金发美女的懒汉打包工具(scgame请进)

[复制链接]
查看: 2993|回复: 8
打印 上一主题 下一主题

[汉化任务] 金发美女的懒汉打包工具(scgame请进)

跳转到指定楼层
楼主
发表于 2010-4-13 23:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

金发美女的懒汉打包工具(scgame请进)

scgame. D0 v5 L, E: R! j# ?
: S6 s" c/ T, }% q+ `
你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。
, U0 o. K) G- @- F0 ^0 o5 v请先看一下下面这个帖子
4 ?! r+ G0 X2 {0 F! Z- J6 O【神秘岛4汉化项目】懒汉式打包新方法 $ E% o: I; N* i& o" @8 s
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA5 ?% V3 r4 k5 G" s; u
相关帖子
  I: u% h# V2 N( m. R6 A, @* c0 E4 q5 P金发美女正式版的解包和打包工具# Y. B3 k9 n- v1 y) N6 d6 c( `; }
https://www.chinaavg.com/read.php?tid=21364
8 g& I: [6 q6 B4 e/ T' H2 v细节大致如下
# Y& b/ m' ^' P.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。' X3 u5 H2 c9 P, G6 I  X4 z
工具大致用法如下
& I5 X- A; D) j9 mpack.exe filelist.txt foldername
# t+ C9 d" I: x9 H5 l2 Kfilelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。  Q0 Q4 v$ L6 C4 \/ g. |
pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 23:56 | 只看该作者
先去下个看看
回复 支持 反对

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白. w1 q5 \" n2 D9 S5 T
是怎么对应SOBLOND.DAT的啊
! x' N4 \6 ~3 r" a1 q/ _- J4 C' Y" z能不能再详细得说一下这两个文件是怎么表示offset,和size的吗
6 N+ S& n% |+ J+ ^( Y( `( v/ ~我现在在想的步骤是:- M$ H  y9 U" b# d- P# ~( D9 L6 H
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)5 m3 X6 q, k5 O0 m2 z
2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改3 P/ @5 k6 J2 l% T  f- k( W1 ~# B
3) 写入.dat
$ K6 E0 S4 M% g8 t/ i) v& k; y2 f% v# R5 \+ e3 Y: L3 J
嗯,不过还是请解释一下.DIR和.TOC0 x7 S  o( O8 @2 j' ~: f# c
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1
& b7 T' Z, m4 K# R7 ?. Yopen FDDE TOC 2
1 J$ Y) a  c5 u9 c/ w- Odo   G) ~" J9 G  k
    getdstring CHUNK 4 29 B9 T# U- N: C2 M7 z& i$ n# r  t: m
    get DUNNO long 2
' |8 C) {# {6 K5 ~+ b    get DUNNO long 2& U% D% ~% l9 K, i1 W2 I- K
    get FILES long 2
7 j, N; j. a; X' q# j8 E. a    get DUNNO long 23 Y) h, V0 e( Y
    get DUNNO long 2& w+ M( a) N3 t( P; h  C
    get DUNNO long 2
/ o1 n. l$ r8 e6 g1 D' J    get DUNNO long 2
. n5 t4 S! @+ E9 ~  pwhile CHUNK != "REST"- e. j5 N; c+ X& N
savepos NAMEPTR 1
( Z: k* c! x: A" n7 _for i = 1 to FILES
% a: q9 W0 D/ V8 k# @" E    get DUNNO long 2
/ W& Y* ~9 i  g% k    get SIZE long 23 {% Z0 Q' w+ r4 I, L
    math SIZE >>= 2
# G: e) f( ^$ J1 l5 b0 H    get OFFSET long 2
3 p8 Z% i$ i* h/ @7 d. L1 \    goto NAMEPTR 1
  f9 h9 q8 @7 K' k3 o! [/ P" e    get NAMEOFF long 1- E* _; _8 l* y4 _# \
    savepos NAMEPTR 1& u' g0 ~( l3 n8 h. ~1 b
    goto NAMEOFF 1# d* k# h, T& u$ _+ c4 t6 @0 o* i5 C
    get NAME string 1
7 P) Z1 ]+ p) c" Q& S    log NAME OFFSET SIZE
' ^& T" g5 H  @6 O& Tnext i- u% O# U+ Q+ x; j% x

2 _; ~8 N; O* c6 Y! U$ Q* @9 ]- W, s0 Z7 l
这是解包器
7 h$ r+ N4 D7 ^5 y/ G9 k8 R: Z7 G! p! z" ^% @
for 里面读取toc的部分,long就是4个字节9 P+ O! \) n$ N" V" j7 v
  get DUNNO long 2
5 ?8 A/ r, q5 Q; d9 J, l    get SIZE long 2
, ?4 \2 W, ^: S, W$ r8 Q8 @( H) O$ L    math SIZE >>= 2
( O4 q7 J! T1 ~+ j* f8 {3 Y    get OFFSET long 2
9 ^5 c7 E% B* Y% W! n' Z" @* x) X# O8 r6 Z5 _; \  I
for 里面读取dir的部分,long就是4个字节1 D0 @+ \3 ^+ u$ o+ n4 g
    goto NAMEPTR 1
8 N1 x6 \% [4 ], _! s0 E/ i    get NAMEOFF long 1
$ W" a& U) ^2 ~+ ^9 p    savepos NAMEPTR 18 E1 p; B. h1 E& c1 e
    goto NAMEOFF 1
8 J* K$ `# b% X    get NAME string 1
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2010-4-20 07:59 | 只看该作者
不明白的地方请继续提问。
回复 支持 反对

使用道具 举报

6#
发表于 2010-4-20 10:47 | 只看该作者
这4个字节是Big Endian 还是Small Endian的啊
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-20 10:51 | 只看该作者
哦,上面一段是写包?
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2010-4-20 11:19 | 只看该作者
我来详细解释一下,
3 N: L, x1 V5 p% C  o, F. Lopen FDDE DIR 1
& m5 ?$ k( b& X4 l$ l3 ropen FDDE TOC 2 6 P* Q9 B' f& P4 Z$ o1 x
相当于打开2个文件,后面的1,2相当于句柄! ]! W5 M, S' u- n3 w( D+ o
  z. H- N1 R. x( _3 w
do2 L5 ?' K8 L! L+ u2 Z5 _( w
    getdstring CHUNK 4 20 n. c: v* o8 S* A" z
    get DUNNO long 2
8 Z, J" M( m1 H9 ^; X8 o% @    get DUNNO long 2  5 O" y% y! L' |; O! ~6 n7 z) y
    get FILES long 2 + F  @% j9 G! z/ G4 L
    get DUNNO long 2
8 y" B. R* @& o) r* s( o    get DUNNO long 2
# R( s0 Z4 p; W" K, c    get DUNNO long 2
9 N1 n* b& Q( j$ I* y) I2 B+ C    get DUNNO long 2
. }, V: }- Z1 `while CHUNK != "REST"7 t- u0 j7 C3 z1 J
# w7 V; w- N1 O7 i+ X
这段主要是打开TOC ,读取文件数FILES 。3 Z/ B7 y0 a$ ~7 N/ y7 l( S6 ~1 l
你算算FILES 就能分析出是BE还是LE的。
2 |0 c% I, g1 w: u: a
) j- t( S: ]  a: T7 r后面2段是- B$ [9 O; D0 l7 \
读取toc里面的每个文件的SIZE ,offset
7 X$ q# k9 K$ J% p读取dir里面的每个文件的NAMEOFF ,NAME
  {1 d: T1 b6 g* l7 s3 d$ Z最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。6 ]) v' \' i) e* C

9 X5 n6 i. ]2 L9 j  `该明白了吧?
回复 支持 反对

使用道具 举报

9#
发表于 2011-5-29 19:20 | 只看该作者
mark
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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