使用G.E.C.K修改、创建武器初级教程(第三节编辑中)
在官方MOD编辑器G.E.C.K发布后,自建MOD的风气渐兴,相关讨论和心得共享比比皆是。但在辐射3,武器的建立较之上古卷轴4有了一定变化。比之上古4中较为简单的近战武器,辐射3的多种枪械具有更复杂的选项与参数设定,即使是一个简单的效果,也往往要透过重重包装与马甲才能实现。这一点令不少新手玩家望而却步,也令部分上古4过来的MOD玩家不知从何下手。在翻过本区精华后,我没有找到关于使用G.E.C.K修改武器的专门帖子,故此新开一帖,稍做讲解,也欢迎各位G.E.C.K的MOD高手光临指正。此初级教程预计分为四节,分别是:
1、游戏原有武器的修改。
2、新建武器与导入模型。
3、深入武器特效的修改。
4、将实物放置到游戏中。
以下便请开始我们的G.E.C.K之旅。
第一节:游戏原有武器的修改
首先我们要打开G.E.C.K
这个软件界面对于从上古4过来的CS高手而言,应该是相当的熟悉与亲切。
左边的是Object Window对象窗口,是G.E.C.K最主要的编辑窗口,我们以后的编辑都是基于这个窗口的。
右边的分别是Render Window和Cell View,是用于浏览与编辑游戏世界布局所用的,在我们的这个教程中相对作用不大,我们将会在第四节讲到它们的作用。
我们制作一个新的MOD,首先要载入游戏相关的数据,通过File->Data来打开。
然后选择需要载入的文件。
FallOut3.esm是游戏的主文件,无论选不选择都会自动载入。如果是完全新建一个MOD,那除了FallOut3.esm外什么也不选,然后“Ok”。
如果是要修改一个旧有的MOD,那么就要选上这个MOD的ESP文件,而且一定要单击“Set as Active File”激活按键,使文件变成Active File已激活状态,这样才能将修改过的数据保存到这个MOD里。
数据全部载入结束后,我们就可以进行编辑了。
找到需要修改的武器,比如这里选择了导弹发射器。在右键弹出菜单中选择“Edit”编辑。
弹出了武器的具体参数信息编辑窗口。
我们可以直接就在这个窗口修改,但这样做会改变游戏里的所有此类武器。所以为了保证修改的武器只为玩家所用,我们最好复制这个武器的信息,再去修改复制品。
最简单的复制方式就是修改一下物品的ID,然后点“Ok”。此时就会有提示问你要不要创建一个新的物品,使用刚才你修改的ID,当然选择“是”。
然后我们就见到多了一个新的导弹发射器。
以后我们就可以去编辑这个新的物品,不会影响到游戏原有武器。
同上打开这个武器的编辑窗口。我们将说一下常用的参数与选项。
这些是物品的大致信息。
ID是这个物品的标识,游戏中不可出现两个ID相同的物品。在其它地方要调用这个物品时,也是通过ID实现的。
Name则是这个物品在游戏中你能看到的名字,可以重名,你也可以自己起个拉风的名字。
script是物品的脚本特效,辐射3中的武器几乎都没有使用脚本来实现的效果,所以和下面的Object Effect我们都不做细讲。
Ammunition是这件武器所使用的子弹,在这里是AmmoMissile导弹,也可以更改成其它弹药。当然这样做就不是导弹发射器了。
Clip Rounds是弹夹容量,在这里导弹发射器是1,你也可以改成更高的数字,这样就是一支连发导弹发射器了。
skill是这件武器对应的技能,这里导弹发射器是Big Guns大枪,如果将它改成Small Guns小枪,那么这个导弹发射器就只会受到小枪技能的加成和影响。
Damage per second是武器每秒造成的伤害,这里只是个预览值,随着下面参数的变动而自行计算,并不能在这里修改。
Repair item list可供修理物品列表,这里决定着这件武器能用什么东西来修理。如果觉得导弹发射器少见,可以改成用突击步枪甚至是10毫米手枪来修理。你可以直接在下拉列表中选另外一个选项,也可以更进一步的去修改RepairMissileLauncher里面包含的物品,但这已不属于这里的范畴。
Equip Type是武器所造成伤害的类型,如果你在这里改成能量武器伤害EnergyWeapons,那么武器射出的子弹将会失去实弹打击的物理效果,同时也将无视对象的护甲防御。
在Flags这个方框里的,则是武器在游戏中的一些物品状态,我们只捡重要与常见的说。
NPCs Use AmmoNPC使用的话消耗子弹。在游戏中NPC使用自己的默认枪械时是不消耗弹药的,额外给予的武器则消耗弹药。勾上这个的话,队友就会化身成烧钱机器,即使是默认武器也同样消耗弹药。
Automatic勾选上这个,则武器变成自动连发武器。但建议不要为了一时爽快而勾选,尤其是双手能量武器。游戏里没有双手连发的能量武器,所以也没做对应的上弹动画,如果选了这个,上弹时将十分地愚蠢。
Can't drop不会掉落。如果选上了,并将此武器放在NPC身上,则NPC死亡后你无法在他身上见到此武器。
Quest Item任务物品,选上这个后此武器将不能从身上丢弃。
Playable玩家可以使用。一定要勾选,否则你将不能捡起此武器。
Player only只有玩家可以使用。勾选后NPC就不能拿起此武器,如果要给队友使用的话就不要选。
在信息编辑窗口下方是三个选项卡,“Game Data”游戏中数据、“Art and Sound”动画声音和“Rumble”声音细节。修改现有武器的话,重点在第一项。
Game Data是武器的基本参数,其中有武器伤害这些重要的数据。
Weight重量。
Health物品的耐久值,越大物品损伤的速度越慢。
Reach近战武器的攻击距离,远程枪械不用理会。
Fire Rate火力,默认是1,即每秒只发射一颗子弹。这个是自动武器的关键,修改成自动除了在上方要勾选Automatic外,还要在这里设置每秒火力,不然就算自动了也郁闷。参照其它自动武器,这里建议改为8发比较适合。
Spread子弹散射
Min Spread子弹最小散射
这两项决定着武器子弹乱飘的程度,如果都改成0,并且相关枪械技能满百后,就可以做到指哪打哪,子弹完全命中准心目标了。
Sight FOV瞄准视野缩放,这个数字越小,瞄准时的视野放大倍数就越高。其实狙击枪类的瞄准镜模式,就是在这里加大视野放大倍数后,再调用瞄准镜模型将视野截一块圆形的区域出来加工而已。调节这里之后就可以获得和加了瞄准镜一样的实质效果。
以下两图分别是设为45与20时的瞄准视野
Sight FOV=45:
Sight FOV=20:
Sight Usage
Crt Dmg出暴击时额外增加的伤害,狙击枪类一般都是暴击伤害翻倍。
Aim Arc
Value物品价值,就是不被商人剥削时的无税成本价。
Damage单发子弹造成的伤害,武器最重要的属性之一。和Fire Rate火力相乘后即得到Damage per second中显示的每秒伤害。
Ammo Use每发消耗子弹数。
Projectiles射击时每发渲染几条子弹轨迹,散弹枪类武器的参数,等于将每击伤害均匀分配到所有子弹轨迹上。如果射击时有某道轨迹没有命中,则扣除此轨迹相应的伤害。
Base VATS To-Hit ChanceV模式下一击毙命的几率。
Crit % Mult暴击率。
Semi-Automatic Fire Delay Min自动武器最小火力延迟。
Semi-Automatic Fire Delay Max自动武器最大火力延迟。
这两项似乎是设置自动武器两发子弹之间的时间延迟,对于每秒射速固定了的自动武器似乎看不出什么效果。不过设小的话上方的每秒伤害值会大幅增长。
Crit Effect暴击时的特效,凯旋枪和高斯能击倒敌人的奥秘就在于此。勾选后面的on Death则效果只在杀死敌人时才出现。
Resist抗性,决定这件武器被哪种抗性所克制。
On Hit击中时的效果,有只爆裂、只断裂、两者皆有和没有效果四种选择,看个人喜好的血腥程度设定。
Range射程,数字越大则能击中越远的敌人。普通步枪最大射程在1000~1024上下,狙击枪则在2000~3000上下。
Action PointsV模式下每击消耗的AP行动点数,数字越小则消耗越小,如果不勾选则不消耗AP。
当修改好一件武器后,可以在这里查看物品的代码。
将鼠标放在物品标签上,就会弹出名称信息,最后括号内的数字既是物品代码。此处因为只加载了一个MOD,所以是“01”开头,在实际游戏中,要根据载入MOD的数量和顺序,将这个数字改成MOD的序号。
修改好后的MOD可以如下图步骤进行保存。
http://img1.chnren.com/2009/02/09/33765967127875.jpg
新MOD则起个名字。
以后要调用则使用FOMM或游戏自带的FalloutLauncher载入。 第二节:新建武器与导入模型
我们已在上一节说过了游戏原有武器的修改,那么这一节我们将深入一步,将一件全新的武器添加进游戏中。
在添加之前,我们要先准备一些素材,包括:
新的武器模型,全新武器的话这个是必备的,或者从其它格式兼容的游戏里剥NIF格式的模型出来,或用3DMax等3D建模软件自建,但从何得来并不是本篇要讨论的重点。
武器开火的声音文件,同上。
武器相关的参数资料,不是必要,但越完备越好。
准备好素材后,我们用同上一节的方法打开G.E.C.K。
即使是全新新建武器,我们也可以用上一节复制原有武器的方式来获得一个新的武器以便进行修改,除非你已经有了新武器极其详尽的信息资料,可以直接白手起家。
获得新武器后,Game Data一栏中的编辑同上一节,这节的重点将在于导入模型与其它素材。
我们打开Art and Sound选项卡,这里就是模型和声音这些素材编辑的地方。
最上面的是武器图标,如果已有现成制好的图标图片的话,直接找到文件选上就可以了。
如果想用游戏原有的图标,而又不想将BSA包解压的话,有一个小技巧。先找到想要的图标所在的目录,然后在游戏的Datatexturesinterfaceicons下的pipboyimagesweapons目录和PipboyImages_smallWeapons_small目录下建立一个空白文本文件,改名为图标文件的名字,再选中它。因为这个实际是空白文件,游戏就会自动调用BSA包里的同名文件了。
接着,就是重点之一,导入模型。
G.E.C.K相对CS的一个进步,就是整合了nifskope的部分功能,可以实时地预览模型,并能有限度地调整贴图质材。
辐射3和上古4模型调用的一个不同之处,就是添加了第一人称模型。这是一种节省资源的方法,第三人称模型使用的是低精度贴图,而第一人称模型使用的则是局部高精度贴图,这样做可以大幅减少贴图质材所占用的显存空间。但这样就造成了一定使用程度上的麻烦,如图,两种模型调用的贴图不同:
不过对于大多数现成的非官方模型来说,都是直接使用的高精度贴图,这样就不用再单独为两种模型设定贴图。以后的讲解也基于这点进行,如果真有人需要导入类官方那种不同人称下贴图不同的模型,那时再细说。
第一人称模型需要套一层马甲才能在信息编辑窗口中被调用,这个马甲位于World Objects世界对象的Static静态对象分类下。
我们新建一个“1stPersonGuassSniper”对象,然后右键的编辑窗口中选择模型,和信息编辑窗口中的原始模型导入一样。
之后我们就可以在信息编辑窗口的“1stPerson Model Object”下拉选择框中找到并使用这个第一人称模型。
如果准备材料中还有声音素材,我们还可以导入新的武器开火声。
同模型一样,声音也要加套一重马甲。
先在Miscellaneous下找到Sound条目,其下就是包装过的声音。
我们新建一个声音包,或者用一个近似的种类复制。
里面选项比较简单,主要就是选择wav格式的音频文件。其它还需要注意的,就是武器开火声通常还分2D和3D,2D声音在选择完文件后,还要把2D Radius和360 LFE这两项勾上。
建好后就可以在声音选项处调用了
对于武器而言,选择子弹投射物也是比较重要的。
在“Projectile”下拉选框中,可以找到游戏内置的子弹与投射物包,里面还包括了手雷、地雷、导弹这些爆炸物。如果嫌手雷一个个扔得累或布地雷太麻烦,可以造一把雷枪,将子弹设成雷就可以了。
如果对于游戏原有子弹类型不满意,而自己也有子弹射出轨迹模型的,也可以自建一个包。
子弹与投射物的马甲在Special Effects的Projectile条目下。
编辑一个包,其中内容如下:
一般需要用到的选项有以下
Projectile Type投射物的类型,有Missile子弹、投射物,Lobber球体,Beam能量光束,Flame火焰,共四种选择。
Art file子弹的动画,按Edit选择模型。
Muzzle Flash发射时的枪口特效,Light选择闪光类型,再按Edit选择喷射模型,生成诸如喷火、电光这一类的效果。Duration则是效果持续的时间。
Explosion爆炸效果,同样可以在Special Effects的Explosion条目下自建。
Speed子弹速度。
Gravity受引力作用影响程度。
Range射程。
Impact Force冲击力大小。
Tracer ChangeV模式中用子弹时间动画模式描述子弹飞行轨迹的几率,调高以后就可以经常看到子弹飞出射入敌人身体的特写镜头。
Fade Duration轨迹渲染保持延时。
回到武器信息编辑窗,在Projectile下还有一些下拉选框。
Reload Anim上弹动画
Attack Anim攻击动画
Animation Type动画类型
这三项决定着武器重新上弹的动作,要根据武器的具体种类细分。
在这个选项卡最下方,是狙击类武器的瞄准镜模型导入的地方。
点击Has Scope后,选择瞄准镜模型即可。
最后,在武器信息编辑窗体中,下方选项还有最后一个Rumble选项卡,是一些零碎信息,如果是用现成武器来修改的,可以不用搭理太多。主要就是Pattern要选择一下。
第三节:深入武器特效的修改
武器的特效,我们可以看作是上古卷轴世界中的附魔,两者的意义是等同的。而熟悉制作上古MOD的朋友,对于辐射的武器特效也应该能很快上手。
我们打开武器信息编辑窗口,和武器攻击特效有关的地方有两处。
Object Effect是武器子弹击中时产生的效果。
Crit Effect是打出暴击时产生的效果。
(未完待续) 第四节:将实物放置到游戏中。 因时间与上传附件大小限制问题,故只能每隔一段时间更新一次,请有兴趣的朋友耐心等待。 占个前排位置~~学习 支持支持,这是好帖子 我也来学习 能查询代码吗? 前排学习.......
支持下LZ 请标明原创或转帖,以便奖励。 占个前排位置~~学习学习~~准备自己做点近战武器
另:PM11楼的。。查询代码下个FO3Edit插件就行了。。 原帖由 nweiss 于 2009-2-9 13:13:00 发表
请标明原创或转帖,以便奖励。
BZ比我们还急````````````````` 支持啊!
本来还想把单兵离子炮修改成别的外形呢。一直不知道怎么下手。 。。。太厉害了这帖
等着看那 支持冰山大大~刚想学,就出教程了~昨晚自己傻傻的弄到5点多才睡觉,就为弄个击飞特效,现在我终于弄出来了哈~击飞加燃烧非常拉风~继续学习~
冰山大大~发现个问题~我的击飞火焰消防栓好像只能我自己使用才有特效吖~如果是队友是有就没有击飞,但是有火焰的,而且文件还要重新编写,这是什么问题吖?
ScriptName 3NLKitSE
ref mySelf
BEGIN ScriptEffectStart
set mySelf to getSelf
player.pushActorAway mySelf 15
END
这个脚本的命令是不是只能玩家生效吖?player.pushActorAway mySelf 15 我知道冰山大大这阵子很忙,但是能不能帮我看看问题所在呢? 这才是我梦寐以求要看的好贴 看到此贴只觉得浑身上下120分舒畅,想我习武多年未有大成,今日见此贴任督2脉立时贯通,先天后天之气合二为一,胸中内息澎湃,不由自主大喝一声“顶!!!” 真不知说什么好了!太感动了!哈哈!好快哦,前天还听你说等你发布。今天就奉上了。谢谢!谢谢!谢谢了!!! 这个必须加精。 留名方便查询 支持冰山大大~刚想学,就出教程了~昨晚自己傻傻的弄到5点多才睡觉,就为弄个击飞特效,现在我终于弄出来了哈~击飞加燃烧非常拉风~继续学习~
冰山大大~发现个问题~我的击飞火焰消防栓好像只能我自己使用才有特效吖~如果是队友是有就没有击飞,但是有火焰的,而且文件还要重新编写,这是什么问题吖?
ScriptName 3NLKitSE
ref mySelf
BEGIN ScriptEffectStart
set mySelf to getSelf
player.pushActorAway mySelf 15
END
这个脚本的命令是不是只能玩家生效吖?player.pushActorAway mySelf 15 我知道冰山大大这阵子很忙,但是能不能帮我看看问题所在呢?
2连发~ 我連geck也開不了 原帖由 km43827a 于 2009-2-9 17:36:00 发表
支持冰山大大~刚想学,就出教程了~昨晚自己傻傻的弄到5点多才睡觉,就为弄个击飞特效,现在我终于弄出来了哈~击飞加燃烧非常拉风~继续学习~
冰山大大~发现个问题~我的击飞火焰消防栓好像只能我自己使用才有特效吖~如......
我估计这段代码确实是只对玩家有效,它的含义就是令对象强制离开玩家指定的距离,是用player引出来的,所以导致队友使用无效。
现在我虽然看得懂语法,但还不知道游戏内的函数和关键字,还不清楚NPC这个类下有没有同样的pushActorAway方法,或者其他相关对象提供此方法。如果有的话,直接替换player成NPC相关关键字就可以。如果能破解游戏查看其内部函数就好了,但破解不是我所擅长的。 回km43827a:
在Wiki上我查到了pushActorAway的语法,
Syntax
PushActorAway TargetREF iForce
Examples
BuddyRef.PushActorAway FredRef 10
Fred would move away from Buddy with a havok force of 10.
Notes
iForce is an integer value.
现在要确定的是,ActorREF这个参数,能放什么对象进去。现在还在努力翻Wiki中,要找到与NPC或当前持用者相关的对象。 试着替换游戏里的武器时碰到两个问题:一个是第一人称的武器模型跟声音文件不知道怎么导入,另外就是如果借用别的mod的模型,必须要同时加载esp,不然进游戏里看不到武器,不知啥原因,在下才疏学浅,请明白的朋友说下。 感谢冰山大大,狂顶,我顶 原帖由 seabo 于 2009-2-9 19:37:00 发表
试着替换游戏里的武器时碰到两个问题:一个是第一人称的武器模型跟声音文件不知道怎么导入,另外就是如果借用别的mod的模型,必须要同时加载esp,不然进游戏里看不到武器,不知啥原因,在下才疏学浅,请明白的朋友说下。
第一人称模型要加套至少一重马甲才能在武器信息界面里调用,同样声音文件也要套马甲,所以GECK使用上不如CS直观。这点我会在此教程第二和第三节具体说到。 回km43827a:
你将脚本代码替换成
ScriptName 3NLKitSE
ref mySelf
BEGIN ScriptEffectStart
set mySelf to getSelf
GetDestructionStage.pushActorAway mySelf 15
END
试试看,GetDestructionStage方法的作用是找到当前攻击自己的对象,理论上任何人都适用,即使武器拿到敌人手里也起作用。如果这个还不行,那我也就没辙了,需要更精通脚本的高手来指点。 原来如此,期待更新,赶紧滴。