【Warno预先号令】Mod制作个人经验分享(Mod经验+v141373学习版+v141373无敌CE修改)
以下全部内容基于:1.游戏版本v141373
原贴:Скачать WARNO (последняя версия) на ПК торрент
2.CE修改器
**** Hidden Message *****
3.YSM的开源Mod
Steam 创意工坊::Yokaiste's Sandbox Mod — An advanced open-source project for unlimited experience
btw,mod是正版和学习版都可以制作和使用的。
static/image/hrline/5.gif
下面分享我个人的Mod制作经验,我这几周主要研究的是单位的相关数据修改,所以只和大家分享这部分的内容:
目录:
1.如何开始制作
2.基础的文件与逻辑关系介绍
3.如何修改师包含的单位
4.如何修改单位
4.1.如何修改单位属性
4.2.如何修改单位武器
4.3.如何修改单位模型
4.4.如何修改单位运载工具
4.5.如何给单位增加特制
5.如何修改武器数据
5.1.如何修改子弹炮弹伤害
5.2.如何修改导弹伤害
5.3.如何修改武器射击类型
5.4.如何修改导弹弹道
目前暂时先列这么多,这些是我目前会的部分,有可能理解不对的地方还请海涵,下班时间才有空写,所以估计要几天才能写完。
也是我自己摸索的一个内容存档,我也怕我一段时间不搞就忘了{:3_99:}
static/image/hrline/5.gif
1.如何开始制作
第一步:生成mod文件
访问游戏根目录,打开Mods文件夹,运行CreateNewMod.bat文件,输入你的mod名称,点击回车
第二步:得到生成的mod文件,我们后续所有的mod修改都在这个文件中进行
第三步:打开mod文件,这里只有一个文件需要重点注意,GenerateMod.bat(生成mod),这个文件是我们每次代码中更新了mod的内容,都需要点击这个文件进行运行,他会帮我们检查一遍修改的代码,并生成可运行的mod文件(即在游戏中选的mod)
第四步:下载工具Visual Studio Code(免费),地址Visual Studio Code - Code Editing. Redefined,就此准备工作就结束了。
下一章,我们需要了解各个文件的大致信息,之后我们就要通过一个一个案例,来了解具体如何修改游戏内容。
static/image/hrline/5.gif
2.基础的文件与逻辑关系介绍
比较关键的文件夹有两个:
\Mods\3DM-TEST\GameData\Generated\Gameplay\Decks (这个文件夹中的文件主要是作用于师(Division)的,用来修改师内的卡组数据)
原始文件(\GameData\Generated\Gameplay\Decks)翻译文件
DeckPacks.ndf《卡组包.ndf》
Decks.ndf《卡组.ndf》
DeckSerializer.ndf《卡组序列化器.ndf》
Division CostMatrix.ndf《师费用矩阵.ndf》
DivisionList.ndf《师列表.ndf》
DivisionPacks.ndf《师包.ndf》
DivisionRules.ndf《师规则.ndf》
Divisions.ndf《师(具体配置等相关内容).ndf》
StrategicCombatGroups.ndf《战略战斗群组.ndf》
StrategicDecks.ndf《战略卡组.ndf》
StrategicPacks.ndf《战略包.ndf》
\Mods\3DM-TEST\GameData\Generated\Gameplay\Gfx(这个文件夹中的文件主要是作用于单位的,用来修改单位的相关数据)
原始文件(\GameData\Generated\Gameplay\Gfx)翻译文件
Ammunition.ndf《弹药.ndf》
Ammunition Missiles.ndf《弹药 导弹.ndf》
BuildingCadavre Descriptors.ndf《建筑残骸描述符.ndf》
Building Descriptors.ndf《建筑描述符.ndf》
CapaciteList.ndf《容量列表.ndf》
Conditions Descriptor.ndf《条件描述符.ndf》
Damage Levels.ndf《伤害等级.ndf》
DamageResistance.ndf《伤害抗性.ndf》
DamageResistanceFamilyList.ndf《伤害抗性家族列表.ndf》
DamageResistance Family Listimpl.ndf《伤害抗性家族列表实现.ndf》
DamageStairTypeEvolution OverRangeDescriptor.ndf《伤害阶梯类型随射程变化描述符.ndf》
EffectsPacksList.ndf《效果包列表.ndf》
EffetsSurUnite.ndf《对单位的影响.ndf》
ExperienceLevels.ndf《经验等级.ndf》
FireDescriptor.ndf《火力描述符.ndf》
Generated DepictionFXMissiles.ndf《生成的描绘特效(导弹).ndf》
Generated DepictionFXWeapons.ndf《生成的描绘特效(武器).ndf》
Generated Depiction WeaponBlock.ndf《生成的描绘武器模块.ndf》
MimeticImpactMapping.ndf《伪装碰撞映射.ndf》
Missile Carriage.ndf《导弹挂载.ndf》
Missile Carriage Depiction.ndf《导弹挂载描绘.ndf》
Missile Descriptors.ndf《导弹描述符.ndf》
OrderAvailability Tactic.ndf《战术可用指令.ndf》
PlayerMission Tags.ndf《玩家任务标签.ndf》
ShowRoomUnits.ndf《展厅单位.ndf》
Skins.ndf《外观皮肤.ndf》
SmokeDescriptor.ndf《烟雾描述符.ndf》
UniteCadavre Descriptor.ndf《单位残骸描述符.ndf》
UniteDescriptor.ndf《单位描述符.ndf》
WeaponDescriptor.ndf《武器描述符.ndf》
同时在\Mods\3DM-TEST\GameData\Generated\Gameplay\Gfx文件夹中包含了4个子文件夹,其中比较有用的是:\Gfx\Depictions(这里面主要是修改模型相关的数据)\Gfx\Infanterie(这里面主要是步兵相关的模型)
原始文件(\GameData\Generated\Gameplay\Gfx\Depictions)翻译文件
DepictionAerialUnits.ndf《空中单位描绘.ndf》
DepictionAerialUnitsShowroom.ndf《空中单位展厅描绘.ndf》
DepictionAlternatives.ndf《描绘替代方案.ndf》
Depiction MimeticGhosts.ndf《伪装幽灵描绘.ndf》
Depiction Vehicles.ndf《车辆描绘.ndf》
GeneratedAirplanePawns.ndf《生成的飞机棋子.ndf》
GeneratedBuildingGhosts.ndf《生成的建筑幽灵.ndf》
Generated DepictionAerialGhosts.ndf《生成的空中幽灵描绘.ndf》
Generated DepictionGhosts.ndf《生成的幽灵描绘.ndf》
Generated Depiction Humans.ndf《生成的人员描绘.ndf》
Generated DepictionSelectors.ndf《生成的选择器描绘.ndf》
Generated DepictionVehiclesShowroom.ndf《生成的车辆展厅描绘.ndf》
GeneratedPawns.ndf《生成的棋子.ndf》
Generated Towable.ndf《生成的牵引物.ndf》
原始文件(\GameData\Generated\Gameplay\Gfx\Infanterie)翻译文件
Generated Depictioninfantry.ndf《生成的步兵描绘.ndf》
GeneratedInfanterieWeaponsUnites.ndf《生成的步兵武器单位.ndf》
这就是我们常用的文件,接下来,我们会通过一个一个的案例来看如何修改
static/image/hrline/5.gif
本帖最后由 野区迷路的兔子 于 2025-2-3 16:30 编辑
3.如何修改师包含的单位
最常见的mod就是实现一个师包含北约的所有单位或者华约的所有单位,或者包含北约+华约的所有单位,这时候,我们就需要通过修改Mods\3DM-TEST\GameData\Generated\Gameplay\Decks文件中的文件来实现;
我们看下需要修改的文件:
Divisions.ndf《师(具体配置等相关内容).ndf》
首先需要修改Divisions.ndf,这个文件中的数据结构是由多个这样的代码段构成的,每一个代码段代表着一个师,我随便拉出来一个举例:
Descriptor_Deck_Division_SOV_119IndTkBrig_multi is TDeckDivisionDescriptor //Descriptor_Deck_Division_是前缀,每一个师都是以这个开始,SOV_119IndTkBrig_multi是代码中的名称,不是实际名称
(
DescriptorId = GUID:{b611cb29-bf44-4d02-a529-36312df5ec2c} //GUID是全局识别符,类似身份证,如果我们要复制粘贴创建新的师,就需要给我们创建的新师一个身份证号
CfgName = 'SOV_119IndTkBrig_multi' // 这个师的代码名称
DivisionName = 'QGUHEAAYWW' //游戏中展示名称的对应码,游戏会识别这个代码在不同语言的翻译中寻找在游戏中展示的名称
DivisionPowerClassification = 'DC_PWR2' //师的等级
DivisionCoalition = ECoalition/Axis //这个师属于华约
DivisionTags = ['DEFAULT', 'SOV', 'Axis', 'armored', 'DC_PWR2'] //标签
DescriptionHintTitleToken = 'QGUHEAAYWW' //展示名称对应码
PackList = MAP //师包单位列表,这个列表里就是这个师具体有那些单位以及单位的卡数,如果你想要在这个师中新增单位,就可以通过往这个列表中粘贴内容来实现,比如我希望给119师增加F15E,我就可以把(~/Descriptor_Deck_Pack_F15E_StrikeEagle_US, 2),这段代码增加到列表中,然后回到根目录点击本地更新mod,再次运行游戏就可以在119师中使用F15E咯,你也可以通过这个案例来实现mod制作的第一步
[
(~/Descriptor_Deck_Pack_2S1_Gvozdika_SOV, 2),
(~/Descriptor_Deck_Pack_AT_T12_Rapira_SOV, 2),
(~/Descriptor_Deck_Pack_BMP_1_CMD_SOV, 3),
(~/Descriptor_Deck_Pack_BRDM_2_Konkurs_SOV, 2),
(~/Descriptor_Deck_Pack_BRDM_2_SOV, 2),
(~/Descriptor_Deck_Pack_BRM_1_SOV, 2),
(~/Descriptor_Deck_Pack_BTR_60_CMD_SOV, 1),
(~/Descriptor_Deck_Pack_Engineers_CMD_SOV, 1),
(~/Descriptor_Deck_Pack_Engineers_Flam_SOV, 2),
(~/Descriptor_Deck_Pack_Engineers_SOV, 2),
(~/Descriptor_Deck_Pack_Engineers_Scout_SOV, 1),
(~/Descriptor_Deck_Pack_FOB_SOV, 1),
(~/Descriptor_Deck_Pack_HMGteam_NSV_SOV, 1),
(~/Descriptor_Deck_Pack_Howz_MstaB_150mm_SOV, 2),
(~/Descriptor_Deck_Pack_HvyScout_SOV, 1),
(~/Descriptor_Deck_Pack_MANPAD_Igla_SOV, 2),
(~/Descriptor_Deck_Pack_MTLB_CMD_SOV, 1),
(~/Descriptor_Deck_Pack_MTLB_Strela10_SOV, 1),
(~/Descriptor_Deck_Pack_MTLB_supply_SOV, 2),
(~/Descriptor_Deck_Pack_MiG_29_AA_SOV, 2),
(~/Descriptor_Deck_Pack_Mi_24K_reco_SOV, 2),
(~/Descriptor_Deck_Pack_Mi_24P_SOV, 2),
(~/Descriptor_Deck_Pack_Mi_24V_AT_SOV, 2),
(~/Descriptor_Deck_Pack_Mi_24V_RKT_SOV, 3),
(~/Descriptor_Deck_Pack_Mi_8K_CMD_SOV, 1),
(~/Descriptor_Deck_Pack_Mi_8TV_Gunship_SOV, 1),
(~/Descriptor_Deck_Pack_Mi_8TV_s80_SOV, 1),
(~/Descriptor_Deck_Pack_Mi_8TZ_SOV, 2),
(~/Descriptor_Deck_Pack_Mortier_2B9_Vasilek_nonPara_SOV, 2),
(~/Descriptor_Deck_Pack_MotRifles_HMG_SOV, 1),
(~/Descriptor_Deck_Pack_MotRifles_SOV, 1),
(~/Descriptor_Deck_Pack_Scout_LRRP_SOV, 1),
(~/Descriptor_Deck_Pack_Spetsnaz_CMD_SOV, 1),
(~/Descriptor_Deck_Pack_Spetsnaz_FireSupport_SOV, 1),
(~/Descriptor_Deck_Pack_Spetsnaz_SOV, 1),
(~/Descriptor_Deck_Pack_Su_24MP_SOV, 1),
(~/Descriptor_Deck_Pack_Su_24M_LGB_SOV, 2),
(~/Descriptor_Deck_Pack_Su_24M_SOV, 1),
(~/Descriptor_Deck_Pack_Su_27S_SOV, 2),
(~/Descriptor_Deck_Pack_T80BV_CMD_SOV, 3),
(~/Descriptor_Deck_Pack_T80UD_SOV, 6),
(~/Descriptor_Deck_Pack_T80U_SOV, 3),
(~/Descriptor_Deck_Pack_TOS1_Buratino_SOV, 2),
(~/Descriptor_Deck_Pack_TO_55_SOV, 2),
(~/Descriptor_Deck_Pack_Tunguska_2K22_SOV, 2),
(~/Descriptor_Deck_Pack_Ural_4320_SOV, 2),
]
MaxActivationPoints = 50 //师的单位点数
CostMatrix = MatrixCostName_SOV_119IndTkBrig_multi //师的卡槽,在这个文件夹中DivisionCostMatrix.ndf的文件,用来配置这个师每个有几个槽以及每个槽要几点
EmblemTexture = "Texture_Division_Emblem_SOV_119OdtTP" //图片旗帜icon相关的东西
PortraitTexture = "Texture_Division_Portrait_default" //图片旗帜icon相关的东西
TypeTexture = "Texture_Division_Type_armored" //图片旗帜icon相关的东西
CountryId = "SOV"
)
DivisionCostMatrix.ndf师槽位文件,这个你们肯定一看就懂了,使用MatrixCostName_SOV_119IndTkBrig_multi 这个信息进行和上一个文件进行关联,然后描述了各种类型的槽位和每个槽位的点数1/1/2/3/3/3就代表6个槽,1费槽2个,2费槽1个,3费槽3个。
MatrixCostName_SOV_119IndTkBrig_multi is MAP
[
(EDefaultFactories/Art, ),
(EDefaultFactories/DCA, ),
(EDefaultFactories/Defense, []),
(EDefaultFactories/Helis, ),
(EDefaultFactories/Infantry, ),
(EDefaultFactories/Logistic, ),
(EDefaultFactories/Planes, ),
(EDefaultFactories/Recons, ),
(EDefaultFactories/Tanks, ),
]
okk,到这里你已经会往一个师里加单位,以及设置单位有几卡,以及设置这个师有几槽,几个动员点了,那么接下来,我们就一起看看怎么样能够修改单位
同时需要注意,如果往师中增加新的单位,还同时需要修改DivisionRules.ndf在DivisionRules.ndf文件中找到相关的师增加新单位
感谢分享 本帖最后由 野区迷路的兔子 于 2025-1-3 12:13 编辑
4.如何修改单位
在Warno中每一个在游戏中可以看到的卡,都是一个独立的单位,不同的师有时候会共用同一个单位,所以在修改单位的时候,我们要注意这一点,修改一个单位有可能是会影响到别的师(当然可以通过复制粘贴,创建新单位的方式来实现,但这个会相对比较麻烦,我尝试在后面的帖子中介绍创建新的单位相关的内容)
单位的数据主要由以下部分构成:
1.名称、id
2.可见性(隐蔽度)
3.外观(模型)
4.自动掩护行为设置(比如自动进入树林掩护)
5.武器(单位的武器是什么,这里会引用其他的文件,我们在后面武器修改中介绍)
6.强度、装甲数值、装甲类型(反应装甲等),电子干扰强度
7.危险度(危险度高会被优先攻击)
8.士气等级
9.移动速度(地面单位转向速度,飞机的加速减速转弯半径各种角度,直升机的起降速度等等)
10.燃料与移动距离(飞机的滞空时长)
11.光学扫描器(飞机的视野)
12.视野
13.残骸模型14.特殊能力(电子干扰,指挥,无线电侦查,狙击,炮兵指挥等等)
15.运载信息(几个座位,装载时间,装载距离等)(是的这里可以设置座位,也就是说可以给卡车、直升机设置两个座位,就可以一次运2队兵)
16.指挥官占领区域属性
17.自动行为(自动攻击目标,距离等)
18.命令(就是游戏里右下角能够支持的命令,比如炮兵的自动反跑,运载单位的上车下车)
19.费用
20.展示信息(背景图,模型图,小地图标记,介绍中的各种标签,国家图等等)
大概就是这些,我想起来再补充,这是单位文件中能够修改的部分,后续我会按照目录中的内容介绍详细如何修改
以T80BV指挥坦为例吧,先从\Mods\3DM-TEST\GameData\Generated\Gameplay\Gfx的UniteDescriptor.ndf文件中贴一段这个单位的代码
export Descriptor_Unit_T80BV_CMD_SOV is TEntityDescriptor
(
DescriptorId = GUID:{d8489620-7cf1-4188-87db-f794045f563a}
ClassNameForDebug= 'Unit_T80BV_CMD_SOV'
ModulesDescriptors = [
TTypeUnitModuleDescriptor
(
Coalition = ECoalition/Axis
MotherCountry = 'SOV'
AcknowUnitType = ~/TAcknowUnitType_Command
TypeUnitFormation = 'Supply'
),
TankFlagsModuleDescriptor,
~/TargetManagerModuleSelector,
TemplateUnitCriticalModule(Module=$/GFX/UnitConstantes/CriticalEffectModule_Vehicule_Arme),
~/TargetCoordinatorModuleSelector,
~/UnitPositionModuleDescriptor,
~/PlayerMissionModuleDescriptor,
TCommanderModuleDescriptor(),
~/LinkTeamModuleDescriptor,
TTagsModuleDescriptor
(
TagSet = [
"AllUnits",
"AllowedForMissileRoE",
"Char",
"Char_CMD",
"Commandant",
"GroundUnits",
"InfmapCommander",
"UNITE_T80BV_CMD_SOV",
"Unite",
]
),
TExperienceModuleDescriptor
(
ExperienceLevelsPackDescriptor = ~/ExperienceLevelsPackDescriptor_XP_pack_simple_v3
CanWinExperience = True
ExperienceGainBySecond = ~/ExperienceGainBySecond
ExperienceMultiplierBonusOnKill = ~/ExperienceMultiplierBonusOnKill
),
TVisibilityModuleDescriptor
(
UnitConcealmentBonus = 1.0
VisionUnitType = EVisionUnitType/AlwaysOnGround
),
ApparenceModel is VehicleApparenceModuleDescriptor
(
Depiction = $/GFX/Depiction/Gfx_T80BV_CMD_SOV
BlackHoleIdentifier = "T80BV_CMD_SOV"
GameplayBBoxBoneName = "chassis"
ReferenceMesh = $/GFX/DepictionResources/Modele_T80BV_CMD_SOV
),
TAutoCoverModuleDescriptor
(
AutoCoverRangeGRU = 123
OccupationRadiusGRU = 35
TerrainListMask = ~/ETerrainType/None | ~/ETerrainType/ForetLegere | ~/ETerrainType/ForetDense
TerrainList = [~/ETerrainType/ForetLegere, ~/ETerrainType/ForetDense, ]
UseTerrainsForEscape = False
),
WeaponManager is TModuleSelector
(
Default = $/GFX/Weapon/WeaponDescriptor_T80BV_CMD_SOV
Condition = ~/IfNotCadavreCondition
),
TBaseDamageModuleDescriptor
(
MaxPhysicalDamages = 11
MaxSuppressionDamages = ~/GroundUnit_MaxSuppressionDamages
MaxStunDamages = ~/GroundUnit_MaxStunDamages
PhysicalDamageLevelsPack = ~/DamageLevelsPackDescriptor_Default_pack_paliers_degats_phy
SuppressDamageLevelsPack = ~/DamageLevelsPackDescriptor_GroundUnits_packSupp
StunDamageLevelsPack = ~/DamageLevelsPackDescriptor_Unit_packStun
),
TDamageModuleDescriptor
(
SuppressDamagesRegenRatio = ~/GroundUnit_SuppressDamagesRegenRatioList
StunDamagesRegen = ~/GroundUnit_StunDamagesRegen
BlindageProperties = TBlindageProperties
(
ResistanceFront = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=17)
ResistanceSides = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=7)
ResistanceRear = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=4)
ResistanceTop = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=3)
ExplosiveReactiveArmor = True
)
KillWhenDamagesReachMax = True
HitRollECM = 0.0
AutoOrientation = True
UseTopArmorAgainstFire = True
),
TDangerousnessModuleDescriptor(Dangerousness= 144),
TRoutModuleDescriptor(MoralLevel = 0),
FacingInfos is ~/FacingInfosModuleDescriptor,
GenericMovement is TModuleSelector
(
Default = TGenericMovementModuleDescriptor
(
MaxSpeedInKmph = 60
PathfindType = $/Pathfind/PathfindTypes/Vehicle
)
Condition = ~/IfNotCadavreCondition
),
LandMovement is TModuleSelector
(
Default = TLandMovementModuleDescriptor
(
UnitMovingType = EUnitMovingType/Track
SpeedBonusFactorOnRoad = 1.57
MaxAccelerationGRU = 18.0
MaxDecelerationGRU = 55.0
TempsDemiTour = 5.5
StartTime = 0
StopTime = 0
RotationStartTime = 0
RotationStopTime = 0
)
Condition = ~/IfNotCadavreCondition
),
TFuelModuleDescriptor
(
FuelCapacity = 2040
FuelMoveDuration = 575.0
),
TScannerConfigurationDescriptor
(
OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/DontUse
PorteeVisionTBAGRU = 0.0
PorteeVisionFOWGRU = 0.0
DetectionTBAGRU = 4947
PorteeVisionGRU = 3534
PorteeIdentification = 0.0
OpticalStrength = 90.9
OpticalStrengthAltitude = 20
SpecializedDetectionsGRU = MAP [
( EVisionUnitType/AlwaysInHighAltitude, 5654.0 ),
]
),
TReverseScannerWithIdentificationDescriptor
(
VisibilityRollRule = TModernWarfareVisibilityRollRule
(
IdentifyBaseProbability = 0.26
TimeBetweenEachIdentifyRoll = 8.0
VisibilityRuleDescriptor = $/GFX/VisionRules/StandardWargameVisibilityRollRule
)
),
TCadavreGeneratorModuleDescriptor( CadavreDescriptor = ~/Descriptor_UnitCadavre_T80BV_CMD_SOV ),
TIAStratModuleDescriptor
(
DatabaseId = 0
GameplayBehavior = EGameplayBehavior/Nothing | EGameplayBehavior/RetreatOnOutOfAmmo
),
~/IAStratZoneIndexModuleDescriptor,
~/UnitStateEngineCompanyModuleDescriptor,
~/UnitStateEngineModuleDescriptor,
~/DebugModuleDescriptor,
~/SelectionModuleDescriptor,
~/EffectApplierModuleDescriptor,
TProductionModuleDescriptor
(
Factory = EDefaultFactories/Tanks
ProductionTime = 5
ProductionRessourcesNeeded = MAP [
($/GFX/Resources/Resource_CommandPoints, 305),
($/GFX/Resources/Resource_Tickets, 4),
]
),
~/InfluencePositionModuleDescriptor,
TZoneInfluenceMapModuleDescriptor
(
InfluenceStrength = 1.0
MinimumInfluenceStrength = 1.0
StrengthDecayPerSecond = 0.01
PreventsDecayInZone = True
),
TInfluenceScoutModuleDescriptor(),
~/InfluenceDataModuleDescriptor,
TAutomaticBehaviorModuleDescriptor
(
CanAssist = False
AssistRequestBroadcastRadiusGRU = 0.0
DistanceToFleeGRU = 353
MaxDistanceForOffensiveReactionGRU = 353
MaxDistanceForEngagementGRU = 0.0
SearchedTagsInEngagementTarget = [
"AllUnits",
]
),
TCubeActionModuleDescriptor
(
CubeActionDescriptor = $/GFX/UI/CubeAction_Menu_Ordres_unites
),
TMinimapDisplayModuleDescriptor
(
Texture = "Texture_Minimap_Unit_unit"
FollowUnitOrientation = False
),
TOrderConfigModuleDescriptor
(
ValidOrders = ~/Descriptor_OrderAvailability_T80BV_CMD_SOV
),
TOrderableModuleDescriptor
(
UnlockableOrders = ~/Descriptor_OrderAvailability_T80BV_CMD_SOV
),
~/OrderDisplayModuleDescriptor,
~/GroupableUnitModuleSelector,
TTacticalLabelModuleDescriptor
(
MultiSelectionSortingOrder = 20305
IdentifiedTexture = TBUCKToolAlternativeValues_TUIValueTextureNameFromTEugBMutableInteger
(
CommandNameTrigger = ~/SpecificCommandName/UpdateGUIFromIconType
Alterator = $/GUIOption/IconType
Values =
[
"Texture_RTS_H_CMD_tank",
"Texture_CMD_tank"
]
)
UnidentifiedTexture = TBUCKToolAlternativeValues_TUIValueTextureNameFromTEugBMutableInteger
(
CommandNameTrigger = ~/SpecificCommandName/UpdateGUIFromIconType
Alterator = $/GUIOption/IconType
Values =
[
"Texture_RTS_H_veh_nonIdentifie",
"Texture_veh_nonIdentifie"
]
)
PositionHeightOffset = 1000.0
NbSoldiers = 0
),
~/TargetDataModuleDescriptor,
~/PackSignauxModuleDescriptor,
TStrategicDataModuleDescriptor
(
UnitAttackValue = 461
UnitDefenseValue = 461
UnitBonusXpPerLevelValue = 1
),
TUnitUIModuleDescriptor
(
UnitRole = 'tank_A'
SpecialtiesList = [
'hq_tank',
'_leader',
'_smoke_launcher',
'_era',
]
NameToken = 'DXRUKLAZUG'
InfoPanelConfigurationToken = 'Default'
DisplayRoadSpeedInKmph = 75
GenerateName = true
MenuIconTexture = 'Texture_RTS_H_CMD_tank'
ButtonTexture = 'Texture_Button_Unit_T80BV_CMD_SOV'
CountryTexture = 'CommonTexture_MotherCountryFlag_SOV'
TypeStrategicCount = ETypeStrategicDetailedCount/CMD_Tank
),
TShowRoomEquivalenceModuleDescriptor( ShowRoomDescriptor = ~/Descriptor_ShowRoomUnit_T80BV_CMD_SOV ),
TUnitUpkeepModuleDescriptor( UpkeepPercentage = 1.0 ),
TVisualShootPositionsModuleDescriptor(),
]
)
感谢感谢 等好酒了
感谢分享 大佬,为啥到4就没了阿,我还想继续学来着:'( 1246291292 发表于 2025-1-7 17:34
大佬,为啥到4就没了阿,我还想继续学来着
这两天出差了,等我回来就更 野区迷路的兔子 发表于 2025-1-9 11:42
这两天出差了,等我回来就更
好耶:victory::lol:victory:
本帖最后由 野区迷路的兔子 于 2025-1-9 12:58 编辑
4.1.如何修改单位属性
————————
终于出差回来了,让我们继续更新!
————————
上期给大家介绍了单位描述文件(UniteDescriptor.ndf)中包含了单位的什么信息,现在我们就以单位描述文件中最小的单元,一个单位的代码,来一起看看如何修改单位的属性信息;
————————
我们还是以T80指挥坦为例:export Descriptor_Unit_T80U_CMD_SOV is TEntityDescriptor(在单位描述文件中搜索这个就能找到这个单位了)
————————
TVisibilityModuleDescriptor
(
UnitConcealmentBonus = 1.0
VisionUnitType = EVisionUnitType/AlwaysOnGround
),
单位可见性模块
单位隐蔽加成=1;这里描述的是单位隐藏型,如果你想让这个单位在对面脸上,也看不到就可以调整为999;越高的话,这个单位就越隐形;
单位可见性类型=始终在地面;这里描述的是单位的可见类型,比如我们去看su_27的单位属性,就能发现飞机的可见性是AlwaysInHighAltitude。
——————————————
ApparenceModel is VehicleApparenceModuleDescriptor
(
Depiction = $/GFX/Depiction/Gfx_T80U_CMD_SOV
BlackHoleIdentifier = "T80U_CMD_SOV"
GameplayBBoxBoneName = "chassis"
ReferenceMesh = $/GFX/DepictionResources/Modele_T80U_CMD_SOV
),
单位的模型模块,这里就是单位对应的模型是什么,如果我们想要把t80换成m1a1就可以改这里,但是不建议修改,因为模型还会关联武器(飞机的话还会关联带的导弹),所以这里建议不动
——————————————
WeaponManager is TModuleSelector
(
Default = $/GFX/Weapon/WeaponDescriptor_T80U_CMD_SOV
Condition = ~/IfNotCadavreCondition
),
单位的武器模块,这里是这个单位使用什么武器,代码中表示的是T80U指挥坦,使用WeaponDescriptor_T80U_CMD_SOV这个武器信息。
如果我们想要给T80U修改火炮伤害,让他可以对空攻击,让他可以发射防空导弹或者任何武器的相关数据,我们都需要去修改武器文件中的数据,这部分我们放到后面去介绍,大家先知道在单位文件中,只有武器信息的关联关系,没有数据;
——————————————
TBaseDamageModuleDescriptor
(
MaxPhysicalDamages = 11
MaxSuppressionDamages = ~/GroundUnit_MaxSuppressionDamages
MaxStunDamages = ~/GroundUnit_MaxStunDamages
PhysicalDamageLevelsPack = ~/DamageLevelsPackDescriptor_Default_pack_paliers_degats_phy
SuppressDamageLevelsPack = ~/DamageLevelsPackDescriptor_GroundUnits_packSupp
StunDamageLevelsPack = ~/DamageLevelsPackDescriptor_Unit_packStun
),
单位强度信息,以及单位的受伤害类型
这里打开游戏对应着看就能发现,t80u的单位强度是11,也就是血量是11,这里需要和下一段代码一起看;
其他的部分对应的一些关联关系,建议不改动;
————————————
TDamageModuleDescriptor
(
SuppressDamagesRegenRatio = ~/GroundUnit_SuppressDamagesRegenRatioList
StunDamagesRegen = ~/GroundUnit_StunDamagesRegen
BlindageProperties = TBlindageProperties
(
ResistanceFront = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=19)
ResistanceSides = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=7)
ResistanceRear = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=5)
ResistanceTop = TResistanceTypeRTTI(Family=ResistanceFamily_blindage Index=3)
ExplosiveReactiveArmor = True
)
KillWhenDamagesReachMax = True
HitRollECM = 0.0
AutoOrientation = True
UseTopArmorAgainstFire = True
),
这里的数值部分是单位的不同方向的装甲强度,你可以修改为999就是城墙装甲了,没有人可以击穿你
下面的HitRollECM就是单位的ECM抗性,这里如果你想让单位具有电磁干扰,可以在这里写-0.5,在游戏中就会显示50%的ECM抗性了;
——————————
TDangerousnessModuleDescriptor(Dangerousness= 185),
TRoutModuleDescriptor(MoralLevel = 0),
这两行分别是单位的危险等级(在地方视野里,会优先攻击危险等级高的单位)单位的士气等级(等级越高,士气越好)
——————————
GenericMovement is TModuleSelector
(
Default = TGenericMovementModuleDescriptor
(
MaxSpeedInKmph = 65
PathfindType = $/Pathfind/PathfindTypes/Vehicle
)
Condition = ~/IfNotCadavreCondition
),
LandMovement is TModuleSelector
(
Default = TLandMovementModuleDescriptor
(
UnitMovingType = EUnitMovingType/Track
SpeedBonusFactorOnRoad = 1.45
MaxAccelerationGRU = 18.0
MaxDecelerationGRU = 55.0
TempsDemiTour = 5.5
StartTime = 0
StopTime = 0
RotationStartTime = 0
RotationStopTime = 0
)
Condition = ~/IfNotCadavreCondition
),
这是单位的移动速度MaxSpeedInKmph = 65这个代表的是单位的最大移速(就是游戏中的移动速度,不是道路移动速度)
这是单位的道路移动速度倍率SpeedBonusFactorOnRoad = 1.45 也就是说道路移动速度=基础移动速度*移动倍率
但是这里需要注意:这里修改完毕之后,游戏中的道路移动速度不会变化,以为游戏中的道路移动速度,是指一个展示数据,是由后面代码中的:DisplayRoadSpeedInKmph = 75 来判断的,这个展示道路移动速度是负责展示;
其他的数据项,在不同类型的单位中具有不同的含义,比如直升机会有起降速度,固定翼飞机会有转弯半径,俯仰角等等,这里的陆地载具单位一般是最大的加速和减速、原地转圈速度。
——————————————
TFuelModuleDescriptor
(
FuelCapacity = 2040
FuelMoveDuration = 518.0
),
单位的油量和续航
这里的两个数据是分开的,2040的油量,代表着油箱大小,加一次油需要多少补给(固定翼飞机代表在机场加油的时间)
而续航代表着航程,移动的距离,滞空的时间等等,你可以通过油量=1,航程=9999来创造一个超级省油的发动机实现加油1秒钟,续航一整天
———————————— TScannerConfigurationDescriptor
(
OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/DontUse
PorteeVisionTBAGRU = 0.0
PorteeVisionFOWGRU = 0.0
DetectionTBAGRU = 4947
PorteeVisionGRU = 3534
PorteeIdentification = 0.0
OpticalStrength = 90.9
OpticalStrengthAltitude = 20
SpecializedDetectionsGRU = MAP [
( EVisionUnitType/AlwaysInHighAltitude, 5654.0 ),
),
TReverseScannerWithIdentificationDescriptor
(
VisibilityRollRule = TModernWarfareVisibilityRollRule
(
IdentifyBaseProbability = 0.26
TimeBetweenEachIdentifyRoll = 8.0
VisibilityRuleDescriptor = $/GFX/VisionRules/StandardWargameVisibilityRollRule
)
),这两个模块我放在一起,我也没有琢磨的特别明白,我只能说说我自己的理解
他们分别是单位是否具有空中视野,以及单位视野的规则
第一段代码我们可以去搜搜无人机单位:MQM_105_Aquila_US 我们去看无人机单位的这段代码时,会发现:陆地单位 OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/DontUse
无人机单位 OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/UseOnRS_TBAWithGroundOpticsLerp
也就是说,这里大概表示的是,单位是否能够使用空中视野,如果我们把无人机单位的后续属性调整为9999,进入游戏你就会得到一架视野超大,可以看到树林里房子里步兵单位具有超强侦查能力的无人机;
IdentifyBaseProbability = 0.26
TimeBetweenEachIdentifyRoll = 8.0
这两个数据分别对应的是识别概率和识别间隔时间,概率越高更有可能看到单位,间隔时间越短,越快能够发现单位(我是这么理解的,但是我也没搞懂如何计算和判读具体数值)
————————————————
TProductionModuleDescriptor
(
Factory = EDefaultFactories/Tanks
ProductionTime = 5
ProductionRessourcesNeeded = MAP [
($/GFX/Resources/Resource_CommandPoints, 330),
($/GFX/Resources/Resource_Tickets, 4),
),
这个就简单了,单位的出现时间=5秒,单位需要的点数是330
————————————————
TZoneInfluenceMapModuleDescriptor
(
InfluenceStrength = 1.0
MinimumInfluenceStrength = 1.0
StrengthDecayPerSecond = 0.01
PreventsDecayInZone = True
),这里是指挥单位特有的属性,描述的是占领区域的相关数据
————————————————
基础的属性信息应该就是这些了,其他的部分更多的是行为和图片,文本相关的代码;
另外再补充一些特殊的属性;
————————————————
特殊属性1:技能属性:
TModuleSelector
( Default = TCapaciteModuleDescriptor
( DefaultSkillList =
[ $/GFX/EffectCapacity/Capacite_eo_dazzler,
]
)
Condition = ~/IfNotCadavreCondition
),
这个模块描述的是这个单位有什么技能代码来源AMX_10_RCR_FR法国的AMX10侦查车,这个单位具有光电干扰,在他的技能代码中就会描述该单位具有$/GFX/EffectCapacity/Capacite_eo_dazzler,
换一个单位看看:
TModuleSelector
( Default = TCapaciteModuleDescriptor
( DefaultSkillList =
[ $/GFX/EffectCapacity/Capacite_electronic_warfare,
]
)
Condition = ~/IfNotCadavreCondition
),
这段技能代码来源EF111_Raven_US美国的F111电子战机,这个单位具有电磁干扰,在他的技能代码中就会有$/GFX/EffectCapacity/Capacite_electronic_warfare,
再比如最近DLC中新出现的技能,无线电侦查:
TModuleSelector
( Default = TCapaciteModuleDescriptor
( DefaultSkillList =
[ $/GFX/EffectCapacity/Capacite_Choc,
$/GFX/EffectCapacity/Capacite_GSR,
$/GFX/EffectCapacity/Capacite_GSR_no_GSR,
$/GFX/EffectCapacity/Capacite_Choc_feedback,
)
Condition = ~/IfNotCadavreCondition ),
这段代码来自于Scout_LRRP_SOV,华约的无线电侦查小组,当你给t80u赋予这个技能后,t80u就可以进行无线电侦查了,无线电范围内有敌军则会自动亮起无线电标记
所以单位的特殊属性(技能属性)会以技能代码的方式出现,当一个单位被赋予技能代码后,这个单位就可以使用该技能,有什么技能,技能有什么效果,可以看我之前的文件说明,是这两个文件:EffectsPacksList.ndf、EffetsSurUnite.ndf
另外,如果你给某个单位赋予了技能,结果进入游戏发现单位的详情中没有介绍,是因为
TUnitUIModuleDescriptor
(
UnitRole = 'tank_A'
SpecialtiesList = [
'hq_tank',
'_leader',
'_smoke_launcher',
'_era',
]在描述中没有增加相关描述,这里描述的是这个单位的特殊能力(纯描述,没有效果),比如t80u指挥坦,会有(重型坦克、指挥、烟雾弹、反应装甲),但是这里无论如何修改,只是个样子,具体的属性是需要在属性代码中修改的;
————————————
特殊属性2:补给属性:
TSupplyModuleDescriptor
( SupplyDescriptor = $/GFX/Weapon/StandardSupply
SupplyCapacity = 2000.0
SupplyPriority = 4
),
补给单位中会有补给属性的相关代码,这里描述的是补给数量和补给优先级你可以通过修改补给数量来扩大补给
补给优先级指的是高优先级(0最高)的补给单位会为低优先级的补给单位进行补给,比如你把某一个补给卡修改为99999补给量,1补给优先级,这时候他就可以作为中继补给站,给前线的1000补给量,4补给优先级的单位进行补给;
——————————————
特殊属性3:运输属性:
Transporter is
TModuleSelector
(
Default = TTransporterModuleDescriptor
(
TransportableTagSet = [
"Crew",
]
NbSeatsAvailable = 1
WreckUnloadPhysicalDamageBonus = WreckUnloadDamageBonus_Default_Physical
WreckUnloadSuppressDamageBonus = WreckUnloadDamageBonus_Default_Suppress
WreckUnloadStunDamageBonus = WreckUnloadDamageBonus_Default_Stun
LoadRadiusGRU = 70
)
Condition = ~/IfNotCadavreCondition
),
这段代码来自于M998_Humvee_Delta_US,描述的是单位的运载属性
"Crew",代表的是运载能力(步兵)"Unite_transportable",代表的是可以拖运单位(如果需要运载步兵+托运则两个代码又要有,可以去搜DAF_YA_4400_NL这个单位看看)
NbSeatsAvailable = 1
这个就很有意思了,他代表的是1个座位,你可以调整为2,或者999来实现,一个卡车运两队人,或者印度卡车的效果hhhhh(不过要是炸了那也是很有效果)
LoadRadiusGRU = 70
装载距离,可以实现全地图无缝装载
但是这里有两点需要注意:
1.如果你给一个单位赋予了装载能力,但是进入游戏后你会发现可以把部队装上这个单位,但是下不来了,因为下车是需要通过菜单来实现的(右下角的卸载或指定位置卸载)
菜单的修改是需要看单位描述文件中的:Descriptor_OrderAvailability_DAF_YA_4400_NL
然后去OrderAvailability Tactic.ndf这个文件,你的单位OrderAvailability_XXXXX添加相关的卸载指令,这样你的单位在有人上车后才能正常下车
2.单位在添加装载功能后,并不会直接展示在卡组设置中的步兵可用单位,因为步兵可以用什么单位是单独关联的,你需要去多个文件中进行设置,我整理一下后续在写吧。
————————————————
好啦,这就是本期的内容,关于单位属性的修改,如果还有什么不懂或者想问的内容,可以给我留言,我看到就会回的。
666666666前排
111111111111111 野区迷路的兔子 发表于 2025-1-9 12:48
4.1.如何修改单位属性
————————
终于出差回来了,让我们继续更新!
补一下自己收集的
'_resolute',红旗
$/GFX/EffectCapacity/Capacite_resolute,
'_reservist',碎心
$/GFX/EffectCapacity/Capacite_reserviste,
'_gsr',wifi
$/GFX/EffectCapacity/Capacite_GSR,
$/GFX/EffectCapacity/Capacite_GSR_no_GSR,
'_sf',特战
'_choc',突击步兵
$/GFX/EffectCapacity/Capacite_Choc,
$/GFX/EffectCapacity/Capacite_Choc_feedback,
'_sniper',狙击
$/GFX/EffectCapacity/Capacite_sniper,
$/GFX/EffectCapacity/Capacite_sniper_no_snipe,
$/GFX/EffectCapacity/Capacite_sniper_feedback,
'_security',遛狗
$/GFX/EffectCapacity/Capacite_security,
'_ifv'机械化步兵
$/GFX/EffectCapacity/Capacite_IFV,
'_eo_dazzler',红外干扰器
$/GFX/EffectCapacity/Capacite_eo_dazzler,
'_falseflag',假旗
'_amphibie',两栖
'_electronic_warfare',电磁干扰(飞机)
$/GFX/EffectCapacity/Capacite_electronic_warfare,
'_singint',信号情报
$/GFX/EffectCapacity/Capacite_sigint_far,
$/GFX/EffectCapacity/Capacite_sigint_close,
$/GFX/EffectCapacity/Capacite_sigint_feedback,
'_jammer',干扰器(直升飞机)
$/GFX/EffectCapacity/Capacite_jammer,
$/GFX/EffectCapacity/Capacite_jammer_arty,
'_canBeAirlifted',空运
'uav',无人机
$/GFX/EffectCapacity/Capacite_UAV,
'_para',伞兵
距离:
TUnitUpkeepModuleDescriptor( UpkeepPercentage = 1.0 ),
TDeploymentShiftModuleDescriptor
(
DeploymentShiftGRU = 3533.56890459
),
TVisualShootPositionsModuleDescriptor(),
zero798362555 发表于 2025-1-11 11:32
补一下自己收集的
'_resolute',红旗
$/GFX/EffectCapacity/Capacite_resolute,
既然有兄弟提到了关于单位技能的部分,我也多分享下自己的一些经验;
——————————
TModuleSelector
( Default = TCapaciteModuleDescriptor
( DefaultSkillList =
[ $/GFX/EffectCapacity/Capacite_eo_dazzler,
]
)
Condition = ~/IfNotCadavreCondition
),
这个模块中的 $/GFX/EffectCapacity/Capacite_eo_dazzler 是单位的技能属性,游戏会根据DefaultSkillList = 中的内容,去寻找这个单位支持什么技能。
游戏中的技能文件是EffectsPacksList.ndf,这个文件中可以看到所有的技能信息,但是具体技能有什么效果是在EffetsSurUnite.ndf这个文件中;
————————
我们以jammer这个技能为例,如果我们要给某个单位增加直升机电子干扰机的技能,就可以往某个单位的技能代码中这么写:
TModuleSelector
( Default = TCapaciteModuleDescriptor
( DefaultSkillList =
[ $/GFX/EffectCapacity/Capacite_jammer,
]
)
Condition = ~/IfNotCadavreCondition
),
这个时候这个单位就具有直升机电子干扰机的技能了
————————
但是直升机电子干扰机到底有什么效果呢?
我们就需要去效果文件EffetsSurUnite.ndf中查看,我们打开效果文件搜索jammer,就可以看到:(这里我简化一下代码)
export UnitEffect_jammer is TEffectsPackDescriptor(
DescriptorId = GUID:{29d337e7-9faf-40e4-838c-73aa99954944}
NameForDebug = 'jammer'
EffectsDescriptors = [
TUnitEffectIncreaseOpticalStrengthDescriptor(
ModifierType = ~/ModifierType_Additionnel
BonusOpticalStrength = -43),
TUnitEffectRaiseTagDescriptor(
TagListToRaise = [
"RadioJammed",),
TUnitEffectShowLabelIconDescriptor(
TextureToken = "icone_electronic_warfare"),)
这样一段代码,它描述的就是jammer这个技能的具体效果,其中
TUnitEffectIncreaseOpticalStrengthDescriptor(
ModifierType = ~/ModifierType_Additionnel
BonusOpticalStrength = -43),
这一段就是他的效果,可以看到jammer使用了TUnitEffectIncreaseOpticalStrengthDescriptor这个效果器,他的作用是BonusOpticalStrength(额外光学强度)这个数据被-43了。
——————————
那我们换一个技能来看看electronic_warfare,还是看电子干扰机(EF111),他的技能效果代码是:
export UnitEffect_electronic_warfare is TEffectsPackDescriptor(
DescriptorId = GUID:{d7705199-26ca-4687-bf5e-3c16c8a4bd3d}
NameForDebug = 'electronic_warfare'
EffectsDescriptors = [
TUnitEffectIncreaseWeaponPrecisionArretDescriptor(
ModifierType= ~/ModifierType_Pourcentage
ModifierValue = -20),
TUnitEffectIncreaseWeaponPrecisionMouvementDescriptor(
ModifierType= ~/ModifierType_Pourcentage
ModifierValue = -20),
TUnitEffectShowLabelIconDescriptor(
TextureToken = "icone_electronic_warfare"),])
电子干扰技能就有两个效果:TUnitEffectIncreaseWeaponPrecisionArretDescriptor = -20;TUnitEffectIncreaseWeaponPrecisionMouvementDescriptor = -20;
也就是说:单位武器静止精度减少20,单位武器移动精度减少20。
这就是电子干扰机的技能效果
我们可以通过调整数值来实现,让被干扰单位精度减少9999,变成印度炮兵hhhh
————————
那么就会有兄弟要问了,这些效果的范围和影响单位怎么修改呢?那就要看另外一个文件,条件描述文件CapaciteList.ndf
在这个文件中,我们搜索电子干扰electronic_warfare,可以得到以下代码:
export Capacite_electronic_warfare is TCapaciteDescriptor(
DescriptorId = GUID:{831c591b-a9f2-43d7-9bff-52e05bb68760}
Name = "electronic_warfare"
NameToken = "None"
CumulEffect = ~/CapaciteCumulEffect_jamais
Declenchement = ~/CapaciteDeclenchementType_automatique
TypeCible = ~/CapaciteTypeCible_unite
TargetTeamFilter = ~/CapaciteTargetFilter_ennemi
InfluenceMapAlliance = ~/AllianceRelation/vide
TargetWoundedFilter = ~/CapaciteWoundedFilterType_tout
AreaShape = ~/CapaciteAreaShape_circulaire
RadiusGRU = 3887
RangeGRU = 3887
CastTime = 0.00
Cooldown = 1.00
CheckVisibility = False
AllowReflexDuringCast = True
CanBeCastFromTransport= False
TargetEffect = ~/UnitEffect_electronic_warfare
TargetEffectDuration = 1.00
SelfEffectDuration = 0.00
MaxTargetNb = -1
MultiplyCost = False
TargetInBuilding = True
TargetInTransport = True
TargetInSelf = True
TargetMySelf = True
FeedbackActivationMask = ~/CapaciteFeedbackActivationMask_selected | ~/CapaciteFeedbackActivationMask_anyalliance
DisplayRangeColor = RGBA
DisplayRangeThickness= 0.40
Price = MAP[]
TagsCiblePossible = [
"AA_radar",
TagsCibleExcluded = [)
这段代码中就描述了电子干扰这个技能效果的其他属性比如:
半径是3887
持续时间是1秒
冷却时间是1秒
不会累计叠加
建筑内,载具内都会生效
对有AA_rader标签的单位生效
——————————
好了,刚好看到有兄弟发了技能的内容就稍微多分享一些,很多技能和属性基本都是这个思路修改,我随便举例一些扩展:
狙击小组原地不动可以获得射程+999,准度+999,视野+999
电子干扰可以对敌人所有单位生效,让他们散布+999,准度-999
特种部队的加成变成受压制-999,等等
等等等你都可以实现
——————————
最后附一下效果和效果器
效果英文效果中文
A_BonusType_Calcul,奖励类型计算
AirUnit_Cohesion_Low,空中单位凝聚力低
AirUnit_Cohesion_Mediocre,空中单位凝聚力中等
AirUnit_Cohesion_Normal,空中单位凝聚力正常
Ajoute_Tag_GSR_ok,添加“地面侦察(GSR)许可”标签
Ajoute_Tag_Hors_Transport,添加“脱离运输”标签
Ajoute_Tag_no_snipe,添加“禁止狙击”标签
Ajoute_Tag_snipe_ok,添加“允许狙击”标签
Ajoute_Tag_xp_elite,添加“精英经验值”标签
Ajoute_Tag_xp_regular,添加“常规经验值”标签
Ajoute_Tag_xp_veteran,添加“老兵经验值”标签
AntiBouclier_Suppression_33,反护盾压制33
ArmyGen_No_regen_PA,陆军生成 - 无体力值恢复
ArtInf_Cowering,炮兵步兵畏缩
ArtInf_Engaged,炮兵步兵已交战
ArtInf_Pinned,炮兵步兵被压制
ArtInf_Stressed,炮兵步兵紧张受压
ArtInf_Suppressed,炮兵步兵被压制
Artillerie_Cowering,炮兵畏缩
Artillerie_Engaged,炮兵已交战
Artillerie_Pinned,炮兵被压制
Artillerie_Stressed,炮兵紧张受压
Artillerie_Suppressed,炮兵被压制
ArtyUnit_Cohesion_High,炮兵单位凝聚力高
ArtyUnit_Cohesion_Low,炮兵单位凝聚力低
ArtyUnit_Cohesion_Mediocre,炮兵单位凝聚力中等
ArtyUnit_Cohesion_Normal,炮兵单位凝聚力正常
Aura_Commandement_Plus,指挥光环增强
Baisse_Dangerosite,降低危险性
Baisse_Dangerosite_et_Transport_0_Effet,降低危险性以及运输0效果
Bouclier_Suppression_100,护盾压制100
Bouclier_Suppression_33,护盾压制33
Bouclier_Suppression_50,护盾压制50
Bouclier_Suppression_66,护盾压制66
Bouclier_Suppression_99,护盾压制99
Bouclier_Suppression_IFV,步兵战车护盾压制
CanonAT_Cowering,反坦克炮畏缩
CanonAT_Engaged,反坦克炮已交战
CanonAT_Pinned,反坦克炮被压制
CanonAT_Stressed,反坦克炮紧张受压
CanonAT_Suppressed,反坦克炮被压制
Choc,冲击
Choc_feedback,冲击反馈
Critic_Bailed_Out,关键情况 - 弃车
Critic_Chenille_Detruite,关键情况 - 履带损坏
Critic_Deroute,关键情况 - 溃败
Critic_Full_Stop,关键情况 - 完全停止
Critic_Perd_1_PV,关键情况 - 损失1点生命值
Critic_Pert_2_PV,关键情况 - 损失2点生命值
Critic_Pert_3_PV,关键情况 - 损失3点生命值
Critic_Pert_4_PV,关键情况 - 损失4点生命值
Critic_Pert_5_PV,关键情况 - 损失5点生命值
Critic_Reload_50,关键情况 - 装填50%
Critic_Stop_Armes,关键情况 - 武器停止
Critic_Stop_Reload,关键情况 - 停止装填
Critic_Tourelle_Bloquee,关键情况 - 炮塔堵塞
Critic_Visee_50,关键情况 - 瞄准50%
Critic_Vitesse_50,关键情况 - 速度50%
Default_Panicked,默认恐慌状态
Default_Stressed,默认紧张受压状态
Default_Worried,默认担忧状态
Destruction,破坏
Dispersion_Bombes_plus100,炸弹散布增加100
Dispersion_Bombes_plus150,炸弹散布增加150
Dispersion_Bombes_plus200,炸弹散布增加200
Dispersion_Bombes_plus25,炸弹散布增加25
Dispersion_Bombes_plus300,炸弹散布增加300
Dispersion_Bombes_plus50,炸弹散布增加50
Effet_Meurt,死亡效果
Effet_Suppress_Recu_115pourcent,受到压制效果115%
Effet_Suppress_Recu_125pourcent,受到压制效果125%
Effet_Suppress_Recu_133pourcent,受到压制效果133%
Effet_Suppress_Recu_25pourcent,受到压制效果25%
Effet_Suppress_Recu_33pourcent,受到压制效果33%
Effet_Suppress_Recu_50pourcent,受到压制效果50%
Effet_Suppress_Recu_55pourcent,受到压制效果55%
Effet_Suppress_Recu_66pourcent,受到压制效果66%
Effet_Suppress_Recu_70pourcent,受到压制效果70%
Effet_Suppress_Recu_75pourcent,受到压制效果75%
Effet_Suppress_Recu_85pourcent,受到压制效果85%
Effet_Suppress_Recu_vet2,老兵2级受到压制效果
Effet_Suppress_Recu_vet3,老兵3级受到压制效果
Effet_Suppress_Subit_100,承受压制效果100
Effet_Suppress_Subit_200,承受压制效果200
Effet_Suppress_Subit_300,承受压制效果300
Effet_Suppress_Subit_400,承受压制效果400
Effet_Suppress_Subit_500,承受压制效果500
Effet_Vide,无效效果
Esquive_plus_15,闪避增加15
Esquive_plus_25,闪避增加25
Esquive_plus_33,闪避增加33
GSR,地面侦察
Gain_deux_niveau_XP,获得两个经验等级
Gain_un_niveau_XP,获得一个经验等级
Global_Cowering,全局畏缩
GroundUnit_Cohesion_High,地面单位凝聚力高
GroundUnit_Cohesion_Low,地面单位凝聚力低
GroundUnit_Cohesion_Mediocre,地面单位凝聚力中等
GroundUnit_Cohesion_Normal,地面单位凝聚力正常
GroundUnit_Cowering,地面单位畏缩
IFV_feedback,步兵战车反馈
Infanterie_Courage_Effet,步兵勇气效果
Infanterie_Cowering,步兵畏缩
Infanterie_Cowering_Rampe,步兵伏地畏缩
Infanterie_Cowering_Stop,步兵停止畏缩
Infanterie_Engaged,步兵已交战
Infanterie_Pinned,步兵被压制
Infanterie_Stressed,步兵紧张受压
Infanterie_Suppressed,步兵被压制
Infanterie_bonus_defense,步兵防御加成
Infanterie_bonus_discretion,步兵隐蔽加成
Malus_ciblage_UAV,对无人机瞄准不利
Mobilite_plus_15pourcent,机动性增加15%
Mobilite_plus_25pourcent,机动性增加25%
Mobilite_plus_33pourcent,机动性增加33%
Nb_Places_Transport_0,运输位置数量为0
Optiques_plus_15pourcent,光学(设备相关性能)增加15%
Optiques_plus_25pourcent,光学(设备相关性能)增加25%
Optiques_plus_33pourcent,光学(设备相关性能)增加33%
Placebo,安慰剂
Precision_moins_20,精度降低20
Precision_moins_25,精度降低25
Precision_plus_10,精度增加10
Precision_plus_15,精度增加15
Precision_plus_20,精度增加20
Precision_plus_25,精度增加25
Precision_plus_33,精度增加33
Precision_plus_5,精度增加5
Precision_plus_50,精度增加50
Regen_suppress_elite,精英压制恢复
Regen_suppress_regular,常规压制恢复
Regen_suppress_veteran,老兵压制恢复
Resistance_plus_15pourcent,抗性增加15%
Resistance_plus_25pourcent,抗性增加25%
Resistance_plus_33pourcent,抗性增加33%
RoF_moins_15pourcent,射速降低15%
RoF_moins_20pourcent,射速降低20%
RoF_moins_25pourcent,射速降低25%
RoF_plus_10pourcent,射速增加10%
RoF_plus_15pourcent,射速增加15%
RoF_plus_20pourcent,射速增加20%
RoF_plus_25pourcent,射速增加25%
RoF_plus_33pourcent,射速增加33%
RoF_plus_40pourcent,射速增加40%
RoF_plus_50pourcent,射速增加50%
RoF_plus_5pourcent,射速增加5%
RoF_plus_75pourcent,射速增加75%
SF_feedback,特种部队反馈
Steelman_supprimer_PA,钢铁侠 - 移除体力值
Supprime_Zone_Dinfluence,移除影响区域
Tank_bonus_discretion,坦克隐蔽加成
Tps_entre_salve_115pourcent,齐射间隔115%
Tps_entre_salve_125pourcent,齐射间隔125%
Tps_entre_salve_150pourcent,齐射间隔150%
Tps_entre_salve_50pourcent,齐射间隔50%
Tps_entre_salve_66pourcent,齐射间隔66%
Tps_entre_salve_75pourcent,齐射间隔75%
Tps_entre_salve_85pourcent,齐射间隔85%
Tutorial_MG42_RangeModification,教程 - MG42机枪射程修改
Unit_Stunned,单位眩晕
Vehicule_Cowering,车辆畏缩
capture_allie_solo,单独占领盟军
donne_capacite_capture_allie_solo,赋予单独占领盟军的能力
donne_capacite_commandement_1,赋予指挥能力1
donne_capacite_commandement_2,赋予指挥能力2
donne_capacite_commandement_3,赋予指挥能力3
electronic_warfare,电子战
electronic_warfare_arty,炮兵电子战
eo_dazzler,光电眩目器
evac_avion,飞机撤离
fireDirection,火力指挥
jammer,干扰机
military_police,宪兵
military_police_feedback,宪兵反馈
reserviste,预备役人员
resolute,果断的;坚决的
security,安全;安保
sigint_close,近距离信号情报
sigint_far,远距离信号情报
sigint_feedback,信号情报反馈
sniper,狙击手
sniper_feedback,狙击手反馈
stressOnMiss_high,高射击压力
stressOnMiss_low,低射击压力
stressOnMiss_mid,中等射击压力
xp_elite,精英经验值
xp_elite_SF,特种部队精英经验值
xp_elite_arty,炮兵精英经验值
xp_elite_avion,飞机精英经验值
xp_elite_helo,直升机精英经验值
xp_poorly_trained,训练不佳的经验值
xp_rookie,新兵经验值
xp_rookie_arty,炮兵新兵经验值
xp_rookie_avion,飞机新兵经验值
xp_rookie_helo,直升机新兵经验值
xp_trained,训练过的经验值
xp_trained_SF,特种部队训练过的经验值
xp_trained_arty,炮兵训练过的经验值
xp_trained_avion,飞机训练过的经验值
xp_trained_helo,直升机训练过的经验值
xp_veteran,老兵经验值
xp_veteran_SF,特种部队老兵经验值
xp_veteran_arty,炮兵老兵经验值
xp_veteran_avion,飞机老兵经验值
xp_veteran_helo,直升机老兵经验值
————————
效果器:
效果器效果说明
TUnitEffectIncreaseWeaponDispersionMaxRangeDescriptor单位武器最大射程散布增加效果描述符
TUnitEffectRaiseTagDescriptor单位效果提升标签描述符
TUnitEffectShowLabelIconDescriptor单位显示标签图标效果描述符
TUnitEffectIncreaseDamageTakenDescriptor单位所受伤害增加效果描述符
TStrategicSupplyMalusEffectDescriptor战略补给减益效果描述符
TUnitEffectIncreaseInfluenceValueDescriptor单位影响力值增加效果描述符
TUnitEffectIncreaseWeaponPorteeMaxDescriptor单位武器最大射程增加效果描述符
TUnitEffectIncreaseWeaponPorteeMaxHADescriptor单位防空武器最大射程增加效果描述符
TUnitEffectIncreaseWeaponPorteeMaxProjectileDescriptor单位武器炮弹最大射程增加效果描述符
TUnitEffectIncreaseWeaponPorteeMaxTBADescriptor单位反坦克武器最大射程增加效果描述符
TUnitEffectIncreaseDispersionDescriptor单位散布增加效果描述符
TUnitEffectAlterWeaponTempsEntreDeuxSalvesDescriptor单位改变武器两次齐射间隔时间效果描述符
TUnitEffectAlterWeaponTempsEntreDeuxTirsDescriptor单位改变武器两次射击间隔时间效果描述符
TUnitEffectIncreaseChassisRotationSpeedDescriptor单位底盘旋转速度增加效果描述符
TUnitEffectIncreaseTurretRotationSpeedDescriptor单位炮塔旋转速度增加效果描述符
TUnitEffectIncreaseSpeedDescriptor单位速度增加效果描述符
TBonusWeaponAimtimeEffectDescriptor武器瞄准时间增益效果描述符
TUnitEffectBonusExperienceLevelDescriptor单位经验等级增益效果描述符
TUnitEffectIncreaseDangerousnessDescriptor单位危险程度增加效果描述符
TUnitEffectTransportSlotNumberModificationDescriptor单位运输槽位数量修改效果描述符
TUnitEffectIncreaseWeaponPhysicalDamagesDescriptor单位武器物理伤害增加效果描述符
TUnitEffectIncreaseVisionDescriptor单位视野增加效果描述符
TUnitEffectIncreaseSpecializedDetectionDescriptor单位专业探测能力增加效果描述符
TUnitEffectIncreaseInfluenceValueMinDescriptor单位影响力最小值增加效果描述符
TUnitEffectSetSelectableDescriptor单位设置可选择效果描述符
TUnitEffectStopWithInertiaEffectDescriptor单位惯性停止效果描述符
TDerouteUnitEffectDescriptor(),单位扰乱效果描述符(括号表示这可能是一个函数或者构造函数之类的定义形式)
TEffectInflictPhysicalDamageDescriptor造成物理伤害效果描述符
TUnitEffectIncreaseWeaponPrecisionArretDescriptor单位武器静止精度增加效果描述符
TUnitEffectIncreaseWeaponPrecisionMouvementDescriptor单位武器移动精度增加效果描述符
TUnitEffectRemoveUnitDescriptor(),移除单位效果描述符(括号表示这可能是一个函数或者构造函数之类的定义形式)
TKillUnitEffectDescriptor(),消灭单位效果描述符(括号表示这可能是一个函数或者构造函数之类的定义形式)
TEffectInflictSuppressDamageDescriptor造成压制伤害效果描述符
TUnitEffectBonusPrecisionWhenTargetedDescriptor单位被瞄准时精度增益效果描述符
TUnitEffectIncreaseOpticalStrengthDescriptor单位光学强度增加效果描述符
TUnitEffectIncreaseWeaponPorteeMaxIgnoreSmokeDescriptor单位武器无视烟雾最大射程增加效果描述符
TUnitEffectReplaceArmorDescriptor单位替换装甲效果描述符
TUnitEffectIncreaseConcealmentBonusDescriptor单位隐蔽加成增加效果描述符
TUnitEffectHealOverTimeDescriptor单位持续治疗效果描述符
TUnitEffectChangeTeamDescriptor单位改变阵营效果描述符
TUnitEffectAddCapacityDescriptor单位增加能力效果描述符
TEvacAirplaneEffectDescriptor(),飞机撤离效果描述符(括号表示这可能是一个函数或者构造函数之类的定义形式)
自己通过技能+属性+单位的修改就可以做一些很有意思的单位和效果,比如:
无人机 + 电子干扰技能 = 电子干扰无人机,很合理吧
狙击小队+ 高隐蔽数值 + 无线电侦查 = 超级前哨特种兵,也很合理吧
指挥车 + 火炮小队长技能 = 钢2的火炮分队长,也很合理吧(火炮分队长其实游戏内已经有这个技能和相关单位了,只是欧根没有把单位放到师中,技能效果是-50%瞄准时间)
等等等等,只要你有想象力,就有无尽的创意
支持一个!!!!!
麻烦一下楼主怎么修改补给车修改,以及补给车补给步兵 有营养的帖子 My99:)Buff
本帖最后由 zero798362555 于 2025-1-12 19:59 编辑
野区迷路的兔子 发表于 2025-1-11 13:23
既然有兄弟提到了关于单位技能的部分,我也多分享下自己的一些经验;
——————————
TModuleSelec ...
欧根有些代码名称真的很拟人,看了大佬的回复,小白大有受益,感谢大佬授渔之法:hug: Limitless1 发表于 2025-1-11 19:43
麻烦一下楼主怎么修改补给车修改,以及补给车补给步兵
我没有特别理解你的需求,我就先按照我的理解写了:
1.修改补给车的补给量
在单位描述文件中,找到你想修改的补给单位,然后在单位代码中寻找:
补给属性:
TSupplyModuleDescriptor
( SupplyDescriptor = $/GFX/Weapon/StandardSupply
SupplyCapacity = 2000.0
SupplyPriority = 4
),
这里的SupplyCapacity = 2000.0 就是补给量这里的SupplyPriority = 4 是补给优先级,高优先级的单位可以给低优先级的单位补给(越小越高)
2.实现补给车恢复步兵小队的人数损失只要把人数损失的步兵小队放在补给单位附近,当补给单位有补给量的时候,就会缓慢恢复人数呀
zero798362555 发表于 2025-1-12 18:29
欧根有些代码名称真的很拟人,看了大佬的回复,小白大有受益,感谢
...
欧根偷懒用,复用了很多钢2的代码,就还蛮恶心的- -
野区迷路的兔子 发表于 2025-1-12 18:49
我没有特别理解你的需求,我就先按照我的理解写了:
1.修改补给车的补给量
在单位描述文件中,找到你想修 ...
谢谢:lol;还有一个问题就是补给范围可以提改么
3333333333333
Limitless1 发表于 2025-1-12 20:09
谢谢;还有一个问题就是补给范围可以提改么
好问题,我没研究过这个问题,等我写完这波内容,可以研究一下
野区迷路的兔子 发表于 2025-1-12 18:51
欧根偷懒用,复用了很多钢2的代码,就还蛮恶心的- -
————————————————————————————————————————————————————————————————————————————————————————————————————————————
TScannerConfigurationDescriptor
(
OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/DontUse
PorteeVisionTBAGRU = 0.0
PorteeVisionFOWGRU = 0.0
DetectionTBAGRU = 4947
PorteeVisionGRU = 3534
PorteeIdentification = 0.0
OpticalStrength = 90.9
OpticalStrength = 20
SpecializedDetectionsGRU = MAP [
( EVisionUnitType/AlwaysInHighAltitude, 5654.0 ),
),
TReverseScannerWithIdentificationDescriptor
(
VisibilityRollRule = TModernWarfareVisibilityRollRule
(
IdentifyBaseProbability = 0.26
TimeBetweenEachIdentifyRoll = 8.0
VisibilityRuleDescriptor = $/GFX/VisionRules/StandardWargameVisibilityRollRule
)
),这两个模块我放在一起,我也没有琢磨的特别明白,我只能说说我自己的理解
他们分别是单位是否具有空中视野,以及单位视野的规则
第一段代码我们可以去搜搜无人机单位:MQM_105_Aquila_US 我们去看无人机单位的这段代码时,会发现:陆地单位 OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/DontUse
无人机单位 OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/UseOnRS_TBAWithGroundOpticsLerp
也就是说,这里大概表示的是,单位是否能够使用空中视野,如果我们把无人机单位的后续属性调整为9999,进入游戏你就会得到一架视野超大,可以看到树林里房子里步兵单位具有超强侦查能力的无人机;
IdentifyBaseProbability = 0.26
TimeBetweenEachIdentifyRoll = 8.0
这两个数据分别对应的是识别概率和识别间隔时间,概率越高更有可能看到单位,间隔时间越短,越快能够发现单位(我是这么理解的,但是我也没搞懂如何计算和判读具体数值)
————————————————————————————————————————————————————————————————————————————————————————————————————————————
大佬,这里我想补充下看到其他大神和自己总结的的单位参考范围
“OpticalStrength = 90.9 观瞄 90.9一般,70.75较差 130.35良好, 193.02极佳,233.475非凡
OpticalStrengthAltitude = 250对空观瞄?150标准, 300良好, 450极佳, 600非凡(我仅知道飞机类的,这个查unite那个文件还有10,20,40的地面单位不是很懂,)”
比如说OpticalStrength设定值为150即为极佳视野,上述所列数值皆为此状态最大值(=<)
平常我修改PorteeVisionGRU,OpticalStrength(OpticalStrength飞机),EVisionUnitType/AlwaysInHighAltitude, 数值的感觉在游戏里改观就很大了
麻烦大佬在讲炮弹那单元时候介绍一下炮弹补给速度等问题,我修改了team.ndf,ravitillement.ndf的数据进游戏火箭炮的补给速度还是很慢,这个是不是和您讲的优先级问题有关呢:dizzy:
我是个刚接触rts,rtt游戏的小白,也没啥编程和mod制作基础,如有错误,请大佬多多指正:handshake
请问学习版怎么打mod 野区迷路的兔子 发表于 2025-1-12 20:37
好问题,我没研究过这个问题,等我写完这波内容,可以研究一下
麻烦你了
3dm_15150548 发表于 2025-1-12 21:34
请问学习版怎么打mod
把打包好的mod文件,放在C:\Users\admin\Saved Games\EugenSystems\WARNO\mod这个文件夹里就行了
本帖最后由 野区迷路的兔子 于 2025-1-12 22:47 编辑
zero798362555 发表于 2025-1-12 20:47
————————————————————————————————————————————————— ...
“OpticalStrength = 90.9 观瞄 90.9一般,70.75较差 130.35良好, 193.02极佳,233.475非凡
OpticalStrengthAltitude = 250对空观瞄?150标准, 300良好, 450极佳, 600非凡(我仅知道飞机类的,这个查unite那个文件还有10,20,40的地面单位不是很懂,)”
比如说OpticalStrength设定值为150即为极佳视野,上述所列数值皆为此状态最大值(=<)
——————
还真有可能是你说的这样,我自己研究下来上半段主要描述的是空中单位的视野、侦查能力;
我用侦查飞机CM170和su27举例
CM170:
TScannerConfigurationDescriptor
(
OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/UseOnRS_TBAWithGroundOpticsLerp
PorteeVisionTBAGRU = 4947
PorteeVisionFOWGRU = 0.0
DetectionTBAGRU = 4947
PorteeVisionGRU = 2473
PorteeIdentification = 0.0
OpticalStrength = 7000
OpticalStrengthAltitude = 150
SpecializedDetectionsGRU = MAP [
( EVisionUnitType/AlwaysInHighAltitude, 10601.0 ),]),
SU27:
TScannerConfigurationDescriptor(
OpticsAltitudeConfig = ~/EVisionOpticsAltitudeConfig/UseOnRS_TBAWithGroundOpticsLerp
PorteeVisionTBAGRU = 4947
PorteeVisionFOWGRU = 0.0
DetectionTBAGRU = 4947
PorteeVisionGRU = 4947
PorteeIdentification = 0.0
OpticalStrength = 0
OpticalStrengthAltitude = 450
SpecializedDetectionsGRU = MAP [
( EVisionUnitType/AlwaysInHighAltitude, 31802.0 ),]),
我的理解:
PorteeVisionTBAGRU是直升机视野范围,欧根用TBA表示对直升机,你可以在一些武器射程的数据中看到这个信息
DetectionTBAGRU这个应该是对直升机的探测范围
PorteeVisionGRU这个应该是对地视野范围,以单位为圆心,多远距离的单位可以被看到(有图标有详情)
OpticalStrength这个应该是探测强度,强度越高越能看到隐蔽值高的单位(侦查,躲在树林和建筑内的部队)
OpticalStrengthAltitude这个我没太搞明白,但是我感觉你是对的,这里可能是对空的观瞄能力
SpecializedDetectionsGRU这个是一个映射关系,我也没太明白,如果你有更多的结论也可以教教我
我试过如果把强度调整的很高,探测范围加大,就可以得到一架能看得到所有隐藏部队,一架可以看半个地图的飞机;
————
我其实更没搞懂的是下面的代码
TReverseScannerWithIdentificationDescriptor
(
VisibilityRollRule = TModernWarfareVisibilityRollRule
(
IdentifyBaseProbability = 0.26
TimeBetweenEachIdentifyRoll = 8.0
VisibilityRuleDescriptor = $/GFX/VisionRules/StandardWargameVisibilityRollRule
)
我猜测是IdentifyBaseProbability = 0.26负责对地的视野强度,TimeBetweenEachIdentifyRoll = 8.0代表探测周期,多少秒探测一次,但是我尝试修改过这个数据,感觉作用不大。
————————
麻烦大佬在讲炮弹那单元时候介绍一下炮弹补给速度等问题,我修改了team.ndf,ravitillement.ndf的数据进游戏火箭炮的补给速度还是很慢,这个是不是和您讲的优先级问题有关呢
你的这个问题我看懂了一半,炮弹补给速度一般是在弹药的文件里,但是都不是你后面提到的team.ndf,ravitillement.ndf这两个文件,甚至我在warno里也没怎么看到过这两个文件,我得首先和你确认下我们在讨论warno的mod修改;
ok,假设我们都是在讨论warno的mod修改,在warno中炮弹和火箭弹是一个文件,导弹是一个文件
我们以BM30_Smerch_SOV的火箭弹为例:
武器文件中可以找到,BM30用的是Ammo_RocketArt_9M55K5_300mm
然后需要你去Ammunition.ndf文件中找到这个弹药 ,这个弹药的代码如下:
Ammo_RocketArt_9M55K5_300mm is TAmmunitionDescriptor
(
DescriptorId = GUID:{aa4b892a-8bf8-4a8d-97a2-e65796fe302d}
Name = 'WPNIIUDWBK'
TypeCategoryName = 'LTMWHXRDRX'
Caliber = 'TQDXQDMIFZ'
WeaponDescriptionToken = 'RocketDes'
TraitsToken = [ 'STAT', 'cluster', 'IND', ]
WeaponCursorType = Weapon_Cursor_CorrectedArtillery
MinMaxCategory = MinMax_MLRS
Arme = TDamageTypeRTTI(Family=DamageFamily_clu_sol_ap Index=8)
ProjectileType = EProjectileType/Artillerie
ImpactHappening = [ 'RoquetteBM30300Mm' ]
FxPower = EFXPower/Moyen
TempsEntreDeuxTirs = 2.0
TempsEntreDeuxFx = 2.0
PorteeMaximaleGRU = 52975
PorteeMinimaleGRU = 10601
AngleDispersion = 0.0
DispersionAtMaxRangeGRU = 424
DispersionAtMinRangeGRU = 212
DispersionWithoutSorting = True
CorrectedShotAimtimeMultiplier = 1.0
RadiusSplashPhysicalDamagesGRU = 166
PhysicalDamages = 3.0
ShowDamageInUI = True
RadiusSplashSuppressDamagesGRU = 175
SuppressDamages = 330.0
AllowSuppressDamageWhenNoImpact = False
DisplaySalveAccuracy = True
IsSubAmmunition = True
ForceHitTopArmor = True
TirIndirect = True
TirReflexe = False
InterdireTirReflexe = False
MaximalSpeedGRU = 0.0
ShotWithoutPhysics = False
FluidFriction = 0.0
NoiseDissimulationMalus = 2.5
ShotsBeforeMaxNoise = 3
TargetOnlyOneUnitInDistrict = False
HitRollRuleDescriptor = TDiceHitRollRuleDescriptor
(
DescriptorId = GUID:{429e4725-4a49-4ae1-9411-2d6fe0a19b24}
BaseCriticModifier = 25
BaseHitValueModifiers =
[
(EBaseHitValueModifier/Base, 0.0),
(EBaseHitValueModifier/Idling, 0),
(EBaseHitValueModifier/Moving, 0),
(EBaseHitValueModifier/Targeted, 0.0),
]
DistanceToTarget = True
)
MaxSuccessiveHitCount = 1
TempsDeVisee = 25.0
TempsEntreDeuxSalves = 180.0
TempsEntreDeuxSalves_Min = -1.0
TempsEntreDeuxSalves_Max = -1.0
NbTirParSalves = 12
SupplyCost = 720.0
NbSalvosShootOnPosition = 1
CanShootOnPosition = True
CanShootWhileMoving = False
NbrProjectilesSimultanes = 1
AffichageMunitionParSalve = 12
InterfaceWeaponTexture = "Texture_Interface_Weapon_9m55k"
SmokeDescriptor = nil
FireDescriptor = $/GFX/Weapon/Descriptor_Fire_Incendie
FireTriggeringProbability = 0.5
TargetUnitCenter = True
CanHarmAirplanes = True
IsHarmlessForAllies = False
PiercingWeapon = True
TandemCharge = False
FlightTimeForSpeed = 35.0
DistanceForSpeedGRU = 52975.0
DamageTypeEvolutionOverRangeDescriptor= nil
)
然后其实我没有太理解补给时间这个概念,我说我理解的,火箭弹单位有两个时间:瞄准时间(选择攻击地点后,多久能发射),装填时间(一轮发射后,没有火箭弹了,这时候开过来一辆补给卡,会很快把弹药从0/12补充到12/12,然后这时候会绿色转圈装弹中)
我假设你描述的补给时间指的是装填时间:在这段代码中指的是: TempsEntreDeuxSalves = 180.0 (两段齐射中的间隔时间)实际上就是装填时间,缩短这个数值就可以让装填变快了;
其他的修改我放到武器篇中去做详细介绍