红警DIY论坛
标题:
【代码篇】散矿采集方式
[打印本页]
作者:
740066290
时间:
2011-10-20 12:09
标题:
【代码篇】散矿采集方式
本帖最后由 740066290 于 2011-10-20 12:19 编辑
需要修改下列文件:
AlliedMiner.xml
AlliedRefinery.xml
BaseMiner.xml
BaseOreNode.xml
JapanMiner.xml
JapanRefinery.xml
OreNode.xml
OreNode2a.xml
OreNode2b.xml
OreNode4a.xml
OreNode4b.xml
OreNode4c.xml
OreNode4d.xml
SovietMiner.xml
SovietRefinery.xml
如果你不准备替换原地图的矿的话可以不改BaseOreNode.xml
OreNode.xml
OreNode2a.xml
OreNode2b.xml
OreNode4a.xml
OreNode4b.xml
OreNode4c.xml
OreNode4d.xml
先将BaseOreNode.xml内的内容换成以下,然后自己找模型
<GameObject
id="BaseOreNode"
Side="Neutral"
EditorSorting="MISC_NATURAL"
KindOf="STRUCTURE IMMOBILE UNATTACKABLE NOT_AUTOACQUIRABLE CAN_CAST_REFLECTIONS TIBERIUM_FIELD CAN_SEE_THROUGH_STRUCTURE ORE_NODE"
EditorName="BaseOreNode">
<DisplayName>BaseOreNode</DisplayName>
<ArmorSet
Armor="NoArmor" />
<Draws>
<ScriptedModelDraw
id="ModuleTag_Draw">
<ModelConditionState
id="DefaultState"
ParseCondStateType="PARSE_DEFAULT">
<Model
Name="Veins" />
</ModelConditionState>
<AnimationState
ParseCondStateType="PARSE_DEFAULT">
<Animation
AnimationName="Veins"
AnimationMode="LOOP"/>
</AnimationState>
</ScriptedModelDraw>
</Draws>
<Behaviors>
<TiberiumField
id="tib_field"
Radius="90"
FieldResolution="30"
MaxFieldMoney="25000"
StartingFieldMoney="24000"
ThingToSpawn="MineCrystal"
SpawnOffset="1.0"
ClusterScaleFactor="1.0"
ClusterPowerFactor="1.0"
CrystalGrowthRate="10"/>
<AssistedPlacementInfoBehavior
id="AssistedPlacementInfoBehavior_ModuleData">
<HintObject
HintDisplayObject="NeutralRefineryPlacementHint"
HintOpacity="1.0">
<ObjectFilter
Rule="ANY"
Include="REFINERY" />
</HintObject>
<HintObject
HintDisplayObject="AlliedRefinery"
PlayerTemplate="Allies"
HintOpacity="0.45"
HintUsesShaders="true"/>
<HintObject
HintDisplayObject="SovietRefinery"
PlayerTemplate="Soviet"
HintOpacity="0.45"
HintUsesShaders="true"/>
<HintObject
HintDisplayObject="JapanRefinery"
PlayerTemplate="Japan"
HintOpacity="0.45"
HintUsesShaders="true"/>
<PlacementRestriction
FilterRadius="5.0">
<RestrictedObjectFilter
Rule="ANY"
Include="REFINERY"
Relationship="ALLIES"/>
</PlacementRestriction>
<SuggestedOffset
x = "240.0"
y = "0.0"
z = "0.0" />
</AssistedPlacementInfoBehavior>
</Behaviors>
<Body>
<ActiveBody
id="ModuleTag_02"
MaxHealth="100.0" />
</Body>
<Geometry
IsSmall="false">
<Shape
Type="CYLINDER"
MajorRadius="15.0"
Height="25.0">
<Offset x="-2.5" y="0.0" z="0.0"/>
</Shape>
</Geometry>
<VisionInfo
VisionRange="0" />
<ProjectedBuildabilityInfo
Radius="15.0"
BuildPlacementTypes="TIBERIUM_FIELD"
StatusToReject="HAS_TIBERIUM_GROWTH_MOD"/>
</GameObject>
复制代码
然后
OreNode.xml
OreNode2a.xml
OreNode2b.xml
OreNode4a.xml
OreNode4b.xml
OreNode4c.xml
OreNode4d.xml
的内容基本上和下列代码一致(继承上面的)
<GameObject
id="OreNode"
inheritFrom="BaseOreNode"
EditorName="OreNode"/>
复制代码
矿石代码:
<GameObject
id="MineCrystal"
Side="Neutral"
EditorSorting="MISC_NATURAL"
KindOf="IMMOBILE SELECTABLE HARVESTABLE IGNORE_FOR_VICTORY TIBERIUM NOT_AUTOACQUIRABLE NO_COLLIDE SHADOW_ULTRA_HIGH_ONLY DO_NOT_CLASSIFY"
IsHarvestable="true"
RadarPriority="STRUCTURE"
EditorName="MineCrystal"
SelectPortrait="Portrait_MineCrystal"
ButtonImage="Button_MineCrystal"
BuildTime="1"
Description="Desc:MineCrystal">
<DisplayName>Name:MineCrystal</DisplayName>
<ArmorSet
Armor="TechStructureArmor"
DamageFX="VehicleDamageFX"/>
<Draws>
<ScriptedModelDraw
id="ModuleTag_Draw">
<ModelConditionState
ParseCondStateType="PARSE_DEFAULT">
<Model
Name="Ore" />
</ModelConditionState>
</ScriptedModelDraw>
</Draws>
<Behaviors>
<TiberiumCrystal
id="ModuleTag_TibCrystalBehavior"
NumBoxes="10"
ValuePerBox="50"
GrowthStages="0"
GrowthTimePerStage="0s"
TimeBetweenGrowthStages="0s">
<RadarColor R="255" G="167" B="0" />
</TiberiumCrystal>
<DestroyDie
id="Crystal_Death">
<DieMuxData
DeathTypes="ALL"
/>
</DestroyDie>
<AttributeModifierPoolUpdate
id="DefaultAttributeModifierPoolUpdate"/>
</Behaviors>
<Body>
<ActiveBody
id="ModuleTag_02"
MaxHealth="5000.0" />
</Body>
<Geometry
IsSmall="false">
<Shape
Type="CYLINDER"
MajorRadius="15.0"
Height="6.0"/>
</Geometry>
<VisionInfo
VisionRange="0" />
</GameObject>
复制代码
BaseMiner.xml内Behaviors和ai处换成
<Behaviors>
<!--Return to Dock Button Power-->
<!--<ReturnToDockSpecialPower
id="ModuleTag_ReturnToDock"
SpecialPowerTemplate="SpecialPower_ReturnToDock" />-->
<Physics
id="ModuleTag_Physics" />
<FireWeaponUpdate
id="ModuleTag_MinerOreKiller"
FireInterval="0.25s">
<FireWeaponNugget
WeaponName="MiscOreKiller">
<Offset x="20.0" y="0.0" z="0.0"/>
</FireWeaponNugget>
<ObjectStatusValidation
RequiredStatus="HARVESTING" />
</FireWeaponUpdate>
</Behaviors>
<AI>
<SupplyTruckAIUpdate
id="ModuleTag_AI"
AutoAcquireEnemiesWhenIdle="NO"
MaxBoxes="10"
SupplyWarehouseScanDistance="5000"
SupplyCenterActionDelay="50ms"
DepletedAnnounceDistance="600"
HarvestTiberium="true"
HarvestActivationRange="20"
HarvestPreparationTime="0.25s"
HarvestActionTime="1.75s"
CanPathThroughUnitsWhileDocking="true"
CanPathThroughUnitsWhileHarvesting="false"
StateMachine="OreMinerStateMachine"/>
</AI>
复制代码
矿车继承刚才修改过的,矿车的OreMinerBehavior必须删掉
帝国矿车的ai段里的内容换成
<SupplyTruckAIUpdate
id="ModuleTag_AI"
AutoAcquireEnemiesWhenIdle="YES"
MaxBoxes="10"
SupplyWarehouseScanDistance="5000"
SupplyCenterActionDelay="50ms"
DepletedAnnounceDistance="600"
HarvestTiberium="true"
HarvestActivationRange="20"
HarvestPreparationTime="0.25s"
HarvestActionTime="1.75s"
CanPathThroughUnitsWhileDocking="true"
CanPathThroughUnitsWhileHarvesting="false"
StateMachine="OreMinerStateMachine"/>
复制代码
作者:
740066290
时间:
2011-10-20 12:20
本帖最后由 740066290 于 2011-10-20 12:23 编辑
矿场的
<QueueDockBehavior
id="ModuleTag_QueueDockBehavior"
DockStartBoneName="DockStart"
DockActionBoneName="DockAction"
DockEndBoneName="DockEnd"
QueueBonePrefix="Que"
DockingAnimation="DOCKING_ACTIVE"
TurnTableBoneName="BONE_TABLE"/>
换成
<DistributedMoney
id="ModuleTag_DistributedMoney"
Capacity="99999999" />
<SupplyCenterCreate
id="ModuleTag_SupplyCenter"/>
<SupplyCenterDockUpdate
id="ModuleTag_SupplyCenterDock"
NumberApproachPositions="-1"
AllowsPassthrough="true"
GoToRallyPointAfterDock="true"
ShouldDockInReverse="true"
MinDockTime="2s"
ObjectsInLineWeight="2s"
DistributedDeposit="true">
<ForVoiceRetreatThisIsASafeHarborToObjectFilter
Include="HARVESTER" />
</SupplyCenterDockUpdate>
还需要在<AssetDeclaration>到</AssetDeclaration>里增加下列代码
<WeaponTemplate
id="MiscOreKiller"
AttackRange="5.0"
WeaponSpeed="1000.0"
RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"
ClipSize="1"
AutoReloadsClip="AUTO"
RequiredAntiMask="ANTI_GROUND ANTI_WATER"
CanFireWhileMoving="true">
<FiringDuration
MinSeconds="0.1s"
MaxSeconds="0.1s" />
<ClipReloadTime
MinSeconds="0.1s"
MaxSeconds="0.1s" />
<Nuggets>
<DamageNugget
Damage="555.5"
Radius="10.0"
DamageType="CANNON"
DeathType="NORMAL">
<SpecialObjectFilter
Rule="NONE"
StatusBitFlags="IS_BEING_HARVESTED">
<IncludeThing>MineCrystal</IncludeThing>
<IncludeThing>MineCrystal1</IncludeThing>
</SpecialObjectFilter>
</DamageNugget>
</Nuggets>
</WeaponTemplate>
<RegisteredObjectSet
id="TiberiumRefineriesROS"
SetId="TIBERIUM_REFINERIES"
Type="PLAYER">
<ObjectFilter
Rule="ANY"
Relationship="SAME_PLAYER" >
<IncludeThing>AlliedRefinery</IncludeThing>
<IncludeThing>SovietRefinery</IncludeThing>
<IncludeThing>JapanRefinery</IncludeThing>
</ObjectFilter>
</RegisteredObjectSet>
<RegisteredObjectSet
id="GlobalTiberiumRefineriesROS"
SetId="GLOBAL_TIBERIUM_REFINERIES"
Type="GLOBAL">
<ObjectFilter
Rule="ANY" >
<IncludeThing>AlliedRefinery</IncludeThing>
<IncludeThing>SovietRefinery</IncludeThing>
<IncludeThing>JapanRefinery</IncludeThing>
</ObjectFilter>
</RegisteredObjectSet>
基本上散矿就没有问题,至于细节东西就自己去改吧..(不要试图删除BaseMiner里的FireWeaponUpdate段),也不要试图修改矿的生长时间和采矿时间,除非你能找到之间的关系.
cc3也存在的一个问题,当矿场里矿很近的时候矿车就会罢工.解决方法只能将矿场建远
作者:
WCAK47
时间:
2011-10-20 12:34
感谢ACU分享方法。。
作者:
牧星
时间:
2011-10-22 01:25
好贴。顶啊。收下了。
作者:
冷月
时间:
2011-11-25 17:13
好贴,定期,支持!
作者:
LQC83343479
时间:
2013-2-7 16:19
来留个名
欢迎光临 红警DIY论坛 (https://bbs.ra2diy.com/)
Powered by Discuz! X3.5