找回密码
 注册
查看: 7513|回复: 15

[资料] 装备修改教学

[复制链接]
发表于 2008-7-17 10:54:19 | 显示全部楼层 |阅读模式
玩无冬也好几年了,最近才看到这个网站,之前我也是下载了很多的装备档,
自己摸索了很久,现在主要在做装备的3D模组工作,我看到有很多人也是下载
了装备档(尤其一些还十分YY的)但是不会使用,因此我写了一下如何简单的使
用所下载的装备档。

我的无冬之夜只有原版的1.68版,所有的资料片都没有灌,所以一些只适用资
料片的.hak档我都想尽办法从中撷取我想要的东西出来,虽然有些特殊功能无
法使用,但是装备却是100%完全移植。

自动步枪移植不了,因为连发功能与枪弹设计都是资料片的功能,我只能拿着
一把像AK47的重十字弓,射出一支支射速超慢的箭矢。

因为我尽量不将装备编号与原始游戏资料重复,所以这些装备都可说是"新增"
到我的游戏系统中,使用的方法为利用toolset创造一个新模组,设计好你认
为好看的装备,然后使用人物进装备模组里取装备,储存人物,再用这个人物
进行原版游戏或其他模组,这样就可以在游戏中看到自己设计的装备,当然,
如果将人物档备份到别人的电脑,可能完全看不见身体,因为不是每个人使用
的装备编号与资料都相同啊。

回应之前有人说头盔太难看了,就我的作法,因为我的头型是由 NW Vault 搜
刮来的,所以十分精美,于是我将头型3D构成复制成一个新的头盔,这样就可
以使用和人物头型一模一样的头盔了,只是有几个缺点:
        a. 颜色设定不同,头型只有皮肤、毛发与两个刺青的颜色,而头盔则
           刚好没有这四个颜色,于是将皮肤改为衣服2,将毛发改为衣服1,
           刺青1为皮革1,刺青2为皮革2,在设定人物时尽量用第五行以下的
           颜色,因为这样可以直接设定上述四种颜色而不会有色差(皮肤颜色
           是单一的,与其他颜色皆无同色,非人类的肤色除外)。
        b. 每个人物必须独自打造专属的头盔,才有设计上的效果,不然戴到
           别人的头盔就来个"变脸"了(如果这样也无所谓的话倒是可以)。
        c. 有时头型3D转换为头盔3D时会有位移或太大太小的问题,需要另外
           手动调整。
        d. 应当自行建立自己的装备模组,不需要太复杂,只要开一个房间,
           全部都是空地也成,几个宝箱装着装备,或是干脆将装备放地上也
           行,所要花时间的只是装备部件的搭配与颜色的调整而已,花不了
           多少时间的。

题外话说多了,该进入正题了,有关装备修改的叙述内容主要分下列几项:
        1. NWN的主要档案架构
                包含Override 与 hak 的差异
        2. 各种装备所需要的档案
                armor、helm、cloak
        3. mdl档的解析
        4. plt档的解析
        5. 2da档的解析

叙述内容以让玩家能用最简单的方法使用所下载的装备为原则,并附上所需小程式
的下载路径(都是NW Vault上的),至于过深的装备设计我就忽略了。

再次呼吁,要改动游戏系统,不要怕英文网页,因为英文网站上的资源最丰富,
多去看看,收获一定会有的。

Neverwinter Night Vault (现在叫 Neverwinter Night 2 Vault,但是里面1,2代
的东西都有,1代还比2代多,因为2代太复杂了)
http://nwvault.ign.com/

1. NWN的主要档案架构
在NWN的目录下有一些资料夹,分别叙述各个有用的资料夹功用,原始的游戏资
料都另外打包好了,不用担心会误删,一般来说刚安装好的游戏,这些存放外加
档案的资料夹都应该是空的。

        erf                外加的erf档放置的地方(资源档)
        hak                 外加的hak档放置的地方
        localvault         人物档储存的地方
        modules                外加的模组档放置的地方
        movies                外加的电影档放置的地方
        music                外加的音乐档放置的地方
        nwm                原版模组档存放地方
        override        外加的覆盖档放置的地方
        portraits        外加的自定义头像放置的地方
        saves                存档存放地方
        soundsets        外加的音效档放置的地方
        texturepacks        原版材质档存放地方
       

这里要解释一下 override 与 hak 的差异,override 资料夹中所存放的是各个
取代原始游戏资料的物件,诸如各种图像、各种装备甚至人物动作、物品、装饰
等等,而在 override 里的物件对"所有的模组都有效"。(.mdl .plt .tga .2da
都应该放在这里)

而存放在 hak 里的 .hak档只是将需要的上述物件打包,仅仅在于有开启该.hak
档案的模组有效,这个可以方便模组设计师将自己修改过的物件打包让玩家下载
,而不会干扰别的模组设计师所设计的模组。

所以在 NW vault网站上下载的多半是模组档再加上一个.hak档,有的做的比较
大的模组还会有自定的音乐档与电影档,这些档案都必须照上面的位置存放,这
个模组才能有效开启。

至于下载的装备则有.hak档的也有直接.mdl与.plt的,格式不一定,必须照后面
所述的方法,慢慢拆解。

如果有些物件觉得不错,想让所有的模组都能使用,就必须解开.hak档,将其中
的档案放进override中,这样所有的模组就都能使用这些物件。

**注意 这些物件有些是要编号的,不是全部放进去就可以使用,详细参照.2da
  档案的解析。

另外补充一点,自定义头像若是放进 portraits的资料夹中,则仅能由玩家使用,
模组中的NPC是无法使用这些图像的,若是将头像放到override中,玩家与NPC皆
可使用,但是要编辑portraits.2da档,使这些头像生效,详见后面.2da档的解析。

查看游戏资源的程式 NWN Explorer 1.1
http://nwvault.ign.com/View.php?view=Other.Detail&id=248
解开.hak档案的程式在 utils 资料夹下有一个 nwhak.exe

2. 各种装备所需要的档案
比较复杂的有头盔、护甲、罩袍与斗篷

头盔
        ihelm_###.plt                头盔的图像
        helm_###.mdl                头盔的3D构成
        helm_###.plt                头盔的材质图
       
        ****头盔没有设定档(.2da)

斗篷
        icloak_m_###.plt        斗篷的图像
        cloak_###.mdl                斗篷的3D构成
        cloak_###.plt                斗篷的材质图
        parts_cloak.2da                斗篷设定(包括编号、隐藏部件等)

罩袍
        ipm_robe###.plt                罩袍的图像
        pmh0_robe###.mdl        罩袍的3D构成
        pmh0_robe###.plt        罩袍的材质图
        parts_robe.2da                罩袍设定(包括编号、隐藏部件等)

        **这里要讲一下有关身体部位的命名法(第一部份:种族与性别)
                pmh0_XXXXXXXXX   
        p 代表身体部件
        m 代表男性、f代表女性
        0 代表正常体型、2代表壮硕体型
        h 代表人类、a代表半身人、d代表矮人、e代表精灵、g代表地侏、o代表半兽人

护甲最麻烦,也是最好玩的部份
        护甲不仅仅由一个3D物件所组成,而是由下列的物件所组成
                neck                颈部
                chest                胸部
                sho                肩部,分左右(l,r)
                bicep                二头肌,就是上臂,分左右(l,r)
                fore                前臂,分左右(l,r)
                hand                手,分左右(l,r)
                belt                腰带
                pelvis                下半身(虽然很想说是下体)
                leg                大腿,分左右(l,r)
                shin                胫部,分左右(l,r)
                foot                脚部,分左右(l,r)

        **这里再补充一下有关身体部位的命名法(第二部份:身体部位)
                pmh0_chest001        代表人类男性正常体型胸部第001号
                        (胸部001即是完全没有护甲的物件,网站有人作成裸体)
                pfh2_bicepl001        代表人类女性壮硕体型左上臂第001号

        以女性胸部为例,毕竟这才是服装设计的重点,其余部份以此类推,所需的
        档案为:
       
                ipf_chest###.plt        图像
                pfh0_chest###.mdl        3D构成
                pfh0_chest###.plt        材质图
                parts_chest.2da                设定档

        加上种族来算,一个能适用所有种族的正常体型3D部件,需要 6个图像、
         6个3D构成、 6个材质图加上 1个设定档(.2da)。

        加上壮硕体型就是两倍,再加上性别就是四倍,一个装备的一个部件能适用
        全部种族、全部性别、全部体型总共需要24个图像、24个3D构成、24个材质
        图以及1个设定档(.2da)。

        图像与材质图可以完全一样,甚至只保留pmh或pfh的即可,系统会自动抓取
        ,于是一般都只保留pmh或pfh的图像与材质图,以节省档案空间。
       
        所以麻烦的是,新增一个单一性别单一体型的3D部件最少就需要作6个种族的
        .mdl档,是个很庞大的工程,NW Vault上有些装备设计者只放上pfh0的部件,
        其余的可以利用小程式补足:
               
                NWN Armory 1.2
                http://nwvault.ign.com/View.php?view=Other.Detail&id=677
                根据pmh或pfh的.mdl档案自动计算产生其他5个种族的.mdl
                (无法复制不同体型或不同性别的.mdl档)
       
        .2da档案最初修改时最好由 source 资料夹中的 2dasource.zip
        解压缩而来,因为每个人所要增加与使用的部件编号绝对不会完全相同,
        因此.2da档最好是自己修改。

评分

参与人数 1奥币 +5 收起 理由
davidmouse + 5 很强大!支持技术帖

查看全部评分

 楼主| 发表于 2008-7-17 10:55:47 | 显示全部楼层
3. mdl档的解析

mdl档一般都是纯文字档的,如果不能直接以记事本读取的话,使用上述的
nwn explorer来读取转换成纯文字档,以人类男性左前臂第56号部件为例,重要的
地方我会以中文说明,没说明的表示在基础篇中不重要:
------------------------------------------------------------------------
#Model converted by mdl2ascii
#For updates/comments check out http://nwn-j3d.sf.net
filedependancy Unknown
newmodel pma0_forel056                部件(model)的宣告,部件的名字要与档名相同
setsupermodel pma0_forel056 NULL         部件(model)的宣告,部件的名字要与档名相同
classification Character
setanimationscale 1.000000
#MAXGEOM  ASCII
beginmodelgeom pma0_forel056                部件(model) pma0_forel056 开始
node dummy pma0_forel056                构成(node) pma0_forel056 开始
  parent NULL
endnode                                构成(node) pma0_forel056 结束
node trimesh pma0_forel056g                构成(node) pma0_forel056g 开始
  parent pma0_forel056
  position 0.0000000 0.0000000 0.0000000
  orientation 0.000000 0.000000 0.000000 0.000000
  diffuse 1.000000 1.000000 1.000000
  ambient 1.000000 1.000000 1.000000
  specular 0.000000 0.000000 0.000000
  shininess 1.000000
  render 1                                绘图值
    bitmap pma0_forel056                材质档
    verts 16
    -0.0374353 0.0040719 -0.0064006
        这之间行数太多,我删了14行
    -0.0407694 -0.0166075 -0.0690794
    faces 28
     0 1 2 1 0 1 2 1
        这之间行数太多,我删了26行
     0 7 15 1 10 9 19 1
    tverts 27
     0.067817 0.775400 0
        这之间行数太多,我删了25行
     0.018469 0.025671 0
endnode                                构成(node) pma0_forel056g 结束
endmodelgeom pma0_forel056                部件(model) pma0_forel056 结束
donemodel pma0_forel056
-------------------------------------------------------------------------------               

       
        由此我们可以解析pma0_forel056这个部件(model),总共包含两个构成(node),
        pma0_forel056 与 pma0_forel056g,而pma0_forel056g为主要的构成元件,构成
        的架构如下:

        node ------                          3D构成的资料开始
                render 0                        绘图值
                scale 1.0                        3D构成的比例(范例中没有,内定值1.0)
                alpha 1.0                        alpha通道值(范例中没有,内定值1.0)
                bitmap pma0_forel056                材质档
                4个区块的数字,分别代表着点、面、材质与共振度的资料,
                不用管。
        endnode -----                         3D构成的资料结束

        其中
                render        代表着是否显示这个构成,一个部件可能有许多3D构成,
                        有些是作者作为参考用的,并不需要描绘出来,1显示,
                        0不显示。
                scale        代表这个构成的大小,作者通常在做好3D构成后发现太大
                        或太小,可以用此设定调整,另外在将头型转换成头盔时
                        ,有时会出现头盔大小与头型不同,这时于头盔的 scale
                        值调整即可。
                alpha        代表着这个构成的透明度,1.0代表不透明,0.0代表全透
                        明(隐形)。
                bitmap        代表所使用的材质档,因为作者在制作时材质档都是最后
                        才完成的,所以有时候这部份所指向的档案会不存在,但
                        是游戏系统会忽略这个设定,直接以与档名相关连的.plt
                        档作为材质档,但在NWN explorer中则此设定有效,建议
                        如果有时间将此设定改成与档名相同,否则在NWN explorer
                        终将看到白色的3D物件而已。

        另外还有柔软度等设定(这部份可作为裙摆或长发飘逸的效果以及波波动人
        的视觉诱惑),因为牵涉的比较多,以后再说。

        更进阶的作法是使用 3dsmax 或 Gmax来直接进行3D构成的修改,这些我就
        不在这里说明了。

4. plt档的解析

        .plt档案的构成十分简单,就是一张灰阶底图加上颜色设定,这些颜色设定
        如下:
                Metal 1                (M1)        金属1
                Metal 2                (M2)        金属2
                Cloth 1                (C1)        衣服1
                Cloth 2                (C2)        衣服2
                Leather 1                (L1)        皮革1
                Leather 2                (L2)        皮革2
                Skin                (S)        皮肤
                Hair                (H)        毛发
                Tatoo 1                (T1)        刺青1
                Tatoo 2                (T2)        刺青2

        底图要是灰阶的,上述的颜色设定才有效,另外底图中的纯黑(RGB=0,0,0)与
        纯白(RGB=255,255,255)是不会被上述颜色设定所取代的,可以视为绝对颜色。

        编辑.plt档案的程式 PLT Editor
        http://nwvault.ign.com/View.php?view=Other.Detail&id=408

        有些没有颜色设定的装备图像(通常也没有3D构成,仅仅是一个图像而已),如
        盾、护手、戒指、护身符等,使用的是.tga档,除了以黑底为图像底色外,还
        必须设定.tga 的 alpha通道(意义如前所描述的类同,只是只有看得见与看不
        见的分别),这以后有时间再讲。

5. 2da档的解析
        与装备外型有关的.2da档只有下列几个:
                CloakModel.2da                斗篷
                parts_belt.2da                腰带
                parts_bicep.2da                二头肌(上臂)
                parts_chest.2da                胸部
                parts_foot.2da                脚部
                parts_forearm.2da                前臂
                parts_hand.2da                手
                parts_legs.2da                大腿
                parts_neck.2da                颈部
                parts_pelvis.2da                下半身
                parts_robe.2da                罩袍
                parts_shin.2da                胫部
                parts_shoulder.2da                肩部

        COSTMODIFIER        额外价值(金钱)
        ACBONUS                AC加值,此值只有在p_chest中有效,即为该护甲的AC加值,
                        在其余部件中仅作为排序的依据,并不影响实际的AC加值,
                        另外要注意的是AC加值5.99的护甲视同AC6的护甲。
                        若AC加值为****,则代表该编号的资料不载入。

        斗篷与罩袍的.2da设定比较不一样,除了上述设定外,其余各数字代表穿上时是
        否要隐藏其他部件,1为隐藏,0为不隐藏。
       
        .2da档的设定应该一目了然,比较重要的是,在toolset中,头盔与斗篷所选择
        的是档案名称,人形的设定也是选择各部件的档案名称,但是护甲的各部件选择
        则是一个重新排列的编号,这些编号就是.2da当中的ACBONUS的顺序,由0.00排
        列到9.99,因此,实际在toolset中所看到的编号不是档案名称中的编号。

        多提一点:
        appearance.2da        设定不同的怪物人形所相对应的图像。
        portraits.2da        设定额外头像的定义,包含种族、性别、生物与非生物等特质
                        ,我手边有另一个设定NPC图像的portrait.2da写法指南,已
                        经忘记是从哪里拷下的,有机会放上来。
 楼主| 发表于 2008-7-17 17:00:08 | 显示全部楼层

补充一下

.mdl 中的 alpha值是可以有小数点的,代表着透明的程度
薄纱类的表现方式就是用此值来体现的

.plt中底图的空白部分必须是纯白(RGB=255,255,255)
否则便不是透明,无法与下半身以及肩部的图像作加成
发表于 2008-7-20 16:43:09 | 显示全部楼层
我个人觉得这种技术性强帖
不应该沉
大家还是顶起来的好![y:13]
发表于 2008-7-20 19:27:52 | 显示全部楼层
技术帖啊,顶起,终于可以给我的Sex&Single Adventure加几个全新的bra啦,哈哈哈哈,邪恶中……[s:6]
发表于 2008-7-20 22:22:59 | 显示全部楼层
技术性太强了,像我这种文盲就算了……
发表于 2008-7-21 08:21:37 | 显示全部楼层
好复杂,慢慢看
 楼主| 发表于 2008-7-21 12:08:48 | 显示全部楼层

偷懶的招數

其实那些档案不需要完全自制
可以经由 NW expolorer 从游戏中撷取出来
然后进行修改
这样会轻松很多
只是要确定所需的档案都有撷取出来就可以了
发表于 2008-12-23 12:00:21 | 显示全部楼层
头都晕了[s:7] [s:7] [s:7]
发表于 2010-11-11 10:56:34 | 显示全部楼层
好东西,学习了。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|奥德赛公会

GMT+8, 2026-6-17 01:43 , Processed in 0.014506 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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