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

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

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

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

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

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

scgame
+ c$ p$ W3 U, m7 S- ]+ _: a
; A1 a, w/ @( ~5 Q) k2 x你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。
2 t1 J; }6 z6 e$ @0 q请先看一下下面这个帖子: u! x8 \' A7 ?$ f3 J1 K6 |
【神秘岛4汉化项目】懒汉式打包新方法
  \; W6 }4 u6 E2 f( chttps://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA
; J2 x8 G) O% ^  o+ s0 [: D; U相关帖子' N4 D: Y) L; g2 M4 K7 e% O/ N
金发美女正式版的解包和打包工具2 u& Q" y/ T: j1 Z: @7 H4 H4 q
https://www.chinaavg.com/read.php?tid=21364 $ o3 ^" P7 U& h5 \
细节大致如下
  \5 g, b& Y# Z# L.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。) w- R$ b" b) x$ c( }4 l
工具大致用法如下* Z! w$ i' m- N% D' \: b* k3 S9 z
pack.exe filelist.txt foldername" h$ c) l  [! ]' O$ M# z
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。3 E% l( y7 q0 Z$ `
pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白9 l3 M2 o8 p6 {/ W" `
是怎么对应SOBLOND.DAT的啊' M3 z, {* j  z/ h; F
能不能再详细得说一下这两个文件是怎么表示offset,和size的吗
/ K- d, M. }" O( k0 g: A7 w我现在在想的步骤是:. v4 L% u; D9 q  s* U
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)1 N& q$ H. }" |2 _4 I
2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
' j0 I( Y3 z) s! m  W, X1 }3) 写入.dat! n2 J/ X; M2 z0 Q6 a! B, o0 M4 ?$ l
' N0 B( |6 y8 I% w
嗯,不过还是请解释一下.DIR和.TOC
9 y/ e% X- H0 j4 A6 h; W7 K" y+ @我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1
* m0 c% e: W7 N$ Copen FDDE TOC 2
4 v+ ]# s+ F6 {# g7 Tdo
5 @8 h# y9 U+ U+ G, a    getdstring CHUNK 4 2
0 J0 |. p; u1 t    get DUNNO long 2
/ E! a) Q1 k# m! B    get DUNNO long 28 E& A2 U! |( L6 F1 p# W
    get FILES long 2
7 p+ C3 K, ^8 e# a! z) d3 I    get DUNNO long 2
1 Q: [& n) @0 t5 y) |, y    get DUNNO long 2
9 h/ C1 c$ }$ r7 ^$ T+ J. u  J    get DUNNO long 2
1 {- _& ?  K  U6 H0 K    get DUNNO long 2
* ~5 b: b1 s2 R  z& k, ~2 t" F) r, swhile CHUNK != "REST"; L+ A- N( X8 y$ P" @5 S4 D
savepos NAMEPTR 11 ?% S4 }0 Q9 `9 l. @% H; ]
for i = 1 to FILES% _3 B% t* [/ V; P1 X& d8 V/ \
    get DUNNO long 2
3 X' t. X; R, k4 L  R    get SIZE long 2
0 V8 h, n2 j7 F& u9 p  W: U; f3 P    math SIZE >>= 2* c9 o$ j- |- }: W! {; I" D3 }
    get OFFSET long 2
6 @5 u/ D& t+ e5 @0 N    goto NAMEPTR 1. k, h" ]& A; q# \
    get NAMEOFF long 16 b# n% {& c3 j# a) g( D" a$ J
    savepos NAMEPTR 1# y# ^  C- H7 q5 n. j
    goto NAMEOFF 13 I) i, q6 L( P7 P7 O: L9 |
    get NAME string 1' \# {8 w( T% l( p% o5 w
    log NAME OFFSET SIZE, d( z( l0 n5 J( Z* F/ G2 J; |
next i& x& s1 F$ n, ?' c

- D8 p) j  K  w" V9 v/ c/ n4 Y3 U8 M. U# H7 l3 ?
这是解包器
1 R3 }: R. c3 z+ |( H( \' e, N3 u2 W, z1 z. u4 }" f6 \3 W
for 里面读取toc的部分,long就是4个字节6 h2 N( d/ m' L: J8 P# n$ B$ v0 y- a
  get DUNNO long 29 l, G" L% Q6 F
    get SIZE long 26 ?# k3 I: J2 V* ~
    math SIZE >>= 24 m3 L# ]6 I( n* V- H, G& H
    get OFFSET long 2
+ H+ k) @  @) ]) X. h% N9 H& j! f4 s9 n
for 里面读取dir的部分,long就是4个字节% o9 _5 N8 N0 i( i" }) t
    goto NAMEPTR 1* M6 ]  F; O3 [. g! ~2 g
    get NAMEOFF long 11 g' ~/ i$ v; G) v: s/ p
    savepos NAMEPTR 1
5 s0 s! s9 U- [/ i$ j/ i    goto NAMEOFF 1
4 y; ^3 r+ K) V, l, A+ o    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 | 只看该作者
我来详细解释一下,
. s9 ?# J; Y. @4 \! o0 Dopen FDDE DIR 1
3 K. g4 I- a/ G% copen FDDE TOC 2
+ t. }8 Q5 e! O* t5 V相当于打开2个文件,后面的1,2相当于句柄
! E2 I( {( P" C$ a1 v5 D+ r8 e2 [" m$ q; u9 E" G
do
) \6 [+ o5 u/ ]2 N/ Y( s    getdstring CHUNK 4 2
' n6 Y! n+ n1 V: l! s    get DUNNO long 2 - ~8 I) H9 `# d0 F% l3 @. D$ X) ^+ @$ `
    get DUNNO long 2  
) f7 D$ A3 L3 I8 Y% ^    get FILES long 2
$ a+ u4 M, ?, g) i: q( Q    get DUNNO long 2
, \7 g2 D5 l" N' o: T    get DUNNO long 2 7 q/ e( y9 o( u! R% L
    get DUNNO long 2 * v9 z! I- W8 D& T+ h
    get DUNNO long 2 + l7 U" H6 ]6 @; }2 }% N  s
while CHUNK != "REST"
" {: c* r# i% j; t3 _
! ?- x4 y3 I% {$ r: \# y这段主要是打开TOC ,读取文件数FILES 。8 |2 u. u% K& k: L4 J* F
你算算FILES 就能分析出是BE还是LE的。- e' L- _& M3 B1 c6 ~  s, C

5 U: T& j, x% ~$ Z0 U后面2段是
" z, S, Z# D( o8 I, g  |- v读取toc里面的每个文件的SIZE ,offset2 n& t5 y$ F2 ]; J# l' @
读取dir里面的每个文件的NAMEOFF ,NAME/ f) |% ~# o- l3 p. V% o
最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。9 c% x  Q+ f/ e; l: I. M
& a! r" g4 S- a& P, I
该明白了吧?
回复 支持 反对

使用道具 举报

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

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