English
发新主题

(转帖)18轮大卡车全系列MOD制作完整教程(制作中)

本主題被作者加入到個人文集中

(转帖)18轮大卡车全系列MOD制作完整教程(制作中)


注:此帖虽然是我自己写作的,但最初是写于游侠网站,鉴于很多朋友都想自己制作MOD,特转过来。(算是我对本站的一点支持和贡献吧)因我不喜欢一帖多发,所以仍然写明:转帖。所以,今后,我在18轮中文站发的帖子也不会在其他地方重复发帖。(仍然会注明:转载)转载请注明! 到目前为止,在我国还没有一套完整介绍如何制作18轮大卡车系列Mod的制作教程,国内有一大批人都会一些制作MOD的方法和技巧,但零零散散,缺乏系统性,只局限于个人使用。我把他们的这些经验和心得全部综合在一起,再加上我自己对Mod制作的领悟和发现,决心写出一份浅显易懂,从入门到专家级别的专业Mod制作教程,这在中国,算是先开个头,以后自然会有很多好手继续18WOS的发展!本教程将详细介绍Mod制作的方方面面,采取由总后分的叙述方法来阐述各种Mod的制作。并加以实例来说明具体应用。 第一章 概述 其实18WOS系列的Mod制作方法都大同小异,并且可以分为三个类别,穿越(2)+金属(3)为一类;护航(4)+运输(5)+长拖(7)为另一类;钢铁(1)+公交司机(6)为最后一类。括号里面的数字所代表的为传统意义上的“代”数。其中,第二类的Mod制作难度相对较大,本教程将详细讲解该类的 Mod制作方法,其他两类可以类推。 公理一:任何18WOS Mod的制作都是基于游戏根目录的base.scs的基础上完成的。.scs其实是ZIP的化身,是SCS公司简单加密的一种方式,原则上,可以任意取名。 编辑Mod常用的软件(稍候将提供下载衔接):PS,ACDSee,微软自带的画图软件(很多时候,ACDSee,微软自带的画图软件完全可以取代PS,我现在基本不用PS),DXTbmp,Winrar,ZM,WinHex,Cool Edit Pro,全能音频转换通(这些就是我制作Mod用到的所有软件)。 1.1 长拖base.scs的基本构架 根据公理一,我们用WINRAR将长拖游戏根目录的BASE.SCS展开: 看到10多个文件夹,它们所表达的分别是:automat-自动匹配文件;def-定义型文件;font-字体文件;map:地图文件; material:素材文件;model:模型文件;prefab:仍然属于模型文件;script:脚本文件;sound:声效文件;ui:系统配置文件;unit:特效配置文件;vehicle:车头文件。下面的章节,将分别介绍它们的作用。但本教程将采取“纵横交叉”的叙述方式,不拘泥于各章节的独立限制,有时会采取串联同时进行讲解。 1.2几个定则和推论 先介绍几个必需使用的定则:
回帖后才可看到本帖隐藏内容。VIP贵宾免回帖。
乱打内容会被封号。可粘贴一句“感谢楼主分享”
本帖最近评分记录
  • wsyuzhong 下载积分 +5 2008-6-30 18:49 助人爲樂
  • 枫丹白露 +28 2008-5-3 09:41 感谢分享
  • NavNis 下载积分 +10 2008-4-26 08:09 精品文章
  • NavNis +25 2008-4-26 08:09 精品文章

第二章 vehicle---车头篇 2.1 车体文件 从BASE.SCS中展开vehicle,有以下几个文件夹:(选取V1.03A的BASE.SCS) 它们分别表示:ai:AI车辆,driver:司机,interior:内饰,trailer:货柜,truck:卡车头,wheel:轮子。 再展开AI,可以看到: 其中,勾选到的内容:definition和traffic_storage.sii可谓是AI文件夹里的两大“护法”,它们属于筋骨文件,其它的属于实体文件。其它文件夹里面的请与此类推,比如interior,trailer,truck文件夹里面的相关筋骨文件,它们的作用和操作方法都是一样的。 公理二:18WOS的 BASE.SCS中的车体文件分为两大部分,一部分是实体文件,另一部分是引导文件,它们相辅相成,缺一不可。其中,在definition里面的 xxx.sii和xxx_storage.sii称为引导文件,亦称做筋骨文件,其它的有相关车名代号的文件夹里面的文件均是实体文件。 HNR第一定律:在18WOS的BASE.SCS中的车体文件中,实体文件由definition里面的xxx.sii文件引导,definition里面的xxx.sii文件由xxx_storage.sii文件引导。它们互相关联紧密。 推论一:在一个车体文件中,如果仅有实体文件和或xxx.sii文件,游戏仍然可以进行,但它们形同虚设,相关车体并不会在游戏中显示; 推论二:在一个车体文件中,如果仅有xxx_storage.sii文件,而没有相关的xxx.sii文件和实体文件,游戏将在进入期间呈假死状态; 推论三:在一个车体文件中,如果仅有xxx_storage.sii文件和xxx.sii文件,而没有相关的实体文件,游戏将在运行中报错。 在这里,车体文件不仅仅是可驾驶车头文件,它还包括AI车头,内饰,轮子,货柜,甚至利用推广论,它还表示以后将要说到的公司实体。 例1:现有一MOD:truck_z_kk100lf3.scs,将其放到MOD文件夹里面,进入游戏没有显示相关车头,展开此MOD,发现在 vehicle--truck文件夹里没有truck_storage.sii文件,只有相关实体:kk100lf3文件夹和definition文件夹,现将definition打开,发现里面有kk100lf3.sii,kk100lf3_traffic.sii两个文件,根据上述,可知,问题出在缺少最终引导文件:truck_storage.sii。到哪里寻找这个文件呢?假设MOD文件夹里面只有这一个MOD,打开游戏根目录的 BASE.SCS,依次展开:vehicle--truck,好了,发现truck_storage.sii,将其解压到任一临时文件夹中,用记事本或者写字板打开,在里面加入这样一行语句:“@include "definition/kk100lf3.sii"要顺着格式,然后保存。将此truck_storage.sii文件封装到原MOD中即可。封装时应严格按照Mod制作一致性定理进行,即在加入到原MOD中时,其外面必需先套上truck,vehicle两个文件夹,注意内外顺序,然后根据Mod制作第三定则:Mod的封装必须用.ZIP并采取“存储”的模式,这样制作完毕,你就可以在游戏中看到这台车头了。至于如何封装,可以采取拖拽的方式,或者先打开原MOD,添加这个文件即可。请思考:kk100lf3_traffic.sii文件是用来干什么的? 2.2引导文件详细讲解 根据2.1,不难把vehicle文件夹里面的所有引导文件找出来,它们分别存在于ai,interior,trailer,truck这些文件夹里面,作用分别代表着AI车辆的引导,可驾驶车头车内内饰的引导,可拉货柜以及AI货柜的引导,可驾驶车头以及AI车头的引导。 2.2.1 AI的引导文件 先来分析definition里面的,展开definition文件夹,可以看到: 现以ambulance.sii为例,说明里面各行语句的具体作用。打开ambulance.sii(AI救护车): traffic_vehicle_data: traffic.ambulance 交通车辆数据指向:ambulance(这行语句非常关键,后文将详细讲解它的妙用) { model: "/vehicle/ai/ambulance/ambulance.pmd"实体文件指向:/vehicle/ai/ambulance/ambulance.pmd(.pmd是实体文件的筋骨,ZM制作的核心其实就是它) lod: "/vehicle/ai/ambulance/lod.pmd"AI车辆辅助引导指向:/vehicle/ai/ambulance/lod.pmd(这个在后文将重点讲解) collision: "/vehicle/ai/ambulance/ambulance.pmc"匹配指向:/vehicle/ai/ambulance/ambulance.pmc(.pmc文件将.pmd文件和automat文件联系起来,可以用记事本打开) fwheel_model: "/vehicle/wheel/1/wheel.pmd"前轮实体文件指向:/vehicle/wheel/1/wheel.pmd rwheel_model: "/vehicle/wheel/1/wheel.pmd"后轮实体文件指向:/vehicle/wheel/1/wheel.pmd(可以刊出,本车的前,后轮是一样的,都是相关实体文件中的1号车轮。关于轮子的作用,后文将重点说明) allowed_count: 1 系统参数,不能轻易修改,由地图.bmd和EFFECT文件决定。 speed: 60.0 平均速度 60KM/H (如果路途中交通事故频繁,那就降低点吧) speed_class: 4 速度活动范围幅度:第四区域 } 其中,像/vehicle/wheel/1/wheel.pmd中的vehicle,wheel,1,均代表实体文件,它们是依次包含的文件夹,wheel.pmd是文件夹1里面的筋骨文件。 我们再来看看schoolbus.sii,bushnr3.sii,bushnr4.sii这几个模板,请仔细观察schoolbus.sii traffic_vehicle_data: traffic.schoolbus { model: "/vehicle/ai/schoolbus/schoolbus.pmd" lod: "/vehicle/ai/schoolbus/lod.pmd" collision: "/vehicle/ai/schoolbus/schoolbus.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/10/wheel.pmd" allowed_count: 1 speed: 15.0 speed_class: 1 } bushnr3.sii traffic_vehicle_data: traffic.bushnr3 { model: "/vehicle/ai/schoolbus/schoolbus.pmd" lod: "/vehicle/ai/schoolbus/lod.pmd" collision: "/vehicle/ai/schoolbus/schoolbus.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/10/wheel.pmd" allowed_count: 1 speed: 15.0 speed_class: 1 } bushnr4.sii traffic_vehicle_data: traffic.bushnr4 { model: "/vehicle/ai/schoolbus/schoolbus.pmd" lod: "/vehicle/ai/schoolbus/lod.pmd" collision: "/vehicle/ai/schoolbus/schoolbus.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/10/wheel.pmd" allowed_count: 1 speed: 15.0 speed_class: 1 } 我们可能已经发现了,上面的几个模板中,除了第一行:“交通车辆数据指向”不同以外,其他的引导语句都是相同的! 2.2.2 HNR第二定律:唯一性定律 HNR第二定律(唯一性定律)在Mod群系中,车体文件的引导文件XXX.SII和XXX.SII里的“交通车辆数据指向”语句必须是唯一的。 推论一:在XXX_storage.sii文件中,其语句: @include "definition/XXX.sii",这个“XXX”必须是唯一的。如果在一个XXX_storage.sii文件中,存在两个或两个以上相同的 XXX.SII语句,那么对于AI文件夹里面的definition文件,游戏将在LOADING的时候错误退出;对于truck,interior, trailer文件夹里面的definition文件,游戏将在LOGO画面停滞不前; 推论二:如果在一个definition文件夹里面的几个不同名字的XXX1.SII,XXX2.SII,XXX3.SII......文件中,它们的 “交通车辆数据指向”语句是相同的,并且这些XXX1.SII,XXX2.SII,XXX3.SII......文件已经注册到相关的 XXX_storage.sii文件中,仍然会出现推论一所述情况; 推论三:在一个MOD文件夹中如果存在多个含有vehicle文件的MOD,且这些MOD的vehicle文件夹里的definition含有两个或两个以上相同的XXX.SII文件,文件已经注册到相关的XXX_storage.sii文件中,那么所产生的后果和推论一的相同; 推论四(广义论):在DEF的公司引导文件中,其相关引导文件也必须是唯一的; 推论五(广义论):在DEF的CITY文件夹里的“城市名.sii”必须和地图中的城市名一致,唯一,双方都不能无中生有。 推论六(广义论):在def--camera文件夹里面的引导文件,将遵循推论一,二,三所述的规律进行。 例2:在ALH豪华增强版的V1.03B中,有过这样一段关于该版本的介绍(http://game.ali213.net/thread-1868974-1-1.html): “12. 专门推出了 "Super Bruce by HNR"系列的引擎,刹车和变速箱,为了增加游戏的乐趣,这个“宝物”隐藏在一个城市里面,虽然补丁包里面有个“超级发动机”的MOD,但当你还没有在游戏里获得某件东西的时候,你把这个MOD放进MOD文件夹只会导致游戏停滞不前而无法游戏!在游戏里,特别提供了很多线索(包括视觉和听觉两个方面,所以大家要专心驾驶~)提示你找到这个城市,难度并不大,大家只要专心驾驶,不要听歌等,你会得到很多暗示的,到你揭开这个“秘密”时,得到的不仅仅是超级发动机,还有其他很多惊喜!”其实这个就是妙用了“交通车辆数据指向”语句,大家可以打开该补丁的”V1.03Bpart3.scs“,依次展开: vehicle--truck--definition--p379c.sii,其它语句大家暂时不要管,我在后文会详述,只看第一句:“交通车辆数据指向”语句。看到: driveable_vehicle_data: vehicle.p388 { name: "@@Peterbilt 388 Fleetclass@@" price: 95000 #-------- # models #-------- model: "/vehicle/truck/p388/p388.pmd" collision: "/vehicle/truck/p388/p388.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/10/wheel.pmd" wiper_model: "/vehicle/truck/p388/wips.pmd" interior_hood_model: "/vehicle/truck/p388/hood.pmd" #---------------- # physics params #---------------- wheel_mass: 50.0 #------------- # Child units #------------- chasis_data: chasis.0 sdata_ext: sound.0.ext sdata_int: sound.0.int exterior_wiper_anim: "/vehicle/truck/ws/wips.pma" preview: "m379" game_points: 0 vehicle_class: 3 behind_camera: camera.behind.basic interior_camera: camera.interior.peterbitl bumper_camera: camera.bumper.basic cabin_camera: camera.cabin.basic cabin_cam_off: (0.0, 4.0, 1.9) top_camera: camera.top.basic tv_camera: camera.tv.basic interior_data: interior.peterbitl1 sleeper: true } 再展开”超级发动机.scs“,依次展开:vehicle--truck--definition--p388c.sii,其它语句大家暂时不要管,我在后文会详述,只看第一句:“交通车辆数据指向”语句。看到: driveable_vehicle_data: vehicle.p388 { name: "@@Peterbilt 388 Fleetclass@@" price: 95000 #-------- # models #-------- model: "/vehicle/truck/p388/p388.pmd" collision: "/vehicle/truck/p388/p388.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/10/wheel.pmd" wiper_model: "/vehicle/truck/p388/wips.pmd" interior_hood_model: "/vehicle/truck/p388/hood.pmd" #---------------- # physics params #---------------- wheel_mass: 50.0 #------------- # Child units #------------- chasis_data: chasis.0 sdata_ext: sound.0.ext sdata_int: sound.0.int exterior_wiper_anim: "/vehicle/truck/ws/wips.pma" preview: "m379" game_points: 0 vehicle_class: 3 behind_camera: camera.behind.basic interior_camera: camera.interior.peterbitl bumper_camera: camera.bumper.basic cabin_camera: camera.cabin.basic cabin_cam_off: (0.0, 4.0, 1.9) top_camera: camera.top.basic tv_camera: camera.tv.basic interior_data: interior.peterbitl1 sleeper: true } 大家应该明白了吧!换句话说,只要你移除了”V1.03Bpart3.scs“就可以使用超级发动机了!这个例子充分诠释了HNR第二定律。 2.2.3 HNR递增原则 通过前面对比schoolbus.sii,bushnr3.sii,bushnr4.sii这几个模板,我们可能会有疑问?为什么要有那么多的 bushnrx.sii(x=1,2,3,4......)?有一个不就够了吗?这是原作者想在游戏中达到虽然只有一种公交车,但数量却很多的真实,热闹的氛围而刻意增加的。 HNR递增原则:可以通过修改车体文件XXX.SII的名称及其语句中的“交通车辆数据指向”语句名称,而其它语句可以保持不变,克隆出多个原XXX.SII文件的衍生文件,再将这些衍生文件注册到相关的XXX_storage.sii文件中,达到车体复制之功效。 推论一:在vehicle--ai文件夹里的复制,将复制好的XXX’.SII文件注册到相关的traffic_storage.sii文件中,所得到的效果是在游戏中,AI车辆会相应增加所复制的相应AI车辆; 推论二:在vehicle--truck文件夹里的复制,将复制好的XXX‘.SII文件注册到相应的truck_storage.sii文件中,所得到的效果是在游戏中,会得到相应增多的车头,具体的地方在游戏开始的”SHOWROOM“以及卡车管理,买卖的地方; 推论三:在vehicle--truck文件夹里的复制,将复制好的XXX’_traffic.sii文件注册到相应的traffic_storage.sii文件中,所得到的效果是在游戏中,AI卡车头会相应增加所复制的相应AI卡车头; 推论四(广义论):可以把此理论完美应用在interior,trailer,以及def--camera,def--vehicle--sound文件夹里面,所得到的效果完全一样,请充分利用此推论,让你所集合的卡车车头形式多样化! 例3:在HAULIN迷宗MOD的BUS部分,大家可能已经注意到了,每辆BUS的内饰,车内视角高低都是不同的,这就是充分利用了推论四,通过复制原 interior,以及DEF文件夹中的camera文件夹里面的XXX.SII文件,再将这些复制到的衍生文件加以修改(后文会重点介绍如何修改这些语句),最后再将它们注册到相关的XXX_storage.sii文件中,而得到的形式各异的效果! 例4:在ALH系列豪华版中,当大家使用车头递增包时,其实已经发现了,每台车的喇叭声是不一样的,警车,消防车,公交车,各种卡车头的喇叭声均是分别精心录制的,有些车头的引擎声,刹车声都不相同,那么,是如何做到各是各的,而不会重叠覆盖呢?其实,这就是充分利用了递增原理中的推论四。 2.2.4 HNR黄金组合定理 在介绍这个定理之前,我们先来了解下几个XXX.SII文件中其他语句的作用。 先来看看:vehicle--truck--definition--fcol.sii: driveable_vehicle_data: vehicle.fcol 交通车辆数据指向:fcol(这行语句的作用前文已经详述,不再赘述) { name: "@@trk_fcol@@"(车头命名,具体显示在SHOWROOM和车头管理处,可以在两个@@之间随意修改成其它任意字母型的名字) price: 135000(售价,可以随意修改) #-------- # models (实体文件部分) #-------- model: "/vehicle/truck/fcol/fcol.pmd"实体文件指向:/vehicle/truck/fcol/fcol.pmd(.pmd是车体实体文件的筋骨,ZM制作的核心其实就是它) collision: "/vehicle/truck/fcol/fcol.pmc" 匹配指向:/vehicle/truck/fcol/fcol.pmc(.pmc文件将.pmd文件和automat文件联系起来,可以用记事本打开) fwheel_model: "/vehicle/wheel/6/wheel.pmd"前轮实体文件指向:/vehicle/wheel/6/wheel.pmd rwheel_model: "/vehicle/wheel/8/wheel.pmd"后轮实体文件指向:/vehicle/wheel/8wheel.pmd wiper_model: "/vehicle/truck/fcol/wips.pmd" 雨刮实体文件指向:/vehicle/truck/fcol/wips.pmd interior_hood_model: "/vehicle/truck/fcol/hood.pmd" 车内内饰实体文件指向:interior_hood_model: "/vehicle/truck/fcol/hood.pmd #---------------- # physics params 物理参数 #---------------- wheel_mass: 50.0 轮子聚合:50 #------------- # Child units 分支参数 #------------- chasis_data: chasis.0 道路颠簸指向: 颠簸0号数据(在def--vehicle--chasis文件夹里面) sdata_ext: sound.1.ext 车头外部声效指向:外部声效1号数据(在def--vehicle--sound文件夹里面) sdata_int: sound.1.int 车头内部声效指向:内部声效1号数据(在def--vehicle--sound文件夹里面) exterior_wiper_anim: "/vehicle/truck/fcol/wips.pma" 车头外部雨刮指向:/vehicle/truck/fcol/wips.pma preview: "fcol" 全车预览指向:fcol(具体表现在SHOWROOM的那些小图片上,这个图片在:material--ui--truck里面) game_points: 72 点数:72 vehicle_class: 3 级别:3 behind_camera: camera.behind.basic 车后视角指向:camera.behind.basic interior_camera: camera.interior.keenworth 车内视角指向:camera.interior.keenworth bumper_camera: camera.bumper.basic 保险杠视角指向:camera.bumper.basic cabin_camera: camera.cabin.basic 车顶视角指向:cabin_camera: camera.cabin.basic(这个是ALH特有的,HAULIN不具备) cabin_cam_off: (0.0, 4.2, 1.7) (必需加上这一句,否则会造成使用车顶视角错误!) top_camera: camera.top.basic 全车视角定义指向:camera.top.basic tv_camera: camera.tv.basic tv视角定义指向:camera.tv.basic 以上7行视角语句所指向的均是引导文件,具体位置在:def--camera--units里面,而在def--camera中的camera_storage.sii为它们的引导文件。 interior_data: interior.keenworth 车内模型指向: interior.keenworth 这个属于实体文件 sleeper: true 卧铺车 (如果想取消卧铺功能,只需将这一句删除即可,而不是将”true“改为”false“) } 再来看看:vehicle--truck--definition--fcl.sii: driveable_vehicle_data: vehicle.fcl { name: "@@trk_fcl@@" price: 80000 #-------- # models #-------- model: "/vehicle/truck/fcl/fcl.pmd" collision: "/vehicle/truck/fcl/fcl.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/8/wheel.pmd" exterior_wiper_anim: "/vehicle/truck/fcl/wips.pma" wiper_model: "/vehicle/truck/fcl/wips.pmd" #---------------- # physics params #---------------- wheel_mass: 50.0 #------------- # Child units #------------- chasis_data: chasis.0 sdata_ext: sound.2.ext sdata_int: sound.2.int exterior_wiper_anim: "/vehicle/truck/fcl/wips.pma" preview: "fcl" game_points: 4 vehicle_class: 1 behind_camera: camera.behind.basic interior_camera: camera.interior.agressor bumper_camera: camera.bumper.basic cabin_camera: camera.cabin.basic cabin_cam_off: (0.0, 4.0, 1.9) top_camera: camera.top.basic tv_camera: camera.tv.basic interior_data: interior.agressor2 sleeper: true } 可以发现fcl.sii和上面的fcol.sii的唯一区别就是少了一行“车内内饰实体文件指向”语句,不言而喻,车头FCL比车头FCOL少了些辅助内饰。经验证明:在车头文件XXX.SII里面,雨刮实体文件指向语句,车内内饰实体文件指向语句,车头外部雨刮指向语句在具体的车头配置中的作用是辅助的,它们存在与否,并不会对车头造成实质性的影响,它们可有可无。 HNR对称原则:在车体文件的引导文件XXX.SII中,实体文件指向语句,AI车辆辅助引导指向语句,匹配指向语句必须在实体文件中取得一致。即它们所指向的实体车头文件必须是同一的。 HNR黄金组合定理:车头文件的引导文件XXX.SII里的所有指向语句均可和其它XXX.SII的所有指向语句任意组合。它们可以搭配出无数效果。但在组合过程中,要遵循HNR对称原则。 例5:请再次回顾例3,例4,在上面的例子中,提到不同BUS,有不同的内饰,不同车头,有不同的声效,除了应用到HNR递增原则外,其实,还充分应用了HNR黄金组合原理,请看下图中迷宗MOD的BUS部分:公交5路车的内饰: 组合了:AYATS,agressor,Cascadia(很出色的一个MOD)的内饰。 请仔细分析这台车的引导文件: driveable_vehicle_data: vehicle.flcc(指向FLCC) { name: "@@bus5_KunMing@@"(名称已改) price: 124000 #-------- # models #-------- model: "/vehicle/ai/velven/velven.pmd"(指向的实体文件为AI文件夹里面的,根据HNR黄金组合原理,这是允许的) collision: "/vehicle/ai/velven/velven.pmc" fwheel_model: "/vehicle/wheel/vel_f/wheel.pmd" rwheel_model: "/vehicle/wheel/vel_r/wheel.pmd" wiper_model: "/vehicle/truck/fla/wips.pmd" interior_hood_model: "/vehicle/truck/flca/hood.pmd"(内部辅助装饰用的是FLCA,也即Cascadia(很出色的一个MOD)的内饰) #---------------- # physics params #---------------- wheel_mass: 50.0 #------------- # Child units #------------- chasis_data: chasis.0 sdata_ext: sound.0.ext (0号声效数据) sdata_int: sound.0.int exterior_wiper_anim: "/vehicle/truck/fla/wips.pma"(外部雨刮指向FLA) preview: "flcc"(全车预览:FLCC) game_points: 28 vehicle_class: 3 behind_camera: camera.behind.basic interior_camera: camera.interior.ayats(车内视角调节指向:ayats) bumper_camera: camera.bumper.basic top_camera: camera.top.basic tv_camera: camera.tv.basic interior_data: interior.ayats(车内内饰实体文件指向:ayats) sleeper: true(卧铺车) } [ 本帖最後由 HNRRAN 於 2008-5-27 01:52 編輯 ]
本帖最近评分记录

2.2.5 HNR车体转化定律 HNR车体转化定律根据HNR黄金组合定理可知,所有AI车头均可转化成可驾驶车头,反之,所有可驾驶车头亦可转化成AI车头。转化的具体操作由XXX.SII文件和相关的 XXX_storage.sii文件决定。当AI车转化成可驾驶车头时,其XXX.SII文件中的“AI车辆辅助引导指向”语句必须删除;反过来,当将可驾驶车头转化成AI车头时,“AI车辆辅助引导指向”语句可有可无,但当其存在时,必须是以“lod.pmd”结尾的文件,不能是以“车名.pmd”结尾的文件。 2.2.5.1使用HNR车体转化定律应注意的几个事项 1.如果还不清楚何谓“AI车辆辅助引导指向”语句,那么是你没有认真阅读前面的相关章节,请回过头去认真阅读; 2.因为本定律是根据HNR黄金组合定理实践推导出来的,所以,必需按照HNR黄金组合定理的使用原则来严格使用,即在组合过程中,必须遵循HNR对称原则; 3.根据HNR递增原则,车体的双向转化都是可以多重复制的,但在重复复制的过程中,请一定要遵循HNR第二定律(唯一性定律); 4.在AI车体转化成可驾驶车体时,涉及到的实体文件为vehicle--ai文件夹中的相关实体车头文件,涉及到的相关引导文件为vehicle-- ai--definition文件夹中的相关xxx.sii文件,最终的引导文件为:vehicle--truck-- truck_storage.sii,具体的搭配操作,请应用好HNR第一定律; 5.在可驾驶车体转化成AI车体时,涉及到的实体文件为vehicle--truck中的相关实体车头文件,涉及到的相关引导文件为vehicle-- truck-definition文件夹中的相关XXX_traffic.sii文件,最终的引导文件为:vehicle--truck-- traffic_storage.sii,具体的搭配操作,请应用好HNR第一定律; 6.当将可驾驶车头转化成AI车头时,“AI车辆辅助引导指向”语句使用与否要看在vehicle--truck中的相关实体车头文件中是否存在“lod.pmd”这个文件,若存在,请加上这句,若没有,请删之,不能无中生有; 7.当将可驾驶车头转化成AI车头时,在XXX_traffic.sii文件中,需要的语句为:交通车辆数据指向语句,实体文件指向语句,AI车辆辅助引指向语句(可选),匹配指向语句,前轮实体文件指向语句,后轮实体文件指向语句,平均速度语句以及速度活动范围幅度语句。其他的均不要。并注意是否挂接货柜,否则当你将BUS车头转化成AI车头时,挂接个货柜就不伦不类了。 例6:请看可驾驶车头kt600转化成AI车头kt600_traffic.sii里面的相关语句写法: traffic_vehicle_data: traffic.kt600 { attachable: 1(这句的作用是是否挂接货柜,1为挂接0为单车头) model: "/vehicle/truck/kt600/kt600.pmd" lod: "/vehicle/truck/kt600/lod.pmd" collision: "/vehicle/truck/kt600/kt600.pmc" fwheel_model: "/vehicle/wheel/5/wheel.pmd" rwheel_model: "/vehicle/wheel/8/wheel.pmd" speed: 15.0 speed_class: 1 } 例7:在迷宗MOD里面,原欧洲车头部分经常会跳出的一个原因,就是里面的vehicle--truck--definition-- xxx_traffic.sii文件中的“AI车辆辅助引导指向”语句写法错误,违背了”HNR车体转化定律“,很多都是:”车名.pmd“而不是” lod.pmd“。当然,这个只是其中一个原因,另外的原因主要是AUTOMAT文件错误,这会在后文详述。这也是目前反复出相关后续版本都没有修复的原因,因为,AUTOMAT文件实在是太多了,毫不夸张地说,它们有180个左右,虽然采取了批处理方式,但始终没能全部解决,所以,现在决定,由我自己来制作南帝北丐部分,不再修改原德国人制作的那个版本。 例8:在迷宗MODV1.1以后,都有了BUS帝国部分,主要是将可驾驶BUS转化成了AIBUS,主要就是修改了vehicle--truck--definition--xxx_traffic.sii文件的语句。 例9:在ALH豪华系列版本中,经常可以看到将AI救护车,AI BUS,AI卡车,AI轿车等转化成可驾驶车头,这都是应用了车体转化定律。 2.2.6 使用替换法和递增法增加车头 当我们增加新的车头时,可以使用替换原有车辆或者是直接增加新车辆的方法。(这里以可驾驶车头为例,AI车头操作方法相似)大家可能会问,为什么不直接增加呢,何必去替换?这有两个方面的限制,一个方面是从护航以后,SCS在编程方面加了一些车头的限制,当你加入太多车辆时,在进入游戏的时候,将会非常不稳定,非常容易跳出,不像原来的金属,几乎是随心所欲地加车头也不会影响游戏的进入,所以说,从这个方面讲,花之雨是幸运的,因为其制作的”超强综合版 “里面的车头让人看了眩晕,实在太多了,什么品种都有,最多就是颜色文件上有瑕疵,因为太多,肯定会有相互覆盖的情况(匹配文件的覆盖),但此作就像醇酒醉影一样,回味无穷。所以,由于受到这方面的影响,让我制作迷宗MOD时,费尽了心机;另一方面,由于有些车头的制作比较粗糙,多来几个,就容易让游戏在进入的时候跳出,特别是AI车转化成可驾驶车头时候,就存在这个因素,因此,很多时候,都得使用替换法。 2.2.6.1 使用替换法时的心法口诀 1.交叉替换易避跳; 2.实体相同莫替换; 3.匹配文件莫重叠; 4.引导改姓不改名; 5.预览指向可更换。 现在来介绍下上面所述的口诀的意义: 1.交叉替换易避跳;这句话的意思是在truck_storage.sii文件里面,不要把你所要替换的车头写在一起,可以岔着点原始车头,因为,在truck_storage.sii里面XXX.SII的排列顺序和SHOWROOM里面的是一致的,即排在第一个的,在SHOWROOM里面也排第一。 例10:大家可以观察迷宗MOD里面的”东邪西毒“,”中神通“的车头替换部分,在SHOWROOM里面,可以看到,它们不是全部排在一起的,而是分开的,这样可以有效避免游戏进入时跳出。 2.实体相同莫替换:在一个MOD群系中(所谓MOD群系,指的是在MOD文件夹中,包含有多个MOD,就叫做MOD群系),不能在两个或两个以上的MOD中,包含有同名称的车头实体文件,否则会让你在SHOWROOM或者车头管理里面选择此车头的时候,游戏跳出。 例11:在一个MOD文件夹里面,存在两个MOD,它们的车头实体文件夹名都是:FCOR(vehicle--truck里面),那么,当你进入游戏里的SHOWROOM,或者去买车时,选择了这台车,游戏会不顾情面地立刻跳出。 3.匹配文件莫重叠:指的是在做综合MOD时,如果要合并的两个MOD里面都含有automat文件夹,并且里面有重叠的内容,这时最好不要覆盖合并,应仍然分成两个部分,因为,虽然看似一样,但里面的具体参数不一定一样,分开的好处是游戏会自动去寻找匹配它的匹配文件。 4.引导改姓不改名:指的是只将一个要替换的车头MOD里面的AAA.SII文件名改成要被替换的那个BBB.SII文件名,而里面的所有语句均不改。 5.预览指向可更换:指的是车名可以更换,车头小图片也可以更换,具体更换的办法都有两个,对于车名更换,一个办法就是上面提到过的,通过更改XXX.SII文件里面的车名(这个方法比较直接,灵活);另一种是通过更改script-- en--local.def里面的命名;车头小图片更换的办法可以是替换法,也可以是添加法。对于替换法,就是把material--ui--truck 里面的相应小图片替换掉;添加法这样操作:在material--ui--truck里面建立一个XXX.TOBJ文件(用记事本),在里面加上: 眕     ?  /material/ui/truck/XXX.tga,前面的乱码可以从其他已存在的同类文件中取样,然后复制一个MAT文件,再改名为 XXX.MAT,用记事本打开,把里面的改为:material : "ui" { texture : "XXX.tobj" } 最后,再在车体文件的引导文件XXX.SII里面的全车预览指向那里改为:”XXX“注意:这里的”XXX“指的是你要添加车头的名字。请灵活运用。最后别忘了封装。 2.2.6.2 使用递增法应注意的问题 1.别忘了相关引导文件的注册,应将HNR第一定律牢记在心; 2.要充分应用HNR第二定律来检验文件的唯一性; 3.递增的同时,也可以局部采取替换,就是把一些质量差的车头交叉递增。 2.2.7 存在于DEF文件夹中的车体引导文件 2.2.7.1 camera(视角)讲解 2.2.7.1.1 units 展开units:(以迷宗MOD--PART5为例) 这里,重点以interior_XXX.sii(车内视角)为例,其他的请类推。 先看几个车内视角模板:(hnrran,volvo850,ayats,2004w900l) actor_interior_camera: camera.interior.hnrran { camera_offset: (-0.51, 1.5, -3.5) mouse_right_limit: -140 mouse_left_limit: 90 mouse_up_limit: 30 mouse_down_limit: -30 mouse_up_down_default: -6 uplift: 0.12 } actor_interior_camera: camera.interior.volvo850 { camera_offset: (-0.51, 1.5, 0.0) mouse_right_limit: -180 mouse_left_limit: 90 mouse_up_limit: 30 mouse_down_limit: -30 mouse_up_down_default: -4 uplift: 0.01 } actor_interior_camera: camera.interior.ayats { camera_offset: (-0.51, 1.7, -3.5) mouse_right_limit: -140 mouse_left_limit: 90 mouse_up_limit: 30 mouse_down_limit: -30 mouse_up_down_default: -6 uplift: 0.12 } actor_interior_camera: camera.interior.2004w900l { camera_offset: (-0.51, 2.522, -1.4) mouse_right_limit: -120 mouse_left_limit: 90 mouse_up_limit: 90 mouse_down_limit: -90 mouse_up_down_default: -8 uplift: 0.17 } 其中,在语句:camera_offset: (-0.51, 1.5, -3.5)中的“1.5”即为车内视角高低调节。可以看出,不同的车头,有不同的车内视角高低。 下面几句很容易理解,分别是鼠标转向角度最大值。 这个引导语句可以自己增加,编写适合每个车头的车内视角高低。 2.2.7.1.2 camera_storage.sii与车头引导文件XXX.SII的关联 camera_storage.sii文件和truck_storage.sii,traffic_storage.sii等文件一样,均为最终引导文件,凡是_storage.sii后缀的,均为最终引导文件,是筋骨文件中的核心部分。 展开camera_storage.sii: SiiNunit { @include "units/behind_rotation_basic.sii" @include "units/bumper_basic.sii" @include "units/top_basic.sii" @include "units/tv_basic.sii" @include "units/interior_volvo850.sii" @include "units/interior_freight.sii" @include "units/interior_keenworth.sii" @include "units/interior_peterbitl.sii" @include "units/interior_volvo9700.sii" @include "units/interior_ayats.sii" @include "units/interior_agressor.sii" @include "units/interior_b_mack.sii" @include "units/interior_impalatre.sii" @include "units/interior_bgressor.sii" @include "units/interior_2004w900l.sii" @include "units/interior_spr.sii" @include "units/bumper_volvo9700.sii" @include "units/bumper_ayats.sii" @include "units/behind_rotation_volvo9700.sii" @include "units/behind_rotation_ayats.sii" @include "units/behind_rotation_basic_car.sii" } 和车头引导文件一样,camera_storage.sii为以上这些文件的引导文件,以上这些文件需要注册到camera_storage.sii里面,才能生效。 请大家回顾”2.2.4 HNR黄金组合定理“,看一开始的“vehicle--truck--definition--fcol.sii:”里面的这几句: behind_camera: camera.behind.basic 车后视角指向:camera.behind.basic “ interior_camera: camera.interior.keenworth 车内视角指向:camera.interior.keenworth bumper_camera: camera.bumper.basic 保险杠视角指向:camera.bumper.basic cabin_camera: camera.cabin.basic 车顶视角指向:cabin_camera: camera.cabin.basic(这个是ALH特有的,HAULIN不具备) cabin_cam_off: (0.0, 4.2, 1.7) (必需加上这一句,否则会造成使用车顶视角错误!) top_camera: camera.top.basic 全车视角定义指向:camera.top.basic tv_camera: camera.tv.basic tv视角定义指向:camera.tv.basic” 这些语句指向的文件,就是这节上面所述的文件,当在车头文件XXX.SII里面写入了新的视角文件后,必需满足:1.在def--camera--units里面须有相关的视角文件;2.在def--camera--camera_storage.sii里面,相关的视角文件必需在此注了册。两个条件缺一不可! 相关的内饰文件的操作与此相仿,请注意interior_storage.sii,相关内饰引导文件以及车头引导文件之间的关联,当然,不要忘记最终的引导文件老大:truck_storage.sii。 并注意HNR第一定律,第二定律的应用 2.2.7.2 vehicle 参数讲解 2.2.7.2.1 sound 声效篇 先看下原版的: 再看下迷宗里面的: 请大家回过头去重新体会下:“2.2.3 HNR递增原则”“2.2.4 HNR黄金组合定理”然后再去看上述两副图。 大家可以注意到,迷宗里面的SII文件比原版里面的多,这些都是我后面加进去的声效文件,这样可以在不替换远声效文件的基础上,再增加一些新的车头声效。其中,“-ext”代表车头外部声效(车外视角),“-int”代表车头内部声效(车内视角),它们可以是同一文件,如果做得细腻一点,可以分别寻找或者录制不同的声效。比如喇叭声车内和车外的效果就不一样。 我们展开:sound0-int.sii SiiNunit { sound_group_data:“ sound.0.int” { start: .start (这些语句很好理解,分别代表相关命令的语句,比如启动的语句引导为:“.start”) stop: .stop (熄火) idle: .idle (空转) tick: .tick (运转) low_freq: .low(低速运行) high_freq: .high(高速运行) air_brake[0]: .airbrake0(汽刹) air_brake[1]: .airbrake1 air_brake[2]: .airbrake2 air_brake[3]: .airbrake3 air_brake[4]: .airbrake4 air_brake[5]: .airbrake5 motor_brake: .mbrake(电刹) horn: .horn(喇叭) change_gear: .changeg(换挡) crash_ l[0]: .crashm0(金属碰撞) crash_ l[1]: .crashm1 crash_ l[2]: .crashm2 crash_ l[3]: .crashm3 crash_ l[4]: .crashm4 crash_soft[0]: .crashso0(软体碰撞) crash_soft[1]: .crashso1 crash_soft[2]: .crashso2 crash_soft[3]: .crashso3 crash_soft[4]: .crashso4 crash_scratch[0]: .crashsc0(刮擦) crash_scratch[1]: .crashsc1 crash_scratch[2]: .crashsc2 crash_scratch[3]: .crashsc3 } sound_data: .start(引导) { name: "/sound/truck/ext/start_4.ogg"(实体文件指向) looped: false } sound_data: .stop { name: "/sound/truck/ext/stop_01.ogg"(注意音效文件要用.OGG的格式,而且要注意声道的选择,像这些音效,都要选择单声道) looped: false(循环:否) } sound_engine_data: .idle { name: "/sound/truck/ext/idle_11.ogg"(“idle_11.ogg"这个实体文件可以重命名) looped: true(循环:是) min_frequency: 0.45(低速循环次数) max_frequency: 0.65(高速循环次数) min_rpm: 100.0(低速对应转速) max_rpm: 1500.0(高速对应转速) 这些可以逐渐改变以取得最好效果。 } sound_engine_data: .tick { name: "/sound/truck/ext/tick_3b.ogg" looped: true min_frequency: 0.5 max_frequency: 1.4 min_rpm: 800.0 max_rpm: 2800.0 } sound_engine_data: .low { name: "/sound/truck/ext/low_01.ogg" looped: true min_frequency: 0.5 max_frequency: 1.5 min_rpm: 500.0 max_rpm: 2200.0 } sound_engine_data: .high { name: "/sound/truck/ext/high_02.ogg" looped: true min_frequency: 0.5 max_frequency: 1.8 min_rpm: 600.0 max_rpm: 3200.0 } sound_data: .airbrake0 { name: "/sound/truck/ext/air_05.ogg" looped: false } sound_data: .airbrake1 { name: "/sound/truck/ext/air_06.ogg" looped: false } sound_data: .airbrake2 { name: "/sound/truck/ext/air_07.ogg" looped: false } sound_data: .airbrake3 { name: "/sound/truck/ext/air_02.ogg" looped: false } sound_data: .airbrake4 { name: "/sound/truck/ext/air_01.ogg" looped: false } sound_data: .airbrake5 { name: "/sound/truck/ext/air_03.ogg" looped: false } sound_data: .changeg { name: "/sound/truck/ext/changeg1.ogg" } sound_engine_data: .mbrake { name: "/sound/truck/int/mbrake8.ogg" looped: true is_2d: true min_frequency: 0.5 max_frequency: 1.5 min_rpm: 200.0 max_rpm: 3500.0 } sound_data: .crashm0 { name: "/sound/truck/ext/crashm6.ogg" looped: false } sound_data: .crashm1 { name: "/sound/truck/ext/crashm7.ogg" looped: false } sound_data: .crashm2 { name: "/sound/truck/ext/crashm8.ogg" looped: false } sound_data: .crashm3 { name: "/sound/truck/ext/crashm3.ogg" looped: false } sound_data: .crashm4 { name: "/sound/truck/ext/crashm2.ogg" looped: false } sound_data: .crashso0 { name: "/sound/truck/ext/crashso0.ogg" looped: false } sound_data: .crashso1 { name: "/sound/truck/ext/crashso4.ogg" looped: false } sound_data: .crashso2 { name: "/sound/truck/ext/crashso3.ogg" looped: false } sound_data: .crashso3 { name: "/sound/truck/ext/crashso1.ogg" looped: false } sound_data: .crashso4 { name: "/sound/truck/ext/crashso2.ogg" looped: false } sound_data: .crashsc0 { name: "/sound/truck/ext/crashsc5.ogg" looped: true } sound_data: .crashsc1 { name: "/sound/truck/ext/crashsc4.ogg" looped: true } sound_data: .crashsc2 { name: "/sound/truck/ext/crashsc1.ogg" looped: true } sound_data: .crashsc3 { name: "/sound/truck/ext/crashsc2.ogg" looped: true } sound_data: .horn { name: "/sound/truck/ext/horn2.ogg" looped: true } } 当在车头文件XXX.SII里面写入了新的声效文件后,必需满足在def--vehicle--sound里面须有相关的声效文件。 2.2.7.2.2 chasis 颠簸篇 展开:def--vehicle--chasis,现在先展开原版的: 有:”chasis0.sii“和”police_chasis.sii“两个文件。打开”chasis0.sii“: SiiNunit { chasis_data: chasis.0 { # The air resistance and the wheel rolling resistance force constant cdrag: 1.0 ccr: 50 # The frontal area of the vehicle for the resistance force computing frontal_area: 100.0 // cfm: 0.0004 cfm: 0.0006 erp: 0.7 } } 再看下ALH豪华版V1.03B里面的,有”chasis0.sii“,”chasis1.sii“两个,很明显,是使用了递增法增加了一个额外的。 ”chasis0.sii“: SiiNunit { chasis_data: chasis.0 { # The air resistance and the wheel rolling resistance force constant cdrag: 0.4 ccr: 4 # The frontal area of the vehicle for the resistance force computing frontal_area: 100.0 // cfm: 0.0004 cfm: 0.0013 erp: 0.9} } ”chasis1.sii“: SiiNunit { chasis_data: chasis.1 { # The air resistance and the wheel rolling resistance force constant cdrag: 0.4 ccr: 4 # The frontal area of the vehicle for the resistance force computing frontal_area: 100.0 // cfm: 0.0004 cfm: 0.0013 erp: 0.9 } } 这些数字上的变化,就是V1.03B的这些介绍:“ 3.车辆的物理性能发生了质的改变,你可以体验到像开极品飞车11那样的感觉(比如开快了会“飘”,路面的颠簸,过快转弯的惯性效应(不仅仅是漂移那样简单!)等);4.极品飞车10式的碰撞,当你碰到AI车后,对方不会“粘”着你,而是像极品飞车10那样,立马“飞走”;”(http://game.ali213.net/thread-1868974-1-1.html)具体的,请自己慢慢实践来获得更加真实的效果。 当在车头文件XXX.SII里面写入了新的颠簸文件后,必需满足在def--vehicle--chasis里面须有相关的颠簸文件。 police_chasis.sii文件的一个作用是可以锁死警察,具体的可以自己去参看原版police_chasis.sii和“锁死警察.SCS这个MOD里面相关数据的区别”(锁死警察的MOD在迷宗MOD里面有收录)

2.3 实体文件解密 实体文件其实很简单的,只要你学会了下面讲解的“自动匹配文件--AUTOMAT”和“.TOBJ”,“.pmd”文件之间的关联,再配备一好用的ZM,你想做个火车头都不是问题。

预留................................................

预留................................................

预留................................................

预留................................................

预留................................................

预留................................................

预留................................................

预留................................................

预留................................................

预留................................................

不错 值得参考学习 谢谢
发新主题