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

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

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

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

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

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

scgame# T( C3 H* s9 r/ p* I: e$ D4 T
0 e$ X) o3 @% T! ?) ]7 e5 {" w
你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。' a; O' Q* k5 D' u
请先看一下下面这个帖子
8 a" E: l, @( [8 f【神秘岛4汉化项目】懒汉式打包新方法 ) C! [( Y8 c0 k+ M0 G) c% t( J( W
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA
; C5 I" _3 z  ]9 O, ~! g  K6 o* _相关帖子
; g: D) C1 c4 [8 L) F" D金发美女正式版的解包和打包工具) v! a3 A8 B* y1 ]( J
https://www.chinaavg.com/read.php?tid=21364
9 b  R/ Y7 m5 D, s& `细节大致如下
, g, ]0 h! m$ Y; W.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。
. b' G4 H! U% d) Y: }8 j' P工具大致用法如下
& y- V, H  t% V6 B& k( X0 kpack.exe filelist.txt foldername% S2 L: g* p% n7 ^: J6 R! V
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。
9 _" r6 M) x& _7 Y0 E* Z/ apack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白0 j4 T! e% j  {# _% O
是怎么对应SOBLOND.DAT的啊
3 |% h6 b" m  ^8 x; J) F+ K. E. r能不能再详细得说一下这两个文件是怎么表示offset,和size的吗
( p- n4 ]) u& I" Z7 R) ~; e' l& z我现在在想的步骤是:
- x; e$ P  v$ J2 S- M3 w1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)
. `9 B4 s1 R  N3 o2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
/ j7 P# j- B' d" A. D* \- s. i3) 写入.dat7 I8 s! {- i7 ~" a) X

% u1 H7 T+ `% ~2 K1 h9 S+ Y. j; G嗯,不过还是请解释一下.DIR和.TOC
$ j$ J( k* o; [8 Q6 D我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1# O6 }  a* e' \+ V; a6 o
open FDDE TOC 22 l8 {/ K2 m3 {, F
do ; @! o& \7 ]: r8 I% z+ r6 E
    getdstring CHUNK 4 2
' q% ]( T2 t  T5 I    get DUNNO long 2  E5 `& ]6 ?: r/ f' p
    get DUNNO long 2: k5 u2 Q% j% s( m
    get FILES long 2
( @3 i+ F" @  J4 l8 G% L5 g    get DUNNO long 2! V# Z  K* X8 b- ~
    get DUNNO long 2! M& j' X( G4 }) W. x% j
    get DUNNO long 2
  [# f; Q' W! u/ \) f$ K    get DUNNO long 2  @2 Z. {0 s% l) b5 }
while CHUNK != "REST"
' |! x" F; O$ y& s" A8 B- ]savepos NAMEPTR 1
. i. R% Z9 {" C8 s8 t4 V4 K+ \for i = 1 to FILES
' X7 S. V% R0 }% N; @1 j3 l5 w    get DUNNO long 2
) N! L8 C& a% o+ i) W    get SIZE long 26 m4 n' }; X+ ~4 W
    math SIZE >>= 2: c! o% W+ g& M( {" I
    get OFFSET long 2) c1 T- c8 B: q) Q# v
    goto NAMEPTR 1
9 _6 o4 ]- u7 |; z' \( M8 w    get NAMEOFF long 18 V# m$ ]# a8 r! e
    savepos NAMEPTR 1
) Q8 n. o1 E' q6 s* ]2 K( j    goto NAMEOFF 1
$ z" W* l" [, G/ a% R    get NAME string 11 m2 r+ `0 i: M* k
    log NAME OFFSET SIZE' j  K& Y3 C1 s8 J
next i
( s9 x* d. T4 @' C+ r
2 m1 E) [6 u8 ~& l+ t) ?: h/ _- i: p/ q. k$ {7 _
这是解包器
+ E, m6 A. d4 n4 I) u* ]: X; J: Y  m* P& }1 w3 A
for 里面读取toc的部分,long就是4个字节
* H3 h4 `( Q/ F9 g3 P4 L  get DUNNO long 2
- A+ V% ~: K% x$ U! P1 m' I    get SIZE long 2. _7 o/ T% b4 a; k7 T- B
    math SIZE >>= 2
" u2 T8 s+ U. B# L( W3 w1 B- @    get OFFSET long 2
' U  Y- X* I' V0 _- u( h' C
. _1 n5 U1 {$ Yfor 里面读取dir的部分,long就是4个字节
, `! K3 g3 w. g/ v    goto NAMEPTR 19 r% U( Z  p. ~, M
    get NAMEOFF long 1' Z+ s9 i2 b1 r# u1 O+ }
    savepos NAMEPTR 10 N  m5 [2 l4 T8 c% u! l& }
    goto NAMEOFF 1
- q. C: s  ?7 I/ N' J- a8 K# n    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 | 只看该作者
我来详细解释一下,$ U4 V0 w8 r  j
open FDDE DIR 1
% i, Y& H0 G! d2 x! n3 h4 [open FDDE TOC 2
1 p* O' O6 e# M% K) k7 j, T相当于打开2个文件,后面的1,2相当于句柄
9 K) C# z; Y+ g+ W2 b% q2 _& C+ `$ U- ?
do% ?( I! Q) F) m+ z8 ^1 ~! b7 K2 d3 ]
    getdstring CHUNK 4 2# X" i& y( @/ Z1 V$ ^: o; C* W# a
    get DUNNO long 2
  U* c( E, D9 L3 |$ ~. j1 b    get DUNNO long 2  , B* s8 l' m5 F! |- `+ b
    get FILES long 2
% a& D, r* U, u- x    get DUNNO long 2
( O, W' B2 {* s6 x% m1 {    get DUNNO long 2 2 p# O- d/ w& ?( Y$ x9 _6 I9 U$ O
    get DUNNO long 2
0 k, x, i- S# A+ ~+ ~! i% Q1 r    get DUNNO long 2 5 \: _9 C5 z" K
while CHUNK != "REST"$ @+ N' Z" R/ I$ }* ?
( X$ d, l, ^7 V3 r. c
这段主要是打开TOC ,读取文件数FILES 。
& x1 F/ L6 H4 i( D6 ~0 ?& I你算算FILES 就能分析出是BE还是LE的。
1 s5 n) W( w' b1 h8 [- }2 H, _, s# x8 K+ n
后面2段是# T; f; a% E& D* H! {/ L7 y
读取toc里面的每个文件的SIZE ,offset
3 `- p; j! Q/ ~- F5 v读取dir里面的每个文件的NAMEOFF ,NAME
$ `, ^- z  Q9 z2 P4 y$ S最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。
! w: G2 ^6 h4 R! p; Y  \6 U4 [3 U
4 i4 `* ^/ y# Q6 R$ C4 E5 V7 H该明白了吧?
回复 支持 反对

使用道具 举报

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

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