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

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

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

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

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

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

scgame4 l' s) |+ C/ G2 m% g
% J3 l, X+ a. G8 A0 D4 {9 P; I% E
你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。6 x0 a9 b/ L5 w3 M; o5 f
请先看一下下面这个帖子- D: ~: p+ s5 d  @7 \
【神秘岛4汉化项目】懒汉式打包新方法 % T' N% z/ q! W4 v  u  J. |
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA
+ J# X/ U, |1 ]相关帖子" r; Y& u1 P# q; ?8 }0 [9 |5 k& e
金发美女正式版的解包和打包工具6 J( B% k# S  @1 B+ [
https://www.chinaavg.com/read.php?tid=21364 7 D4 d/ a& u( {6 E+ @
细节大致如下
% {7 v4 m# H  B# u.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。
1 J& ^6 O' J$ `1 _工具大致用法如下8 d& B, Y+ W* ~; ?5 H2 ~" h6 U
pack.exe filelist.txt foldername
7 U. H2 a0 D; {6 h% @/ G) ?( Rfilelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。
8 Q: c7 m% o8 b/ l9 t  J  f- ?pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白
7 |( v9 Y. ?& R- D2 T0 ~' [是怎么对应SOBLOND.DAT的啊
' X% M6 a6 b" B- G- O. K0 |能不能再详细得说一下这两个文件是怎么表示offset,和size的吗3 I- [; V5 L* {- [- b
我现在在想的步骤是:) c+ A( A$ a! \7 @' L
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)0 A6 ~8 \5 G  b8 l7 Q( [2 \. G+ @0 x* f
2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
" ^( q' D# s3 i3 l. Z3) 写入.dat
4 Z3 ^8 ?" a6 S1 y* K' Q
/ v0 k8 t% [8 V! W1 y- {嗯,不过还是请解释一下.DIR和.TOC
) v. B# H  T$ Q我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1( |, w8 Q5 i: |9 H% O
open FDDE TOC 2
/ c; I4 `; k2 V+ G+ ^- A& zdo ; D# z3 e  d9 ?* S/ R
    getdstring CHUNK 4 29 x. A" H, ?: ?
    get DUNNO long 2
* C; I: y, S/ h8 y& {' R+ i    get DUNNO long 2
; ?6 A! z6 J1 B' p0 {    get FILES long 2. N6 c9 d. H. h# K9 `4 }
    get DUNNO long 2
# ]% K0 v( `6 i2 ~    get DUNNO long 2) R) v3 v) k* }6 t
    get DUNNO long 24 v$ w2 k" T- e; e  t
    get DUNNO long 2; _# f, u$ Y! p9 q: _
while CHUNK != "REST"
' ]) @+ ^0 O1 Rsavepos NAMEPTR 16 s$ L+ V0 I$ l$ ~% M7 @9 j, S
for i = 1 to FILES( Q2 ^/ \  l  \6 }: b* H! N- Y
    get DUNNO long 2+ C: k% ?6 z) ]) F7 k
    get SIZE long 2
- Y% v2 P6 F# \0 ]    math SIZE >>= 2
% ~2 A6 V. F4 `. Y) g    get OFFSET long 2; d+ ]$ d" f0 x$ n0 H
    goto NAMEPTR 1
& ]+ {$ F5 O9 v4 s- F2 P/ M% }    get NAMEOFF long 1
  a! P* s6 `$ g" o    savepos NAMEPTR 1) g- b' R" m4 |) m! e
    goto NAMEOFF 1
8 D% ~% I' z" n* P) q% H    get NAME string 1
9 T% b" o. ?) i' n  A    log NAME OFFSET SIZE
4 ?+ O4 Y6 a3 N& x  p* U1 |/ Znext i( }5 q0 g4 f. G% J& z" B9 ~

  Y/ q/ X; _7 V7 S. U* ]! E; T* k: P2 H
这是解包器
  x' u/ F0 F" b* _
* \% _1 l, x/ X8 ~9 U. |; _: @. Hfor 里面读取toc的部分,long就是4个字节+ \* l$ O: h* B& n+ P
  get DUNNO long 2
4 c& G1 }8 B) v/ P    get SIZE long 2- M5 o) x& S0 G% G  A0 z" {
    math SIZE >>= 2
, Z* o4 e5 A: p1 A, D  g+ v    get OFFSET long 20 h( h- g& z. U* k! M% N1 k

  S# [8 X9 ]  Z5 [% K  Ufor 里面读取dir的部分,long就是4个字节. s) c# _- H( ?& s2 m
    goto NAMEPTR 1
0 u$ R# q: t4 D5 U' l3 L% u. ?    get NAMEOFF long 1( k9 i7 v. E2 S0 N* j  r7 R2 [2 H
    savepos NAMEPTR 1
  H" X1 x) Q4 K4 Z( r6 z4 ~    goto NAMEOFF 1
/ @5 m* k7 ^! m7 v    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 | 只看该作者
我来详细解释一下,+ Z1 |7 I2 n, s" s" ^
open FDDE DIR 1 ( S* Y0 A6 i' d6 b9 H" y1 t  O. h; b# k
open FDDE TOC 2
+ o+ E9 {# l  n1 q1 k% a相当于打开2个文件,后面的1,2相当于句柄
/ y' Y" N, ?5 \4 I
& c# w+ J' J! tdo
( q4 P; i# e& j' u% ?, R; s+ t$ t    getdstring CHUNK 4 2, [: s: B% A# T9 h$ L
    get DUNNO long 2 " |% |/ E) [1 X* _8 H+ o5 O4 x
    get DUNNO long 2  
: N5 C, c7 E3 X/ W1 H6 q2 c    get FILES long 2 9 c; T1 ?9 a) `  _" T) P
    get DUNNO long 2 8 ~" }" w1 H& Y0 }' t! a8 C
    get DUNNO long 2
! n# _( i; p, m& @) C. x# w    get DUNNO long 2
. r, x6 G! F7 A# @6 W    get DUNNO long 2
& h% x) k7 {( }9 x1 e* nwhile CHUNK != "REST". {, J! x7 p. g6 ^$ ~
) k$ B3 }7 c' v9 p
这段主要是打开TOC ,读取文件数FILES 。; t9 o4 f& D: Y
你算算FILES 就能分析出是BE还是LE的。6 |' \% G3 K8 f, T$ k" q
* c0 P. }+ y7 C
后面2段是. B% _. K; M# B, f, V6 \
读取toc里面的每个文件的SIZE ,offset$ P# f1 d/ Q$ K+ A+ |
读取dir里面的每个文件的NAMEOFF ,NAME$ O3 p- q# N: k; x+ r
最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。5 K" ?) `; d0 Z( n8 n9 z' x- R
- x4 U- j$ e2 E- A5 |  B) X6 X
该明白了吧?
回复 支持 反对

使用道具 举报

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

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