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

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

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

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

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

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

scgame
& b  y1 q! q/ ~; j4 ?$ G* j0 Q) f0 u3 f
你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。
2 z/ P/ R- {7 t# V( C请先看一下下面这个帖子: Y( L2 _9 f& F* y1 ^: `
【神秘岛4汉化项目】懒汉式打包新方法 + p. |( ]& p* b! H
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA4 }+ _9 B0 H. |+ X* r# x2 f
相关帖子; B) m- H/ j6 R1 O+ V
金发美女正式版的解包和打包工具6 x9 {( Z, C+ k8 H( m& h. g% Q0 S) s
https://www.chinaavg.com/read.php?tid=21364
1 }  G/ \  s! B. N0 F6 j. X细节大致如下
& Z0 j; e0 w' M.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。
' i9 ^/ Q* r: M$ O! S工具大致用法如下7 \- a6 j. z7 a' C$ Z; V8 y9 D
pack.exe filelist.txt foldername: i% G/ C5 y  [
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。
& c, y! n: ?1 }7 F& ]pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白3 C2 I5 l' ]  v- C1 A6 ]
是怎么对应SOBLOND.DAT的啊
  N: z4 i9 }/ v3 x9 |7 \能不能再详细得说一下这两个文件是怎么表示offset,和size的吗: Y0 t1 ^. W4 ~$ a* E
我现在在想的步骤是:
3 B& Q+ n- E; }: h3 U1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)
( j' x% N1 ?$ ]3 q2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
* c9 V9 z0 V' p3 G0 k- G4 P3) 写入.dat/ R, Y7 q  B+ S

1 S) s& r4 m+ \7 k嗯,不过还是请解释一下.DIR和.TOC4 \: S% R, o6 a* t6 K; o: Y0 |
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1' [# H0 v$ A# A( D& y7 n
open FDDE TOC 2
" J" p7 W( \/ G) M' jdo 5 \% @" _- ~- I0 P
    getdstring CHUNK 4 2
0 k# @- {6 R& i4 C* v    get DUNNO long 2+ M  @2 D+ r( D, E
    get DUNNO long 2$ B: A0 c2 M* a8 w" G- x* t
    get FILES long 2% o2 Y$ T2 E, C- a0 c4 y: ~
    get DUNNO long 2! ?+ q: g( n' ?$ p& r
    get DUNNO long 2
# j7 d$ u! b) _) P2 i/ U    get DUNNO long 2* q, [% B; R9 x; C8 N$ t
    get DUNNO long 2
8 h. y4 h6 J/ pwhile CHUNK != "REST"- r7 F0 Y% M3 C& J3 y
savepos NAMEPTR 1
* ~# G/ E) P4 ^9 k; |& e( `for i = 1 to FILES
# ~" r& a2 W" ?- u    get DUNNO long 2
/ f0 {) h! J- o6 k8 b7 z; u* ~    get SIZE long 2
* Z+ X% d3 S3 A' B0 l+ O    math SIZE >>= 23 t0 D; P* W* L. P
    get OFFSET long 21 ?, q) Y3 e6 m( P
    goto NAMEPTR 1
- C( l6 y6 f- K# k0 ^0 ^    get NAMEOFF long 1: B$ a: Q! G/ v
    savepos NAMEPTR 1: G9 s% f" N/ w+ d+ g# D$ r" _, T+ |
    goto NAMEOFF 1
0 ~6 u" M/ L- q4 g    get NAME string 1- `: F- p- y- u. C
    log NAME OFFSET SIZE+ {% i* Z, H# C) h' u: ~
next i6 S7 |6 j% t8 s; ?, D3 k" _
* |$ d8 n; O) T5 }

) A/ p* u+ R# J9 z) ]这是解包器
) E/ z$ ]+ F6 Y2 K' t7 N% S9 z4 R+ \4 R
for 里面读取toc的部分,long就是4个字节
' ?  l3 P3 g; Z6 q  N3 G5 X  get DUNNO long 2+ a# D4 l* Q0 Q; b' s
    get SIZE long 2
# L8 \( _$ Z/ ~# f0 Y. o    math SIZE >>= 2& P6 g3 s7 b  w9 K8 S
    get OFFSET long 2& [( }2 q6 J9 z1 s4 B

6 X0 ^' a, h) N, ~for 里面读取dir的部分,long就是4个字节
' l- q9 ~5 j; |: G8 c  ?3 s. }9 v( B    goto NAMEPTR 11 P9 Z$ ?, M# h
    get NAMEOFF long 1
( c" T5 F; Y$ s" Q; ^1 B  k( _    savepos NAMEPTR 1
  m( V6 _6 j) A  c/ ]+ C    goto NAMEOFF 12 [8 f7 R4 I2 {
    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 | 只看该作者
我来详细解释一下," y3 P9 {, M. Q  U1 y4 b0 ~' g( z/ G
open FDDE DIR 1
; g, O7 D4 e- b) B+ sopen FDDE TOC 2
  x4 k$ e. Q% {. [% P相当于打开2个文件,后面的1,2相当于句柄
* H5 b* {2 W; T" s2 q+ Y
7 w) {0 Q9 L# H5 s; n6 j) L. Bdo0 ~! T& v$ I, m* v$ H7 _
    getdstring CHUNK 4 2
& y) U- u/ R! r* I- t    get DUNNO long 2
9 H0 a  q4 {! ^6 P    get DUNNO long 2  ' Z/ B7 a7 T) {, d( s0 W
    get FILES long 2 9 m: Q9 \' N7 p( `0 `9 O
    get DUNNO long 2
/ q7 J; R2 \0 o& n1 z9 B, N5 u, @    get DUNNO long 2 - Q# }6 A) @( E  _, p) t( o4 S
    get DUNNO long 2
8 X( @# H' ?3 x1 d; x. ?. L    get DUNNO long 2
6 a# q  u( t+ {; G; U0 M! e$ ?while CHUNK != "REST"1 s* ^6 f, P  {- ?' S- P7 {, ]
. J4 A' b4 p; R6 z8 A
这段主要是打开TOC ,读取文件数FILES 。
2 l* R, u) W4 h5 \. m% n你算算FILES 就能分析出是BE还是LE的。; Z5 l  T9 y) o
3 s/ ?) }. V" H% h
后面2段是" I- G% }& M5 z: D/ a9 P9 l) m
读取toc里面的每个文件的SIZE ,offset! u( E: P7 ~/ G5 [9 Q3 H
读取dir里面的每个文件的NAMEOFF ,NAME" Q1 V3 \+ `4 b/ d% S
最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。
  Y; N0 N: h! R6 P. T$ v; `3 }+ a7 D" R# h$ A+ s% q# c; 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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