大改

+


第三部分  大改!

夜深了,看到此的哥们们,睡觉去吧,我明天会补全第三部分的

先贴几个别人修改好的bug武器,各位先眼馋着……

一下图片和文字摘自wglxxx的帖子



火箭炮就集中火力加伤害,别的都都是浮云。



狙击枪的爆击加成来自左轮,注意不会叠加,
这次主要加了*4的随机属性伤害,00100010000111

能耐心看到这里的朋友,都是对修改抱着巨大的期待的
下面的内容才是重点中的重点,前面的内容只是热身而已~

单纯是修改部件的编号,能带来的性能提升不是特别明显
如果想改出自己想要的枪,还要往下看

比如,你想要一把带有Pele demands a sacrifice属性的SMG
或者是嫌狙击枪的弹匣太小,想换一个大容量的弹匣
或者是想把Gonna cook somebody today属性加到另外一把枪上面
下面的内容就是关于这个的

由于昨天晚上的拿把枪我给弄丢了,今天就再找一把破烂枪来作为修改对象
同样是先备份存档,扔掉所有装备,再存档退出
下面是我买的一把烂枪,一把烂的不能再烂的枪


同样先把配件的编号都调整到5号
变成下面的样子,除了伤害值没有大幅提升之外,其余的属性都大幅提升
连后坐力也减小了



这把枪没有瞄准镜,下面我们就给他安一个
下面是这把枪的代码


看到gd_weap_patrol_smg.Sight.sight_none.这个了吧,没有瞄准镜
我们找一个狙击步枪的最好的瞄准镜来安上去
在此提供编码一个:gd_weap_sniper_rifle.Sight.sight5.
用gd_weap_sniper_rifle.Sight.sight5.去替换gd_weap_patrol_smg.Sight.sight_none.
替换后的结果如图


这个时候,如果你保存,尝试进入游戏的话,你会发现,存档压根读不出来

这就牵扯到另外一个问题了
就是gd_weap_sniper_rifle.Sight.sight5.的字符串长度问题
gd_weap_patrol_smg.Sight.sight_none.明显是要比gd_weap_sniper_rifle.Sight.sight5.长的

仔细观察存档,就会发现,每一个“gd”之前,都会有三个“.”,三个点之前,会有一个乱七八糟的符号,或者是字母之类的东西
如图,高亮显示的就是这个字符



这个字符的作用就是,记录从“gd”到“.”,包括“.”的长度
如果长度不一致,那么存档就是损坏的


UE中是以16个字节为一行,gd_weap_sniper_rifle.Sight.sight5.占据了两行零2个字符,按每行16个字符来算,应该是16×2+2=34个字符
请看图

而gd_weap_patrol_smg.Sight.sight_none.则要占据2行零4个字符,也就是16×2+4=36个字符


这时,我们就要修改这个记录字符串长度的东西了

gd_weap_sniper_rifle.Sight.sight5.长度是34,换算成16进制,则是22,将画红色圆圈的“24”改为“22”,再保存,就可以进入游戏了~

修改成功之后,你会发现下图所示的东西

多了一个狙击步枪用的狙击镜~4.3倍的放大

以上的就是原理了~

下面尝试着去添加一些特殊的属性
比如说Pele demands a sacrifice的属性,超大范围火焰伤害

先解释一下红字隐藏属性的工作方式

大家都知道,游戏中一些枪支的属性栏中有红色的字体标示的属性,这些属性一般都不错
但是,经过大量的实验发现,就算是属性栏中没有红色的字体,也可以获得红色字体带来的特殊属性
红字只是由武器的Title带来,这把枪的Title如下:gd_weap_patrol_smg.Title.Title__SMG.可以看出,没有任何特殊的地方,也就没有红字了
而实际的效果还是由gd_weap_patrol_smg.acc.acc_none.这一行来决定


我们用gd_weap_sniper_rifle.acc.acc2_Maliwan_Volcano_Incendiary.,也就是火山狙击步枪的特殊属性(Pele demands a sacrifice的属性,超大范围火焰伤害)来加到这把枪上面

直接用gd_weap_sniper_rifle.acc.acc2_Maliwan_Volcano_Incendiary.去替换gd_weap_patrol_smg.acc.acc_none.
当然不要忘记修改字符串的长度标记符
gd_weap_sniper_rifle.acc.acc2_Maliwan_Volcano_Incendiary.长度换算成16进制之后是39

如果修改成功,就会出现下面的这个东西~


开几枪试试,效果很是明显,如果单单是x4火焰伤害的话,绝对没有这么明显的效果,看来还是Pele demands a sacrifice的属性起了作用的


下面尝试着更换一些特殊的部件

目前收集到的比较好的东西,如下
mag  gd_weap_support_machinegun.mag.mag5.,机枪的弹匣,高容量,同时能提升一些伤害
barrel  gd_weap_repeater_pistol.UniqueParts.KromsSidearm_barrel5.,特殊枪管,开镜之后可以3连发
sight  gd_weap_sniper_rifle.Sight.sight5_Atlas_Cyclops.,特殊狙击镜,超大,个人不是特别喜欢
acc  gd_weap_sniper_rifle.acc.acc2_Maliwan_Volcano_Incendiary.火山狙击步枪的火焰伤害
材料1  gd_weap_repeater_pistol.UniqueParts.KromsSidearm_Material.如果和第二条里面的特殊枪管配合的话,能获得很高的伤害
材料2  gd_weap_shared_materialparts.ManufacturerMaterials.Material_Maliwan_3.Maliwan公司的3号材料,可以使伤害得到有效的提升,同时可以把强身改为蓝色外观
Prefix(前缀)  gd_weap_rocket_launcher.Prefix.Prefix_Quality3_Colossal,可以提高伤害的前缀
或者是      gd_weap_sniper_rifle.Prefix.Prefix_Quality3_Fearsome.,也能提高伤害,但是具体这两个前缀哪个加的伤害比较高,目前我还没有试验过
Title(武器名字)  gd_weap_rocket_launcher.Title.Title_Damage1_Destructor.,明显提高伤害
还找到了2个回复弹药的Title,目前不知道是否可用  gd_weap_repeater_pistol.Title.TitleM_Vladof1_Rebel:AttributePresentationDefinition_8.(Never stop shooting!红字属性)
gd_weap_repeater_pistol.Title.TitleM_Tediore1_Protector:AttributePresentationDefinition_7.(Ammo is no longer an issue红字属性)


现在,把gd_weap_sniper_rifle.Prefix.Prefix_Quality3_Fearsome.的前缀加入这把枪之中


效果不是特别明显,伤害提高了2点

下面换一个可以加伤害的Title
gd_weap_rocket_launcher.Title.Title_Damage1_Destructor.
伤害又增加了1,提升不是很大,可能是因为装备等级太低了吧


下面开始修改等级
每一把武器或者是装备的最后,都有一个记录武器等级的地方,如图

两个红圈标示的
第一个红圈“00” 标示等级,可以修改的数字是0-5
往后查位,第四位“01”,标记的是在装备栏中的位置,可修改的数值是1-4,如果你只有3个装备栏,则是1-3,看情况而定


现在把“01”改为“03”,看看效果

效果出现了,需要等级34,伤害一跃成为119,还算是很可以的SMG了~

从目前的效果来看,仅仅是更换了前缀和Title,就能达到这样的效果,算是已经很可观了
如果可以更换个高伤害的枪管,加伤害的弹匣,就更厉害了

现在将gd_weap_support_machinegun.mag.mag5.换上,取得更高的弹匣容量
效果如下

提高了一些伤害和弹匣容量

>
到这里可以看出,组合一把好武器的要点是(by:wglxxx):
1:要混合使用各个类型武器的优势parts。
2:适当使用UniqueParts,这类parts有非常丰富的性能定义。
3:不带后缀的parts(我叫他标准parts,如body5),一般来说后面数字越大,性能越好,而带后缀的通常具有特殊效果,可善加利用。

遇到的问题是如何找到parts的名称和如何确定UniqueParts,UniqueParts在save文件里面的定义和普通parts的不一样,如果没有按规定写,出来的一定是废物。
解决方法是看 游戏目录下的..WillowGameLocalizationINT 和 游戏目录下的..WillowGameLocalizationESN 里面的 gd_weapxx 文件 (参照沸腾金属的贴,以下简称原贴)
里面有各个parts的名字和parts对武器名称(包括出现对应红字说明)的影响的定义,前者对区别UniqueParts和普通parts十分有用。
而我推荐用..WillowGameCookedPCPackagesGameDataWeapons 下面的文件,这些2进制文件按照武器类型(超出大家在游戏中认识的种类)分别定义了武器及其各个部分parts的名字,属性和行为,
除了名字以外,其他属性等在文件的下半部定义,具体内容还在研究,举例来说,如果要知道body能取那些parts名,只要以body搜索对应武器类型文件,以Body开头,Body_PartList结束的
中间那一段,就是parts列表,可以看出,有很多武器类型的parts是没有4号或者5号配件的,不足的是这些文件里不会告诉你哪些是UniqueParts。

理解以上这些,你可以动手实现附件的武器,再有就是一些对原贴的补充说明或者说注意点。
1:属性牵制的问题,由于武器的组合逻辑还不清楚,目前试验偏向于原贴的说法,理由可以从a,b形例子看出,弹夹容量不是确定的,而且在别的火箭炮里用support_machinegun.mag.mag5,
成功造出60弹夹容量。(对于弹夹比较特别的是gd_weap_turret_machine_gun,既回旋机枪,他没有弹夹parts,可能指是大兵丢出来的那个)
2:附加属性伤害的问题,对原贴说明的补充是,属性伤害基本来自与acc,但是各个武器种类对acc的定义并不相同,有些腐蚀属性是acc3_Corrosive,有些则不是,就算同名,几率倍数(未考证)
也不同,至少现在使用的gd_weap_rocket_launcher.acc.accX_XXXXXXXX在多种武器上能表现*4数字。 
3:武器属性说明的问题,属性说明可以大于四个,证据在原贴的神狙和本贴的例子里都能看出,原贴中暗金的3级狙有红字属性,所以弹夹+16的属性看不到,而48级神狙时,
红字遗憾的消失,遗憾的变为紫色武器,弹夹+16属性显示出来,而2武器都为21弹夹,如果前者弹夹属性丢失,必为5发,而其看神狙的价格就知道,有不少属性是被埋没的。本例则经过试验证实,
a形不开镜为单发,开镜为3连发,符合papa krom手枪的附加属性,(画面也显示了该手枪3管枪筒的样子)但红字未显示,b形任何时候都为3连发,但 300% XXXX 红字未显示。
4:高级武器,增加武器的级别,不能改变武器的评价(颜色),目前所知能提升伤害,使用级别限制和售价。
5:原贴所示武器名称改变说明和出现红字的说明,能立刻反映在游戏的武器说明中,2行以上红字的未凑出,估计有这个可能,不过效果目前未证实,至少在尝试为20发以上火箭炮附加全弹发射(恐怖散弹枪的 10000% XXXX)
和自动狙击(Sniper Killer XXXX)时未能成功。(原先的想法是使用全弹发射title,换用单发大伤害枪管使伤害加到2,3千,为之命名蓝波火箭炮~~)
6:不推荐新建武器然后copy到存档中,因为牵涉到背包武器数,现存弹数等问题,对应字节可能需要修改,位置已知但平白增加修改步骤,还是在原武器基础上改比较好。
7:请严格按照原贴所示定义每个武器部分,不能漏掉,而且特别要检查字节数,如果不对游戏会报错退出,如果不想用对应parts,一般都有类似acc_none这样的parts(对于材料这样没有none的,用00 05 00 00 00 4e 6e 6f 65 既.....none),
对标准武器类型不可重复每个部分,就是说不能有类似2根枪管。
8:由于搭配部件不合理,比如火箭炮使用左轮手枪的body,可能游戏画面中武器没法完整描绘,无需担心,通常不太会影响武器属性,但是如果用了没有的parts或者UniqueParts没有写对,那么通常会被系统认为是
不完整武器,属性废到一塌糊涂。
9:gd_weap_shared_materialparts.upk 和 gd_weap_names_shared.upk ,里面是公共材料和名称,内容千奇百怪,而且用法和别的parts不同,但有些已知的可以写到武器中如gd_weap_shared_materialparts.ManufacturerMaterials.Material_Maliwan_3。
10:不可忽略prefix和title的作用,请根据武器商和英文意义使用,效果相当可观。
11:定制武器gd_customweapons,虽然经常捡到(在savefile中出现)这类武器,但还不能有效组装,包括Action之类没有经验的定义,由于对所知还有疑问,暂时保留。
12:..WillowGameCookedPCPackagesItems 里还有道具的定义,习惯修改武器后,道具的修改也变得容易,改之等于得到不死身,三思而后行。说等于没说,不说等于说了,阿弥陀佛~~



至此,此枪的修改算是告一段落了
什么补充的话,我会在这个帖子后面加上去的
有问题可以直接PM我,或者加我QQ:576363142