战地资源网

 找回密码
 立即加入
搜索
查看: 13733|回复: 12

[模组] 【教程】论如何以正确姿势的偷懒

[复制链接]

10

主题

89

回帖

1052

积分

少尉

八一勋章

发表于 2019-9-13 01:48:51 | 显示全部楼层 |阅读模式
赞助bfmil
本帖最后由 涅普涅普 于 2019-9-13 10:24 编辑



你还在为统一一大堆同类武器还老漏改而苦恼吗?你还在一条一条的修改新加地图的阵营?你想要一次性修改N把武器N张地图的阵营而不用反反复复的做同一件事吗?这个教程可以帮到你

WARNING!本教程只适合已经用有一定修改经验的人,所以不建议纯菜鸟学习,当然真要学这种操作也无所谓

WARNING!本教程只适合已经用有一定修改经验的人,所以不建议纯菜鸟学习,当然真要学这种操作也无所谓

WARNING!本教程只适合已经用有一定修改经验的人,所以不建议纯菜鸟学习,当然真要学这种操作也无所谓

这个有一点经验指的不是改几个武器参数的级别,是要达到随心所欲的移植任何出现在某个载具中任意中意的武器的级别,并清楚的知道相关代码的作用的级别,只会改改某一条武器数据载具数据的,我不保证可以一次成功,不报错

类似的操作,我在PR模组和之前贴吧的诸葛云疯58(不知道论坛的用户名)的纯步战CBZ模组里见过,但我只是电子专业的不是编程专业的,只会拿最低级的C语言程序做点玩具的水平,所以就懒得研究相关的代码了(其实代码都能看懂,只是偷懒罢了,真要学估计也就一小会的事)

我的方法相比PR和CBZ的方法很像,原理基本一样,都是调用外部文件,但区别在于,我的方法是直接调用文档,一段代码一个文档,而PR和CBZ的方法更类似于编程中的头文件,调用的是文档中的某段代码,我不能评价两个方法孰优孰劣,毕竟我没用过PR和CBZ的方法,但我的方法对编程方面的知识要求应该更低一些










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
破圈内斗何时休
回复

使用道具 举报

10

主题

89

回帖

1052

积分

少尉

八一勋章

 楼主| 发表于 2019-9-13 01:53:21 | 显示全部楼层
本帖最后由 涅普涅普 于 2019-9-13 10:54 编辑

武器部分


一般武器需要改的内容不外乎以下部分,其中蓝色部分是性能方面的代码,也是同类型武器里面重复度最高的代码,毕竟同样是一把BF4的AK12,一把后坐力上天一把无后座的违和感,肯定让人不爽

rem ---BeginComp:WeaponHud ---
ObjectTemplate.createComponent WeaponHud
ObjectTemplate.weaponHud.weaponIcon Ingame\Weapons\Icons\Hud\bf4_ak12
ObjectTemplate.weaponHud.altWeaponIcon Ingame\Weapons\Icons\Hud\bf4_ak12
ObjectTemplate.weaponHud.selectIcon Ingame\Weapons\Icons\Hud\Selection\bf4_ak12
ObjectTemplate.weaponHud.hudName "AK-12"
ObjectTemplate.weaponHud.guiIndex 4
ObjectTemplate.weaponHud.altGuiIndex 52
ObjectTemplate.weaponHud.deviationFactor 5
ObjectTemplate.weaponHud.maxVisualDeviation 50
ObjectTemplate.weaponHud.minVisualDeviation 15
ObjectTemplate.weaponHud.disableOnSprint 1
rem ---EndComp ---
rem ---BeginComp:SingleFireComp ---
ObjectTemplate.createComponent SingleFireComp
ObjectTemplate.fire.roundsPerMinute 600
ObjectTemplate.fire.addFireRate 2
ObjectTemplate.fire.addFireRate 0
ObjectTemplate.fire.fireInCameraDof 1

rem ---EndComp ---
rem ---BeginCompefaultAmmoComp ---
ObjectTemplate.createComponent DefaultAmmoComp
ObjectTemplate.ammo.ammoType 1
ObjectTemplate.ammo.nrOfMags 7
ObjectTemplate.ammo.magSize 31
ObjectTemplate.ammo.reloadTime 3.3

rem ---EndComp ---
rem ---BeginComp:SoldierBasedRecoilComp ---
ObjectTemplate.createComponent SoldierBasedRecoilComp
ObjectTemplate.recoil.hasRecoilForce 1
ObjectTemplate.recoil.recoilForceUp CRD_UNIFORM/1.28/1.3/0
ObjectTemplate.recoil.recoilForceLeftRight CRD_UNIFORM/1.17/-1.12/0
ObjectTemplate.recoil.zoomModifier 0.5
ObjectTemplate.recoil.recoilGraphFrameCount 5
ObjectTemplate.recoil.recoilGraphExponent 5
ObjectTemplate.recoil.recoilGraphTotalMovement 0.25

rem ---EndComp ---
rem ---BeginComp:SoldierDeviationComp ---
ObjectTemplate.createComponent SoldierDeviationComp
ObjectTemplate.deviation.setFireDev 1.17 2.1 0.1
ObjectTemplate.deviation.minDev 0.6
ObjectTemplate.deviation.setTurnDev 0 0 0 0
ObjectTemplate.deviation.setSpeedDev 1.17 0.4 0.4 0.2
ObjectTemplate.deviation.setMiscDev 1.5 2 0.1
ObjectTemplate.deviation.devModStand 1.17
ObjectTemplate.deviation.devModCrouch 1
ObjectTemplate.deviation.devModLie 0.83
ObjectTemplate.deviation.devModZoom 0.2

rem ---EndComp ---
rem ---BeginCompefaultSoundComp ---
ObjectTemplate.createComponent DefaultSoundComp
rem ---EndComp ---
rem ---BeginCompefaultAnimationComp ---
ObjectTemplate.createComponent DefaultAnimationComp
rem ---EndComp ---
rem ---BeginCompefaultZoomComp ---
ObjectTemplate.createComponent DefaultZoomComp
ObjectTemplate.zoom.zoomDelay 0.15
ObjectTemplate.zoom.zoomLod 1
ObjectTemplate.zoom.addZoomFactor 0
ObjectTemplate.zoom.addZoomFactor 0.8


现在我们要把这段代码单独做一个文件,con和tweak应该都可以,我是用con的,tweak我最开始的模仿con里最末的include语句时用过,应该不会有什么问题,下面我就都叫con了

下面我们要先新建一个文档,因为武器是AK12所以文档就叫AK12.con吧,以后改的时候方便区分文档代表的是哪个武器的数据

建好之后,我们要把这些同类武器中的重复代码(蓝色部分)都拷到这个文档里,就像我这样

rem ---BeginComp:SingleFireComp ---
ObjectTemplate.createComponent SingleFireComp
ObjectTemplate.fire.roundsPerMinute 600
ObjectTemplate.fire.addFireRate 2
ObjectTemplate.fire.addFireRate 0
ObjectTemplate.fire.fireInCameraDof 1
rem ---EndComp ---
rem ---BeginCompefaultAmmoComp ---
ObjectTemplate.createComponent DefaultAmmoComp
ObjectTemplate.ammo.ammoType 1
ObjectTemplate.ammo.nrOfMags 7
ObjectTemplate.ammo.magSize 31
ObjectTemplate.ammo.reloadTime 3.3
rem ---EndComp ---
rem ---BeginComp:SoldierBasedRecoilComp ---
ObjectTemplate.createComponent SoldierBasedRecoilComp
ObjectTemplate.recoil.hasRecoilForce 1
ObjectTemplate.recoil.recoilForceUp CRD_UNIFORM/1.28/1.3/0
ObjectTemplate.recoil.recoilForceLeftRight CRD_UNIFORM/1.17/-1.12/0
ObjectTemplate.recoil.zoomModifier 0.5
ObjectTemplate.recoil.recoilGraphFrameCount 5
ObjectTemplate.recoil.recoilGraphExponent 5
ObjectTemplate.recoil.recoilGraphTotalMovement 0.25
rem ---EndComp ---
rem ---BeginComp:SoldierDeviationComp ---
ObjectTemplate.createComponent SoldierDeviationComp
ObjectTemplate.deviation.setFireDev 1.17 2.1 0.1
ObjectTemplate.deviation.minDev 0.6
ObjectTemplate.deviation.setTurnDev 0 0 0 0
ObjectTemplate.deviation.setSpeedDev 1.17 0.4 0.4 0.2
ObjectTemplate.deviation.setMiscDev 1.5 2 0.1
ObjectTemplate.deviation.devModStand 1.17
ObjectTemplate.deviation.devModCrouch 1
ObjectTemplate.deviation.devModLie 0.83
ObjectTemplate.deviation.devModZoom 0.2
rem ---EndComp ---


然后保存,现在我们吧文档搞定了,这个就是我们的武器所需要的文档,现在我们要调用这个文档

因为我们已经有了这个放数据的文档,武器里和文档中重复的部分就没有利用价值了,我们把这些没用的代码删掉,换成调用文档的代码即红色的部分(注意:这里是只要没有rem掉的都必须删掉,一个不留,两个文档里的非rem的代码,绝对不能有重复的)


rem ---BeginComp:WeaponHud ---
ObjectTemplate.createComponent WeaponHud
ObjectTemplate.weaponHud.weaponIcon Ingame\Weapons\Icons\Hud\bf4_ak12
ObjectTemplate.weaponHud.altWeaponIcon Ingame\Weapons\Icons\Hud\bf4_ak12
ObjectTemplate.weaponHud.selectIcon Ingame\Weapons\Icons\Hud\Selection\bf4_ak12
ObjectTemplate.weaponHud.hudName "AK-12"
ObjectTemplate.weaponHud.guiIndex 4
ObjectTemplate.weaponHud.altGuiIndex 52
ObjectTemplate.weaponHud.deviationFactor 5
ObjectTemplate.weaponHud.maxVisualDeviation 50
ObjectTemplate.weaponHud.minVisualDeviation 15
ObjectTemplate.weaponHud.disableOnSprint 1
rem ---EndComp ---
run /objects/Weapons/data/ak12.con
rem ---BeginCompefaultSoundComp ---
ObjectTemplate.createComponent DefaultSoundComp
rem ---EndComp ---
rem ---BeginCompefaultAnimationComp ---
ObjectTemplate.createComponent DefaultAnimationComp
rem ---EndComp ---
rem ---BeginCompefaultZoomComp ---
ObjectTemplate.createComponent DefaultZoomComp
ObjectTemplate.zoom.zoomDelay 0.15
ObjectTemplate.zoom.zoomLod 1
ObjectTemplate.zoom.addZoomFactor 0
ObjectTemplate.zoom.addZoomFactor 0.8
rem ---EndComp ---
rem ---BeginCompefaultCollisionComp ---
ObjectTemplate.createComponent DefaultCollisionComp
rem ---EndComp ---
ObjectTemplate.geometry bf4_ak12
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.aiTemplate AR


红色的部分的意思是读取模组中路径objects/Weapons/data下的ak12.con文档,即读取路径objects/Weapons下的data文件夹里的ak12.con,当然如果你不想统一放在一个篮子里,也无所谓只要相关路径和这句代码里写的路径对的上就好


然后把其它要统一数据的武器也改掉,并进游戏试试效果


因为现在我们已经把这些需要统一的武器数据,全部统一放到一个文件并调用这个文件了,所以我们修改武器中统一调用的这部分代码时,就不需要一个一个的改武器con文档了,只要改这个刚刚建好的文档就好,效果等同与同时修改原先所有调用这个文档的武器的con文档


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
破圈内斗何时休
回复

使用道具 举报

10

主题

89

回帖

1052

积分

少尉

八一勋章

 楼主| 发表于 2019-9-13 02:02:41 | 显示全部楼层
本帖最后由 涅普涅普 于 2019-9-13 10:55 编辑

地图部分


地图部分比前面武器部分,其实要简单很多,如果你搞明白前面武器部分的话,估计不会出什么问题

我们现在要改的是地图上的阵营部分

我们先来看看原来的地图I档里阵营的代码

gameLogic.setTeamName 1 "ERUSEA"
gameLogic.setTeamName 2 "OSEA"

gameLogic.setTeamLanguage 1 "MEC"
gameLogic.setTeamLanguage 2 "English"

gameLogic.setTeamFlag 0 "flag_neutral_ac7"
gameLogic.setTeamFlag 1 "flag_erusea"
gameLogic.setTeamFlag 2 "flag_osea"


gameLogic.setKit 1 0 "BF4_RU_Support2" "BF4_RU_support_soldier"
gameLogic.setKit 2 0 "BF4_US_Support2" "BF4_US_support_soldier"


gameLogic.setKit 1 1 "BF4_RU_Engineer2" "BF4_RU_enginner_soldier"
gameLogic.setKit 2 1 "BF4_US_Engineer2" "BF4_US_enginner_soldier"


gameLogic.setKit 1 2 "BF4_RU_Assault2" "BF4_RU_assault_soldier"

gameLogic.setKit 2 2 "BF4_US_Assault2" "BF4_US_assault_soldier"

gameLogic.setKit 1 3 "BF4_RU_Engineer" "BF4_RU_enginner_soldier"

gameLogic.setKit 2 3 "BF4_US_Engineer" "BF4_US_enginner_soldier"


gameLogic.setKit 1 4 "BF4_RU_Support" "BF4_RU_support_soldier"

gameLogic.setKit 2 4 "BF4_US_Support" "BF4_US_support_soldier"

gameLogic.setKit 1 5 "BF4_RU_Assault" "BF4_RU_assault_soldier"

gameLogic.setKit 2 5 "BF4_US_Assault" "BF4_US_assault_soldier"


gameLogic.setKit 1 6 "BF4_RU_Recon" "BF4_RU_recon_soldier"

gameLogic.setKit 2 6 "BF4_US_Recon" "BF4_US_recon_soldier"


上面这些代码我们可以进行归类,红色阵营1蓝色阵营2灰色中立据点调用的旗帜代码,在这里估摸着大家都懂,但为了那些浑水摸鱼的修改菜鸟,所以还是这么放出来吧

知道那些代码是干什么之后我们可以模仿改武器那种操作那来改阵营了,这里建议那些模组里加了四五个阵营及以上阵营的人和我之前改武器部分一样建一个统一的文件夹,这样看着明白,不然levels目录下一堆文档,看着不舒服,当然我就弄总两个阵营,所以就直接放在levels文件夹下了
现在我们搞阵营的文档,先把阵营1和阵营2的代码分开保存到对应文档中,我这里的阵营1是ERUSEA,阵营2是OSEA,所以我们就和之前给武器数据文档起名时一样,叫ERUSEA_1.conOSEA_2.con吧,_1和_2是为了区分用在阵营1或用在阵营2时,当然不这么搞也不要紧


现在开始装填内容


ERUSEA_1.con↓
gameLogic.setTeamName 1 "ERUSEA"
gameLogic.setTeamLanguage 1 "MEC"
gameLogic.setTeamFlag 1 "flag_erusea"
gameLogic.setKit 1 0 "BF4_RU_Support2" "BF4_RU_support_soldier"
gameLogic.setKit 1 1 "BF4_RU_Engineer2" "BF4_RU_enginner_soldier"
gameLogic.setKit 1 2 "BF4_RU_Assault2" "BF4_RU_assault_soldier"
gameLogic.setKit 1 3 "BF4_RU_Engineer" "BF4_RU_enginner_soldier"
gameLogic.setKit 1 4 "BF4_RU_Support" "BF4_RU_support_soldier"
gameLogic.setKit 1 5 "BF4_RU_Assault" "BF4_RU_assault_soldier"
gameLogic.setKit 1 6 "BF4_RU_Recon" "BF4_RU_recon_soldier"


OSEA_2.con↓
gameLogic.setTeamName 2 "OSEA"
gameLogic.setTeamLanguage 2 "English"
gameLogic.setTeamFlag 2 "flag_osea"
gameLogic.setKit 2 0 "BF4_US_Support2" "BF4_US_support_soldier"
gameLogic.setKit 2 1 "BF4_US_Engineer2" "BF4_US_enginner_soldier"
gameLogic.setKit 2 2 "BF4_US_Assault2" "BF4_US_assault_soldier"
gameLogic.setKit 2 3 "BF4_US_Engineer" "BF4_US_enginner_soldier"
gameLogic.setKit 2 4 "BF4_US_Support" "BF4_US_support_soldier"
gameLogic.setKit 2 5 "BF4_US_Assault" "BF4_US_assault_soldier"
gameLogic.setKit 2 6 "BF4_US_Recon" "BF4_US_recon_soldier"

然后保存,还记得我命名里那个_1和_2吗

把这两个文件都复制一份把名字改为ERUSEA_2.conOSEA_1.con,并对内容进行修改

ERUSEA_2.con↓
gameLogic.setTeamName 2 "ERUSEA"
gameLogic.setTeamLanguage 2 "MEC"
gameLogic.setTeamFlag 2 "flag_erusea"
gameLogic.setKit 2 0 "BF4_RU_Support2" "BF4_RU_support_soldier"
gameLogic.setKit 2 1 "BF4_RU_Engineer2" "BF4_RU_enginner_soldier"
gameLogic.setKit 2 2 "BF4_RU_Assault2" "BF4_RU_assault_soldier"
gameLogic.setKit 2 3 "BF4_RU_Engineer" "BF4_RU_enginner_soldier"
gameLogic.setKit 2 4 "BF4_RU_Support" "BF4_RU_support_soldier"
gameLogic.setKit 2 5 "BF4_RU_Assault" "BF4_RU_assault_soldier"
gameLogic.setKit 2 6 "BF4_RU_Recon" "BF4_RU_recon_soldier"
OSEA_1.con↓
gameLogic.setTeamName 1 "OSEA"
gameLogic.setTeamLanguage 1 "English"
gameLogic.setTeamFlag 1 "flag_osea"
gameLogic.setKit 1 0 "BF4_US_Support2" "BF4_US_support_soldier"
gameLogic.setKit 1 1 "BF4_US_Engineer2" "BF4_US_enginner_soldier"
gameLogic.setKit 1 2 "BF4_US_Assault2" "BF4_US_assault_soldier"
gameLogic.setKit 1 3 "BF4_US_Engineer" "BF4_US_enginner_soldier"
gameLogic.setKit 1 4 "BF4_US_Support" "BF4_US_support_soldier"
gameLogic.setKit 1 5 "BF4_US_Assault" "BF4_US_assault_soldier"
gameLogic.setKit 1 6 "BF4_US_Recon" "BF4_US_recon_soldier"

保存完了就可以进行调用了

打开要改的那些地图的i档,然后把重复代码删掉,并调用这些要用的文档(注意:这里和上面武器部分一样,绝对不能有重复的,还有不要把中立的旗帜那条代码也给删干净了

下面是我地图里这部分的代码(阵营1是OSEA阵营2是ERUSEA),作为例子
gameLogic.setTeamFlag 0 "flag_neutral_ac7"

run /Levels/ERUSEA_2.con
run /Levels/OSEA_1.con


改完之后保存去实验一下吧,如果你想吧阵营对调一下,只要和改武器一样把调用文件的代码改对就好了,例如
gameLogic.setTeamFlag 0 "flag_neutral_ac7"

run /Levels/ERUSEA_1.con
run /Levels/OSEA_2.con


因为我的ERUSEA_1.con里的内容是ERUSEA在阵营1里时的内容OSEA_2.con里的内容是OSEA在阵营2里时的内容,所以现在地图的阵营1是ERUSEA阵营2是OSEA,而不是改之前的阵营1是OSEA阵营2是ERUSEA

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
破圈内斗何时休
回复

使用道具 举报

10

主题

89

回帖

1052

积分

少尉

八一勋章

 楼主| 发表于 2019-9-13 02:11:04 | 显示全部楼层
完事收工,明天再发贴吧
破圈内斗何时休
回复

使用道具 举报

1

主题

106

回帖

2404

积分

实习版主

Rank: 7Rank: 7Rank: 7

八一勋章雷锋精神优秀管理

发表于 2019-9-13 03:05:42 | 显示全部楼层
感激不尽
这是很重要的简单教学
回复

使用道具 举报

29

主题

357

回帖

1782

积分

少尉

活跃达人八一勋章资深会员雷锋精神

发表于 2019-9-13 07:25:06 | 显示全部楼层
点赞      作者辛苦了
回复

使用道具 举报

7

主题

116

回帖

902

积分

上士

八一勋章

发表于 2019-9-13 10:49:57 | 显示全部楼层
感谢您,我可以制作地图微模组了
回复

使用道具 举报

0

主题

10

回帖

575

积分

中校

八一勋章

发表于 2019-9-14 22:22:23 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

61

主题

177

回帖

2560

积分

站长

Rank: 9Rank: 9Rank: 9

游戏昵称
nanfei

八一勋章积极分子

发表于 2019-10-2 19:54:58 | 显示全部楼层
感谢分享,论坛在发帖关于代码的时候,建议使用论坛发帖编辑器里面的【插入代码】功能,这样代码既完整,又美观。
推荐网站:战地兵工厂】【战地2联机平台
回复

使用道具 举报

10

主题

89

回帖

1052

积分

少尉

八一勋章

 楼主| 发表于 2019-10-2 21:52:40 | 显示全部楼层
nanfei 发表于 2019-10-2 19:54
感谢分享,论坛在发帖关于代码的时候,建议使用论坛发帖编辑器里面的【插入代码】功能,这样代码既完整,又 ...

好的,以后就用这个功能发吧,一直不知道有这个功能,也没在别的地方用过
破圈内斗何时休
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

Archiver|小黑屋|bfmil ( 拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,会员帖子系会员发表,并不代表本站立场! )

GMT+8, 2024-4-19 21:29 , Processed in 0.182109 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表