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

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

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

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

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

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

scgame
* d1 G& T+ [. I$ e
- K1 }# a! o& l" n6 Z你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。
7 G- Z$ v# c; A% y6 L( B8 c* K请先看一下下面这个帖子) L8 L6 s- N8 i" X5 r
【神秘岛4汉化项目】懒汉式打包新方法 ! p4 m  I1 e- P" M& W9 S+ W7 H# Q
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA4 p. L+ o  O2 R) m$ f, A( |! ~
相关帖子
5 L  N( B& G: E0 @金发美女正式版的解包和打包工具, z) i5 m6 {. F" Q; H" K9 B  N
https://www.chinaavg.com/read.php?tid=21364 # W6 b( @, M8 S/ k1 V
细节大致如下
$ S& X& y5 z9 _- t5 [.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。/ f( w, d4 G0 `; _0 m
工具大致用法如下  }/ I% |) N4 E) b2 p  A& G6 R/ R
pack.exe filelist.txt foldername
: Z% G- U  M% [2 S6 A' M/ E2 p7 T! nfilelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。6 l$ t4 K1 l* I9 h# z1 \7 g
pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白) l# y2 ~* V$ s- p
是怎么对应SOBLOND.DAT的啊3 [. x3 D$ L+ P8 I# f
能不能再详细得说一下这两个文件是怎么表示offset,和size的吗  u+ }# P$ C) e6 f* U+ V
我现在在想的步骤是:
  D! Y6 F1 n. U2 _1 V) B1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)$ w, P: R1 t. ]3 j2 Y# j
2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
* h8 p9 I4 @0 y- w1 a- d, v8 e/ E3) 写入.dat
& B7 A' ]* u4 |& p( [# P4 M3 e% f" h; X% x
嗯,不过还是请解释一下.DIR和.TOC! L) [6 ~1 y* n
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1* R, H7 f+ F- b
open FDDE TOC 2" R9 C/ o  `/ {% z( o
do , @& n% C& }; ^: T% `7 z) |
    getdstring CHUNK 4 2
: }) _+ C) S+ V" i" A+ o; C    get DUNNO long 2- J: y( W# r% b
    get DUNNO long 20 R+ W5 R- X* e
    get FILES long 2
* N  d, l' O' X    get DUNNO long 2' B3 ], @2 J$ @& l
    get DUNNO long 2
7 b5 y& _$ Y- s. P" P. ?    get DUNNO long 2. p1 b- G! w8 F8 ?6 r
    get DUNNO long 2
. l* I/ F# ~+ V+ {; l1 nwhile CHUNK != "REST"% S3 E/ `7 l, i" B% A8 ~* s( O  v
savepos NAMEPTR 1
3 G: C! B, {" m* ]5 lfor i = 1 to FILES
1 t) i# w. R: D" K    get DUNNO long 29 X6 F$ T& b8 q, K% _$ x, ^1 P
    get SIZE long 2& W7 Y7 j& C0 `' y( S0 a; m
    math SIZE >>= 22 H4 `1 f/ ]. N9 w1 n9 t* p5 h
    get OFFSET long 2
5 c$ a- N! E, i' A    goto NAMEPTR 1" |2 a4 c/ b/ h
    get NAMEOFF long 1( q, ~8 ~0 ~6 c$ X9 \# ?
    savepos NAMEPTR 1
# d6 v/ G# ]1 x( o    goto NAMEOFF 1, F" T5 s( u; D& C
    get NAME string 1
1 t) z8 p8 V; P. f9 a# q( T8 W# u  }    log NAME OFFSET SIZE( }2 `8 C: I& X$ }) j
next i
8 M" X( v* |# P
# e0 ~+ {2 R' \
5 H5 t% t1 Y3 b8 _0 q1 m+ h( v这是解包器
& T3 R9 x) W# j7 Q; S$ Z' }! T/ R& D2 O% d0 L' v6 J
for 里面读取toc的部分,long就是4个字节/ d& h) U+ @4 M
  get DUNNO long 20 w( S2 z  h' h4 _* U8 Z$ A
    get SIZE long 2
  `; E/ |$ E* t0 K2 B    math SIZE >>= 20 w) t# [* y2 D6 K- a
    get OFFSET long 2
! v1 m* K" x, ]5 j9 V) c* @
- o+ j1 P! U+ f7 A1 e! bfor 里面读取dir的部分,long就是4个字节/ B6 C# E+ p  {% h! |+ ~* R
    goto NAMEPTR 1- L- v% g6 m5 N
    get NAMEOFF long 1: W# _# N, S$ e. R) ?/ o4 z
    savepos NAMEPTR 1: H; y. C: S/ b, Z9 `+ L
    goto NAMEOFF 1( \5 C& z& R( z& Y
    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 | 只看该作者
我来详细解释一下,
& Y7 V/ v) h/ c  J/ \) n; qopen FDDE DIR 1 / ~. d3 }% C% M
open FDDE TOC 2 ' S0 K# u* X0 m# P) V( O# ^- R! X0 ]
相当于打开2个文件,后面的1,2相当于句柄# `1 d; t- g+ w* f5 X
; a- s( P$ E1 ?" Q# b- |
do/ I0 h+ L; u& l) P; y
    getdstring CHUNK 4 2" [$ o* ?9 _0 r7 X6 |" c: c" y
    get DUNNO long 2   K+ ?5 S% ^" ^% f, z9 V; [
    get DUNNO long 2  
0 Y# S- e1 S% A) _8 {' C3 x  S    get FILES long 2
( D& n9 q/ b' {; o9 f+ G  G    get DUNNO long 2
& j  ^* w! L3 j    get DUNNO long 2 8 w. j4 K- Y% Y
    get DUNNO long 2
& _% P% }7 C% ~: a* a" O3 h    get DUNNO long 2
9 [9 {  p- N0 \6 P- S) nwhile CHUNK != "REST"9 `. R- t/ L9 ]

, p; s' l1 N/ z7 w这段主要是打开TOC ,读取文件数FILES 。
, z3 {5 q; l5 D& i! a; A0 l9 ]你算算FILES 就能分析出是BE还是LE的。6 i4 V1 H" q8 \3 ^# o

% w; ~2 d, I/ A2 P( B: D后面2段是
$ p% w* s. P, }0 n: \+ M读取toc里面的每个文件的SIZE ,offset
" S0 M4 Q- X  f! _+ P& M读取dir里面的每个文件的NAMEOFF ,NAME  N4 N2 Z# Q. k$ a) L
最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。" J1 e' ^- @2 U: ~

; S( T; O6 l. u* z1 m( m该明白了吧?
回复 支持 反对

使用道具 举报

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

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