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

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

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

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

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

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

scgame! [7 r, w* E7 W
5 I" x7 [; i& x. n2 C& Z
你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。+ P7 D2 w; i3 ~
请先看一下下面这个帖子
+ h' @7 g, i) r4 T* z【神秘岛4汉化项目】懒汉式打包新方法 ; B& W& b( t  F) K: M( g
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA
7 c3 i- J( c  l% H) n" I相关帖子
! A3 J$ s, B" _* K+ ]金发美女正式版的解包和打包工具# k$ E0 a/ p) r! F$ x" T
https://www.chinaavg.com/read.php?tid=21364 & O# Z4 @, L0 P4 Z5 H: l/ b
细节大致如下* m5 U6 A! b5 ]
.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。
9 V4 t2 P+ ~- i+ R' S( i工具大致用法如下
: H& t$ C2 D7 `4 f* h4 Kpack.exe filelist.txt foldername/ s% a! w3 v9 m6 }
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。3 q' t& V+ O' W8 W
pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白3 U' ^% ]' W, O' y
是怎么对应SOBLOND.DAT的啊; ^" c+ ]4 U2 |9 G* l
能不能再详细得说一下这两个文件是怎么表示offset,和size的吗$ U3 q5 a: a2 T# l( Z7 C/ n' P
我现在在想的步骤是:& z) K3 @7 r, d
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)
  E* V, r6 w) a( _2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
/ a/ V# w1 m: f- E( s0 E) \3) 写入.dat
1 y5 D; F; F, `# B
8 b  a$ a# ^$ O4 L6 f! z嗯,不过还是请解释一下.DIR和.TOC) }! t0 R) r* d8 m2 C9 j% F
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 12 s) t, v. H5 L& H; z) Y
open FDDE TOC 2
+ n& {  J6 _9 }' H. vdo ) ^0 b. G% P! F. |/ g$ J6 `9 o
    getdstring CHUNK 4 22 X: {* D$ D- g0 _: r
    get DUNNO long 2
2 [5 c) c* R) F) r) v3 V- K    get DUNNO long 2/ Q1 `' [$ e: R$ @
    get FILES long 20 i- u7 b$ r  X/ ]/ e# }
    get DUNNO long 2% j7 w+ l* e  s: M' @; r3 {! f
    get DUNNO long 2
9 R  _# m( l% U: E  C3 K    get DUNNO long 25 H6 q; C; S5 I' Z1 I" w$ F; e  `" S
    get DUNNO long 2
5 P+ w- e5 y! G9 _* D' s% Lwhile CHUNK != "REST"8 R1 @: l0 h7 F' e& z. B, l; [
savepos NAMEPTR 1; f8 o8 `: s0 K
for i = 1 to FILES
; h2 q6 `. H3 S9 L* f6 r    get DUNNO long 2
, }) z: Q( `# @' O    get SIZE long 28 f/ V8 W: }1 a7 B% C4 m( Z
    math SIZE >>= 2
4 j/ Z9 y  [6 H    get OFFSET long 2
2 l! H. V9 s) }( w$ o# k+ J, V    goto NAMEPTR 1* S( E# s! j. {* [! y: s* H, V. ]
    get NAMEOFF long 1$ l3 l1 v# Q. U
    savepos NAMEPTR 1
9 c* k' n9 S( L2 T' w0 p- V    goto NAMEOFF 1' k% _1 ~/ p0 w( o
    get NAME string 1
: {1 ]! u* ?* K    log NAME OFFSET SIZE3 |* _8 f, l' Q1 [4 A
next i- ~9 j& {& @3 {: h& s

: d2 D. y  w' d  b9 a2 w! D9 n" m" O1 z. ]+ P
这是解包器
4 a5 m2 d( v& k+ z) `: l/ S5 s2 O
for 里面读取toc的部分,long就是4个字节
! Y5 l% ^2 b: @- Z  get DUNNO long 2
% N) [8 d  Q" v$ b+ @    get SIZE long 25 q9 y+ }7 M/ i) F. _, v
    math SIZE >>= 2  P: K5 _9 P. u8 \. u% \9 l: r% E6 y
    get OFFSET long 2
0 E' E: R8 }8 [4 W# |7 o
+ p6 A+ _5 w9 A, ~. jfor 里面读取dir的部分,long就是4个字节2 [$ y* Z1 j3 Z: J% w6 ?' n
    goto NAMEPTR 1
! i) _0 L; {" a! D" f# z    get NAMEOFF long 1
' G# `9 E0 |2 h# r/ j6 p' p    savepos NAMEPTR 1( g- r# ~$ z2 U8 ^! {. B6 o" w
    goto NAMEOFF 15 G; N# D4 P4 ]$ s5 T, K; T
    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 | 只看该作者
我来详细解释一下,: D' c" w2 z1 L$ V! i' a$ h8 `' ]
open FDDE DIR 1
9 [& ^1 ?1 [0 r' ^  Z3 c) J" Yopen FDDE TOC 2 / C! O# Y# q6 O9 v
相当于打开2个文件,后面的1,2相当于句柄
, s% D, t8 m0 g- t$ w9 a/ M, I$ @* h4 k+ o0 y, \
do
/ v4 W' ^. J8 ~, g    getdstring CHUNK 4 2
- Y" n& y5 ]  c' @  ?: ~    get DUNNO long 2
& q' _  k; ?* K( ~5 k4 |( {    get DUNNO long 2  / C1 a+ V. e( l/ U& B
    get FILES long 2
7 N) n% G/ W; ~' K8 t    get DUNNO long 2 $ ]3 [7 k+ \! t# B$ Z7 {
    get DUNNO long 2 - m/ _# j! }; y" H
    get DUNNO long 2
/ n& N7 C& }) o' G" q0 O: J! `    get DUNNO long 2 0 x% ^+ I* _8 I$ A8 Z" e
while CHUNK != "REST": |* d8 W0 ^/ X3 p

' }7 f* I9 q. L. J这段主要是打开TOC ,读取文件数FILES 。* ^, ?9 Z9 |: K$ w3 }
你算算FILES 就能分析出是BE还是LE的。
& A: P# T' y/ E) G/ p8 Q* [
. _5 V$ I7 @* @% M3 k; V5 C后面2段是0 T: J% ^: H" Z3 l! `& E) O* [
读取toc里面的每个文件的SIZE ,offset# Q- c* y- G% D- s5 Z  V
读取dir里面的每个文件的NAMEOFF ,NAME* S8 O2 C: r' d/ R, b1 F1 x9 Y
最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。$ L5 ^* g" a* y8 v
9 n) g  l( d, g8 O4 _
该明白了吧?
回复 支持 反对

使用道具 举报

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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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