腐烂国度PC版怎么改武器_武器数据修改方法教程
2014-03-29 02:01:50 作者:带刺的蔷薇
腐烂国度使用的是CE3引擎,也就是孤岛2用的引擎,虽然PAK目录结构发现变化,但是还是可以找到一些文件位置的
关于武器耐久和车辆不损及精度问题请看帖子中的回复引用
1.备份
备份目录下的gamedata.pak 改名成 gamedata.pak.bak
备份State of Decay⁄Game⁄目录下的levels文件夹
注:备份gamedata.pak之后,一定要把gamedata.pak 删除
2.下载
下载game.zip,解压至State of Decay⁄Game⁄文件夹下
PS:电脑出问题,一上传网络就卡死,而且需要重启恢复,哪位同位帮转储下
汉化版可用的game.zip在这里,点此下载
英文原版
如果你要是对文件不信任的话,可以自己解压
简单使用方法
安装Quick_BMS_GUI_Installer_V2.0beta.exe
archive file 选择要解压的PAK文件
script file 选择你下载quickbms.zip压缩包里的zip2.bms(解压出来使用)
folders --> set output folders 解压输出目录
上面3项设置完成后,点 extract 完成解压
3.修改
腐烂国度的武器配置文件都在State of Decay⁄Game⁄scripts⁄entities⁄items⁄xml⁄weapons目录下
值得注意的是有些文件名并不是游戏中物品的实际名称,比如Wooden Branch(游戏人物出生时手里拿的树枝)
他的配置文件名是meleebranch.xml,
其实只要打开meleebranch.xml查看下列行,就能知道具体是什么武器了
以assaultrifle_m4a1.xml文件为例,这是什么武器,当然是M4A1步枪了了
弹药类型
射速
装填时间
膛内允许的子弹数量
rate应该指的是射速 (感谢newiss)
bullet_chamber则是膛内允许的子弹数量,弹夹容量30,最大装弹数是30+1=31 (感谢newiss)
弹夹大小
伤害
伤害降最小距离
伤害每米衰减
问:怎么改武器的损耗度?找了半天也没有找到。一把好的武器用着用着就损坏了,真是让人郁闷。
答:看了一遍没有找到相关的词句,不过精度问题貌似这里可以解决,编译人员还贴心地加上了说明……
以M4A1为例:
距离5米处着弹点散布的最大范围(米?)
每击发一发子弹造成弹散的范围(米?)
弹散的恢复时间(秒?)
影响射击精度的最低人物移动速度
影响射击精度的最低人物移动时间
影响射击精度的最低人物转身速度
影响射击精度的最低人物转身时间 (分钟?)
各种动作姿态下的弹散乘数
跳是1.5倍
蹲是0.85倍
冲刺是1.2倍(WTF?)
正常边跑边打是不变
精度问题貌似这里可以解决,编译人员还贴心地加上了说明……
以M4A1为例:
距离5米处着弹点散布的最大范围(米?)
每击发一发子弹造成弹散的范围(米?)
弹散的恢复时间(秒?)
影响射击精度的最低人物移动速度
影响射击精度的最低人物移动时间
影响射击精度的最低人物转身速度
影响射击精度的最低人物转身时间 (分钟?)
各种动作姿态下的弹散乘数
跳是1.5倍
蹲是0.85倍
冲刺是1.2倍(WTF?)
正常边跑边打是不变
最新攻略推荐:
引用ch87819 关于武器耐久的修改
耐久是LUA脚本,CE有LUA脚本编辑功能,物品不损的语句在item.lua里面
相关语句
function Item.Server:OnHit(hit)
local explosionOnly=tonumber(self.Properties.bExplosionOnly or 0)~=0;
local hitpoints = self.Properties.HitPoints;
if (hitpoints and (hitpoints > 0)) then
local destroyed=self.item:IsDestroyed()
if (hit.type=="repair") then
self.item:OnHit(hit);
elseif ((not explosionOnly) or (hit.explosion)) then
if ((not g_gameRules:IsMultiplayer()) or g_gameRules.game:GetTeam(hit.shooterId)~=g_gameRules.game:GetTeam(self.id)) then
self.item:OnHit(hit);
if (not destroyed) then
if (hit.damage>0) then
if (g_gameRules.Server.OnTurretHit) then
g_gameRules.Server.OnTurretHit(g_gameRules, self, hit);
end
end
if (self.item:IsDestroyed()) then
if(self.FlowEvents and self.FlowEvents.Outputs.Destroyed)then
self:ActivateOutput("Destroyed",1);
end
end
end
end
end
end
end
红字部分我目测就是物品损坏的代码,
替换掉
if(self.FlowEvents and self.FlowEvents.Outputs.Destroyed)then
self:ActivateOutput("Destroyed",1);
或者删除物品估计就不会坏了
另外车辆不损在这里scripts⁄entities⁄vehicles⁄implementations⁄xml
搜damageMax=就出来各个部件的伤害上限,后面的数值多加几个0车就基本不会坏了
还有比较好的办法是
这种东西用批量替换,把数值全部变成0.0,这是伤害的公式,"bullet" multiplier就是受到子弹(这里是伤害*1000倍,因为这个是油箱的),"collision" multiplier撞击伤害*,"melee" multiplier近战伤害
这些数值改成0后,受到的伤害就全部乘以0了,测试有效,不过要做车辆不损MOD要所有车的属性都修改,太麻烦了,等苦力弄。
感谢各位专家专修改教程的完善,看来我成功达到抛砖引玉的效果了!