以下我已经掌握的部分,和大家分享,内容会不断更新,已有的内容中的不足欢迎大家补充,我也会加上去。

MOD基础部分
MOD的核心文件为 MOD.XML,在此文件里包含所有需要进入MOD的xml文件
其他XML文件都可以从Mod SDK\CnC3Xml文件夹下出来。

如果要修改武器的话,可以到l,但是我想做出我的武器来,不想把那么多原始
武器信息也一起放入MOD,我是这么做的:
打开l 出头和尾

《?xml version="1.0" encoding="us-ascii" ?》
《AssetDeclaration xmlns="uri:ea:eala:asset"》
《Tags /》
《Includes》
《Include
type="all"
source="DATA:l" /》
《/Includes》
中间是武器设置语句,我可以把需要的武器设置复制进来
最后用《/AssetDeclaration》结尾以对应上面的《AssetDeclaration 
xmlns="uri:ea:eala:asset"》 xml语句和HTML语句是一样需要开头和结尾的,会HTML
语言的人应该没有问题。


l此文件的修改可以在samplemod里面的l为基础修改
语法为 
《Include type="all" source="DATA:SampleMod/l" 
/》
其中 l是包含的文件名, DATA:SampleMod 是说明MOD的名
称,如果MOD文件夹名称是supernod ,那么就写成 DATA:supernod
其中
《Include type="reference" source="l" /》
《Include type="reference" source="l" /》 
这两句我暂时认为是必须的,曾经去掉之后出错过。
用于修改的XML文件存在于 Mod SDK\CnC3Xml文件夹里,基本上游戏里所有的属性文件都在
了,活用这些东西完全可以做出全新的游戏来。
现在以GDI的APC为例子,文件为GDIAPC.XML,以我的修改做说明。

《GameObject
id="GDIAPC"  这个是游戏中识别这个单位的名称,我需要在游戏中新增一个APC,就改成了
GDIAPC1 同时把文件名也改成了GDIAPC1.XML,复制到了SAMPLEMOD\DATA文件夹下。

inheritFrom="BaseVehicle" 使用车辆的基本设置,这个文件在Mod 
SDK\CnC3Xml\l
SelectPortrait="Portrait_GDIAPC"
Butt 按钮图片
Side="GDI"  说明这是GDI方的,实际情况下我改成NOD也没有影响。
EditorSorting="UNIT"  说明这个是“单位”而不是“建筑”
TransportSlotCount="1"  运输过程中占用的运输空间是1
BuildCost="700"  建造成本
BuildTime="7"  建造时间,单位是秒
CommandSet="GDIAPCCommandSet"  此车辆可以使用的命令。
CommandPoints="100"   这个据说是以前CNC用的参数,现在没有用到,只是放在那里
KindOf="PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT 
CAN_CAST_REFLECTIONS SCORE TRANSPORT VEHICLE CAN_REVERSE_MOVE 
CAN_BE_FAVORITE_UNIT"  说明车辆的一些属性和类别
RadarPriority="UNIT"  雷达上显示为“单位”
ThreatLevel="10" 
Producti  建造的时候在车辆队列中,应该就是重工厂队列
UnitCategory="VEHICLE"  单位的属性是车辆
Weap  武器属于GUN 应该也是说明性的东西
VoicePriority="176" 
EditorName="GDIAPC"  在地图编辑器里面的名称
Description="Desc:GDIAPC"  在游戏里的单位说明文字
TypeDescription="Type:GDIAPC"
EnergyProduction="2000"  这是我添加的,产生电力2000,出一辆APC就不用第二个电厂了
,哈哈。
》  GAMEOBJECT部分完毕
下面是单位行为设定
《LocomotorSet
Locomotor="GDIAPCLocomotor"  移动行为的类型是GDIAPCLocomotor,这个内容在Mod 
SDK\CnC3Xml\l,修改那个文件可以让单位有悬浮之类的效果,当
然你也可以直接改成别的单位的移动行为比如OrcaLocomotor,这样就会像奥卡一样飞起来
了。
C
Speed="180.0" 这是单位的行进速度,原来是72  /》
下面的说明从 
《WeaponSetUpdate
id="ModuleTag_WeaponSetUpdate"》开始
《WeaponSlotTurret
ID="1"》
《Weapon
Ordering="PRIMARY_WEAPON"
Template="GDIAPCAutoCannon" /》 后面是武器名称,从l里可以到
《TurretSettings  APC的炮塔设定
TurretTurnRate="200"   旋转速度
TurretPitchRate="200"  上下角度的速度
AllowsPitch="true" 
MinimumPitch="-15d"  最小角度是-15度
MinIdleScanTime="1.0s"  空闲时间炮塔转动,这是空闲1秒
MaxIdleScanTime="5.0s"  空闲时间炮塔转动的持续时间
MinIdleScanAngle="0.0"  空闲时转动的最小角度
MaxIdleScanAngle="90.0"》  空闲时转动的最大角度
《TurretAITargetChooserData
CanAcquireDynamicIfAssignedOutOfRange="true" /》 这是炮塔索敌的AI
《/TurretSettings》
《/WeaponSlotTurret》
重要的装人部分来了
《HordeTransportContain
id="ModuleTag_Contain"
ObjectStatusOfC
C 最大装入单位的数量
Slots="1" 显示槽的数量,最好设成和上面一样
AllowEnemiesInside="false"  是否允许敌人进入
AllowAlliesInside="true"  是否允许自己人进入
AllowNeutralInside="false"  是否允许自然单位进入
AllowOwnPlayerInsideOverride="true"
ShowPips="true"
EnterSound="VehicleEnter"
ExitSound="VehicleExit"
KillPassengers》 是否在死亡时杀死所有内部单位,这个我设置了false还
是一样全死,不知道为什么。
《PassengerFilter  装入单位的过滤,这里是只允许步兵进入
Rule="ANY"
Include="INFANTRY" /》
《DieMuxData
DeathTypes="ALL" /》
《PassengerData
B》
《Filter
Rule="NONE"
Include="INFANTRY" /》
《/PassengerData》
《MemberTemplateStatusInfo 这里是狙击手的特殊设定,据这个设定来看,狙击手可以在
车内给神像轰炸定位。
ThingTemplate="GDISniperSquad"
ObjectStatus="CAN_SPOT_FOR_BOMBARD" /》
《/HordeTransportContain》

下面这部分是被APC死亡后的行为,设定是死亡后3秒钟慢慢下沉,下沉速度每秒2,这个2是
CNC3里面的长度单位。
《SlowDeath
id="ModuleTag_Death"
SinkDelay="3s"
SinkRate="2.0"
Destructi》

下面是特殊能力部分
《SpecialPower
id="ModuleTag_FireMinefield" 
SpecialPowerTemplate="SpecialPowerGDI_APCMinefield" 特殊能力名称为地雷场
UpdateModuleStartsAttack="true" /》
《WeaponFireSpecialAbilityUpdate
id="ModuleTag_FireMinefieldUpdate"
SpecialPowerTemplate="SpecialPowerGDI_APCMinefield"
SpecialWeapon="GDIAPCMinefield" 使用的武器,同样可以在l里到
StartAbilityRange="10.0" 可以使用能力的最小距离
UnpackTime="1.5s" 整个使用过程的时间
PackTime="1.0s" 
Options="CHECK_SPECIALPOWER_REQUIREMENTS_DURING_UPDATE"/》
《AISpecialPowerUpdate
id="ModuleTag_APCMineLayer"
CommandButt
SpecialPowerRadius="100.0" 这是地雷场的直径
SpecialPowerAIType="SPECIAL_POWER_RANGED_AOE_ATTACK" /》

单位HP的部分
《ActiveBody
id="ModuleTag_Body"
MaxHealth="2800" /》 默认是2800,不经打呀,加两个零就差不多了。
《Shape  单位外框设置,估计是用来做碰撞,碾压判定之类的
Type="BOX"
MajorRadius="20.0"
MinorRadius="10.0"
Height="11.5"
ContactPointGeneration="VEHICLE" /》
《VisionInfo
Visi  自动索敌范围,进入这个范围内的敌人会被攻击
ShroudClearingRange="400" /》 单位去除地图迷雾的范围,如果设置50000,那么就是地
图全开了。
《CrusherInfo  碾压等级
CrusherLevel="0"  0是什么都不能压 MM是3
CrushEqualLevelProps="true"
CrushableLevel="2" /》 被碾压等级,MM是3,可以压2的。
-------------------------------------------------------------------------
关于修改武器方面,以神像为例。
<WeaponSlotTurret
ID="1">
<Weapon
Ordering="PRIMARY_WEAPON"
Template="GDIJuggernaughtArtillery" />
<TurretSettings
TurretTurnRate="360"炮塔转速,度/秒
TurretPitchRate="360"炮塔上下倾斜速度,同样是 度/秒
AllowsPitch="true"是否允许上下倾斜
MinimumPitch="-60d"最大倾斜度是向下60度
PitchHeight="90%"
MinIdleScanTime="1.0s"
MaxIdleScanTime="5.0s"
MinIdleScanAngle="0.0"
MaxIdleScanAngle="90.0">
<TurretAITargetChooserData />
</TurretSettings>
</WeaponSlotTurret>
这样是一个完整的装在炮塔上的武器的描述,炮塔的参数我已经修改过,转动更加灵活。
Template="GDIJuggernaughtArtillery"  引号内是武器的名称,可以在l内查到
接下来我们看l内关于GDIJuggernaughtArtillery武器的描述。
<WeaponTemplate
id="GDIJuggernaughtArtillery"  ID是用来识别武器的,我的新神像不想影响到原来神像的武器,就在名称后加上个1,神像文件内调用的时候也改成Template="GDIJuggernaughtArtillery1" 就可以了。
Name="GDIJuggernaughtArtillery" 这个不需要改
AttackRange="500.0"  攻击距离
MinimumAttackRange="100.0" 神像的炮为了避免炸到自己,有最小攻击距离,如果不想要有最小距离,删掉这行就可以。
MinTargetPitch="-15d" 
MaxTargetPitch="15d"
Weap 炮弹的速度,500算是很慢的了,飞机速度一般也有175了,所以我会改成2500
ScatterRadius="50" 炮弹散布的直径
ScatterLength="50" 散布范围长度 --- 这两项我改成250和150,但是实际散布还是一直线。
FireFX="FX_GDI_JuggernaughtArtilleryFire" 开火效果
FireVeteranFX="FX_GDI_JuggernaughtArtilleryFireHeroic"  升级成精英单位后的开火效果
Weap 武器的后坐力,这个度数估计是发射后炮管上跳的角度
RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"  杀伤范围,这里是所有单位都可以杀伤,如果不想伤到自己人的话就把里面的ALLIES删掉就是。
CanFireWhileMoving="false"  能不能在移动中开火,神像比较特殊,改成TRUE也是不行的,因为下面有一句开火需要一个展开状态状态。
CanFireWhileCharging="false"  能不能在装弹的时候发射
ClipSize="3"  弹夹一共几发炮弹
ReAcquireDetailType="PER_SHOT" 每次发射后重新矫正着弹点散布。
Flags="ORTHOGONAL_SCATTER" 翻译为直角——散布 可能就是说明炮弹散布的类型
ShotsPerBarrel="1" 每次发射几发
RequiredFiringObjectStatus="DEPLOYED" 发射需要的动作“展开”这个是在神像文件中定义的,神像需要把脚后的支撑板放下才能射击,如果要神像真正的移动中射击,删除这行,然后把CanFireWhileMoving="false" 改成true
CheckStatusFlagsInRangeChecks="false"
ProjectileCollidesWith="ALLIES ENEMIES NEUTRAL STRUCTURES WALLS"  炮弹飞行过程中可以碰撞的物体
这部分中另外会出现的是下面两句
AutoReloadsClip="AUTO" 自动装填弹药,火鹰战机中这句是AutoReloadsClip="RETURN_TO_BASE",是返回基地填装,只要换成AUTO,就可以无限制了。
AntiMask="ANTI_GROUND ANTI_AIRBORNE_VEHICLE ANTI_AIRBORNE_INFANTRY" 这句是武器攻击的单位,只能对地或者只能对空的武器换上这一句的内容就可以通吃了。

<ClipReloadTime 这是两个重新装弹的时间,秒为单位
MinSeconds="5s" 
MaxSeconds="5s" />
<Nuggets>
<ProjectileNugget 
ProjectileTemplate="FXArtilleryShell"
WarheadTemplate="JuggernaughtArtilleryWarhead"> 注意:这里的WarheadTemplate说明还有相应弹头语句可以修改,稍后我将在下面给出弹头的语句
<VeterancyProjectiles  这些是开火的效果语句,具体数值还没有详细测试。
VeterancyLevel="HEROIC"
ProjectileTemplate="FXArtilleryShell_Veteran"/>
</ProjectileNugget>
<SuppressionNugget
  Radius="100.0"
  Suppression="100"
  Durati />
</Nuggets>
<ScatterRadiusVsType
Radius="50.0">
<Filter
Rule="NONE"
Include="INFANTRY" />
</ScatterRadiusVsType>
<ScatterRadiusVsType
Radius="25.0">
<Filter
Rule="NONE"
Include="VEHICLE" />
</ScatterRadiusVsType>
</WeaponTemplate>
下面是神像大炮的弹头
<WeaponTemplate
  id="JuggernaughtArtilleryWarhead" 如果不想改变游戏中默认的武器,也可以修改ID名称,同样上面引用的弹头名称也要相应的修改
  Name="JuggernaughtArtilleryWarhead" 
  ProjectileCollidesWith  = "ALLIES ENEMIES NEUTRAL STRUCTURES WALLS"  弹头可以撞击的东西
  RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"> 单位伤害类型
<Nuggets>
<DamageNugget 
  Damage="1000.0"  弹头伤害值
  Radius="25.0"  弹头伤害范围直径,在这个直径加大的话效果是非常可怕的,目前我的超级神像设置的是250,天上的空中单位高度不过是200左右,所以连飞机也能炸下来。
  DamageTaperOff="0" 伤害逐渐减少的参数,没有去研究过,估计就是越到范围边的伤害越小吧。
  DelayTimeSeconds="0.0s"  弹头爆炸延时
  DamageType="CANNON"  弹头伤害类型,CANNON会有伤害范围,SNIPER的话只能伤步兵,对装甲单位和建筑伤害非常的小,是GUN的话为机类型的伤害,没有伤害范围。
  DamageFXType="GDI_LASER"单位受伤害的表现。
  DeathType="NORMAL" />
</Nuggets>
</WeaponTemplate>
弹头设置结束
-------------------------
接下来是单位移动行为的修改,文件在Mod SDK\CnC3Xml\l 同样可以把头尾复制出来,然后加入自己的定义进去。
再以神像为例
<LocomotorTemplate
id="JuggernaughtLocomotor" 这是用来调用的名称,不想改掉默认的话就复制一份出来,修改掉ID的名称
Name="JuggernaughtLocomotor"
Surfaces="GROUND RUBBLE CRUSHABLE_OBSTACLE"  可以移动的地点,其实简单的换成AIR就可以完全不受限制了
TurnTimeSeconds="2.5s" 转向需要的时间游戏xml文件修改
TurnTimeDamagedSeconds="5s" 
MaxSpeedDamaged="75%"
FastTurnRadius="9.0" 转向最大直径
SlowTurnRadius="1.0" 转向最小直径
Accelerati 0.5秒后开始加速
Formati  队形的类型,神像好像没有固定的队形。
BrakingSeconds="1s" 刹车时间,移动掉停止所需要的时间,
MinTurnSpeed="0%"
BehaviorZ="NO_MOTIVE_FORCE" 移动的方式 还有一种是SURFACE_RELATIVE_HEIGHT 意思是和地形表面高度相适应,飞机就属于这样的。
Appearance="TWO_LEGS" 移动的动作,神像是2脚移动,飞机之类是WINGS,悬浮类是ORCA是HOVER,
StickToGround="true" 紧贴地面的移动,这个没有测试过
CanMoveBackward="true" 单位可以倒退行走,这个我倒是没见过,神像似乎没有倒退的指令可以用。
BackingUpSpeed="33%" 倒退的速度是前进速度的33%
/>
PreferredHeight="150" 空中单位还有飞行高度参数。这个是火鹰的高度150,如果炮弹伤害范围设置超过150那么就可以炸到它了。
-------------------------------------------------------
下一次更新写建筑物的文件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。