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

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

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

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

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

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

scgame: r! G/ {5 T; r, l

' W0 y& ]. x9 b你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。
4 ]8 |  e) F# ~3 Q0 V# z3 \1 q+ A& ?# c请先看一下下面这个帖子2 c) C3 ?  \, c# ~. i
【神秘岛4汉化项目】懒汉式打包新方法 ! `0 N1 n4 ?9 u, e' E1 r
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA  {0 t% h8 Q& e" @% R: T- I7 D
相关帖子" r) m/ I& U3 S1 i( `( u
金发美女正式版的解包和打包工具: g: h; t& ]1 R% f, c9 {- N
https://www.chinaavg.com/read.php?tid=21364 4 M8 }! [. N- ^' C& [, i  w
细节大致如下
) f8 N' ^9 `" l; F.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。% b/ l/ e6 q$ R0 O& T
工具大致用法如下8 I: _$ z3 k" u6 O
pack.exe filelist.txt foldername% @; t( ^! J4 `& o' M# @7 u' h
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。% p9 ]  u% S2 O. X
pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白( {4 w8 ?2 A9 }
是怎么对应SOBLOND.DAT的啊* O# c' r  X, s% l( @" \4 |3 ^
能不能再详细得说一下这两个文件是怎么表示offset,和size的吗
0 I+ Z) `9 V4 }, S9 q我现在在想的步骤是:+ i* f' ?, J* ~$ h( j
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....), [+ r1 P5 w4 S' j, A6 `3 q
2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
7 s8 {& P! c7 L+ u, H( t3) 写入.dat! t( r4 Z, u8 x2 Y, I

" C& K$ H' c; I; I* C( ?嗯,不过还是请解释一下.DIR和.TOC% ~6 l4 ~6 a/ T: J6 Z0 r$ c  X
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1
7 L9 o/ M9 a* Z+ Yopen FDDE TOC 2
& y/ b& I8 A' L. ~1 H, i* T* {/ Vdo
# h6 ]6 z( h3 t  Q    getdstring CHUNK 4 2
: N' b) h, c7 v$ j    get DUNNO long 2
8 V7 z9 M! T5 n- N( f! k2 v    get DUNNO long 2
% m; O# P0 t3 `6 G4 R    get FILES long 2
& C3 z! j; P: O! ~    get DUNNO long 2
6 \0 {6 o- G# W    get DUNNO long 2
7 \4 X: b9 R- Y/ U    get DUNNO long 2% a' t9 x1 N4 n7 s; s
    get DUNNO long 2
7 t5 o- m/ _7 Q( b0 {, i0 Cwhile CHUNK != "REST"
3 o0 N$ ?3 B; W; gsavepos NAMEPTR 14 J' l, Z  i- {' A- w/ I
for i = 1 to FILES
5 j8 P4 |( b  X% A3 H2 [" }& N    get DUNNO long 21 }& m0 G9 w: D9 x( H/ ~' ~6 L
    get SIZE long 2
$ e1 v" F% D/ E  u( X9 p, A    math SIZE >>= 2
4 p2 c/ @/ d- _    get OFFSET long 2
$ ]: h8 s" T* E+ g! t& Y, }& k    goto NAMEPTR 19 W( X5 p9 p$ v# D& t2 ?) K
    get NAMEOFF long 1
+ a, v/ k. h: Q  u4 `    savepos NAMEPTR 15 {$ K' r: ^7 P" C* R* o. t
    goto NAMEOFF 1
! o' o8 O' S6 T  R( g    get NAME string 1
; d* |! {5 z" T0 g4 r- P4 |: X    log NAME OFFSET SIZE2 H! x8 O9 G2 E) a- n6 F0 c
next i
& s/ C9 U2 {' f" |6 K  ?
9 A( p! L, v2 n* T3 Z6 Z/ x! n* x) Z1 s5 }! B
这是解包器
4 u! n9 |/ i. N' N9 N  G1 G
0 e$ g) k% n, x9 V. y$ v6 ffor 里面读取toc的部分,long就是4个字节5 t+ V; g7 n! p
  get DUNNO long 2
: K8 s+ `) ]" M5 u7 g( W' }5 @    get SIZE long 2
5 I( t# i+ @- N6 a+ d) i' l: L( d& [    math SIZE >>= 2
0 ~$ [0 s- d+ n# g    get OFFSET long 2& p/ F$ D! g' r1 E! f% U
  X- |% W- o* H) G! ~$ v) |
for 里面读取dir的部分,long就是4个字节
, j! f$ Z5 y& t+ x2 B! P    goto NAMEPTR 1
- T; N' ?% D2 y2 U, e- Z, t    get NAMEOFF long 17 ?. D9 k9 h& U7 I/ g
    savepos NAMEPTR 1
) N& ^1 w* r& p* ~! z    goto NAMEOFF 1
5 F: P, Y* b3 [8 w* B9 |$ A7 K; G    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 | 只看该作者
我来详细解释一下,
7 m' h; ]% u5 l4 q+ ]7 k6 U/ |open FDDE DIR 1 + B0 l0 p# Y: n+ S( y
open FDDE TOC 2
1 r% b: M- o  t相当于打开2个文件,后面的1,2相当于句柄
9 [; V$ q5 @- I9 J; Q( o7 |' h7 [+ i9 n
do
6 ?' |. f6 E7 Q# M' p' l% ^/ A    getdstring CHUNK 4 2/ r$ D5 ]; a7 e- e* r% k
    get DUNNO long 2 8 i9 J# q: ], t1 p! G
    get DUNNO long 2  / j) G/ X& Z; V
    get FILES long 2 # |8 @/ y. o! e
    get DUNNO long 2 & P( O5 f* Q' g& P( T
    get DUNNO long 2 4 `' Q; O+ C2 H0 g% r
    get DUNNO long 2 $ Q4 F3 r2 r- q, H. Q) j4 U
    get DUNNO long 2 ( c1 b, J1 y7 J) D
while CHUNK != "REST"6 ^( X+ y" p, E7 M

( _. g9 r1 L% c' Z这段主要是打开TOC ,读取文件数FILES 。# V: [9 q: x6 Y
你算算FILES 就能分析出是BE还是LE的。
; g# H  t+ V9 J, k4 e: ?5 `0 S! U* {  ?8 y/ H. R
后面2段是
# Q2 v& z: |  X/ d" D8 @读取toc里面的每个文件的SIZE ,offset
  @4 X2 H! w* f6 r* |+ K& {+ z读取dir里面的每个文件的NAMEOFF ,NAME
8 K. a; o9 F" S9 l( f& m: D最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。5 U' r& j; I( V, O' _, S& a5 b

/ D# b! A* }0 ^; f  s# x* K该明白了吧?
回复 支持 反对

使用道具 举报

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

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