以下我已经掌握的部分,和大家分享,内容会不断更新,已有的内容中的不足欢迎大家补充,我也会加上去。
MOD基础部分MOD的核心文件为MOD.XML,在此文件里包含所有需要进入MOD的xml文件其他XML文件都可以从Mod SDK\CnC3Xml文件夹下找出来。
如果要修改武器的话,可以找到weapon.xml,但是我想做出我的武器来,不想把那么多原始武器信息也一起放入MOD,我是这么做的:打开weapon.xml 找出头和尾《?xml version="1.0" encoding="us-ascii" ?》《AssetDeclaration xmlns="uri::eala:asset"》《Tags /》《Includes》《Includetype="all"source="DATA:GlobalData/GlobalDefines.xml" /》《/Includes》中间是武器设置语句,我可以把需要的武器设置复制进来最后用《/AssetDeclaration》结尾以对应上面的《AssetDeclarationxmlns="uri::eala:asset"》xml语句和HTML语句是一样需要开头和结尾的,会HTML语言的人应该没有问题。
mod.xml此文件的修改可以在samplemod里面的mod.xml为基础修改语法为《Include type="all" source="DATA:SampleMod/Data/SampleUpdatedLogicCommand.xml"/》其中SampleUpdatedLogicCommand.xml是包含的文件名,DATA:SampleMod 是说明MOD的名称,如果MOD文件夹名称是supernod ,那么就写成DATA:supernod其中《Include type="reference" source="DATA:static.xml" /》《Include type="reference" source="DATA:global.xml" /》这两句我暂时认为是必须的,曾经去掉之后出错过。
用于修改的XML文件存在于Mod SDK\CnC3Xml文件夹里,基本上游戏里所有的属性文件都在了,活用这些东西完全可以做出全新的游戏来。
现在以GDI的APC为例子,文件为GDIAPC.XML,以我的修改做说明。
《GameObjectid="GDIAPC" 这个是游戏中识别这个单位的名称,我需要在游戏中新增一个APC,就改成了GDIAPC1 同时把文件名也改成了GDIAPC1.XML,复制到了SAMPLEMOD\DATA文件夹下。
inheritFrom="BaseVehicle" 使用车辆的基本设置,这个文件在ModSDK\CnC3Xml\BaseObjects\BaseVehicle.xmlSelectPortrait="Portrait_GDIAPC"Butt 按钮图片Side="GDI" 说明这是GDI方的,实际情况下我改成NOD也没有影响。
EditorSorting="UNIT" 说明这个是“单位”而不是“建筑”TransportSlotCount="1" 运输过程中占用的运输空间是1BuildCost="700" 建造成本BuildTime="7" 建造时间,单位是秒CommandSet="GDIAPCCommandSet" 此车辆可以使用的命令。
CommandPoints="100" 这个据说是以前CNC用的参数,现在没有用到,只是放在那里KindOf="PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHTCAN_CAST_REFLECTIONS SCORE TRANSPORT VEHICLE CAN_REVERSE_MOVECAN_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部分完毕下面是单位行为设定《LocomotorSetLocomotor="GDIAPCLocomotor" 移动行为的类型是GDIAPCLocomotor,这个内容在Mod SDK\CnC3Xml\GlobalData\Locomotor.xml,修改那个文件可以让单位有悬浮之类的效果,当然你也可以直接改成别的单位的移动行为比如OrcaLocomotor,这样就会像奥卡一样飞起来了。
CSpeed="180.0" 这是单位的行进速度,原来是72 /》下面的说明从《WeaponSetUpdateid="ModuleTag_WeaponSetUpdate"》开始《WeaponSlotTurretID="1"》《WeaponOrdering="PRIMARY_WEAPON"Template="GDIAPCAutoCannon" /》后面是武器名称,从weapon.xml里可以找到《TurretSettings APC的炮塔设定TurretTurnRate="200" 旋转速度TurretPitchRate="200" 上下角度的速度AllowsPitch="true"MinimumPitch="-15d" 最小角度是-15度MinIdleScanTime="1.0s" 空闲时间炮塔转动,这是空闲1秒MaxIdleScanTime="5.0s" 空闲时间炮塔转动的持续时间MinIdleScanAngle="0.0" 空闲时转动的最小角度MaxIdleScanAngle="90.0"》空闲时转动的最大角度《TurretAITargetChooserDataCanAcquireDynamicIfAssignedOutOfRange="true" /》这是炮塔索敌的AI《/TurretSettings》《/WeaponSlotTurret》重要的装人部分来了《HordeTransportContainid="ModuleTag_Contain"ObjectStatusOfCC 最大装入单位的数量Slots="1" 显示槽的数量,最好设成和上面一样AllowEnemiesInside="false" 是否允许敌人进入AllowAlliesInside="true" 是否允许自己人进入AllowNeutralInside="false" 是否允许自然单位进入AllowOwnPlayerInsideOverride="true"ShowPips="true"EnterSound="VehicleEnter"ExitSound="VehicleExit"KillPassengers》是否在死亡时杀死所有内部单位,这个我设置了false还是一样全死,不知道为什么。
《PassengerFilter 装入单位的过滤,这里是只允许步兵进入Rule="ANY"Include="INFANTRY" /》《DieMuxDataDeathTypes="ALL" /》《PassengerDataB》《FilterRule="NONE"Include="INFANTRY" /》《/PassengerData》《MemberTemplateStatusInfo 这里是狙击手的特殊设定,据这个设定来看,狙击手可以在车内给神像轰炸定位。
ThingTemplate="GDISniperSquad"ObjectStatus="CAN_SPOT_FOR_BOMBARD" /》《/HordeTransportContain》下面这部分是被APC死亡后的行为,设定是死亡后3秒钟慢慢下沉,下沉速度每秒2,这个2是CNC3里面的长度单位。
《SlowDeathid="ModuleTag_Death"SinkDelay="3s"SinkRate="2.0"Destructi》下面是特殊能力部分《SpecialPowerid="ModuleTag_FireMinefield"SpecialPowerTemplate="SpecialPowerGDI_APCMinefield" 特殊能力名称为地雷场UpdateModuleStartsAttack="true" /》《WeaponFireSpecialAbilityUpdateid="ModuleTag_FireMinefieldUpdate"SpecialPowerTemplate="SpecialPowerGDI_APCMinefield"SpecialWeapon="GDIAPCMinefield" 使用的武器,同样可以在weapon.xml里找到StartAbilityRange="10.0" 可以使用能力的最小距离UnpackTime="1.5s" 整个使用过程的时间PackTime="1.0s"Options="CHECK_SPECIALPOWER_REQUIREMENTS_DURING_UPDATE"/》《AISpecialPowerUpdateid="ModuleTag_APCMineLayer"CommandButtSpecialPowerRadius="100.0" 这是地雷场的直径SpecialPowerAIType="SPECIAL_POWER_RANGED_AOE_ATTACK" /》单位HP的部分《ActiveBodyid="ModuleTag_Body"MaxHealth="2800" /》默认是2800,不经打呀,加两个零就差不多了。