# 1. Начало. Изменение параметров юнитов и их оружия.

Итак. Всё установленно. Давайте творить!

Но сначала определим задачи на этот урок.

  1. Изменить кол-во очков здоровья и скорость танка Молот
  2. Апокалипсис должен получить возможность стрелять по воздуху
  3. Сделать свой первый мод

Что-ж. Для начала заходим в папку с установленным mod sdk. Там мы видим папку mods. Открываем её.

screen1

В этой папке у Вас должна быть папка samplemod. Пока Оставим эту папку в покое. Теперь в папке mods создаём новую папку и называем её как хотим. Я назаву её LessonMod. Это будет папка с нашим модом.

Внимание!

Имя папки должно быть написано только цифрами и латинскими буквами. Различного рода знаки тоже запрещаются! Также имя папки должно быть не больше 16 символов!

В папке Вашего мода создаём папку data.

Оболочка мода готова. Пора наполнить её начинкой.

Нам нужно изменить параметры Молота. Для этого возращаемся в папку mod sdk и находим там папку SageXml.

screen2

В этой папке у нас находятся вся информациия о юнитах, зданиях, оружии, броне и другое. Нам нужно здесь найти файл танка Молот. Заходим в папку Soviet/Units и копируем файл SovietAntiVehicleVehicleTech1.xml в папку data нашего мода.

Затем кликаем правой кнопкой мыши по скопированному файлу и в атрибутах снимаем галочку "Только для чтения".

screen3

Теперь снова кликаем правой кнопкой мыши на этом файле и выбираем изменить(или Edit с Notepad++).

screen4

Теперь мы видим... Огромное кол-во строчек кода! Со временем Вы поймёте, что здесь для чего надо. А пока следуйте за мной и Вы не заблудитесь во всём этом.

Сначала я изменю скоросто танку, т.к. его скорости явно не хватает, для того, чтобы догонять проклятых капиталистов. Для этого находим следующие строки:

<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 нашего мода будет выглядеть так:

screen5

Остался последний шаг. Сборка мода. Для этого заходим в папку Mod SDK и запускаем от имени администратора.

screen6

Ставим галочки как на картинке, выбирае наш мод и нажимаем Build Mod

screen7

Совет

Следите в логах за фиолетовыми надписями. Они могут указать на причину, по которой мод работает некоректно.

Теперь нам остаётся лишь протестировать наш мод. Работает? Работает!

Теперь Вы можете создать какой-нибудь безумный мод, где Советский Союз разносит всё и вся в пух и в прах. Поскольку теперь Вы знаете основы, то можете сделать небольшой ребаланс игры.

В следующем уроке мы добавим своего собственного юнита.


Последнее обновление страницы было 03.11.2021