# 1. Начало. Изменение параметров юнитов и их оружия.
Итак. Всё установленно. Давайте творить!
Но сначала определим задачи на этот урок.
- Изменить кол-во очков здоровья и скорость танка Молот
- Апокалипсис должен получить возможность стрелять по воздуху
- Сделать свой первый мод
Что-ж. Для начала заходим в папку с установленным mod sdk. Там мы видим папку mods. Открываем её.
В этой папке у Вас должна быть папка samplemod. Пока Оставим эту папку в покое. Теперь в папке mods создаём новую папку и называем её как хотим. Я назаву её LessonMod. Это будет папка с нашим модом.
Внимание!
Имя папки должно быть написано только цифрами и латинскими буквами. Различного рода знаки тоже запрещаются! Также имя папки должно быть не больше 16 символов!
В папке Вашего мода создаём папку data.
Оболочка мода готова. Пора наполнить её начинкой.
Нам нужно изменить параметры Молота. Для этого возращаемся в папку mod sdk и находим там папку SageXml.
В этой папке у нас находятся вся информациия о юнитах, зданиях, оружии, броне и другое. Нам нужно здесь найти файл танка Молот. Заходим в папку Soviet/Units и копируем файл SovietAntiVehicleVehicleTech1.xml в папку data нашего мода.
Затем кликаем правой кнопкой мыши по скопированному файлу и в атрибутах снимаем галочку "Только для чтения".
Теперь снова кликаем правой кнопкой мыши на этом файле и выбираем изменить(или Edit с Notepad++).
Теперь мы видим... Огромное кол-во строчек кода! Со временем Вы поймёте, что здесь для чего надо. А пока следуйте за мной и Вы не заблудитесь во всём этом.
Сначала я изменю скоросто танку, т.к. его скорости явно не хватает, для того, чтобы догонять проклятых капиталистов. Для этого находим следующие строки:
<LocomotorSet
id="ModuleTag_Locomotor_Normal"
Locomotor="SovietAntiVehicleVehicleTech1Locomotor"
Condition="NORMAL"
Speed="75.0" />
И меняем число 75 на любое желанное нам число(Не сотрите случайно лишнее!). Я изменю скорость до 125. Получилось так:
<LocomotorSet
id="ModuleTag_Locomotor_Normal"
Locomotor="SovietAntiVehicleVehicleTech1Locomotor"
Condition="NORMAL"
Speed="125.0" />
Теперь надо изменить кол-во здоровья танка, чтобы никакое орудие японцев не уничтожило Молот с первого выстрела. Практически в самом низу этого же файла находим следующие строки:
<Body>
<ActiveBody
id="ModuleTag_Body"
MaxHealth="550" />
</Body>
И меняем число 550 на любое желанное нам число(Я начинаю повторяться...). Я изменю его на 1650. Получилось так:
<Body>
<ActiveBody
id="ModuleTag_Body"
MaxHealth="1650" />
</Body>
Сохраняем изменения.
Теперь нам надо изменить орудия Апокалипсиса. Они должны уметь стрелять по воздушным целям. Для это возвращаемся в папку SageXml. В папке GlobalData находим файл Weapon.xml и кидаем его в папку data нашего мода. Не забываем снять галочку в атрибутах "Только для чтения".
Где-то на 2 трети файла находим следующие строчки
<WeaponTemplate
id="SovietAntiVehicleVehicleTech3Cannon"
inheritFrom="ScatterableWeapon"
AttackRange="150.0"
MinTargetPitch="-15d"
MaxTargetPitch="15d"
FireSound="SOV_ApocalypseTank_CannonFire"
WeaponSpeed="1000"
WeaponRecoil="1d"
FireFX="FX_AlliedTankGun"
FireVeteranFX="FX_AlliedTankGun_Vet"
RadiusDamageAffects="ENEMIES"
CanFireWhileMoving="true"
ClipSize="2"
Flags="ATTACK_NEEDS_LINE_OF_SIGHT"
ReAcquireDetailType="PER_SHOT"
ShotsPerBarrel="1"
ProjectileCollidesWith="ALLIES ENEMIES NEUTRAL STRUCTURES WALLS"
RequiredAntiMask="ANTI_GROUND ANTI_STRUCTURE ANTI_WATER">
<FiringDuration
MinSeconds="0.3s"
MaxSeconds="0.3s" />
<ClipReloadTime
MinSeconds="2s"
MaxSeconds="2s" />
<Nuggets>
<ProjectileNugget
ProjectileTemplate="FXSovietAntiVehicleVehicleTech3Projectile"
WarheadTemplate="SovietAntiVehicleVehicleTech3Cannon_Warhead">
<VeterancyProjectiles
VeterancyLevel="HEROIC"
ProjectileTemplate="FXSovietAntiVehicleVehicleTech3Projectile_Veteran"/>
</ProjectileNugget>
<!--DamageNugget
Damage="100.0"
DamageType="CANNON"
DamageFXType="SOVIET_CANNON"
DeathType="EXPLODED" />
<SuppressionNugget
Radius="25.0"
Suppression="75"
DurationSeconds="2s" /-->
<InformTargetNugget />
</Nuggets>
</WeaponTemplate>
Строка RequiredAntiMask="ANTI_GROUND ANTI_STRUCTURE ANTI_WATER">
отвечает за цели, по которым может стрелять данное орудие. Добавим сюда в качестве целей воздушные цели. Получается следующие: RequiredAntiMask="ANTI_GROUND ANTI_STRUCTURE ANTI_WATER ANTI_AIRBORNE_INFANTRY ANTI_AIRBORNE_VEHICLE">
.
Ниже мы видим следующие:
<WeaponTemplate
id="SovietAntiVehicleVehicleTech3Cannon_Warhead"
ProjectileCollidesWith="ALLIES ENEMIES NEUTRAL STRUCTURES WALLS"
RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"
Flags="ATTACK_NEEDS_LINE_OF_SIGHT NOT_ATTRACTED_BY_MAGNETS"
RequiredAntiMask="ANTI_GROUND ANTI_STRUCTURE ANTI_WATER">
<Nuggets>
<DamageNugget
Damage="100.0"
DamageType="CANNON"
DamageFXType="SOVIET_CANNON"
DeathType="EXPLODED" />
</Nuggets>
</WeaponTemplate>
Точно также меняем здесь строку RequiredAntiMask
Сохраняем изменения.
Мод почти готов! Остаётся указать лишь указать, какие файлы мы собираемся использовать в нашем моде. Помните в начале урока мы говорили о папке SampleMod в папке mods? Так вот. Она нам сейчас пригодится. Открываем SampleMod. Потом папку data. Оттуда мы берём и копируем файл Mod.xml в папку data нашего мода(После копирование проверьте галочку "Только чтение").
Открываем файл и видим следующие:
<?xml version="1.0" encoding="UTF-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tags></Tags>
<Includes>
<!--
mod.xml is the central include for mod setup data.
-->
<!-- These includes need to be in all mod.xml files -->
<Include type="reference" source="DATA:static.xml" />
<Include type="reference" source="DATA:global.xml" />
<Include type="reference" source="DATA:audio.xml" />
<!-- Editing the barracks -->
<Include type="all" source="DATA:SampleMod/Data/AlliedBarracks.xml"/>
<!-- Including the Harbinger Gunship from Uprising -->
<Include type="all" source="DATA:SampleMod/Data/AlliedGunshipAircraft_Collapse.xml"/>
<Include type="all" source="DATA:SampleMod/Data/AlliedGunshipAircraft_Dying.xml"/>
<Include type="all" source="DATA:SampleMod/Data/AlliedGunshipAircraftWeaponProjectile.xml"/>
<Include type="all" source="DATA:SampleMod/Data/AlliedGunshipAircraft.xml"/>
<Include type="all" source="DATA:SampleMod/Data/AlliedGunshipFireLight.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProtonSW.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProton01.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProton02.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProton03.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProton04.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProton05.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProton06.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProtonCore.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProtonDist.xml"/>
<Include type="all" source="DATA:SampleMod/Data/FXAlliedGunshipProtonFlash.xml"/>
<!-- New sample portrait -->
<Include type="all" source="ART:Images/SampleUpdatedPackedImages.xml" />
<!-- New sample weapon.xml -->
<Include type="all" source="DATA:SampleMod/Data/Weapon.xml"/>
<!-- New logic commands and logic command sets-->
<Include type="all" source="DATA:SampleMod/Data/CommandData.xml"/>
<!-- New MP3 Audio -->
<Include type="all" source="AUDIO:ModkitMP3Examples/ModkitMP3Examples.xml" />
<!-- Sounds for the Harbinger -->
<Include type="all" source="DATA:SampleMod/Data/SoundEffects.xml" />
<Include type="all" source="AUDIO:AudioAssets.xml" />
</Includes>
</AssetDeclaration>
Удалите всё лишнее, чтобы у вас получилось следующие.
<?xml version="1.0" encoding="UTF-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tags></Tags>
<Includes>
<!--
mod.xml is the central include for mod setup data.
-->
<!-- These includes need to be in all mod.xml files -->
<Include type="reference" source="DATA:static.xml" />
<Include type="reference" source="DATA:global.xml" />
<Include type="reference" source="DATA:audio.xml" />
<!-- Editing the barracks -->
<Include type="all" source="DATA:SampleMod/Data/AlliedBarracks.xml"/>
</Includes>
</AssetDeclaration>
Итак. Данные строчки должны всегда быть в этом файле. Они никогда не меняются.
<Include type="reference" source="DATA:static.xml" />
<Include type="reference" source="DATA:global.xml" />
<Include type="reference" source="DATA:audio.xml" />
А вот следующую строку мы сейчас изменим. Замените SampleMod на название папки Вашего мода. Теперь измените AlliedBarracks.xml на SovietAntiVehicleVehicleTech1.xml . Таким образом мы указали, что в нашем моде будет использован файл SovietAntiVehicleVehicleTech1.xml . Теперь нам надо указать, что файл weapon также будет использоваться в нашем моде. Копируем изменённую строчку и меняем SovietAntiVehicleVehicleTech1.xml на Weapon.xml .
Вот то, что примерно должно получится:
<?xml version="1.0" encoding="UTF-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tags></Tags>
<Includes>
<!--
mod.xml is the central include for mod setup data.
-->
<!-- These includes need to be in all mod.xml files -->
<Include type="reference" source="DATA:static.xml" />
<Include type="reference" source="DATA:global.xml" />
<Include type="reference" source="DATA:audio.xml" />
<!-- Editing the barracks -->
<Include type="all" source="DATA:LessonMod/Data/SovietAntiVehicleVehicleTech1.xml"/>
<Include type="all" source="DATA:LessonMod/Data/Weapon.xml"/>
</Includes>
</AssetDeclaration>
Сохраняем изменения.
Итак папка data нашего мода будет выглядеть так:
Остался последний шаг. Сборка мода. Для этого заходим в папку Mod SDK и запускаем от имени администратора.
Ставим галочки как на картинке, выбирае наш мод и нажимаем Build Mod
Совет
Следите в логах за фиолетовыми надписями. Они могут указать на причину, по которой мод работает некоректно.
Теперь нам остаётся лишь протестировать наш мод. Работает? Работает!
Теперь Вы можете создать какой-нибудь безумный мод, где Советский Союз разносит всё и вся в пух и в прах. Поскольку теперь Вы знаете основы, то можете сделать небольшой ребаланс игры.
В следующем уроке мы добавим своего собственного юнита.
Последнее обновление страницы было 03.11.2021