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

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

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

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

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

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

scgame
9 b0 _! V8 `+ R% S' M. d0 R5 Y, K
" o. o  N% M3 w, {你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。0 I1 |2 i. r; i6 M. Q' t  [  P: M
请先看一下下面这个帖子
: x- j9 I. f! x; _2 [; A【神秘岛4汉化项目】懒汉式打包新方法 ' T4 j' `" N" ^1 Z
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA
3 T) M: b( M2 N4 Z. R0 U% Y相关帖子
4 f4 {, |$ c* ^0 i+ ~6 N7 p金发美女正式版的解包和打包工具
5 u: ~: b/ ~; M, phttps://www.chinaavg.com/read.php?tid=21364 ' J2 y# r- c7 R# L3 \4 @2 ~2 {
细节大致如下7 k5 R/ r! X5 {8 w
.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。. e3 d! D. l* S0 z) g! D4 S
工具大致用法如下6 v# R$ e9 S- q; c
pack.exe filelist.txt foldername  r. O0 G& }6 s: l& P' U2 F. ]9 ~7 `. `
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。
4 P* ]% F: M' n5 cpack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

板凳
发表于 2010-4-20 01:17 | 只看该作者
.DIR和.TOC的格式不是很明白
+ N6 ~8 V2 A  \7 |' j是怎么对应SOBLOND.DAT的啊
+ o! Y# B  a# q. |2 F8 b& Y能不能再详细得说一下这两个文件是怎么表示offset,和size的吗8 `- \5 H: B. f' E1 y
我现在在想的步骤是:; ]% X+ e0 p! z3 l1 g5 N+ j1 h: I
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)
0 \5 }. w7 {. K- H2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
; g! L  |* E1 H- U% K2 r3) 写入.dat' w4 p. J% w0 k0 n; j3 |- \% x6 G* G
/ X8 \( y$ E' e0 N2 r
嗯,不过还是请解释一下.DIR和.TOC2 o7 h9 V7 `" o$ y. [2 X5 s
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-20 07:58 | 只看该作者
open FDDE DIR 1$ |" k7 w6 Z0 q- u
open FDDE TOC 2: o1 N0 s: I6 m# }: T) U0 v
do 5 g+ q4 O; \! u' A
    getdstring CHUNK 4 2# c0 m8 ?1 v: _8 g/ \/ p7 c: [& V
    get DUNNO long 2
9 l8 y; B: J* ?0 ?" q+ o% |1 Z5 a4 L    get DUNNO long 2
: C2 f; ^' M. j  `7 O    get FILES long 2
( G. |! e5 R$ C8 Q$ {8 S2 E/ b    get DUNNO long 2
) B6 g- S% G, {' K. n, q    get DUNNO long 2' c% e' n4 S9 f/ `0 ^( D
    get DUNNO long 26 X9 O* Q4 F* G9 t! |
    get DUNNO long 23 S" _. [5 n  Z0 N
while CHUNK != "REST"
/ {7 @) I9 s( F9 S9 l9 Osavepos NAMEPTR 1
+ k- A5 x0 R# a$ O% B5 qfor i = 1 to FILES( X( O! f7 B* T
    get DUNNO long 2
/ ?0 Z2 r* B7 K. n3 T& g    get SIZE long 2
6 ?, G+ _/ o" F' b- k$ N" I9 Q    math SIZE >>= 2
0 `' e, a% _. x. g) s( U& g1 Q& f    get OFFSET long 2
: w" }) `) z9 |    goto NAMEPTR 11 p; T4 @5 T% f5 R! k3 X
    get NAMEOFF long 1
. ]" @* c4 }, E    savepos NAMEPTR 1
. m; {# A5 F" e. ~4 B    goto NAMEOFF 1
0 q6 F9 a5 _3 @8 I+ |% E    get NAME string 11 u7 h- q* w) I' b0 v# n, R- Q
    log NAME OFFSET SIZE" E0 D& b7 @; C
next i
  _4 T/ N/ P% c/ c6 I
) I) c5 k6 T" A) k$ ]0 j2 b& v; q8 a- O4 p$ w
这是解包器6 ^: `2 T4 o% k1 h
+ E) e8 C! ^! V8 @& v4 N8 _
for 里面读取toc的部分,long就是4个字节
, G; j# a* }, l, z$ X2 u: U' H  get DUNNO long 2  h& ?1 Q/ n: i6 \) u
    get SIZE long 2
) G( ~0 l  }. B% W+ I; H- ^& Z. }    math SIZE >>= 2
( n6 T8 }( O, Q. m* q    get OFFSET long 2
# D' b3 W9 k( e! }& z. h
/ p! }+ ~3 W$ q# g+ |( P$ ]for 里面读取dir的部分,long就是4个字节+ p, N2 n7 ~- J* |8 P
    goto NAMEPTR 1
5 i3 J, p$ Q+ [; o" E! O    get NAMEOFF long 1
0 m# d* U7 H% o0 s# s3 I2 `    savepos NAMEPTR 1
/ l9 }9 m% }- G    goto NAMEOFF 1- S* Z7 ?/ u$ H. ^% E6 h7 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 | 只看该作者
我来详细解释一下,
. t7 W# L- J; m  K( T8 z$ Y. @open FDDE DIR 1 % D) k2 T* F, t$ ]# l4 k; D
open FDDE TOC 2 - i6 ?" u- J. A4 b5 _
相当于打开2个文件,后面的1,2相当于句柄
6 K$ \: b6 X; I8 R$ a) g+ L; q2 D/ A/ D/ _! k( Q. `% I
do  x0 ^( Q, W, v) _0 ~+ L0 x1 I
    getdstring CHUNK 4 26 F3 L, y8 f; j2 p, a
    get DUNNO long 2
& Q( I$ {8 _  x( G: P6 a+ ?# O    get DUNNO long 2  
" V! m" p4 T. |    get FILES long 2
4 z" ^5 p( B- T) i& Q4 U    get DUNNO long 2
  k! T. e. g/ k* s6 W    get DUNNO long 2 & |/ h5 h' O, h3 ^
    get DUNNO long 2
  j+ J# U# q* ~9 I; e' q    get DUNNO long 2
3 `. w' h; d8 r1 E$ ?1 q1 `- jwhile CHUNK != "REST"' O: B% g/ E4 H
# ~0 ]* Y. B/ r- l) K) \8 |
这段主要是打开TOC ,读取文件数FILES 。
0 O# \. u) v2 T" n) v9 L" X你算算FILES 就能分析出是BE还是LE的。" w% O/ Y' N: E( r

' f) I' `) c: X% p8 P: G& C; U后面2段是) U( g! ]  J6 Z% G; x
读取toc里面的每个文件的SIZE ,offset# q8 J. c* Y5 b  J
读取dir里面的每个文件的NAMEOFF ,NAME
) _; |6 o8 k: N最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。, ]3 d; A" o* Q9 T! n3 x

$ {% `& v& U' r9 P# n; \% @该明白了吧?
回复 支持 反对

使用道具 举报

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

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