3dm_15150548
发表于 2025-1-12 22:29
野区迷路的兔子 发表于 2025-1-12 21:48
把打包好的mod文件,放在C:%users\admin\Saved Games\EugenSystems\WARNO\mod这个文件夹里就行了
...
谢谢dalao 但是不知道为什么我在创意工坊下的mod启用不了
野区迷路的兔子
发表于 2025-1-12 22:32
3dm_15150548 发表于 2025-1-12 22:29
谢谢dalao 但是不知道为什么我在创意工坊下的mod启用不了
启用不了大概率是版本不对,我发的这个游戏的版本是v141373,steam最新的版本是v141935,所以如果你下载了创意工坊最新的mod,放在141373版本的文件中,就会无法正常加载mod
这个网站看到游戏的版本WARNO (App 1611600) · Patches and Updates · SteamDB
zero798362555
发表于 2025-1-12 23:19
野区迷路的兔子 发表于 2025-1-12 22:23
“OpticalStrength = 90.9 观瞄 90.9一般,70.75较差 130.35良好, 193.02极佳,233.475非凡
OpticalStren ...
对哈,害,忘改弹药文件里的装填时间了,我说今天打的时候怎么感觉补给速度这么慢呢
—————————————————————————————————————————————————
大佬team.ndf里的这个(文件位置:mod名\GameData\Gameplay\Unit\Tactic在这里)这个示例是我已经改过的
export Tactic_TeamUnitDescriptor is TEntityDescriptor
(
World = WorldIndices_Team
DescriptorId = GUID:{00000000-0000-0000-0000-000032000000}
ModulesDescriptors =
[
TTeamAirportModuleDescriptor
(
// Point d'essence par tick
FuelSupplyAmountBySecond = 1000//每秒燃料供应量
// Cout du ravitaillement de point de vie par tick
HealthSupplyAmountBySecond = 10//每秒生命供应量
// Cout du ravitaillement de munition par tick
AmmunitionSupplyAmountBySecond = 100//每秒弹药供应量
),
这个修改了可以加快补给和修理时间,但应该有上限,我暂时还没试出来
WARNO\Mods\001\GameData\Generated\UserInterface\WeaponsMinMax.ndf这个是各种武器极限值,也可以修改
——————————————
此为原版
ModulesDescriptors =
[
TTeamAirportModuleDescriptor
(
// Point d'essence par tick
FuelSupplyAmountBySecond = 10
// Cout du ravitaillement de point de vie par tick
HealthSupplyAmountBySecond = 0.0198
// Cout du ravitaillement de munition par tick
AmmunitionSupplyAmountBySecond = 1
),
—————————————————————————————————————————————————
ravitillement.ndf(文件位置:mod名\GameData\Gameplay\Constantes)同上已改
// Point d'essence ravitaillés par seconde
FuelSupplyBySecond = 300每秒燃料供应
// Cout du ravitaillement d'essence par seconde
FuelSupplyCostBySecond =1.5每秒燃料供应成本
// Point de vie ravitaillés par seconde
HealthSupplyBySecond = 10 //0.00001每秒生命供应量
// Cout du ravitaillement de point de vie par seconde
HealthSupplyCostBySecond = 3 // 0.00001花费
// Point de ravitaillement ravitaillés par seconde
SupplySupplyBySecond = 200 //30每秒加油点
// Cout du ravitaillement de point de ravitaillement par seconde
SupplySupplyCostBySecond = 20 //30花费
// Point de munition ravitaillés par seconde
AmmunitionSupplyBySecond = 1000每秒加油弹药点
// Points de "critique" réparés par seconde
CriticsSupplyBySecond = 500每秒修复的“临界”点
// Coût de la réparation de "critique" par seconde
CriticsSupplyCostBySecond = 20
——————————————
此为原版
// Point d'essence ravitaillés par seconde
FuelSupplyBySecond = 30
// Cout du ravitaillement d'essence par seconde
FuelSupplyCostBySecond =1.5
// Point de vie ravitaillés par seconde
HealthSupplyBySecond = 0.10 //0.00001
// Cout du ravitaillement de point de vie par seconde
HealthSupplyCostBySecond = 3 // 0.00001
// Point de ravitaillement ravitaillés par seconde
SupplySupplyBySecond = 20 //30
// Cout du ravitaillement de point de ravitaillement par seconde
SupplySupplyCostBySecond = 20 //30
// Point de munition ravitaillés par seconde
AmmunitionSupplyBySecond = 60
// Points de "critique" réparés par seconde
CriticsSupplyBySecond = 10
// Coût de la réparation de "critique" par seconde
CriticsSupplyCostBySecond = 20
这里我一直有个疑问,比如SupplySupplyBySecond = 20 //30里20 //30前后关系是啥,有人说前者是自己的,后面是敌人的或者每秒,每秒(诸如3 // 0.00001里的0.00001)这个可能是,但敌人(20 //30里的30)我试了半天,改大改小都没啥效果,不知道大佬啥看法
—————————————————————————————————————————————————
看网上您的mod教程比官方和其他渠道的详细太多了,再次衷心感谢大佬分享经验:handshake
野区迷路的兔子
发表于 2025-1-13 00:21
zero798362555 发表于 2025-1-12 23:19
对哈,害,忘改弹药文件里的装填时间了,我说今天打的时候怎么感觉补给速度这么慢呢
————————— ...
嚯嚯嚯,果然还是多分享,我也不是啥大佬只是刚好自己懂一点然后搞了搞分享下经验;
你几个文件我还真没看过,我去琢磨琢磨看看能不能鼓捣点东西出来;
————————
WARNO\Mods\001\GameData\Generated\UserInterface\WeaponsMinMax.ndf这个是各种武器极限值,也可以修改
这个我在实际修改弹药的时候发现,如果你想要修改武器伤害,尤其是ap穿甲弹,应该是应用弹药属性的数组,我来举个例子:看弹药文件Ammunition.ndf
Ammo_AutoCanon_AP_20mm_M621_GIAT is TAmmunitionDescriptor
(
DescriptorId = GUID:{eae3cc3b-b79c-4ef1-8f61-309389f6024a}
Name = 'LBBIKKBUZY'
TypeCategoryName = 'ZJQCIJREVP'
Caliber = 'EILGBJABHL'
WeaponDescriptionToken = 'BRUJGAAJMP'
TraitsToken = [ 'MOTION', ]
WeaponCursorType = Weapon_Cursor_FastCanon
MinMaxCategory = MinMax_AutocanonHE
Arme = TDamageTypeRTTI(Family=DamageFamily_ap Index=6)
ProjectileType = EProjectileType/Obus
ImpactHappening = [ 'CanonPetitM230AP' ]
FxPower = EFXPower/Moyen
其中如果我要增加弹药伤害,可以把Arme= TDamageTypeRTTI(Family=DamageFamily_ap Index=6)这里的6修改为更高的数值,他会关联到另外一个文件DamageResistance.ndf
在这个文件中描述了:TDamageTypeFamilyDefinition(Family=DamageFamily_ap MaxIndex=40),ap伤害数组最大是数组40,下面的数组代表着不同的伤害信息
//AP_6
,
//AP_40
,
——————————————
这里我一直有个疑问,比如SupplySupplyBySecond = 20 //30里20 //30前后关系是啥,有人说前者是自己的,后面是敌人的或者每秒,每秒(诸如3 // 0.00001里的0.00001)这个可能是,但敌人(20 //30里的30)我试了半天,改大改小都没啥效果,不知道大佬啥看法
哈哈哈哈这个是一个代码问题,我猜测他们的代码用的是java,//一般在java语言用代表的是注释信息,也就是说//后面的部分是开发者留下的注释,这部分内容在代码中是不生效的,也就可能是开发者在调试的时候留下的备注,你在开发工具中切换到java环境就懂了哈哈哈
天天做梦lpf
发表于 2025-1-13 08:42
hhhhhhhhhhhhhhhhhhhhh
lukuan1995
发表于 2025-1-13 12:19
感谢楼主分享!!
苏玉暮秋
发表于 2025-1-13 13:37
沙发发
Uss216130
发表于 2025-1-13 19:56
66666666666
3dm_22433096
发表于 2025-1-16 20:54
为啥我mod做完激活后没反应?程序操作都保存了。
野区迷路的兔子
发表于 2025-1-17 12:52
3dm_22433096 发表于 2025-1-16 20:54
为啥我mod做完激活后没反应?程序操作都保存了。
你这个问题描述的有点太笼统了,有很多可能性导致你说的这个问题,我只能给你一个排查清单,你自己排查一下;
————————
0.确认修改的代码正确,建议你可以先从修改单位的费用开始,因为修改单位费用可以直接在游戏的军械库里看到数据。
1.代码写完确认保存了,关闭代码文件后,重新打开,已修改的内容被成功保存;
2.确认代码保存成功后,运行了GenerateMod.bat
3.确认在mod文件夹中有你的mod
4.确认mod版本和游戏版本相同
5.确认mod成功启用(启用后退出游戏再重新打开游戏,仍然为勾选状态)
6.前往查看代码修改的内容是否生效
野区迷路的兔子
发表于 2025-1-17 14:03
兄弟们大家好,今天进入修改关于单位武器的修改部分
——————
4.2.如何修改单位武器
——————
在warno的单位修改中,我们提到了warno的单位武器在单位文件中是没有数据的,在单位文件中只会有单位使用什么武器的代码映射,比如:
WeaponManager is TModuleSelector
(
Default = $/GFX/Weapon/WeaponDescripto_T80UD_SOV
Condition = ~/IfNotCadavreCondition
),
这就代表着t80UD这个单位,使用的是WeaponDescripto_T80UD_SOV这个武器映射,而武器实际上的信息是在WeaponDescriptor.ndf武器描述文件里;
————————
在武器文件中,每一个武器映射是由一段代码组成,这里我们继续看T80UD这个单位,他的代码如下:
export WeaponDescriptor_T80UD_SOV is TWeaponManagerModuleDescriptor
(
Salves = [ 1, 4, 65, 65, 1, ]
AlwaysOrientArmorTowardsThreat = True
TurretDescriptorList = [
TTurretTwoAxisDescriptor
(
AngleRotationBase = 0.0
AngleRotationBasePitch = 0.0
AngleRotationMax = 6.283185307179586
AngleRotationMaxPitch = 0.4363323129985824
AngleRotationMinPitch = -0.17453292519943295
MountedWeaponDescriptorList = [
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_Canon_AP_125_mm_2A46M_late_T80UD
AnimateOnlyOneSoldier = False
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_Canon_AP_125_mm_2A46M_late_T80UD'
HandheldEquipmentKey = 'MeshAlternative_1'
NbWeapons = 1
SalvoStockIndex = 0
ShowDispersion = False
ShowInInterface = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_1'
WeaponIgnoredPropertyName = 'WeaponIgnored_1'
WeaponShootDataPropertyName = ['WeaponShootData_0_1']
),
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_Canon_HE_125_mm_2A46M_late_T80UD
AnimateOnlyOneSoldier = False
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_Canon_HE_125_mm_2A46M_late_T80UD'
HandheldEquipmentKey = 'MeshAlternative_2'
NbWeapons = 1
SalvoStockIndex = 0
ShowDispersion = False
ShowInInterface = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_2'
WeaponIgnoredPropertyName = 'WeaponIgnored_2'
WeaponShootDataPropertyName = ['WeaponShootData_0_2']
),
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_ATGM_9M119M_Refleks
AnimateOnlyOneSoldier = False
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_ATGM_9M119M_Refleks'
HandheldEquipmentKey = 'MeshAlternative_3'
NbWeapons = 1
SalvoStockIndex = 1
ShowDispersion = False
ShowInInterface = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_3'
WeaponIgnoredPropertyName = 'WeaponIgnored_3'
WeaponShootDataPropertyName = ['WeaponShootData_0_3']
)
]
OutOfRangeTrackingDuration = 3.5
Tag = 'tourelle1'
TurretIdleBehaviourDescriptor = ~/TurretIdle_WatchForwardNormal
VitesseRotation = 1.0471975511965976
YulBoneOrdinal = 1
),
TTurretTwoAxisDescriptor
(
AngleRotationBase = 0.0
AngleRotationBasePitch = 0.17453292519943275
AngleRotationMax = 6.283185307179586
AngleRotationMaxPitch = 0.7853981633974483
AngleRotationMinPitch = -0.17453292519943295
MountedWeaponDescriptorList = [
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_HMG_12_7_mm_NSVT
AnimateOnlyOneSoldier = True
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_HMG_12_7_mm_NSVT'
HandheldEquipmentKey = 'MeshAlternative_4'
NbWeapons = 1
SalvoStockIndex = 2
ShowDispersion = False
ShowInInterface = True
TirContinu = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_4'
WeaponIgnoredPropertyName = 'WeaponIgnored_4'
WeaponShootDataPropertyName = ['WeaponShootData_0_4']
)
]
OutOfRangeTrackingDuration = 3.5
Tag = 'tourelle2'
TurretIdleBehaviourDescriptor = ~/TurretIdle_WatchForwardMG
VitesseRotation = 1.0471975511965976
YulBoneOrdinal = 2
),
TTurretTwoAxisDescriptor
(
AimingPriority = 3
AngleRotationBase = 0.0
AngleRotationBasePitch = 0.0
AngleRotationMax = 0.017453292519943295
AngleRotationMaxPitch = 0.13962634015954636
AngleRotationMinPitch = -0.13962634015954636
MasterTurretYulBoneOrdinal= 1
MountedWeaponDescriptorList = [
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_MMG_PKT_7_62mm
AnimateOnlyOneSoldier = True
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_MMG_PKT_7_62mm'
HandheldEquipmentKey = 'MeshAlternative_5'
NbWeapons = 1
SalvoStockIndex = 3
ShowDispersion = False
ShowInInterface = True
TirContinu = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_5'
WeaponIgnoredPropertyName = 'WeaponIgnored_5'
WeaponShootDataPropertyName = ['WeaponShootData_0_5']
)
]
OutOfRangeTrackingDuration= 3.5
Tag = 'tourelle4'
VitesseRotation = 1.5707963267948966
YulBoneOrdinal = 4
),
TTurretUnitDescriptor
(
AngleRotationMax = 2.0943951023931953
AngleRotationMaxPitch = 1.5707963267948966
AngleRotationMinPitch = -1.5707963267948966
MountedWeaponDescriptorList = [
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_SMOKE_Vehicle_Grenadex8
AnimateOnlyOneSoldier = True
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_SMOKE_Vehicle_Grenadex8'
HandheldEquipmentKey = 'MeshAlternative_6'
NbWeapons = 1
SalvoStockIndex = 4
ShowDispersion = False
ShowInInterface = False
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_6'
WeaponIgnoredPropertyName = 'WeaponIgnored_6'
WeaponShootDataPropertyName = ['WeaponShootData_0_6', 'WeaponShootData_1_6', 'WeaponShootData_2_6', 'WeaponShootData_3_6']
)
]
Tag = 'tourelle5'
YulBoneOrdinal = 5
)
]
)
————————————————————
其中:
Salves = [ 1, 4, 65, 65, 1, ]
这个代表着单位有5种可开火的武器类型(数字代表的含义其实是和弹药共同作用的开火次数这个我后面解释)
TTurretTwoAxisDescriptor
(
AngleRotationBase = 0.0
AngleRotationBasePitch = 0.0
AngleRotationMax = 6.283185307179586
AngleRotationMaxPitch = 0.4363323129985824
AngleRotationMinPitch = -0.17453292519943295
MountedWeaponDescriptorList = [
这个代表的是t80使用的是双轴炮塔, 其中数字为炮塔的旋转角度
——————————
MountedWeaponDescriptorList = [
这个之后的代码,就代表着装载的武器信息了,每一个代码块和上面的Salves = [ 1, 4, 65, 65, 1, ]有关联关系
TMountedWeaponDescriptor(
Ammunition = $/GFX/Weapon/Ammo_Canon_AP_125_mm_2A46M_late_T80UD
AnimateOnlyOneSoldier = False
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_Canon_AP_125_mm_2A46M_late_T80UD'
HandheldEquipmentKey = 'MeshAlternative_1'
NbWeapons = 1
SalvoStockIndex = 0
ShowDispersion = False
ShowInInterface = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_1'
WeaponIgnoredPropertyName = 'WeaponIgnored_1'
WeaponShootDataPropertyName = ['WeaponShootData_0_1']),
TMountedWeaponDescriptor(
Ammunition = $/GFX/Weapon/Ammo_Canon_HE_125_mm_2A46M_late_T80UD
AnimateOnlyOneSoldier = False
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_Canon_HE_125_mm_2A46M_late_T80UD'
HandheldEquipmentKey = 'MeshAlternative_2'
NbWeapons = 1
SalvoStockIndex = 0
ShowDispersion = False
ShowInInterface = True
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_2'
WeaponIgnoredPropertyName = 'WeaponIgnored_2'
WeaponShootDataPropertyName = ['WeaponShootData_0_2']),
第一个装载的武器:是Ammo_Canon_AP_125_mm_2A46M_late_T80UD和Ammo_Canon_HE_125_mm_2A46M_late_T80UD
即为坦克的主炮,为什么他们两个是第一个武器呢,实际是:SalvoStockIndex = 0这里写的,这个代表着这两个武器是共用Salves = [ 1, 4, 65, 65, 1, ]这个齐射弹药属性的第0位信息也就是第一个数字1;
但是实际在武器界面我们可以看到,t80UD的主炮,弹药是38发而不是1发,是为什么呢?
这里我也没有搞得非常清楚,只能说按照我的浅薄的理解,这里的Salves = [ 1, 4, 65, 65, 1, ]会和弹药文件中的NbTirParSalves = 38与AffichageMunitionParSalve = 38共同作用,用来描述单位可以开火的次数,以及开火的数据;
————————————————
接下来我们可以看到,实际T80UD只有4个武器,但是为什么Salves = [ 1, 4, 65, 65, 1, ]会有5个数据呢?
其实最后的1描述的是烟雾弹:
TTurretUnitDescriptor
(
AngleRotationMax = 2.0943951023931953
AngleRotationMaxPitch = 1.5707963267948966
AngleRotationMinPitch = -1.5707963267948966
MountedWeaponDescriptorList = [
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_SMOKE_Vehicle_Grenadex8
AnimateOnlyOneSoldier = True
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = -0.1
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = -0.1
EffectTag = 'FireEffect_SMOKE_Vehicle_Grenadex8'
HandheldEquipmentKey = 'MeshAlternative_6'
NbWeapons = 1
SalvoStockIndex = 4
ShowDispersion = False
ShowInInterface = False
WeaponActiveAndCanShootPropertyName = 'WeaponActiveAndCanShoot_6'
WeaponIgnoredPropertyName = 'WeaponIgnored_6'
WeaponShootDataPropertyName = ['WeaponShootData_0_6', 'WeaponShootData_1_6', 'WeaponShootData_2_6', 'WeaponShootData_3_6']
)
]
Tag = 'tourelle5'
YulBoneOrdinal = 5
)
]
如果你把最后的1修改为10,那么这个单位就可以发射10枚烟雾弹了
——————————————
武器描述其实也不会实际修改单位的伤害,射速等信息,它只是用了描述单位使用武器有哪些,而具体的伤害数据属性,则是由弹药文件Ammunition.ndf和导弹弹药文件AmmunitionMissiles.ndf来描述的,
那么下一次我们会着重介绍弹药与导弹弹药文件的内容,如何修改伤害,装填时间,弹药散步,瞄准时间,准确度等信息;
zhangscut
发表于 2025-1-17 14:49
非常感谢楼主分享!我最近也在琢磨怎么修改mod。看到楼主和另一位贴友都提到WeaponsMinMax.ndf这个是各种武器极限值,我正好有个疑问,在修改飞机上的AGM导弹射程时,总是感觉无效。是否在这个WeaponsMinMax.ndf对应AGM的地方把 min和max的数值都改为0(看了AAM这两处都是0)
原数值是这样的: MaxRangeGRU = TMinMaxValue (
Min = 2625
Max = 4400
————————————————————————————————————————————
另外,想研究下怎么实现坦克车辆在进入林地、山地等障碍地形时,速度不减,如果能实现这个,就可以实现队形整齐、速度一致的装甲冲锋,画面会很好看。而不会有单位因为进入林地掉队,乱了攻击阵型。
野区迷路的兔子
发表于 2025-1-17 15:25
本帖最后由 野区迷路的兔子 于 2025-1-17 15:32 编辑
zhangscut 发表于 2025-1-17 14:49
非常感谢楼主分享!我最近也在琢磨怎么修改mod。看到楼主和另一位贴友都提到WeaponsMinMax.ndf这个是各种武 ...
导弹的射程是在Mods\3DM-TEST\GameData\Generated\Gameplay\Gfx中的AmmunitionMissiles.ndf文件中的:你需要找到想要修改的导弹名称比如:Ammo_AA_R27T_Vympel
然后修改他的射程
PorteeMaximaleTBAGRU(对直升机)
PorteeMaximaleHAGRU (对空)
PorteeMaximaleGRU(对地)
(对应的还有最小值min)修改了之后可以在单位面板上直接看到射程的变化
(比如我就做了个100公里射程的近程巡航导弹hhhhhh)
————————
树林里的移动速度我猜测是由移动类型模块控制,也就是说
LandMovement is TModuleSelector
(
Default = TLandMovementModuleDescriptor
(
UnitMovingType = EUnitMovingType/Infantry
SpeedBonusFactorOnRoad = 1.00
MaxAccelerationGRU = 11.0
MaxDecelerationGRU = 155.0
TempsDemiTour = 0.1
StartTime = 0
StopTime = 0
RotationStartTime = 0
RotationStopTime = 0
)
Condition = ~/IfNotCadavreCondition
),
————
UnitMovingType = EUnitMovingType/Infantry移动类型来控制的,我观察步兵在树林里貌似就是没有减速的,应该在某个gamedata中描述了不同移动类型在不同条件下的移动倍率关系,但是我没有找到相关的文件,你可以尝试把坦克的移动类型修改为步兵,测试一下是否会在树林里减速(这里只是提供下我的思路,不确保正确)
zhangscut
发表于 2025-1-17 16:16
zero798362555 发表于 2025-1-12 23:19
对哈,害,忘改弹药文件里的装填时间了,我说今天打的时候怎么感觉补给速度这么慢呢
————————— ...
非常感谢兄弟指点迷津!!我也一直在找机场对飞机的维修时间、装弹时间,不管怎么改\GameData\Gameplay\Constantes\里的Ravitaillement文件,都无法实习秒补,维修和补弹药还是很慢很慢。直到看到兄弟发的team文件里有Airport的字样,也就是这段:
TTeamAirportModuleDescriptor
(
// Point d'essence par tick
FuelSupplyAmountBySecond = 10
// Cout du ravitaillement de point de vie par tick
HealthSupplyAmountBySecond = 0.0198
// Cout du ravitaillement de munition par tick
AmmunitionSupplyAmountBySecond = 1
),
我恍然大悟,这个才是机场补给速度的吧!
zhangscut
发表于 2025-1-17 16:29
野区迷路的兔子 发表于 2025-1-17 15:25
导弹的射程是在Mods\3DM-TEST\GameData\Generated\Gameplay\Gfx中的AmmunitionMissiles.ndf文件中的:你需 ...
我回去试试把坦克改成步兵的移动方式,看看能不能实现。回头再来回帖反馈
————————————————————————
再次感谢楼主!这个帖子应该是全网最详细的warno修改教程了!有了楼主耐心写的帖子,国内的warno的mod玩家们总算找到了看得懂的修改教程!
野区迷路的兔子
发表于 2025-1-17 18:04
zhangscut 发表于 2025-1-17 16:16
非常感谢兄弟指点迷津!!我也一直在找机场对飞机的维修时间、装弹时间,不管怎么改\GameData\Gameplay\C ...
是的,这段代码描述的是机场补给数据
野区迷路的兔子
发表于 2025-1-17 18:05
zhangscut 发表于 2025-1-17 16:29
我回去试试把坦克改成步兵的移动方式,看看能不能实现。回头再来回帖反馈
—————————————— ...
太客气了,我也是分享分享我自己知道的一些内容,前面也有兄弟分享了他们知道的内容,比如汇总的特征或者你前面提到的机场补给相关代码,让我也受益良多,大家多讨论多分享,彼此都会有收获。
zhangscut
发表于 2025-1-20 11:42
zhangscut 发表于 2025-1-17 16:29
我回去试试把坦克改成步兵的移动方式,看看能不能实现。回头再来回帖反馈
—————————————— ...
已经实测,把坦克的移动方式代码EUnitMovingType/Track改为EUnitMovingType/infantry,不会报错,坦克进入树林时候的速度还是有所降低,但似乎没有降的那么慢了,不知道是不是心理作用。原代码如下,只改标红的地方。
LandMovement is TModuleSelector
(
Default = TLandMovementModuleDescriptor
(
UnitMovingType = EUnitMovingType/Track
SpeedBonusFactorOnRoad = 1.71
MaxAccelerationGRU = 18.0
MaxDecelerationGRU = 35.0
TempsDemiTour = 8.0
StartTime = 0
StopTime = 0
RotationStartTime = 0
RotationStopTime = 0
)
sorcer11
发表于 2025-1-24 01:57
666666666666666666666666666666
真娜Takashimana
发表于 2025-1-24 04:07
本帖最后由 真娜Takashimana 于 2025-1-24 04:12 编辑
辛苦大佬分享!
waitsee
发表于 2025-1-24 09:32
谢谢分享
GI08
发表于 2025-1-24 10:18
感谢分享!!!!!!!!
zsx3032531
发表于 2025-1-24 12:54
666666666666666666666666
zero798362555
发表于 2025-1-24 21:28
本帖最后由 zero798362555 于 2025-1-24 22:02 编辑
野区迷路的兔子 发表于 2025-1-17 14:03
兄弟们大家好,今天进入修改关于单位武器的修改部分
——————
4.2.如何修改单位武器
————————————————————————————————————————————————————————————————
第一个装载的武器:是Ammo_Canon_AP_125_mm_2A46M_late_T80UD和Ammo_Canon_HE_125_mm_2A46M_late_T80UD
即为坦克的主炮,为什么他们两个是第一个武器呢,实际是:SalvoStockIndex = 0这里写的,这个代表着这两个武器是共用Salves = [ 1, 4, 65, 65, 1, ]这个齐射弹药属性的第0位信息也就是第一个数字1;
但是实际在武器界面我们可以看到,t80UD的主炮,弹药是38发而不是1发,是为什么呢?
这里我也没有搞得非常清楚,只能说按照我的浅薄的理解,这里的Salves = [ 1, 4, 65, 65, 1, ]会和弹药文件中的NbTirParSalves = 38与AffichageMunitionParSalve = 38共同作用,用来描述单位可以开火的次数,以及开火的数据;
———————————————
这个应该是苏系中高级坦克的特色,其装备了自动装弹机,Salves= [ 1, 4, 65, 65, 1, ]中的"1"应该是射击一轮的意思。
苏系高级坦原则上只要选定目标38发弹可以一直射没,而北约系大多数装备了布莱克曼叔叔装弹机的坦克则是选定目标后强制射击只射击一发弹,所以二者在表达方式上为Salves= [ 1, 4, 65, 65, 1, ]T80UD和Salves = [ 40, 65, 80, 1, ]M1A1HA
二者在游戏中也体现为瞄准射击时候的圆圈颜色不同,见下图,M1A1HA只绿,T80UD首绿后蓝。
在ammunition.ndf文件夹里我以T80UD和M1A1HA的AP炮举例进行对比(我用的是我自制MOD中的数据,不过一个原理)
T80UD
Ammo_Canon_AP_125_mm_2A46M_late_T80UD is TAmmunitionDescriptor
(
DescriptorId = GUID:{1223b83d-2683-449e-9cf5-d4c03c448184}
Name = 'LGYLAFMITB'
TypeCategoryName = 'FIQMEQMUTK'
Caliber = 'GPFACVPVNW'
WeaponDescriptionToken = 'YDWRGQLHYI'
TraitsToken = [ 'autoloader', 'HE', 'KINETIC', ]
WeaponCursorType = Weapon_Cursor_Canon
MinMaxCategory = MinMax_CanonAP
Arme = TDamageTypeRTTI(Family=DamageFamily_ap Index=34)
ProjectileType = EProjectileType/Obus
ImpactHappening = [ 'CanonGrosAPFDST80' ]
FxPower = EFXPower/Moyen
TempsEntreDeuxTirs = 6.0
TempsEntreDeuxFx = 1.0 //此处两行与M1A1HA的不同,按字面意思理解“两次射击间隔时间”和“两次特效间隔时间”,这可能就是为什么Salves = [ 1, 4, 65, 65, 1, ]显示1的原因
PorteeMaximaleGRU = 2275//这个最大射击距离我有一点要补充,这个和WeaponsMinMax.ndf和DamageResistance.ndf有所关联,如果这里距离改大,那么相应的Arme= TDamageTypeRTTI(Family=DamageFamily_ap Index=34)这里的index=34也是要改的,
但是你单改这个你会发现在游戏伤害没有改的大,因为改了距离WeaponsMinMax.ndf的就与之冲突了,所以必须把WeaponsMinMax.ndf中
( ~/MinMax_CanonAP下的
MaxRangeGRU = TMinMaxValue (
Min = 850
Max = 2275//把这个也改成你想要变更的射击距离,如果这个改的比PorteeMaximaleGRU= 2275大伤害也会增加,自己可以试着去按着自己想法平衡,同理DamageResistance.ndf这个也可以自行编辑拓展,但最好不要改,关联太多稍不注意就容易崩溃
)
PorteeMinimaleGRU = 35
AngleDispersion = 0.0
DispersionAtMaxRangeGRU = 106
DispersionAtMinRangeGRU = 18
DispersionWithoutSorting = True
CorrectedShotAimtimeMultiplier = 1.0
RadiusSplashPhysicalDamagesGRU = 1
PhysicalDamages = 1.0
ShowDamageInUI = False
RadiusSplashSuppressDamagesGRU = 44
SuppressDamages = 85.0
AllowSuppressDamageWhenNoImpact = False
DisplaySalveAccuracy = False
TirIndirect = False
TirReflexe = True
InterdireTirReflexe = False
MaximalSpeedGRU = 0.0
ShotWithoutPhysics = False
FluidFriction = 0.0
NoiseDissimulationMalus = 2.2
ShotsBeforeMaxNoise = 2
TargetOnlyOneUnitInDistrict = True
HitRollRuleDescriptor = TDiceHitRollRuleDescriptor
(
DescriptorId = GUID:{46a8e6a8-41f4-4b4b-995e-e7da5bcad3c3}
BaseCriticModifier = 0
BaseHitValueModifiers =
[
(EBaseHitValueModifier/Base, 0.0),
(EBaseHitValueModifier/Idling, 65),
(EBaseHitValueModifier/Moving, 55),//这个移动射击命中率在修改炮射导弹时候要注意把CanShootWhileMoving= False改为True
(EBaseHitValueModifier/Targeted, 0.0),
]
DistanceToTarget = True
)
TempsDeVisee = 2.4
TempsEntreDeuxSalves = 5.4
TempsEntreDeuxSalves_Min = -1.0
TempsEntreDeuxSalves_Max = -1.0
NbTirParSalves = 38//每轮齐射发数
SupplyCost = 456.0
NbSalvosShootOnPosition = 1
CanShootOnPosition = False
CanShootWhileMoving = True
NbrProjectilesSimultanes = 1
AffichageMunitionParSalve = 38//每轮齐射显示弹数
InterfaceWeaponTexture = "Texture_Interface_Weapon_2A46_T80"
SmokeDescriptor = nil
FireDescriptor = nil
TargetUnitCenter = True
CanHarmAirplanes = True
IsHarmlessForAllies = True
PiercingWeapon = True
TandemCharge = False
FlightTimeForSpeed = 1.1
DistanceForSpeedGRU = 2297.0//这个和上一行的速度感觉也可以改的再快一些体验会好一点
DamageTypeEvolutionOverRangeDescriptor= ~/DamageTypeEvolutionOverRangeDescriptor_AP1_1Km
)
M1A1HA
Ammo_Canon_AP_120_mm_L52_M68_HA is TAmmunitionDescriptor
(
DescriptorId = GUID:{3bf8cdb9-ca60-4c52-b309-9aec801da0a1}
Name = 'RJLKRJGMBV'
TypeCategoryName = 'FIQMEQMUTK'
Caliber = 'DYWXTLDKWR'
WeaponDescriptionToken = 'YDWRGQLHYI'
TraitsToken = [ 'MOTION', 'HE', 'KINETIC', ]
WeaponCursorType = Weapon_Cursor_Canon
MinMaxCategory = MinMax_CanonAP
Arme = TDamageTypeRTTI(Family=DamageFamily_ap Index=35)
ProjectileType = EProjectileType/Obus
ImpactHappening = [ 'CanonGrosAPFDSM1Abrams' ]
FxPower = EFXPower/Moyen
TempsEntreDeuxTirs = 1.0
TempsEntreDeuxFx = 1.0
PorteeMaximaleGRU = 2300
PorteeMinimaleGRU = 35
AngleDispersion = 0.0
DispersionAtMaxRangeGRU = 106
DispersionAtMinRangeGRU = 18
DispersionWithoutSorting = True
CorrectedShotAimtimeMultiplier = 1.0
RadiusSplashPhysicalDamagesGRU = 1
PhysicalDamages = 1.0
ShowDamageInUI = False
RadiusSplashSuppressDamagesGRU = 42
SuppressDamages = 82.0
AllowSuppressDamageWhenNoImpact = False
DisplaySalveAccuracy = False
TirIndirect = False
TirReflexe = True
InterdireTirReflexe = False
MaximalSpeedGRU = 0.0
ShotWithoutPhysics = False
FluidFriction = 0.0
NoiseDissimulationMalus = 2.2
ShotsBeforeMaxNoise = 2
TargetOnlyOneUnitInDistrict = True
HitRollRuleDescriptor = TDiceHitRollRuleDescriptor
(
DescriptorId = GUID:{952e0ce6-73d2-4c1a-aa77-08518e092f21}
BaseCriticModifier = 0
BaseHitValueModifiers =
[
(EBaseHitValueModifier/Base, 0.0),
(EBaseHitValueModifier/Idling, 70),
(EBaseHitValueModifier/Moving, 65),
(EBaseHitValueModifier/Targeted, 0.0),
]
DistanceToTarget = True
)
MaxSuccessiveHitCount = 3
TempsDeVisee = 3.0
TempsEntreDeuxSalves = 6.6
TempsEntreDeuxSalves_Min = -1.0
TempsEntreDeuxSalves_Max = -1.0
NbTirParSalves = 1//布莱克曼叔叔由于手动装弹,每轮齐射发数只为1
SupplyCost = 12.0
NbSalvosShootOnPosition = 1
CanShootOnPosition = False
CanShootWhileMoving = True
NbrProjectilesSimultanes = 1
AffichageMunitionParSalve = 1//布莱克曼叔叔由于手动装弹,每轮齐射显示弹数只为1
InterfaceWeaponTexture = "Texture_Interface_Weapon_M68_120"
SmokeDescriptor = nil
FireDescriptor = nil
TargetUnitCenter = True
CanHarmAirplanes = True
IsHarmlessForAllies = True
PiercingWeapon = True
TandemCharge = False
FlightTimeForSpeed = 1.1
DistanceForSpeedGRU = 2297.0
DamageTypeEvolutionOverRangeDescriptor= ~/DamageTypeEvolutionOverRangeDescriptor_AP1_1Km
)
———————————————
WeaponsMinMax.ndf中的主要题头展示如下,具体数值可以自行翻译修改
AAM 空空导弹 AGM空地导弹 ATGM反坦克导弹 SAM地空导弹 SEAD反辐射导弹
Assault_rifle突击步枪SMG冲锋枪 HMG重机枪inf_MMG班组机枪 inf_sniper狙击枪
AutocanonHE高爆弹 CanonAP穿甲弹
Bombe炸弹 Cluster集束弹药 DCA高机防空
FLAME喷火器 Grenade榴弹(步兵)Gatling加特林 LAW轻型反坦克武器
MLRS多管火箭 Roquette_AS火箭弹(空中) obusier榴弹炮 Mortier迫击炮
(( ~/MinMax_CanonAP(刚才看这个代码突然发现也有和Salves= [ 1, 4, 65, 65, 1, ]中的"1"相关联的数据)
, TWeaponMinMaxValues
(
// PhysicalDamages x weapon_count_ (Number of weapons)物理伤害x武器数量(武器数量)
PhysicalDamages = TMinMaxValue (
Min = 0.6
Max = 3.2
)
// SuppressDamages x weapon_count_ (Number of weapons)压制伤害x武器数量(武器数量)
SuppressDamages = TMinMaxValue (
Min = 39
Max = 432
)
SplashDamageRadiusGRU = TMinMaxValue (溅射损伤半径
Min = 1
Max = 57
)
—————————
参考大佬之前发的做对照
PorteeMaximaleTBAGRU(对直升机)
PorteeMaximaleHAGRU (对空)
PorteeMaximaleGRU(对地)
—————————
MaxRangeGRU = TMinMaxValue (最大范围
Min = 850
Max = 2275
)
MaxRangeTBAGRU = TMinMaxValue (
Min = 0
Max = 0
)
MaxRangeHAGRU = TMinMaxValue (
Min = 0
Max = 0
)
AimTime = TMinMaxValue (目标时间
Min = 2.0
Max = 4.0
)
ReloadTime = TMinMaxValue (重新加载时间
Min = 4.0
Max = 18.0
)
Accuracy = TMinMaxValue (静止射击精度
Min = 30
Max = 70
)
AccuracyMovement = TMinMaxValue (移动射击精度
Min = 0
Max = 60
)
RateOfFire = TMinMaxValue (殉爆率
Min = 3.3333333333333335
Max = 15.0
)
Penetration = TMinMaxValue (穿透率
Min = 1
Max = 34
)
TimeBetweenTwoShots = TMinMaxValue (两次射击之间的时间
Min = 1.0
Max = 7.5
)
NbShotsBySalvo = TMinMaxValue (//这个应该就是决定射击次数的了,Salves= [ 1, 4, 65, 65, 1, ]中的"1"相关联的数据
Min = 1
Max = 40
)
SupplyCost = TMinMaxValue (补给
Min = 2.0
Max = 600.0
)
TurretSpeed = TMinMaxValue (炮塔速度,这个是旋转速度?
Min = 60
Max = 120
)
——————————————————————————————————————————————————————————————————
另外我想请教下像视频里这样把爆炸视觉效果改成核弹那样是修改哪里的文件,或者创意工坊里的MOD怎么解包,看一下它的代码?
https://www.bilibili.com/video/B ... 8e1f1857c03878647a8
在ammunition和ammunitionmissiles文件夹里
RadiusSplashPhysicalDamagesGRU = 155//物理杀伤范围
PhysicalDamages = 2.9986
ShowDamageInUI = True
RadiusSplashSuppressDamagesGRU = 275//压制范围 我修改了这两个,体现在地图中的只是伤害确实有,但是视觉效果和之前一样
SuppressDamages = 440.0
在WeaponDescriptor.ndf里
MountedWeaponDescriptorList = [
TMountedWeaponDescriptor
(
Ammunition = $/GFX/Weapon/Ammo_RocketArt_thermobaric_220mm_x30
AnimateOnlyOneSoldier = False
DispersionRadiusOffColor = RGBA
DispersionRadiusOffThickness = 0.0
DispersionRadiusOnColor = RGBA
DispersionRadiusOnThickness = 0.8//色散半径与厚度之比 这个我怀疑可能有关,但不知到有什么影响,不知道大佬啥看法,爆炸视觉效果是否有相关联的文件?
EffectTag = 'FireEffect_RocketArt_thermobaric_220mm_x30'
HandheldEquipmentKey = 'MeshAlternative_1'
NbWeapons = 1
SalvoStockIndex = 0
ShowDispersion = True
Show In Interface = True
Weapon Active And Can Shoot Property Name = 'WeaponActiveAndCanShoot_1'
Weapon Ignored Property Name = 'WeaponIgnored_1'
WeaponShootDataPropertyName = ['WeaponShootData_0_1', 'WeaponShootData_1_1']
)
]
OutOfRangeTrackingDuration = 3.5
Tag = 'tourelle1'
TurretIdleBehaviourDescriptor = ~/TurretIdle_ArtilleryAutoMoteur
VitesseRotation = 1.0471975511965976
YulBoneOrdinal = 1
)
]
——————————————————————————————————————————————————————————————————
zero798362555
发表于 2025-1-24 21:42
野区迷路的兔子 发表于 2025-1-13 00:21
嚯嚯嚯,果然还是多分享,我也不是啥大佬只是刚好自己懂一点然后搞了搞分享下经验;
你几个文件我还真没 ...
才发现大佬用的是Visual Studio Code,我用的是notepad+++要么说看着不一样呢:lol
zero798362555
发表于 2025-1-24 22:00
zero798362555 发表于 2025-1-24 21:28
————————————————————————————————————————————————— ...
再给兄弟们推荐个网站,逛B站大佬TsukiPresence (https://space.bilibili.com/460639/dynamic?spm_id_from=333.1365.list.card_title.click)发的公告时看见的,https://war-yes.com/
应该是欧根自己搭建的warno资料库,各种详细数据都进行了可视化编辑,方便大家对比各种数据
https://bbs.3dmgame.com/forum.php?mod=image&aid=6169249&size=300x300&key=21418ad94f91e930&nocache=yes&type=fixnone
https://bbs.3dmgame.com/forum.php?mod=image&aid=6169250&size=300x300&key=bb20daee7e2c15e3&nocache=yes&type=fixnone
https://bbs.3dmgame.com/forum.php?mod=image&aid=6169251&size=300x300&key=8b8a9c016567558f&nocache=yes&type=fixnone
3268802
发表于 2025-1-26 03:26
141935的有么
z1398571775
发表于 2025-1-26 11:07
感谢分享
海浪无际
发表于 2025-1-27 00:13
66666666666666666
蹲蹲二号
发表于 2025-1-27 01:14
66666666666666666