ET 发表于 2013-9-23 15:02

抛砖引玉 修改游戏中各项武器数据(大师已现身,期待更多专家出现)

本帖最后由 qinerami520 于 2013-10-2 15:34 编辑

腐烂国度使用的是CE3引擎,也就是孤岛2用的引擎,虽然PAK目录结构发现变化,但是还是可以找到一些文件位置的

关于武器耐久和车辆不损及精度问题请看帖子中的回复引用
**** Hidden Message *****
1.备份

备份目录下的gamedata.pak 改名成 gamedata.pak.bak
备份State of Decay\Game\目录下的levels文件夹
注:备份gamedata.pak之后,一定要把gamedata.pak 删除

2.下载

下载game.zip,解压至State of Decay\Game\文件夹下(感谢鬼畜thexshadow)

PS:电脑出问题,一上传网络就卡死,而且需要重启恢复,哪位同位帮转储下

汉化版可用的game.zip在这里,直接下载后,http://pan.baidu.com/share/link?shareid=3752611305&uk=1879054740   感谢 ch87819

英文原版
http://pan.baidu.com/share/link?shareid=3540297715&uk=2838814640(感谢2636315131 )

http://www.mediafire.com/download/c44t34uti0oc48s/Game.zip

如果你要是对文件不信任的话,可以自己解压(感谢鬼畜thexshadow,感谢zjslqshqz)

http://bbs.3dmgame.com/thread-4038342-1-1.htmlquickbms.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查看下列行,就能知道具体是什么武器了

<param name="display_name"value="Wooden Branch" />

-------------------------------------------------------------------------------------------------

以assaultrifle_m4a1.xml文件为例,这是什么武器,当然是M4A1步枪了了

<param name="ammo_type" value="bullet_556mm"/> 弹药类型

---------------------------------------------------------------------------------------------------------------------
<param name="rate" value="750"/> 射速

<param name="reload_time" value="1.2"/>装填时间

<param name="bullet_chamber" value="1"/> 膛内允许的子弹数量

rate应该指的是射速 (感谢newiss)

bullet_chamber则是膛内允许的子弹数量,弹夹容量30,最大装弹数是30+1=31 (感谢newiss)
----------------------------------------------------------------------------------------------------------------------

<param name="clip_size" value="30"/>弹夹大小

<param name="damage" value="200"/>伤害

<param name="damage_drop_min_distance" value="26"/>伤害降最小距离

<param name="damage_drop_per_meter" value="10.0"/> 伤害每米衰减

引用xm1988227 的回复关于精度的修改
intoe3 发表于 2013-9-24 09:41 http://bbs.3dmgame.com/static/image/common/back.gif
怎么改武器的损耗度?找了半天也没有找到。一把好的武器用着用着就损坏了,真是让人郁闷…… ...

看了一遍没有找到相关的词句,不过精度问题貌似这里可以解决,编译人员还贴心地加上了说明……
以M4A1为例:

   <!-- If you don't want your gun to be super-accurate this adds some spread -->
            <spread>
                <param name="min" value="0.0"/>
                <param name="max" value="0.4"/> <!-- max radius at 5m --> 距离5米处着弹点散布的最大范围(米?)
                <param name="attack" value="0.1"/> <!-- spread per shot --> 每击发一发子弹造成弹散的范围(米?)
                <param name="decay" value="0.85"/> <!-- time from max to min --> 弹散的恢复时间(秒?)

                <!-- movement modifier -->
                <param name="speed_threshold" value="1.0"/> <!-- movement speed over this adds spread --> 影响射击精度的最低人物移动速度
                <param name="speed_m" value="0.02"/> <!-- movement times this is added to spread --> 影响射击精度的最低人物移动时间

                <param name="rotation_threshold" value="1.0"/> <!-- rotation over this add spread --> 影响射击精度的最低人物转身速度
                <param name="rotation_m" value="0.01"/> <!-- rotation times this is added to spread --> 影响射击精度的最低人物转身时间 (分钟?)

                <!-- multipliers --> 各种动作姿态下的弹散乘数
                <param name="spread_jump_m"         value="1.5" /> 跳是1.5倍
                <param name="spread_crouch_m"       value="0.85" /> 蹲是0.85倍
                <param name="spread_sprint_m"       value="1.2" /> 冲刺是1.2倍(WTF?)
                <param name="spread_runandgun_m"    value="1.0" /> 正常边跑边打是不变
            </spread>


银翼蓝天 发表于 2013-9-24 09:00 http://bbs.3dmgame.com/static/image/common/back.gif
精确度 怎么改的啊。。。。。。。。。。。。

噢?才发现回答了这个问题,两连了!我在上班没法测试,这位兄弟有空试试看吧


精度问题貌似这里可以解决,编译人员还贴心地加上了说明……

以M4A1为例:

   <!-- If you don't want your gun to be super-accurate this adds some spread -->
            <spread>
                <param name="min" value="0.0"/>
                <param name="max" value="0.4"/> <!-- max radius at 5m --> 距离5米处着弹点散布的最大范围(米?)
                <param name="attack" value="0.1"/> <!-- spread per shot --> 每击发一发子弹造成弹散的范围(米?)
                <param name="decay" value="0.85"/> <!-- time from max to min --> 弹散的恢复时间(秒?)

                <!-- movement modifier -->
                <param name="speed_threshold" value="1.0"/> <!-- movement speed over this adds spread --> 影响射击精度的最低人物移动速度
                <param name="speed_m" value="0.02"/> <!-- movement times this is added to spread --> 影响射击精度的最低人物移动时间

                <param name="rotation_threshold" value="1.0"/> <!-- rotation over this add spread --> 影响射击精度的最低人物转身速度
                <param name="rotation_m" value="0.01"/> <!-- rotation times this is added to spread --> 影响射击精度的最低人物转身时间 (分钟?)

                <!-- multipliers --> 各种动作姿态下的弹散乘数
                <param name="spread_jump_m"         value="1.5" /> 跳是1.5倍
                <param name="spread_crouch_m"       value="0.85" /> 蹲是0.85倍
                <param name="spread_sprint_m"       value="1.2" /> 冲刺是1.2倍(WTF?)
                <param name="spread_runandgun_m"    value="1.0" /> 正常边跑边打是不变
            </spread>

引用ch87819 关于武器耐久的修改

本帖最后由 ch87819 于 2013-9-24 00:23 编辑

耐久是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车就基本不会坏了
还有比较好的办法是
<DamageMultiplier damageType="bullet" multiplier="1000.0"/>
            <DamageMultiplier damageType="collision" multiplier="0.0"/>
            <DamageMultiplier damageType="melee" multiplier="0.0"/>

这种东西用批量替换,把数值全部变成0.0,这是伤害的公式,"bullet" multiplier就是受到子弹(这里是伤害*1000倍,因为这个是油箱的),"collision" multiplier撞击伤害*,"melee" multiplier近战伤害

这些数值改成0后,受到的伤害就全部乘以0了,测试有效,不过要做车辆不损MOD要所有车的属性都修改,太麻烦了,等苦力弄


感谢各位专家专修改教程的完善,看来我成功达到抛砖引玉的效果了!!!!!!!!!!



finalwave 发表于 2013-9-23 15:03

2636315131 发表于 2013-9-23 15:29

提问game.zip 文件呢?

ET 发表于 2013-9-23 15:31

2636315131 发表于 2013-9-23 15:29 static/image/common/back.gif
提问game.zip 文件呢?

已上传,方便的话帮我转储下

2636315131 发表于 2013-9-23 15:36

lcsy 发表于 2013-9-23 15:31 static/image/common/back.gif
已上传,方便的话帮我转储下

如果是指放网盘给链接的话这个没问题 我2T百度网盘

2636315131 发表于 2013-9-23 15:43

@lcsy 上传过半了

delmay 发表于 2013-9-23 15:48

LZ亲自测试了没, 会跳出不

2636315131 发表于 2013-9-23 15:48

lcsy 发表于 2013-9-23 15:31 static/image/common/back.gif
已上传,方便的话帮我转储下

http://pan.baidu.com/share/link?shareid=3540297715&uk=2838814640 这是上传好的链接

babyvs08ms 发表于 2013-9-23 16:14

路过了,继续的观看一下先,不是很想修改这些。。。。

nweiss 发表于 2013-9-23 17:34

本帖最后由 nweiss 于 2013-9-23 18:32 编辑

rate应该指的是射速
bullet_chamber则是膛内允许的子弹数量,弹夹容量30,最大装弹数是30+1=31


-------------------------------------------


测试已修改成功包括射速、后坐力、精确度、弹夹容量等,伤害尚未测试.......


粗略看了一下可以修改的项目还包括声音强度、范围等....

2636315131 发表于 2013-9-23 19:35

quickbms.zip这个文件包在哪里啊 我有点脑残

dizi 发表于 2013-9-23 20:11

支持了,,,,留个爪印

delmay 发表于 2013-9-23 23:40

不是很懂用法,是把文件解压至State of Decay\Game\就行了吗,复制后,汉化补丁好像无效了

ET 发表于 2013-9-23 23:52

delmay 发表于 2013-9-23 23:40 static/image/common/back.gif
不是很懂用法,是把文件解压至State of Decay\Game\就行了吗,复制后,汉化补丁好像无效了 ...

你可以自行解压gamedata.pak,帖子中有提到工具

银翼蓝天 发表于 2013-9-24 09:00

精确度 怎么改的啊。。。。。。。。。。。。

2636315131 发表于 2013-9-24 09:09

lcsy 发表于 2013-9-23 23:52 static/image/common/back.gif
你可以自行解压gamedata.pak,帖子中有提到工具

额 就是你说让我转存的那个? 话说用了这个 汉化补丁就失效了啊

intoe3 发表于 2013-9-24 09:41

怎么改武器的损耗度?找了半天也没有找到。一把好的武器用着用着就损坏了,真是让人郁闷……

2636315131 发表于 2013-9-24 09:52

2636315131 发表于 2013-9-24 09:09 static/image/common/back.gif
额 就是你说让我转存的那个? 话说用了这个 汉化补丁就失效了啊

不懂 要不你帮我搞一个? 还有就是不知道为啥无法开枪了 存档也是 就算能存 读取也是从头来

帅小生 发表于 2013-9-24 12:01

比较在意耐久度

ch87819 发表于 2013-9-24 13:19

本帖最后由 ch87819 于 2013-9-24 00:23 编辑

耐久是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);
或者删除物品估计就不会坏了
未测试,已通关,求小白鼠

ch87819 发表于 2013-9-24 13:36

本帖最后由 ch87819 于 2013-9-24 00:47 编辑

另外车辆不损在这里scripts\entities\vehicles\implementations\xml
搜damageMax=就出来各个部件的伤害上限,后面的数值多加几个0车就基本不会坏了
还有比较好的办法是
<DamageMultiplier damageType="bullet" multiplier="1000.0"/>
            <DamageMultiplier damageType="collision" multiplier="0.0"/>
            <DamageMultiplier damageType="melee" multiplier="0.0"/>

这种东西用批量替换,把数值全部变成0.0,这是伤害的公式,"bullet" multiplier就是受到子弹(这里是伤害*1000倍,因为这个是油箱的),"collision" multiplier撞击伤害*,"melee" multiplier近战伤害

这些数值改成0后,受到的伤害就全部乘以0了,测试有效,不过要做车辆不损MOD要所有车的属性都修改,太麻烦了,等苦力弄

2636315131 发表于 2013-9-24 14:40

ch87819 发表于 2013-9-24 13:19 static/image/common/back.gif
耐久是LUA脚本,CE有LUA脚本编辑功能,物品不损的语句在item.lua里面
相关语句
function Item.Server:OnHit ...

这么一大串是全部的还是分割的 是单个的话怎么改在哪里改

cniqvje 发表于 2013-9-24 14:45

我在State of Decay\Game\libs\class3\items\items.xml里找到了有关耐久度的,不知道是不是。

</GunDefinition> -<GunDefinition EntityClass="Pistol_Mk3_Target" Scope="0" Reticle="ReticlePistol_Circle" RecoilRating="0.2" Expertise="Pistol Basic" DurabilityRating="0.2" DurabilityMin="75" DurabilityMax="295" DurabilityCriticalMin="10" DurabilityCriticalMax="20" AccuracyRating="0.6">

-<WeaponDefinition EntityClass="Kama" Expertise="EdgedLightBasic" DurabilityRating="0.6" DurabilityMin="60" DurabilityMax="120" DurabilityCriticalMin="10" DurabilityCriticalMax="40" RepairItem="" BreakItem="">
有没有高人可以试试。

ET 发表于 2013-9-24 17:51

cniqvje 发表于 2013-9-24 14:45 static/image/common/back.gif
我在State of Decay\Game\libs\class3\items\items.xml里找到了有关耐久度的,不知道是不是。

-


给点说明吧,我头晕,要修改哪里

956066742 发表于 2013-9-24 18:03

dddddddddddddddddddddddddddddddd

bottleneck 发表于 2013-9-24 18:11

上面说的关于耐久度的修改,我都试了,不知道是方式不对还是什么原因,没有效果。

dizi 发表于 2013-9-24 18:29

网上找不到解包器下载链接...楼主把自己用的传上来呗

2636315131 发表于 2013-9-24 21:01

楼主 尼玛有汉化版不早点给 我这英文版玩的郁闷死了

e0123458 发表于 2013-9-24 23:55

好像武器損耗修改方式
無效
武器照樣變黃

baozip 发表于 2013-9-25 10:38

本帖最后由 baozip 于 2013-10-8 11:08 编辑

没有效果。

















http://bbs.3dmgame.com/static/image/common/sigline.gif
天台山门票
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 抛砖引玉 修改游戏中各项武器数据(大师已现身,期待更多专家出现)