на главную
об игре

The Lord of the Rings: The Battle for Middle-earth 2 - Модостроительство - F.A.Q. по модостроительству

Данный материал включает в себя F.A.Q., который позволит освоить базовые элементы редактирования игровых файлов. Для начала стоит запомнить, что все игровые изменения проводятся в файлах формата .big. Но для того, чтобы редактировать данные файлы, вам понадобится скачать редактор под название FinalBIG, который вы можете скачать ниже.

FinalBIG (Версия 40)

 

INI.big (Чистый файл)

 

Как только скачаете редактор, то сразу можете приступить к изменениям игровых параметров. Но стоит также помнить, что некоторые изменения могут просто-напросто "испортить" игру или же нарушить игровой баланс. Самое главное - не забудьте создать резервную копию файла INI.big, так как может возникнуть ситуация, когда при редактировании игровых характеристик игра не будет работать и выведет ошибку. В таком случае вы сможете просто заменить ini-файл.

Читая туториалы, будьте крайне внимательны. Ведь из-за небольшой ошибки вам придётся переделывать всё свою работу заново. Не торопитесь приступать к редактированию файлов игры, не прочитав до конца нужный вам туториал. Следуя этим простым правилам, у вас не должно возникнуть особых проблем. Если же у вас что-то не получается, то вы всегда сможете обратиться на форум за помощью.


Изменение основных игровых параметров

В этом разделе вы сможете ознакомиться с основными элементами редактирования общих игровых файлов. Сюда можно отнести добавление денег всем игрокам, изменение книги заклинаний для определённой расы, добавление новых рас и редактирование уже существующих фракций и т.д.
Мы же рассмотрим следующие элементы модостроительства:

  • Изменение начального количества денег
  • Добавление героев из одной фракции в другую
  • Изменение начального количества существ
  • Редактирование книги заклинаний
  • Изменение начального количества Очков Силы

Для начала, рассмотрим систему изменения начального количества денег. 

Тутор №1

Откроем файл INI.big. Там ищем строчку data/ini/playertemplate.ini. Теперь выбераем расу, деньги которой планируем редактировать. С полным списком рас вы сможете ознакомиться ниже:

  1. elves - эльфы
  2. dwarven - гномы
  3. isengard - изенгард
  4. mordor - мордор
  5. wild - гоблины
  6. men - люди

Возьмём, к примеру, расу men. В таком случае будем редактировать строчку StartMoney = 0, которая находится под строчкой PlayerTemplate FactionMen (где men - там название расы, которую мы выбрали для редактирования). Число "0" меняем на количество денег, которое вы хотите получить в начале игры. Изменим на "10000". Сохраняем.
Теперь при игре за людей у вас будет 10000 ресурсов по-умолчанию даже несмотря на то, что во вкладке "Правила" у вас стоит совершенно другое число (от 1000 до 4000).

Туториал составил: TurbO.

А теперь попробуем добавить героя из одной фракции в другую. Для примера возьмём героя под названием Арагорн и добавим его Эльфам. Как правильно это сделать вы узнаете ниже.

Тутор №2

Загрузим INI.big. Затем ищем уже знакомую нам строчку data/ini/playertemplate.ini. Заходим в этот раздел. Теперь найдём ту расу, которой хотим добавить героя. В нашем случае это Эльфы, значит ищем раздел PlayerTemplate FactionElves. Ниже ищем строчку BuildableHeroesMP = CreateAHero . . . . . . . . . . ElvenElrond. Так как мы хотим добавить Эльфам Арагорна, то пропишем его в ini-файле. Должно получиться так: BuildableHeroesMP = CreateAHero . . . . . . . . . . ElvenElrond GondorAragorn. Где Gondor - название расы/фракции (раса Люди делится на две - Гондор и Рохан), а где Aragorn - название героя. Сохраняем изменения и запускаем игру.

Туториал составил: TurbO.

А сейчас рассмотрим файл data/ini/playertemplate.ini.

Тутор №3

Это очень важный файлик. В нём хранится основная информация о всех фрациях/расах в игре.
И так, смотрим на примере Людей Запада:

PlayerTemplate FactionMen // Название фракции в коде. (не в игре!)
Side                          = Men // "Сторона" - принадлежность к определённой фракции. (в данном случае к людям)
PlayableSide                  = Yes // Можно ли ей играть.
Evil                          = No // Если команда Зла то Yes, Добра то No.
StartMoney                    = 0 // Начальные ресурсы. (если 0, то по параметрам, 1000-4000, если больше 0, то ровно столько, сколько поставите.)
MaxLevelMP                    = #DIVIDE( PLAYER_MAX_PURCHASE_POINTS_DEFAULT PLAYER_PURCHASE_POINTS_GRANTED ) //Не трогать.
MaxLevelSP                    = #DIVIDE( PLAYER_MAX_PURCHASE_POINTS_GOOD PLAYER_PURCHASE_POINTS_GRANTED ) // Не трогать.
PreferredColor                = R:43 G:150 B:179 // Цвет по RGB. (Настроите по граф. редактору)
StartingBuilding            = MenFortress // Стартовое строение. Нубам не трогать!

;------------- NO STARTING UNITS FOR YOU -------
;StartingUnit0 = GondorFighterHorde    // Заблокированный начальный отряд мечников.
;StartingUnitOffset0 = X:-60 Y:185 Z:0 // Их координаты.
   
   
StartingUnit1 = MenPorter // Начальный строитель.
StartingUnitOffset1 = X:30 Y:200 Z:0 // Его координаты.
StartingUnit0 = MenPorter // Второй начальный строитель.
StartingUnitOffset0 = X:1 Y:130 Z:0 // Его координаты.
   
StartingUnitTacticalWOTR        = MenPorter // Строитель в режиме Война за Кольцо.    ;// This unit is placed in tactical mode when playing WOTR. Add multiple lines for multiple units. StartingUnitTacticalWOTR        = MenPorter // Строитель в режиме Война за Кольцо.
IntrinsicSciences            = SCIENCE_GOOD // "Наука". В данном случае для Добра. (Не путать с книгой заклинаний!)
IntrinsicSciencesMP         = SCIENCE_MEN // "Наука". В данном случае для людей. (Не путать с книгой заклинаний!)
SpellBook                    = GoodSpellBook // Книга заклинаний Добро/Зло
SpellBookMp                    = MenSpellBook // Книга заклинаний для фракции.
PurchaseScienceCommandSet    = GoodSpellStoreCommandSet // Соответственно сет книги заклинаний Добро/Зло.
PurchaseScienceCommandSetMP    = MenSpellStoreCommandSet  // Соответственно сет книги заклинаний для фракции.
DisplayName                    = INI:FactionMen // Название фракции в игре.
DefaultPlayerAIType            = MenSkirmishAI // Тип ИИ для сражений.
BeaconName                    = MultiplayerBeacon // Не трогать.
LightPointsUpSound            = GondorLightPointsUp // Не трогать.
ObjectiveAddedSound            = Gui_MissionObjectiveNew // Не трогать.
ObjectiveCompletedSound        = Gui_MissionObjectiveCompleted // Не трогать.
InitialUpgrades                = Upgrade_MenFaction // Апгрейды фракции. Нубам не трогать!
;Any upgrades this player template is born with.
// NOTE: It is very important that the create-a-hero be the first buildable hero, to ensure that the create-a-hero and the ring hero are always
// attached to the first two buttоns in the command set.

BuildableHeroesMP            = CreateAHero GondorBoromir RohanTheoden RohanEowyn GondorFaramir RohanEomer GondorAragornMP GondorGandalf ; ; // Герои, которых можно нанимать в сражении.
BuildableRingHeroesMP        = ElvenGaladriel_RingHero // Кольцевик.
SpellStoreCurrentPowerLabel = APT:SpellStoreCurrentEvenstarPower // Зла - APT:SpellStoreCurrentRingPower, Добра - APT:SpellStoreCurrentEvenstarPower.
SpellStoreMaximumPowerLabel = APT:SpellStoreMaximumEvenstarPower // Зла - APT:SpellStoreMaximumRingPower, Добра - APT:SpellStoreMaximumEvenstarPower.
ResourceModifierObjectFilter = RESOURCE_MODIFIER_OBJECT_FILTER // Не трогать.
ResourceModifierValues        = 100 100 100 95 90 85 80 75 71 68 66 // Не трогать.
MultiSelectionPortrait        = UPGondor_Army // Портрет армии при выделении сразу нескольких отрядов различных.
LoadScreenMusic                = Shell2MusicForLoadScreen // Не трогать.
End

Туториал составил: Achorahil

Инструкция для тех, кто напихал в свою фракцию кучу героев и они просто не влезают в круг!

Тутор №4

Итак, расширяем круг героев. Объясняю на примере людей:
идем в commandset.ini, с помощью поиска ищем CommandSet MenFortressCommandSet (люди первые в этом списке, остальные расы ниже)
спускаемся чуть ниже, там есть такие строчки^

//Hero Menu
14 = Command_RingHeroReviveSlot
15 = Command_CreateAHeroReviveSlot
16 = Command_GenericReviveSlot1
17 = Command_GenericReviveSlot2
18 = Command_GenericReviveSlot3
19 = Command_GenericReviveSlot4
20 = Command_GenericReviveSlot5
21 = Command_GenericReviveSlot6
22 = Command_GenericReviveSlot7
23 = Command_RadialBack
End

(это значит, что в крепости людей зарезервировано 7 слотов для героев+герой кольца+созданный герой)

мы просто берем и добавляем новые строчки. количество слотов должно быть равно количеству героев. у меня получилось так:

//Hero Menu
14 = Command_RingHeroReviveSlot
15 = Command_CreateAHeroReviveSlot
16 = Command_GenericReviveSlot1
17 = Command_GenericReviveSlot2
18 = Command_GenericReviveSlot3
19 = Command_GenericReviveSlot4
20 = Command_GenericReviveSlot5
21 = Command_GenericReviveSlot6
22 = Command_GenericReviveSlot7
23 = Command_GenericReviveSlot8
24 = Command_GenericReviveSlot9
25 = Command_GenericReviveSlot10
26 = Command_RadialBack
End

Туториал составил: Param_Value

Изменение и создание новых карт

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

И так, ознакомимся с одним очень простым туториалом, который расположен ниже:

Туториал расположен по этому адресу.

Туториал составил: ---

 

Внимание:

На сайте появилась новая версия туториала по редактированию и добавлению новых карт. Теперь вы сможете более подробно изучить весь процесс работы с картами. Материал для ознакомления находится по этой ссылке. Удачи в создании карт!

Изменение храктеристик юнитов и героев

В данном разделе Вы сможете получить информацию о том, как редактировать параметры тех или иных существ или юнитов. Сюда можно отнести добавление здоровья, повышение урона, создание новых способностей и ещё много чего. Для начала, рассмотрим, как создать новую абилику герою, который носит название Глашатай Саурона.
Видимый эффект будет как у Арагорновского ацеласа, но не зелёный, а красно-оранжевый.
Запомните: буквы, выделенные красным цветом, необходимо заменить на аналогичные английские.

Тутор №1

Нам для этого будут нужны 6 адресов:

  • data/ini/commandbuttоn.ini.
  • data/ini/commandset.ini.
  • data/ini/object/createahero/createaheropowers.
  • Иник героя, которому добавить способность. Например, в нашем случае иник будет выглядеть так: data/ini/object/evilfaction/units/mordor/mordormouthofsauron.ini.
  • data/ini/fxlist.ini.
  • data/ini/fxparticlesystem.ini.
  • data/ini/experiencelevels.ini.

Откроем с помощью FinalBIG(а) файл INI.big в папке с игрой. Вначале пропишем "кнопку" способности в подразделе commandbuttоn.
Вставляем:

CommandButton Command_SpecialAbilityDarkHeal
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityCreateAHeroHealing_Level2
TextLabel = CONTROLBAR:CAH_Healing_Level2
ButtonImage = UCCommon_EvilHeroes
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:ToolTipCAH_Healing_Level2
InPalantir = Yes
AutoAbility = No
End


Далее идём в commandset.ini. Там вставляем герою, которому хотим добавить способность (в данном случае "Слуге Саурона" (MouthOfSauron)).
Вот так должно получиться:

CommandSet MordorMouthOfSauronCommandSet
1 = Command_ToggleStance
2 = Command_MountHorseMouthOfSauron
3 = Command_MouthOfSauronEvilEye ; ;
4 = Command_MouthOfSauronDoubt ; ;
5 = Command_SpecialAbilityDarkHeal
6 = Command_MouthOfSauronDissent ; ;
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
End


Потом открываем object/createahero/createaheropowers, копируем способность "HEALING SPECIAL POWER Level 2" и вставляем её "Слуге Саурона" (т.е. в object/evilfaction/units/mordor/mordormouthofsauron.ini.). Видоизменяем её (прописываем название, видимый эффект).
Получиться так:

//--------------------------------------------------------------------------
// DARK HEAL
//--------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_CreateAHeroHealingEnabler_Level2
SpecialPowerTemplate = SpecialAbilityCreateAHeroHealing_Level2
TriggeredBy = Upgrade_CreateAHeroHealing_Level2
End
Behavior = PlayerHealSpecialPower ModuleTag_CreateAHeroHealingPower_Level2
SpecialPowerTemplate = SpecialAbilityCreateAHeroHealing_Level2
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
HealAffects = INFANTRY CAVALRY MONSTER
HealAmount = CREATE_A_HERO_HEALING_AMOUNT_L2 // percent of max health
HealRadius = CREATE_A_HERO_HEALING_RADIUS_L2
HealFX = FX_DarkHeal
End
Behavior = SpecialAbilityUpdate ModuleTag_CreateAHeroHealingUpdate_Level2
SpecialPowerTemplate = SpecialAbilityCreateAHeroHealing_Level2
UnpackTime = 1 ;// (changing this will scale anim speed)
PreparationTime = 1 ;// time to complete hack once prepared (changing this will scale anim speed)
PackTime = 2000 ;// (changing this will scale anim speed)
UnpackingVariation = 5
End


В AISpecialPowers вставим это:


Behavior = AISpecialPowerUpdate DarkHealAI
CommandButtonName = Command_SpecialAbilityDarkHeal
SpecialPowerAIType = AI_SPECIAL_POWER_HEAL_AOE
End


Затем заходим в fxlist.ini. Там добавляем:

; ----------------------------------------------
FXList = FX_DarkHeal
Sound
Name = AragornAthelesEffect
End
ParticleSystem
Name = DarkHeal
Offset = X:0.0 Y:0.0 Z:14.0
OrientToObject = Yes
End
ParticleSystem
Name = DarkHeal02
Offset = X:0.0 Y:0.0 Z:14.0
OrientToObject = Yes
End
End


Потом идём в fxparticlesystem.ini. Вставляем:

FXParticleSystem DarkHeal
System
Priority = VERY_LOW_OR_ABOVE
ParticleName = EXEclipseBlur.tga
Lifetime = 30 30
SystemLifetime = 30
SortLevel = 1
BurstCount = 1 1
IsEmitAboveGroundOnly = Yes
End
Color = DefaultColor
Color2 = R:202 G:52 B:2 15
Color3 = R:0 G:0 B:0 30
ColorScale = -25 25
End
Alpha = DefaultAlpha
Alpha1 = 1 1 0
End
Update = DefaulтUpdate
SizeRate = 5 6
SizeRateDamping = 0.85 0.9
AngleZ = -7 7
AngularRateZ = -0.2 0.2
AngularDamping = 1 1
AngularDampingXY = 1 1
End
Physics = DefaultPhysics
VelocityDamping = 1 1
End
EmissionVelocity = OutwardEmissionVelocity
End
EmissionVolume = SphereEmissionVolume
IsHollow = Yes
Radius = 10
End
Draw = DefaultDraw
End
End

FXParticleSystem DarkHeal02
System
Priority = VERY_LOW_OR_ABOVE
ParticleName = EXEclipseBlur.tga
Lifetime = 30 30
SystemLifetime = 20
SortLevel = 1
Size = 5 5
BurstCount = 1 1
IsEmitAboveGroundOnly = Yes
End
Color = DefaultColor
Color2 = R:202 G:52 B:2 15
Color3 = R:0 G:0 B:0 30
ColorScale = -30 30
End
Alpha = DefaultAlpha
Alpha1 = 1 1 0
End
Update = DefaultUpdate
SizeRate = 2 2
SizeRateDamping = 0.9 0.9
AngleZ = 1.7 1.7
AngularRateZ = -0.1 0.1
AngularDamping = 1 1
AngularDampingXY = 1 1
End
Physics = DefaultPhysics
VelocityDamping = 0.8 0.9
End
EmissionVelocity = OutwardEmissionVelocity
Speed = 2 2
End
EmissionVolume = PointEmissionVolume
End
Draw = DefaultDraw
End
End


И в experiencelevels.ini. прописываем апгрейд на определённом уровне:

ExperienceLevel MouthOfSauronLevel8
TargetNames = MordorMouthOfSauron MordorMouthOfSauronCalvalry
RequiredExperience = MOUTH_OF_SAURON_LVL8_EXP_NEEDED
ExperienceAward = MOUTH_OF_SAURON_LVL8_EXP_AWARD
Rank = 8
Upgrades = Upgrade_CreateAHeroHealing_Level2
AttributeModifiers = HeroLevelUpDamage7
LevelUpFx = FX:GandalfLevelUp1FX
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

Всё! Наслаждайтесь тёмным лечением!

Туториал составил: Achorahil

А теперь мы добавим скрытую абилику Леголасу. Способность называется "Сокрушитель монстров". Данная способность будет убивать монстра с одного удара. Как активировать способность вы сможете узнать ниже:

Тутор №2

Для этого нам понадобятся следующие адреса:

  • data/ini/commandbutton.ini.
  • data/ini/commandset.ini.
  • data/ini/specialpower.ini
  • data/ini/experiencelevels.ini.
  • Иник Леголаса: data/ini/object/goodfaction/units/elvenlegolas.ini.
  • data/ini/weapon.ini.
  • data/ini/upgrade.ini.

Вначале сделаем "кнопку" в commandbutton(е).
Там уже можно найти это:

;CommandButton Command_MonsterDock
; Command = MONSTERDOCK
; Options = NEED_TARGET_ENEMY_OBJECT NEED_TARGET_NEUTRAL_OBJECT CONTEXTMODE_COMMAND
; TextLabel = CONTROLBAR:MonsterSlayer
; ButtonImage = HSLegolasMonsterSlayer
; CursorName = StabAttack
; InvalidCursorName = StabAttackInvalid
; ButtonBorderType = ACTION
; DescriptLabel = CONTROLBAR:ToolTipMonsterSlayer
; InPalantir = Yes
;End

Удаляем точки с запятой, изменяем и получаем это:

CommandButton Command_SpecialAbilityMonsterDock
Command = SPECIAL_POWER
WeaponSlot = SECONDARY
SpecialPower = SpecialAbilityMonsterDock
Options = NEED_TARGET_ENEMY_OBJECT
TextLabel = CONTROLBAR:MonsterSlayer
ButtonImage = HSLegolasMonsterSlayer
CursorName = Bombard
InvalidCursorName = GenericInvalid
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:ToolTipMonsterSlayer
InPalantir = Yes
AutoAbility = No
DisableOnModelCondition = WEAPONSET_TOGGLE_1
End


Далее идём в commandset.ini. Там находим Леголаса и прописываем ему способность:

CommandSet RohanLegolasCommandSet
1 = Command_ToggleStance
2 = Command_LegolasHawkStrike
3 = Command_SpecialAbilityTrainArchers ; ;
4 = Command_LegolasKnifeFightingMode ; ;
5 = Command_SpecialAbilityMonsterDock
6 = Command_SpecialAbilityArrowStorm
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
End


Затем идём в data/ini/specialpower.ini
Там вставляем вот это:

;------------------------------------------------------------------------------
SpecialPower SpecialAbilityMonsterDock
Enum = SPECIAL_WOUND_ARROW
ReloadTime = 50000 ; in milliseconds
; RadiusCursorRadius = 150.0
InitiateAtLocationSound = GenericSpell
;РаlаntirMovie = РаlаntirAlert_RohanReinforcements
ObjectFilter = NONE +BIG_MONSTER +MordorCaveTroll +MordorMountainTroll +MordorDrummerTroll +MordorMumakil +GoblinCaveTroll +GoblinCaveTroll_FromTrollLair +CaveTroll_Slaved +FireDrake_Slaved +MordorAttackTroll +WildMountainGiant +MordorCaveTroll_Summoned +MordorAttackTroll_Summoned +WildMountainGiant_Summoned
End


Потом заходим в data/ini/experiencelevels.ini.
Там прописываем апгрейд на определённом уровне (сделаем на 7):

ExperienceLevel LegolasLevel7
TargetNames = RohanLegolas ElvenLegolas
RequiredExperience = LEGOLAS_LVL7_EXP_NEEDED
ExperienceAward = LEGOLAS_LVL7_EXP_AWARD
AttributeModifiers = HeroLevelUpDamage6
Rank = 7
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Upgrades = Upgrade_MonsterDock
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40 ;16
MaxRadius = 200 ;16
MaxSelectedUnits = 40 ;1
End
END


А теперь настало время заглянуть к Леголасу (data/ini/object/goodfaction/units/elvenlegolas.ini.)
Где находятся все способности вставляем это:

;--------------------------------------------------------------------------
; Monster Dock
;--------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_MonsterDockEnabler
SpecialPowerTemplate = SpecialAbilityMonsterDock
TriggeredBy = Upgrade_MonsterDock
End
Behavior = SpecialPowerModule ModuleTag_MonsterDockArrow
SpecialPowerTemplate = SpecialAbilityMonsterDock
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
End
Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_MonsterDockArrowUpdate
SpecialPowerTemplate = SpecialAbilityMonsterDock
SkipContinue = Yes
UnpackTime = 1600
PreparationTime = 2
PackTime = 850
AwardXPForTriggering = 0
StartAbilityRange = 325.0 ; Note: This has to be smaller than the weapon range or it'll never succeed
ApproachRequiresLOS = Yes
SpecialWeapon = MonsterDockWeapon
WhichSpecialWeapon = 1
End


Далее идём в data/ini/weapon.ini.
Там вставляем это:
;------------------------------------------------------------------------------

Weapon MonsterDockWeapon
 AttackRange    = FARAMIR_WOUNDING_ARROW_RANGE
 LeechRangeWeapon   = Yes
 WeaponSpeed    = 321     ; dist/sec
 MinWeaponSpeed   = 241
 MaxWeaponSpeed   = 481   ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
 FireFX     = FX_ThranduilThornOfVengeance ;FX_FaramirWoundingArrow
 ScaleWeaponSpeed  = Yes ; Used for lob weapons, scales speed proportional to range
 HitStoredTarget   = Yes ; Always hits initial target.
 HitPercentage   = 100  
 ScatterRadius   = 0.0   ;When this weapon misses it can randomly miss by as much as this distance.
 DelayBetweenShots  = 15000         ; time between shots, msec
 PreAttackDelay   = 1          ; we want isntant
 PreAttackType   = PER_POSITION
 FiringDuration   = 1          ; Duration of the archer firing shot is 500ms.
 ClipSize    = 1
 AutoReloadsClip   = Yes
 AutoReloadWhenIdle  = 1
 ClipReloadTime   = Min:THRANDUIL_THORN_RELOADTIME_MIN Max:THRANDUIL_THORN_RELOADTIME_MAX
 AntiAirborneVehicle  = Yes
 AntiAirborneMonster  = Yes
 PreferredTargetBone  = B_LLLID ; Likes to shoot things in their left eye.
 
 
 ProjectileNugget          ; A Nugget that creates an Object and sends it to the target with a Warhead
  ProjectileTemplateName = BarbedArrowProjectile
  WarheadTemplateName = MonsterDockWarhead
 End

End


;------------------------------

Weapon MonsterDockWarhead
  ProjectileCollidesWith = ALLIES ENEMIES NEUTRAL STRUCTURES WALLS
  RadiusDamageAffects  = ENEMIES NEUTRALS ALLIES NOT_SIMILAR
  HitStoredTarget   = Yes ; Always hits initial target.
  HitPercentage       = 100
  DamageNugget                        ; A basic Nugget that just does damage
    Damage        = 99999999999
    Radius        = 0.0 ; HitStoredTarget means we hurt the person we launched at.  And nobody else.  So a miss hurts nobody.
    DelayTime     = 0
    DamageType    = HERO
    DamageFXType  = GOOD_ARROW_PIERCE 
    DeathType     = NORMAL
  End
 
  DamageNugget                      
 Damage          = 99999999999 
 DamageType      = MAGIC
 DamageFXType    = MAGIC
 DeathType       = BURNED
 Radius    = 35
 DelayTime   = 200 
  End

  DamageNugget                     
 Damage          = 99999999999
 DamageType      = MAGIC
 DamageFXType    = ELECTRIC
 DeathType       = BURNED
 DelayTime   = 200 
  End
 
  MetaImpactNugget                    ; A Nugget that throws things back with force
; HeroResist   = .25
    ShockWaveAmount   = 70.0
    ShockWaveRadius   = 15.0..
ShockWaveTaperOff = 0.5
ShockWaveZMult = 1.20
End

End


И последнее: data/ini/upgrade.ini.
Там вставляем это:

Upgrade Upgrade_MonsterDock
Type = OBJECT
End

Способность готова.

Необходимые замены символов:
"Ра" меняем на "Pa"
"а" меняем на "a"

Туториал составил: Achorahil


Будем изменять способности Арагорна. В частности, редактировать мы будем способность "Мастер Клинка". Теперь наш герой при активации способности сможет наносить урон нескольким юнитам одновременно! Как изменить способность написано ниже.

Тутор №3

Открываем INI и находим строку data/ini/weapon.ini. Ищем содержимое:

Weapon GondorAragornHeroSword
LeechRangeWeapon = Yes
AttackRange = STANDARD_MELEE_ATTACK_RANGE
MeleeWeapon = Yes

DelayBetweenShots = ARAGORN_DELAYBETWEENSHOTS ; time between shots, msec
PreAttackDelay = ARAGORN_PREATTACKDELAY ; 400 is sword swing delay time before contact with target.
PreAttackType = PER_SHOT ; Do the delay each time we attack a new target
FireFX = FX_GondorSwordHit
;FireFX = FX_IsildurSword
FiringDuration = ARAGORN_FIRINGDURATION ; Duration of the sword swing

RadiusDamageAffects = ENEMIES NEUTRALS

DamageNugget ; A basic Nugget that just does damage
Damage = ARAGORN_DAMAGE
DamageScalar = 50000% NONE +RohanOathbreaker
Radius = 10
DelayTime = 0
DamageType = HERO
DeathType = NORMAL
End
End

Далее заменяем это все на вот это:

Weapon GondorAragornHeroSword
LeechRangeWeapon = Yes
AttackRange = STANDARD_MELEE_ATTACK_RANGE
MeleeWeapon = Yes

DelayBetweenShots = ARAGORN_DELAYBETWEENSHOTS ; time between shots, msec
PreAttackDelay = ARAGORN_PREATTACKDELAY ; 400 is sword swing delay time before contact with target.
PreAttackType = PER_SHOT ; Do the delay each time we attack a new target
FireFX = FX_GondorSwordHit
;FireFX = FX_IsildurSword
FiringDuration = ARAGORN_FIRINGDURATION ; Duration of the sword swing

RadiusDamageAffects = ENEMIES NEUTRALS

DamageNugget ; A basic Nugget that just does damage
Damage = ARAGORN_DAMAGE
DamageScalar = 50000% NONE +RohanOathbreaker
Radius = 10
DelayTime = 0
DamageType = HERO
DeathType = NORMAL
End
; ;
MetaImpactNugget ; A Nugget that throws things back with force
HeroResist = .75
ShockWaveAmount = 25.0
ShockWaveRadius = 13
ShockWaveArc = 120
ShockWaveTaperOff = 1
End
End

А сейчас нечто новое! Попробуем добавить Гондорским всадникам кнопку апгрейда щитов + добавим их визуальное появление в игре. Следуя инструкции ниже, вы сможете добавить данную модификацию в игру без особых усилий.

Тутор №4

Для начала идем в data>ini>commandbutton.ini. Туда вставляем это:

CommandButton Command_PurchaseTechnologyGondorKnightShield
Command = PLAYER_UPGRADE
Options = NEED_UPGRADE CANCELABLE
Upgrade = Upgrade_TechnologyGondorKnightShield
NeededUpgrade = Upgrade_GondorStableLevel2
TextLabel = CONTROLBAR:PurchaseTechnologyGondorKnightShield
ButtonImage = BGStables_HorsemanShield
ButtonBorderType = UPGRADE
DescriptLabel = CONTROLBAR:ToolTipPurchaseTechnologyGondorKnightShield
Radial = Yes
InPalantir = Yes
LacksPrerequisiteLabel = TOOLTIP:LackLevel2Stables
End

CommandButton Command_PurchaseUpgradeGondorKnightShield
Command = OBJECT_UPGRADE
Options = NEED_UPGRADE OK_FOR_MULTI_SELECT CANCELABLE
Upgrade = Upgrade_GondorKnightShield
NeededUpgrade = Upgrade_TechnologyGondorKnightShield
TextLabel = CONTROLBAR:PurchaseUpgradeGondorKnightShield
ButtonImage = BGStables_HorsemanShield
ButtonBorderType = UPGRADE
DescriptLabel = CONTROLBAR:ToolTipPurchaseUpgradeGondorKnightShield
InPalantir = Yes
LacksPrerequisiteLabel = TOOLTIP:LackGondorKnightShield
End

Потом идем в data>ini>commandset.ini
Там находим вот это CommandSet GondorKnightHordeCommandSet и заменяем его весь вот на этот коммандсет:

CommandSet GondorKnightHordeCommandSet
1 = Command_ToggleStance
2 = Command_PurchaseUpgradeGondorForgedBlades
3 = Command_PurchaseUpgradeGondorHeavyArmor
4 = Command_PurchaseUpgradeGondorBasicTraining
5 = Command_PurchaseUpgradeGondorKnightShield
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End

Далее здесь же находим вот это: CommandSet GondorStablesCommandSet и заменяем этот комманд сет на всех его трех уровнях(CommandSet GondorStablesCommandSet, GondorStablesCommandSetLevel2, GondorStablesCommandSetLevel3). Должно получиться так:

CommandSet GondorStablesCommandSet
1 = Command_ConstructGondorKnightHorde
2 = Command_ConstructRohanRohirrimHorde
3 = Command_ConstructGondorKnightsofDolHorde
4 = Command_PurchaseTechnologyGondorKnightShield
5 = Command_PurchaseUpgradeGondorStableLevel2
6 = Command_Sell
End

CommandSet GondorStablesCommandSetLevel2
1 = Command_ConstructGondorKnightHorde
2 = Command_ConstructRohanRohirrimHorde
3 = Command_ConstructGondorKnightsofDolHorde
4 = Command_PurchaseTechnologyGondorKnightShield
5 = Command_PurchaseUpgradeGondorStableLevel3
6 = Command_Sell
End

CommandSet GondorStablesCommandSetLevel3
1 = Command_ConstructGondorKnightHorde
2 = Command_ConstructRohanRohirrimHorde
3 = Command_ConstructGondorKnightsofDolHorde
4 = Command_PurchaseTechnologyGondorKnightShield
6 = Command_Sell
End

Далее идем сюда: data>ini>object>goodfaction>horde>men>menhordes.ini и там находим вот это: Object GondorKnightHorde. Как только ее нашли, то в ней находим это:

Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality3
TriggeredBy = Upgrade_GondorKnightShield
End

И заменяем его на вот это:

Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality3
TriggeredBy = Upgrade_GondorKnightShield Upgrade_TechnologyGondorKnightShield
RequiresAllTriggers = Yes
End


Вот и всё! Данный апгрейд можно будет заказать в гондорских конюшнях. Его стоимость - 1000 золота. А сами щиты значительно снижают урон от копий и стрел. Развлекайтесь!

Скриншоты:

Теперь добавим Гондорским лучникам способность "Построение Клином", которая даёт дополнительно 25% к атаке, но понижает броню на 50%. Смотрим следующий туториал:

Тутор №5

Так, для начала идем в commandbutton.ini, там находим вот это

;CommandButton Command_ToggleFormationGondorArcher
; Command = HORDE_TOGGLE_FORMATION ;;Gondor Archer
; Options = TOGGLE_IMAGE_ON_FORMATION OK_FOR_MULTI_SELECT
; ButtonImage = UCFormation_Wedge UCFormation_Line
; ButtonBorderType = ACTION
; TextLabel = CONTROLBAR:ToggleWedgeFormation CONTROLBAR:ToggleLineFormation
; DescriptLabel = CONTROLBAR:ToolTipToggleGArcherLineToWedgeFormation CONTROLBAR:ToolTipToggleGArcherWedgeToLineFormation
; InPalantir = Yes
; DoubleClick = Yes
; UnitSpecificSound = GondorArcherVoiceWedgeFormation GondorArcherVoiceLineFormation
;End

и переделываем так:

CommandButton Command_ToggleFormationGondorArcher
Command = HORDE_TOGGLE_FORMATION ;;Gondor Archer
Options = TOGGLE_IMAGE_ON_FORMATION OK_FOR_MULTI_SELECT
ButtonImage = UCFormation_Wedge UCFormation_Line
ButtonBorderType = ACTION
TextLabel = CONTROLBAR:ToggleWedgeFormation CONTROLBAR:ToggleLineFormation
DescriptLabel = CONTROLBAR:ToolTipToggleGArcherLineToWedgeFormation CONTROLBAR:ToolTipToggleGArcherWedgeToLineFormation
InPalantir = Yes
DoubleClick = Yes
UnitSpecificSound = GondorArcherVoiceWedgeFormation GondorArcherVoiceLineFormation
End

Далее идем вот сюда - data/ini/mappedimage/saptimagesunitcommands.ini (прописываем иконку) и вставляем в самый низ вот это:

MappedImage UCFormation_Wedge
Texture = UCFormation_Wedge.tga
TextureWidth = 64
TextureHeight = 64
Coords = Left:0 Top:0 Right:63 Bottom:63
Status = NONE
End

MappedImage UCFormation_Line
Texture = UCFormation_Line.tga
TextureWidth = 64
TextureHeight = 64
Coords = Left:0 Top:0 Right:63 Bottom:63
Status = NONE
End

Далее идем вот сюда - data/ini/object/goodfaction/hordes/men/menhordes.ini
Находим там Object GondorArcherHorde и в него добавляем вот эту строчку:

AlternateFormation = GondorArcherHordeWedgeFormation

Далее идем в самом низу этого иника (menhordes.ini) добавляем вот это:

ChildObject GondorArcherHordeWedgeFormation GondorArcherHorde

; Note - for alternate formations, all info outside of the Contain Behavior module is ignored.
; Any modifications need to be done via the Attribute Modifiers in the contain module.
Behavior = HordeContain ModuleTag_HordeContain
ObjectStatusOfContained =
InitialPayload = GondorArcher 15
Slots = 15
PassengerFilter = NONE +INFANTRY
ShowPips = No
ThisFormationIsTheMainFormation = No ;Used to determine which armorset to use (and anything else we want!)
RandomOffset = X:5 Y:3
; Banner Carrier info
BannerCarriersAllowed = GondorInfantryBanner // types of units that are allowed as banner carriers
BannerCarrierPosition = UnitType:GondorArcher Pos:X:60.0 Y:0.0 // (DEFAULT) position of banner carrier

RandomOffset = X:2 Y:2
RankInfo = RankNumber:1 UnitType:GondorArcher Position:X:0 Y:-30 Position:X:10 Y:-15 Position:X:20 Y:0 Position:X:10 Y:15 Position:X:0 Y:30

RankInfo = RankNumber:2 UnitType:GondorArcher Position:X:0 Y:-60 Position:X:10 Y:-45 Position:X:40 Y:0 Position:X:10 Y:45 Position:X:0 Y:60

RankInfo = RankNumber:3 UnitType:GondorArcher Position:X:20 Y:-30 Position:X:20 Y:30 Position:X:30 Y:-15 Position:X:30 Y:15 Position:X:0 Y:0


RanksToReleaseWhenAttacking = 1 2 3
AlternateFormation = GondorArcherHorde
AttributeModifiers = GondorArcherWedge

; Example of Eva event for horde death
;EvaEventLastMemberDeath = ArchersDie ; Play this Eva event when the last member dies
End
End

Переходим в data/ini/commandset.ini там находим вот это:

CommandSet GondorArcherHordeCommandSet
1 = Command_ToggleStance
2 = Command_ArcherBombard
3 = Command_PurchaseUpgradeGondorFireArrows
4 = Command_PurchaseUpgradeGondorHeavyArmor
5 = Command_PurchaseUpgradeGondorBasicTraining
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End

И заменяем вот на это:

CommandSet GondorArcherHordeCommandSet
1 = Command_ToggleStance
2 = Command_ArcherBombard
3 = Command_PurchaseUpgradeGondorFireArrows
4 = Command_PurchaseUpgradeGondorHeavyArmor
5 = Command_PurchaseUpgradeGondorBasicTraining
6 = Command_ToggleFormationGondorArcher
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End

РЕЗУЛЬТАТ: Если вы всё сделали правильно, то лучники Гондора теперь смогут становиться в альтернативное положение клином! Способность может пригодится при обороне крепостных стен.

Скриншоты:

Попробуем изменить эффект выстрела лука Халдира (герой эльфов). Сделаем так, чтобы выстрел из лука убивал гондорского копейщика, а также отбрасывал его назад (за пределы отряда).

Тутор №6

Нам необходимо настроить ShockWaveArc (широта фронта волны). Сделаем поменьше (чтобы вышибало из отряда 1-2 юнитов). Вот нижняя часть конфинга - настройки халдировского лука WeaponHaldirBow в файле data/ini/Weapon.ini

End

MetaImpactNugget ; A Nugget that throws things back with force
; HeroResist = .99
ShockWaveAmount = 30.0
ShockWaveRadius = 10
ShockWaveArc = 28
ShockWaveTaperOff = 1
End
End

То, что ниже верхнего End, было добавленно нами.

Туториал составил: ВАД

Редактирование стандартных параметров созданного героя

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

Тутор №1

Загрузим INI.big. Для примера возьмём героя-Эльфа, следовательно ищем его иник: data/ini/createaherosystemarcher.inc, где archer - название класса героя (в нашем случае - стрелок). Открываем файл. Однако, редактировать его не получится. Придётся извлечь данный файл, произвести в нём изменения, а лишь потом только добавить его назад, в архив INI.big. Чтобы извлечь файл необходимо выполнить следующие действия:

  • Щёлкнуть на файл, который хотим извлечь (data/ini/createaherosystemarcher.inc)
  • Нажать кнопку Edit, a затем Extract. Выбераем папку для распаковки файла.
  • Затем открываем извлечённый файл блокнотом. Нам нужна следующая строчка - SpendableAttributePoints = 30, где 30 - количество очков. Меняем на нужное значение. Сохраняем.
  • Теперь добавим файл назад в архив. В FinalBIG'е нажимаем Edit, после Add File. выбераем изменённый файл. После этих операций должно появиться окошко под названием Saved with filenam. Всё, что будет в этом окошке - удаляем и вписываем туда путь того героя, которого мы редактировали (в нашем случае в это окошко необходимо добавить следующее: data/ini/createaherosystemarcher.inc. Сохраняем все изменения.
  • Запускаем редактор героев и смотрим на изменения. =)

Теперь у героя-эльфа стоит то число бонусных очков, которое вы указали при редактировании.

Туториал составил:
TurbO.

А теперь добавим способность "Огненный шар" Сарумана созданному герою: 

Тутор №2

Нам необходимо вписать следующий текст:

data>ini>commandbutton.ini

CommandButton Command_CreateAHero_Fireball_New
Command = SPECIAL_POWER
SpecialPower = SpecialAbilitySarumanFireball
Options = NEED_TARGET_ENEMY_OBJECT NEED_TARGET_ALLY_OBJECT NEED_TARGET_NEUTRAL_OBJECT ; CONTEXTMODE_COMMAND
TextLabel = CONTROLBAR:SpecialAbilitySarumanFireball
ButtonImage = HSSarumanFireBallAttack
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:ToolTipSpecialAbilitySarumanFireball
CursorName = EvilAbilityObj
InvalidCursorName = GenericInvalid
InPalantir = Yes
AutoAbility = Yes
PresetRange = 200.0

CreateAHeroUIAllowableUpgrades = Upgrade_CreateAHero_ClassIstariWizard
CreateAHeroUIMinimumLevel = 3
CreateAHeroUIPrerequisiteButtonName = None
End


data>ini>createaheroupgrades.inc

Upgrade Upgrade_CreateAHeroFireBall_New
Type = OBJECT
End


data>ini>object>createahero>createaheropowers.inc

;;; FIRE BALL SPECIAL POWER
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_FireballEnabler
SpecialPowerTemplate = SpecialAbilitySarumanFireball
TriggeredBy = Upgrade_CreateAHeroFireBall_New
End

Behavior = SpecialPowerModule ModuleTag_FireballStarter
SpecialPowerTemplate = SpecialAbilitySarumanFireball
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
;InitiateSound = SarumanVoiceAttackFireball
End

Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_FireballUpdate
SpecialPowerTemplate = SpecialAbilitySarumanFireball
WhichSpecialWeapon = 1
SkipContinue = Yes

UnpackTime = 800
PreparationTime = 1
PersistentPrepTime = 1000
PackTime = 100

AwardXPForTriggering = 0

StartAbilityRange = SARUMAN_FIREBALL_RANGE
MustFinishAbility = Yes
SpecialWeapon = SarumanFireball
End

Вот и всё. Способность добавлена. Тоже самое можно проделать и с другими способностями стандартных героев.

Туториал составил:
TurbO.

Редактирование и изменение игровых текстур

А в этом разделе мы рассмотрим, как можно изменять текстуры различных объектов игры. Это могут быть как юниты, так и любые другие предметы ландшафта. Для начала, рассмотрим, как сделать иконки юнитов цветными (имеются ввиду иконки на палантире).

Тутор №1

Туториал по изменению иконок юнитов расположен по этому адресу.

Туториал составил: TurbO.

А теперь изучим 3D-модделинг. Довольно непросто заниматься модостроительством в данном направлении, но изучив хорошенько все основы, вы поймёте, что к чему.

Тутор №2

DOX по 3D-модделированию находится по этому адресу.

Туториал составил: Aragorn Elessar

Для более подробного изучения моделирования обращайтесь за помощью на наш форум. Ниже представлены несколько скриншотов, которые сделали наши модостроители.

СКРИНШОТЫ

Добавление новых юнитов в игру

А сейчас мы ознакомимся с добавлением новых юнитов в игру. Вы можете активировать скрытых юнитов, которые уже имеются в игре, или же создать своих новых. Сложнее всего - создавать новых юнитов.
Ниже представлена таблица юнитов, которых можно добавить в игру.

Внимание: таблица периодически обновляется.

Таблица юнитов LOTR: The Battle for Middle-earth 2

Название юнита
Требования для активации в игре
Краткое описание юнита

Роханские крестьяне
Всё очень просто. Вам необходимо лишь добавить в CommandSet нужного здания следующую строчку: Command_ConstructRohanPeasantHorde. Ну вот и всё. Сохраняем изменения и любуемся результатом.

Крестьяне - довольно слабые юниты. Но они умеют чинить здания, и в этом их преимущество.

Гронд и Осадная башня
Ищем в commandbutton.ini следующее:

;CommandButton Command_ConstructMordorGrond
; Command = UNIT_BUILD
; Object = MordorGrond
; Options = NEED_UPGRADE CANCELABLE
; TextLabel = CONTROLBAR:ConstructMordorGrond
; ButtonImage = BMGreatSiegeWorks_Grond
; ButtonBorderType = BUILD
; DescriptLabel = CONTROLBAR:ToolTipBuildMordorGrond
; Radial = Yes
; InPalantir = Yes
; ShowProductionCount = Yes
; UnitSpecificSound = GondorArcherVoiceBuy
;End

;CommandButton Command_GrondCloud
; Command = SPECIAL_POWER
; SpecialPower = SpecialAbilityGrondCloud
; TextLabel = CONTROLBAR:GrondCloud
; ButtonImage = UCGrond_Cloud
; ButtonBorderType = ACTION
; DescriptLabel = CONTROLBAR:ToolTipSpecialAbilityGrondPower
; InPalantir = Yes
;End

Стираем точки с запятой, кроме ; UnitSpecificSound = GondorArcherVoiceBuy Далее должно получиться вот так:

CommandButton Command_ConstructMordorGrond
Command = UNIT_BUILD
Object = MordorGrond
Options = NEED_UPGRADE CANCELABLE
TextLabel = CONTROLBAR:ConstructMordorGrond
ButtonImage = BMGreatSiegeWorks_Grond
ButtonBorderType = BUILD
DescriptLabel = CONTROLBAR:ToolTipBuildMordorGrond
Radial = Yes
InPalantir = Yes
ShowProductionCount = Yes
; UnitSpecificSound = GondorArcherVoiceBuy
End

CommandButton Command_GrondCloud
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityGrondCloud
TextLabel = CONTROLBAR:GrondCloud
ButtonImage = UCGrond_Cloud
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:ToolTipSpecialAbilityGrondPower
InPalantir = Yes
End

Далее идем вот сюда datainiobjectevilfactionunitsmordorgrond.ini

В нем есть две части - нам понадобиться с названием(в самом верху первая) Object MordorGrond. Далее в нем ищем раздел ENGINEERING Parameters. В него вставляем вот это:

Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = Artillery
End

Далее идем в commandset.ini, в нем ищем вот это CommandSet MordorGrondCommandSet(коммандсет гронда) и заменяем его весь на это:
CommandSet MordorGrondCommandSet
1 = Command_ToggleStance
2 = Command_AttackMove
3 = Command_Stop
4 = Command_GrondCloud
5 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End

Далее в коммандсете ищем вот это CommandSet MordorSiegeWorksCommandSetLevel1 CommandSet MordorSiegeWorksCommandSetLevel2 CommandSet MordorSiegeWorksCommandSetLevel3 (это комманд сет мордорской осадной мастерской с I-го по III-й левел) и заменяем все три левела на вот это:

CommandSet MordorSiegeWorksCommandSetLevel1
1 = Command_ConstructMordorBatteringRam
2 = Command_ConstructMordorCatapult
3 = Command_ConstructMordorSiegeTower
4 = Command_PurchaseTechnologyMordorForgedBlades ; BFME EXPANSION PACT Faction Enhancement
5 = Command_PurchaseTechnologyMordorHeavyArmor ; BFME EXPANSION PACT Faction Enhancement
6 = Command_ConstructMordorBlackRiderHorde
7 = Command_ConstructMordorGrond
8 = Command_Sell
9 = Command_UpgradeMordorSiegeWorksLevel2
End

CommandSet MordorSiegeWorksCommandSetLevel2
1 = Command_ConstructMordorBatteringRam
2 = Command_ConstructMordorCatapult
3 = Command_ConstructMordorSiegeTower
4 = Command_PurchaseTechnologyMordorForgedBlades ; BFME EXPANSION PACT Faction Enhancement
5 = Command_PurchaseTechnologyMordorHeavyArmor ; BFME EXPANSION PACT Faction Enhancement
6 = Command_ConstructMordorBlackRiderHorde
7 = Command_ConstructMordorGrond
8 = Command_Sell
9 = Command_UpgradeMordorSiegeWorksLevel3
End

CommandSet MordorSiegeWorksCommandSetLevel3
1 = Command_ConstructMordorBatteringRam
2 = Command_ConstructMordorCatapult
3 = Command_ConstructMordorSiegeTower
4 = Command_PurchaseTechnologyMordorForgedBlades ; BFME EXPANSION PACT Faction Enhancement
5 = Command_PurchaseTechnologyMordorHeavyArmor ; BFME EXPANSION PACT Faction Enhancement
6 = Command_ConstructMordorBlackRiderHorde
7 = Command_ConstructMordorGrond
8 = Command_Sell
End

Вот и всё! Осадная техника добавлена.

Гронд - мощнейшее орудие против стен и ворот. Мордор применял его во время осады Минас-Тирит. Также для осады крепости были использованы мощные осадные башни, которые передвигались троллями.

Йомены и Дунаданские стрелки 
Добавить их в игру не так уж и трудно. Для начала зайдём в commandset.ini. Там ищем CommandSet GondorArcheryCommandSet.
Итак, изменяем файл.

CommandSet GondorArcheryCommandSet
1 = Command_ConstructGondorArcherHorde
2 = Command_ConstructFornostGondorRangerHorde
3 = Command_ConstructRohanArcherHorde
4 = Command_PurchaseTechnologyGondorFireArrows
5 = Command_PurchaseUpgradeGondorArcheryRangeLevel2
6 = Command_ConstructGondorRangerHordeForGoodIthilien
7 = Command_Sell
End

CommandSet GondorArcheryCommandSetLevel2
1 = Command_ConstructGondorArcherHorde
2 = Command_ConstructFornostGondorRangerHorde
3 = Command_ConstructRohanArcherHorde
4 = Command_PurchaseTechnologyGondorFireArrows
5 = Command_PurchaseUpgradeGondorArcheryRangeLevel3
6 = Command_ConstructGondorRangerHordeForGoodIthilien
7 = Command_Sell
End

CommandSet GondorArcheryCommandSetLevel3
1 = Command_ConstructGondorArcherHorde
2 = Command_ConstructRohanArcherHorde
3 = Command_ConstructGondorRangerHorde
4 = Command_PurchaseTechnologyGondorFireArrows
5 = Command_ConstructGondorRangerHordeForGoodIthilien
6 = Command_Sell
End

ВНИМАНИЕ:
Вы видете подчёркнутые строки. Их необходимо вписать таким образом, чтобы конечный текст был точно таким, как представлен выше.
Если эти строки у вас уже есть, но перед ними стоит ";", то нужно удалить этот символ.

Довольно неплохие лучники. Ничего особенного в них нет, но всё же в игре появится разнообразие юнитов-лучников.

Истерлинги со щитами
Для начала идем в data>ini>gamedata.ini и вставляем в туда вот это:

;------------------------OLDSOLDIERRHUN-------------

#define OLD_MORDOR_SOLDIERRHUN_BUILDCOST 650
#define OLD_MORDOR_SOLDIERRHUN_BUILDTIME 20
#define OLD_MORDOR_SOLDIERRHUN_HEALTH 480
#define OLD_MORDOR_SOLDIERRHUN_HEALTH_DAMAGED 160


Дальше идем в data>ini>commandbutton.ini здесь нам потребуеться прописать батоны, а точнее два батона для нашего нового юнита, вставляем вот это:


CommandButton Command_ConstructOldEasterlingHorde
Command = UNIT_BUILD
Object = OldMordorEasterlingHorde
Options = NEED_UPGRADE CANCELABLE
NeededUpgrade = Upgrade_MordorHaradrimPalaceLevel2
TextLabel = CONTROLBAR:ConstructMordorEasterlingHorde
ButtonImage = BMHaradrimPalace_SoldiersRhun
ButtonBorderType = BUILD ; Identifier for the User as to what kind of button this is
DescriptLabel = CONTROLBAR:ToolTipBuildMordorEasterlingHorde
Radial = Yes
InPalantir = Yes
ShowProductionCount = Yes
; UnitSpecificSound = GondorArcherVoiceBuy
End

CommandButton Command_ToggleFormationOldEasterling
Command = HORDE_TOGGLE_FORMATION ;;Soldier of Rhun
Options = TOGGLE_IMAGE_ON_FORMATION OK_FOR_MULTI_SELECT
;Object = OldMordorEasterlingPorcupineHorde
ButtonImage = UCFormation_Porcupine UCFormation_Line
ButtonBorderType = ACTION
TextLabel = CONTROLBAR:TogglePorcupineFormation CONTROLBAR:TogglePorcupineFormationOff
DescriptLabel = CONTROLBAR:ToolTipToggleEasterlingLineToPorcupineFormation CONTROLBAR:ToolTipToggleEasterlingPorcupineToLineFormation
InPalantir = Yes
DoubleClick = Yes
UnitSpecificSound = EasterlingVoicePorcupineBegin EasterlingVoicePorcupineEnd
End


Что бы иконки(комаманд юнита)отображались на кнопках правильно, их нужно прописать в data>ini>mappedimages>aptimages>unitcommands.ini. Прописываем вот так в самом конце файла:

ВНИМАНИЕ: ЕСЛИ У КОГО-ЛИБО УЖЕ ПРОПИСАНА ВОТ С ЭТИМ НАЗВАНИЕМ ИКОНКА "MappedImage UCFormation_Line", ТО НЕ НУЖНО ЕЕ ПРОПИСЫВАТЬ ДВА РАЗА!

MappedImage UCFormation_Line
Texture = UCFormation_Line.tga
TextureWidth = 64
TextureHeight = 64
Coords = Left:0 Top:0 Right:63 Bottom:63
Status = NONE
End

А вот эту, что ниже, надо прописать обязательно!

MappedImage UCFormation_Porcupine
Texture = UCFormation_Porcupine.tga
TextureWidth = 64
TextureHeight = 64
Coords = Left:0 Top:0 Right:63 Bottom:63
Status = NONE
End


Так, далее после того, как прописали иконки идем в data>ini>commandset.ini и создаем новый коммандсет для нашего юнита вот так:

В этот коммандсет конечно можно добавить(по желанию) "Command_PurchaseUpgradeMordorForgedBlades", но я не стал т.к. этого нет пока в игре, но эта "феня" работает.

CommandSet OldMordorEasterlingHordeCommandSet
1 = Command_ToggleStance
2 = Command_PurchaseUpgradeMordorHeavyArmor
3 = Command_PurchaseUpgradeMordorBasicTraining
4 = Command_ToggleFormationOldEasterling
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End


Далее нам нужно в комманд сете найти вот это MordorHaradrimPalaceCommandSetLevel1 и заменить его на всех трех левелах, будет вот так:

CommandSet MordorHaradrimPalaceCommandSetLevel1
1 = Command_ConstructEasterlingHorde
2 = Command_ConstructMordorHaradrimRiderHorde
3 = Command_ConstructMordorCorsairsOfUmbarHorde ; BFME EXPANSION PACT Faction Enhancement
4 = Command_ConstructMordorHaradrimArcherHorde
5 = Command_ConstructOldEasterlingHorde
6 = Command_PurchaseTechnologyMordorFireArrows ; BFME EXPANSION PACT Faction Enhancement
7 = Command_Sell
8 = Command_UpgradeMordorHaradrimPalaceLevel2
End

CommandSet MordorHaradrimPalaceCommandSetLevel2
1 = Command_ConstructEasterlingHorde
2 = Command_ConstructMordorHaradrimRiderHorde
3 = Command_ConstructMordorCorsairsOfUmbarHorde ; BFME EXPANSION PACT Faction Enhancement
4 = Command_ConstructMordorHaradrimArcherHorde
5 = Command_ConstructOldEasterlingHorde
6 = Command_PurchaseTechnologyMordorFireArrows ; BFME EXPANSION PACT Faction Enhancement
7 = Command_Sell
8 = Command_UpgradeMordorHaradrimPalaceLevel3
End

CommandSet MordorHaradrimPalaceCommandSetLevel3
1 = Command_ConstructEasterlingHorde
2 = Command_ConstructMordorHaradrimRiderHorde
3 = Command_ConstructMordorCorsairsOfUmbarHorde ; BFME EXPANSION PACT Faction Enhancement
4 = Command_ConstructMordorHaradrimArcherHorde
5 = Command_ConstructOldEasterlingHorde
6 = Command_PurchaseTechnologyMordorFireArrows ; BFME EXPANSION PACT Faction Enhancement
7 = Command_Sell
End

Дальше идем сюда data>ini>experiencelevels.ini - тут нам надо найти вот эту строчку (в самом верху): #define EVIL_ELITE
И ДОПИСАТЬ, (не стирая старого) в нее в это: OldMordorEasterling OldMordorEasterlingHorde OldMordorEasterlingPorcupineHorde
ПРИМЕР:
#define EVIL_ELITE OldMordorEasterling OldMordorEasterlingHorde OldMordorEasterlingPorcupineHorde

Теперь пошло самое ВЕСЕЛОЕ - будем добавлять сам юнит и многое другое! Идем в data>ini>object>evilfaction>evilfactionunits.ini и в самый низ файла вставляем вот это:


Object OldMordorEasterling
; *** ART Parameters ***

; This is required for garrisoned objects - please put in all objects.
ButtonImage = BMHaradrimPalace_SoldiersRhun
SelectPortrait = UPMordor_Eastering

Draw = W3DHordeModelDraw ModuleTag_01

OkToChangeModelColor = Yes

StaticModelLODMode = Yes
; specify options for static LODs
LodOptions = LOW
AllowMultipleModels = ALLOW_MULTIPLE_MODELS_LOW
MaxRandomTextures = MAX_RANDOM_TEXTURES_LOW
MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_LOW
MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_LOW
End

LodOptions = MEDIUM
AllowMultipleModels = ALLOW_MULTIPLE_MODELS_MED
MaxRandomTextures = MAX_RANDOM_TEXTURES_MED
MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_MED
MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_MED
End

LodOptions = HIGH
AllowMultipleModels = ALLOW_MULTIPLE_MODELS_HIGH
MaxRandomTextures = MAX_RANDOM_TEXTURES_HIGH
MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_HIGH
MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_HIGH
End


DefaultModelConditionState
Model = MUEastern_SKN
End

; ---------------------- IDLE ANIMATIONS ------------------------------
IdleAnimationState
Animation = IDLEA
AnimationName = MUEastern_SKL.MUEastern_IDLB
AnimationMode = LOOP
AnimationBlendTime = 10
AnimationSpeedFactorRange = 0.8 1.2
End
Flags = RANDOMSTART
StateName = Idle
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Selected" then CurDrawableSetTransitionAnimState("TransitionFromAttention") end
EndScript
End

;---------------------- THROWN ANIMATION -------------------------------

AnimationState = THROWN_PROJECTILE
Animation = THROWN
AnimationName = MUEastern_SKL.MUEastern_FLYA
AnimationMode = LOOP
End
End

;--------------------- Giant Bird Stuff ---------------------------------------
AnimationState = PASSENGER FREEFALL
Animation = Grabbed
AnimationName = MUEastern_SKL.MUEastern_FLLA
AnimationMode = LOOP
End
End

AnimationState = FREEFALL
Animation = Falling
AnimationName = MUEastern_SKL.MUEastern_FLYA
AnimationMode = LOOP
AnimationBlendTime = 10
AnimationSpeedFactorRange = 0.5 0.5
End
End

;------------------------ STUNNED ANIMATIONS ---------------------------
AnimationState = STUNNED_FLAILING
Animation = StunnedFlailing
AnimationName = MUEastern_SKL.MUEastern_FLYA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End

;-------------------------- DYING ANIMS ---------------------------------
AnimationState = DYING SPLATTED
Animation = Splattered_On_Ground
AnimationName = MUEastern_SKL.MUEastern_LNDA
AnimationMode = ONCE
End
EnteringStateFX = FX_HaradrimHitGround
End

AnimationState = DYING AFLAME
Animation = Flaming_Death
AnimationName = MUEastern_SKL.MUEastern_DIEA
AnimationMode = ONCE
End
ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes
ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes
ParticleSysBone = BAT_RIBS FireBuildingLargeSmoke FollowBone:yes
ParticleSysBone = BAT_RIBS FireSmall FollowBone:yes
End

AnimationState = DYING
Animation = Dying
AnimationName = MUEastern_SKL.MUEastern_DIEA
AnimationMode = ONCE
End
End

;------------------------ STUNNED ANIMATIONS ---------------------------

AnimationState = STUNNED_STANDING_UP
Animation = Standing_Back_Up
AnimationName = MUEastern_SKL.MUEastern_GTPA
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.5 1.5
End
End

AnimationState = STUNNED
Animation = Stunned
AnimationName = MUEastern_SKL.MUEastern_LNDA
AnimationMode = ONCE
End
EnteringStateFX = FX_HaradrimHitGround
End

;---------------------- PASSENGER ANIMATION -----------------------------
AnimationState = PASSENGER
Animation = Grabbed
AnimationName = MUEastern_SKL.MUEastern_FLLA
AnimationMode = LOOP
End
End

;--------------------- MOVING ANIMATIONS -----------------------------------

AnimationState = MOVING FIRING_OR_PREATTACK_A
Animation = TrotAndFire
AnimationName = MUEastern_SKL.MUEastern_ATRA
AnimationMode = LOOP
End
Flags = RANDOMSTART
;ParticleSysBone = None InfantryDustTrails
End


AnimationState = MOVING CLIMBING BACKING_UP
Animation = ClimbingBackwards
AnimationName = MUEastern_SKL.MUEastern_CLMA
AnimationMode = LOOP_BACKWARDS
End
End

AnimationState = MOVING CLIMBING
Animation = Climbing
AnimationName = MUEastern_SKL.MUEastern_CLMA
AnimationMode = LOOP
End
End

AnimationState = MOVING PANICKING
ShareAnimation = Yes
Animation = PANICKING
AnimationName = MUEastern_SKL.MUEastern_MFDA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End

AnimationState = MOVING BACKING_UP
ShareAnimation = Yes
Animation = BACKINUP
AnimationName = MUEastern_SKL.MUEastern_BAKA
AnimationMode = LOOP
End
;Flags = RANDOMSTART
End

AnimationState = MOVING ALTERNATE_FORMATION AFLAME
Animation = MovingWithAlternateFormationOnFire
AnimationName = MUEastern_SKL.MUEastern_RUNA
AnimationMode = LOOP
End
Flags = RANDOMSTART
ParticleSysBone = None InfantryDustTrails
ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes
ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes
ParticleSysBone = BAT_RIBS FireBuildingLargeSmoke FollowBone:yes
ParticleSysBone = BAT_RIBS FireSmall FollowBone:yes
;Flags = RANDOMSTART
End

AnimationState = MOVING ALTERNATE_FORMATION
ShareAnimation = Yes
Animation = MovingWithAlternateFormation
AnimationName = MUEastern_SKL.MUEastern_WLKA
AnimationMode = LOOP
End
ParticleSysBone = None InfantryDustTrails
;Flags = RANDOMSTART
End

AnimationState = MOVING AFLAME
ShareAnimation = Yes
Animation = MovingOnFire
AnimationName = MUEastern_SKL.MUEastern_RUNA
AnimationMode = LOOP
End

ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes
ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes
ParticleSysBone = BAT_RIBS FireBuildingLargeSmoke FollowBone:yes
ParticleSysBone = BAT_RIBS FireSmall FollowBone:yes
End

AnimationState = MOVING EMOTION_TERROR
ShareAnimation = Yes
Animation = Moving
AnimationName = MUEastern_SKL.MUEastern_RUNA
AnimationMode = LOOP
End
ParticleSysBone = None InfantryDustTrails
;Flags = RANDOMSTART
End

AnimationState = MOVING
ShareAnimation = Yes
Animation = Moving
AnimationName = MUEastern_SKL.MUEastern_RUNA
AnimationMode = LOOP
Distance = 50
End
ParticleSysBone = None InfantryDustTrails
;Flags = RANDOMSTART
End

;---------------------- ATTACKING ANIMATIONS ---------------------------
AnimationState = FIRING_OR_PREATTACK_A
Animation = ATTACKA
AnimationName = MUEastern_SKL.MUEastern_ATKA
AnimationMode = ONCE
End
End

AnimationState = BETWEEN_FIRING_SHOTS_A
Animation = between
AnimationName = MUEastern_SKL.MUEastern_IDLA
AnimationMode = LOOP
End
End

AnimationState = EMOTION_UNCONTROLLABLY_AFRAID
ShareAnimation = Yes
Animation = Cower
AnimationName = MUEastern_SKL.MUEastern_FERA
AnimationMode = LOOP
End
End

AnimationState = ATTACKING
Animation = AttackingReady
AnimationName = MUEastern_SKL.MUEastern_IDLA
AnimationMode = LOOP
End
End

;---------------------- EMOTION ANIMATIONS ---------------------------
AnimationState = EMOTION_ALERT EMOTION_AFRAID
ShareAnimation = Yes
Animation = Apprehensive
AnimationName = MUEastern_SKL.MUEastern_APPA
AnimationMode = LOOP ;Change this to ONCE if adding additional anims
End
End

AnimationState = EMOTION_AFRAID
ShareAnimation = Yes
Animation = Cower
AnimationName = MUEastern_SKL.MUEastern_FERA
AnimationMode = LOOP
End
End

AnimationState = EMOTION_TAUNTING
Animation = TNTA
AnimationName = MUEastern_SKL.MUEastern_TNTA
AnimationMode = ONCE
AnimationBlendTime = 15
AnimationSpeedFactorRange = 0.8 1.2
End
Animation = TNTB
AnimationName = MUEastern_SKL.MUEastern_TNTB
AnimationMode = ONCE
AnimationBlendTime = 15
AnimationSpeedFactorRange = 0.8 1.2
End
Flags = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
End

AnimationState = EMOTION_POINTING
Animation = Pointing1
AnimationName = MUEastern_SKL.MUEastern_PNTA
AnimationMode = LOOP
End
End

AnimationState = EMOTION_CELEBRATING
Animation = Celebrating
AnimationName = MUEastern_SKL.MUEastern_CHRA
AnimationMode = ONCE
End

Animation = CelebratingB
AnimationName = MUEastern_SKL.MUEastern_CHRB
AnimationMode = ONCE
End

Flags = RESTART_ANIM_WHEN_COMPLETE
End

AnimationState = EMOTION_ALERT
Animation = ALERT
AnimationName = MUEastern_SKL.MUEastern_IDLA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End

AnimationState = WAR_CHANT
Animation = Chant
AnimationName = MUEastern_SKL.MUEastern_CHRB
AnimationMode = LOOP
End
End

;--------------------- HIT REACTIONS -----------------------------------
AnimationState = HIT_REACTION HIT_LEVEL_1
Animation = HitReaction1
AnimationName = MUEastern_SKL.MUEastern_HITA
AnimationMode = ONCE
End
End

AnimationState = HIT_REACTION HIT_LEVEL_2
Animation = HitReaction2
AnimationName = MUEastern_SKL.MUEastern_HITA
AnimationMode = ONCE
End
End

AnimationState = HIT_REACTION HIT_LEVEL_3
Animation = HitReaction3
AnimationName = MUEastern_SKL.MUEastern_HITA
AnimationMode = ONCE
End
End

AnimationState = SELECTED
ShareAnimation = Yes
Animation = AtAttention
AnimationName = MUEastern_SKL.MUEastern_ATNB
AnimationMode = LOOP
End

StateName = Selected

BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("TransitionToAttention") end
EndScript
End

;-------------------------------------- TRANSITIONS ----------------------------------------------
TransitionState = TransitionToAttention
Animation = ToAttentionTransition
AnimationName = MUEastern_SKL.MUEastern_ATNA
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.4
AnimationBlendTime = 10
End
End

TransitionState = TransitionFromAttention
Animation = FromAttentionTransition
AnimationName = MUEastern_SKL.MUEastern_ATNC
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.4
AnimationBlendTime = 10
End
End
End
;;--@END
;----------------------------------- DESIGN parameters ----------------------------------------------------
Side = Mordor
EditorSorting = UNIT
ThreatLevel = 1.0
ThingClass = HORDE_UNIT
CommandPoints = 5
TransportSlotCount = 1

ArmorSet
Conditions = None
Armor = RhunArmor
DamageFX = None
End

WeaponSet
Conditions = None
Weapon = PRIMARY MordorEasterlingPike
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End

VisionRange = VISION_STANDARD_MELEE
ShroudClearingRange = SHROUD_CLEAR_STANDARD

BountyValue = MORDOR_SOLDIERRHUN_BOUNTY_VALUE
DisplayName = OBJECT:MordorEasterling
CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CrusherLevel = 0 ;What can I crush?: 0 = small animals, 1 = infantry, 2 = trees, 3 = vehicles
CrushRevengeWeapon = AntiCavalryInfantryCrushRevenge

CommandSet = MordorEasterlingCommandSet


;----------------------------------- AUDIO parameters ----------------------------------------------------

;VoiceAmbushed = SoldierOfRhunVoiceAmbushed
VoiceAttack = SoldierOfRhunVoiceAttack
VoiceAttackCharge = SoldierOfRhunVoiceAttackCharge
VoiceAttackMachine = SoldierOfRhunVoiceAttack
VoiceAttackStructure = SoldierOfRhunVoiceAttackBuilding
VoiceCreated = CampOrcCreateSoldiersOfRhun
VoiceFullyCreated = CampOrcCreateSoldiersOfRhun
VoiceMove = SoldierOfRhunVoiceMove
VoiceMoveToCamp = SoldierOfRhunVoiceMoveCamp
VoiceMoveWhileAttacking = SoldierOfRhunVoiceDisengage
VoicePriority = 55
VoiceRetreatToCastle = SoldierOfRhunVoiceRetreat
VoiceSelect = SoldierOfRhunVoiceSelect
;VoiceSelect2 = ElvenWarriorVoiceSelect2
VoiceSelectBattle = SoldierOfRhunVoiceSelectBattle
VoiceGuard = SoldierOfRhunVoiceMove

VoiceEnterStateAttack = SoldierOfRhunVoiceEnterStateAttack
VoiceEnterStateAttackCharge = SoldierOfRhunVoiceEnterStateAttackCharge
VoiceEnterStateAttackMachine = SoldierOfRhunVoiceEnterStateAttackBuilding
VoiceEnterStateAttackStructure = SoldierOfRhunVoiceEnterStateAttackBuilding
VoiceEnterStateMove = SoldierOfRhunVoiceEnterStateMove
VoiceEnterStateMoveToCamp = SoldierOfRhunVoiceEnterStateMoveCamp
VoiceEnterStateMoveWhileAttacking = SoldierOfRhunVoiceEnterStateDisengage
VoiceEnterStateRetreatToCastle = SoldierOfRhunVoiceEnterStateRetreat

UnitSpecificSounds
VoiceEnterUnitMordorMumakil = SoldierOfRhunVoiceGarrison
VoiceEnterUnitSlaughterHouse = SoldierOfRhunVoiceGarrisonSlaughterHouse
VoiceGarrison = SoldierOfRhunVoiceGarrison
End

EvaEventDamagedOwner = UnitUnderAttack ;Eva event to trigger when unit is damaged
;EvaEventDieOwner = GroupSoldiersOfRhunDie ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
;For deaths you can respawn from, use the DeathFX

Behavior = LargeGroupAudioUpdate ModuleTag_LGAU ; Tie into LargeGroupAudio system
Key = Easterling_Infantry
End


ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound:BodyFallSoldier Animation:MUEastern_SKL.MUEastern_LNDA Frames:2
AnimationSound = Sound:BodyFallGeneric1 Animation:MUEastern_SKL.MUEastern_DIEA Frames:52
End


;----------------------------------- ENGINEERING parameters ----------------------------------------------------
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER CAN_USE_SIEGE_TOWER SCORE GRAB_AND_DROP

Body = PorcupineFormationBodyModule ModuleTag_porcupineFormation
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = OLD_MORDOR_SOLDIERRHUN_HEALTH
MaxHealthDamaged = OLD_MORDOR_SOLDIERRHUN_HEALTH_DAMAGED
;RecoveryTime = MORDOR_SOLDIERRHUN_HEALTH_RECOVERY_TIME
DamageWeaponTemplate = EasterlingPorcupineDamage
CrushDamageWeaponTemplate = EasterlingPorcupineCrushDamage
End

Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
CanAttackWhileContained = Yes
HoldGroundCloseRangeDistance= 80
AttackPriority = AttackPriority_Spearman
End

LocomotorSet
Locomotor = HumanLocomotor
Condition = SET_NORMAL
Speed = NORMAL_EVIL_INFANTRY_MEMBER_SPEED
End

Behavior = PhysicsBehavior ModuleTag_04
GravityMult = 1.0
ShockStandingTime = 1333 ;msec
End

Behavior = SlowDeathBehavior ModuleTag_05
DeathTypes = ALL
SinkDelay = 3000
SinkRate = 1.20 ; in Dist/Sec
DestructionDelay = 10000
Sound = INITIAL SoldierOfRhunVoiceDie
End

Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
HitReactionLifeTimer1 = 1000 ; level 1
HitReactionLifeTimer2 = 1000 ; level 2
HitReactionLifeTimer3 = 1000 ; level 3

HitReactionThreshold1 = 0.0 ; level 1 (light damage) threshold trigger
HitReactionThreshold2 = 25.0 ; level 2 (medium damage) threshold trigger
HitReactionThreshold3 = 50.0 ; level 3 (heavy damage) threshold trigger
End

Behavior = SquishCollide ModuleTag_06
;nothing
End

Behavior = HordeMemberCollide ModuleTag_HMC
;nothing
End

;Heavy Armor
Behavior = ArmorUpgrade ArmorUpgradeModuleTag
TriggeredBy = Upgrade_MordorHeavyArmor
ArmorSetFlag = PLAYER_UPGRADE
End

Behavior = SubObjectsUpgrade Armor_Upgrade
TriggeredBy = Upgrade_MordorHeavyArmor
UpgradeTexture = MUEastern.tga 0 MUEastern_HA.tga
RecolorHouse = Yes
ExcludeSubobjects = Forged_Blade
End

Behavior = SubObjectsUpgrade ForgedBlades_Upgrade
TriggeredBy = Upgrade_MordorForgedBlades
ShowSubObjects = Forged_Blade
End

Behavior = StatusBitsUpgrade ForgedBlades_UpgradeDetection
TriggeredBy = Upgrade_MordorForgedBlades
End

Geometry = CYLINDER
GeometryMajorRadius = 8.0
GeometryMinorRadius = 8.0
GeometryHeight = 19.2
GeometryIsSmall = Yes

Shadow = SHADOW_DECAL
ShadowSizeX = 21;
ShadowSizeY = 21;
ShadowTexture = ShadowI;
End



Дальше идем вот сюда data>ini>object>hordes>mordor>mordorhordes.ini и вставляем в самый низ документа это:

Object OldMordorEasterlingHorde
; This is required for garrisoned objects - please put in all objects.
ButtonImage = BMHaradrimPalace_SoldiersRhun
SelectPortrait = UPMordor_Eastering

Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw
DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR EMOTION_LOOK_TO_SKY
DefaultModelConditionState
Model = None ;InvisHrdeTmp
End
ModelConditionState = HORDE_EMPTY
Model = None
End
ModelConditionState = WORLD_BUILDER
Model = HordeTemplate
End
End

Side = Mordor
EditorSorting = UNIT
EmotionRange = 240
TransportSlotCount = 1
DisplayName = OBJECT:HordeMordorEasterlings

WeaponSet
Conditions = None
Weapon = PRIMARY NormalMeleeHordeRangefinder
End

BuildCost = OLD_MORDOR_SOLDIERRHUN_BUILDCOST
BuildTime = OLD_MORDOR_SOLDIERRHUN_BUILDTIME
VisionRange = VISION_STANDARD_MELEE
CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CrusherLevel = 0 ;What can I crush?: 0 = small animals, 1 = infantry, 2 = trees, 3 = vehicles
CommandPoints = 50
CommandSet = OldMordorEasterlingHordeCommandSet

FormationWidth = 2 ; Width it occupies in formations. Current choices are 1 or 2.
FormationDepth = 2 ; Depth it occupies in formations. Current choices are 1 or 2.

TransportSlotCount = 1
KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE MELEE_HORDE ARMY_SUMMARY CAN_USE_SIEGE_TOWER ;UNATTACKABLE

#include "......includesStandardHordeEvaEvents.inc"
#include "......includesCaptureBuilding.inc"

Body = ImmortalBody ModuleTag_ImmortalBody
MaxHealth = 1
End

Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
MoodAttackCheckRate = 500
AILuaEventsList = InfantryFunctions
MaxCowerTime = 5000
MinCowerTime = 3000
AttackPriority = AttackPriority_Spearman
End

Behavior = HordeContain ModuleTag_HordeContain
ObjectStatusOfContained =
InitialPayload = OldMordorEasterling 10
Slots = 10
PassengerFilter = NONE +INFANTRY
ShowPips = No
;RandomOffset=X:7 Y:7
ThisFormationIsTheMainFormation = Yes ;Used to determine which armorset to use (and anything else we want!)

BannerCarriersAllowed = MordorBannerOrc ; types of units that are allowed as banner carriers
BannerCarrierPosition = UnitType:MordorEasterling Pos:X:70.0 Y:0.0 ; (DEFAULT) position of banner carrier

; Positions for 5
RankInfo = RankNumber:1 UnitType:OldMordorEasterling Position:X:50 Y:0 Position:X:50 Y:20 Position:X:50 Y:-20 Position:X:50 Y:40 Position:X:50 Y:-40
RankInfo = RankNumber:2 UnitType:OldMordorEasterling Position:X:30 Y:0 Leader 1 0 Position:X:30 Y:20 Leader 1 1 Position:X:30 Y:-20 Leader 1 2 Position:X:30 Y:40 Leader 1 3 Position:X:30 Y:-40 Leader 1 4


RanksToReleaseWhenAttacking = 1 2

MeleeAttackLeashDistance = 25; How far the hordes can move from the center of the horde when melee attacking.
AlternateFormation = OldMordorEasterlingPorcupineHorde
End

Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = FighterHorde
End

Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
GravityMult = 1.0
End

Behavior = EmotionTrackerUpdate Module_EmotionTracker
TauntAndPointDistance = INFANTRY_TAUNT_POINT_RADIUS ;350 ; max distance to taunted/pointed objet
TauntAndPointUpdateDelay = 1000 ; how often scan (milliseconds)
TauntAndPointExcluded = NONE
AfraidOf = NONE +RohanOathbreakerHordeSmall +GondorGwaihir +RohanTreeBerd +RohanEntFir +RohanEntAsh +RohanEntBirch +MordorFellBeast +MordorWitchKingOnFellBeast +MordorBalrog +MordorCaveTroll +MordorMountainTroll +MordorDrummerTroll +MordorMumakil ;Must be SCARY kindof as well.
AlwaysAfraidOf = NONE +MordorBalrog +RohanOathbreaker; +MordorWitchKing +MordorWitchKingOnFellBeast
PointAt = NONE +GondorGwaihir
HeroScanDistance = 150
FearScanDistance = INFANTRY_FEAR_SCAN_RADIUS ;250

AddEmotion = Terror_Base
AddEmotion = Doom_Base
AddEmotion = UncontrollableFear_Base_Evil
AddEmotion = FearIdle_Base
AddEmotion = FearBusy_Base
AddEmotion = Point_Base

AddEmotion = OVERRIDE Taunt_Base
; AttributeModifier = GondorFighterTaunt
End

AddEmotion = CheerIdle_Base
AddEmotion = CheerBusy_Base
AddEmotion = HeroCheerIdle_Base
AddEmotion = HeroCheerBusy_Base
AddEmotion = Alert_Base
End


LocomotorSet
Locomotor = NormalMeleeHordeLocomotor
Condition = SET_NORMAL
Speed = NORMAL_EVIL_INFANTRY_HORDE_SPEED
End

Behavior = ProductionUpdate ProductionUpdateModuleTag
GiveNoXP = Yes
End


Behavior = PickupStuffUpdate ModuleTag_PickupStuffUpdate
SkirmishAIOnly = Yes
StuffToPickUp = NONE +CRATE
ScanRange = 200
ScanIntervalSeconds = 0.5
End

Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2
TriggeredBy = Upgrade_MordorHeavyArmor
TriggeredBy = Upgrade_MordorForgedBlades
End

Behavior = LevelUpUpgrade ModuleTag_BasicTraining
TriggeredBy = Upgrade_MordorBasicTraining Upgrade_TechnologyMordorBasicTraining
RequiresAllTriggers = Yes
LevelsToGain = 1
LevelCap = 2
End

Geometry = BOX
GeometryMajorRadius = 30.4
GeometryMinorRadius = 30.4
GeometryHeight = 8.0
GeometryIsSmall = No
End

;-----------------------------------------------------------------------------

ChildObject OldMordorEasterlingPorcupineHorde OldMordorEasterlingHorde
; Note - for alternate formations, all info outside of the Contain Behavior module is ignored.
; Any modifications need to be done via the Attribute Modifiers in the contain module.
Behavior = HordeContain ModuleTag_HordeContain
ObjectStatusOfContained =
InitialPayload = OldMordorEasterling 10
Slots = 10
PassengerFilter = NONE +INFANTRY
ShowPips = No

ThisFormationIsTheMainFormation = No ;Used to determine which armorset to use (and anything else we want!)

; Banner Carrier info
BannerCarriersAllowed = MordorBannerOrc ; types of units that are allowed as banner carriers
BannerCarrierPosition = UnitType:MordorEasterling Pos:X:70.0 Y:0.0 ; (DEFAULT) position of banner carrier

; Positions for 15
RankInfo = RankNumber:1 UnitType:OldMordorEasterling Position:X:50 Y:0 Position:X:50 Y:20 Position:X:50 Y:-20 Position:X:40 Y:40 Position:X:40 Y:-40
RankInfo = RankNumber:2 UnitType:OldMordorEasterling Position:X:30 Y:0 Leader 1 0 Position:X:30 Y:20 Leader 1 1 Position:X:30 Y:-20 Leader 1 2 Position:X:20 Y:40 Leader 1 3 Position:X:20 Y:-40 Leader 1 4



RanksToReleaseWhenAttacking = 1 2
AlternateFormation = OldMordorEasterlingHorde
;UsePorcupineBody = Yes
AttributeModifiers = MordorEasterlingHordePorcupineBonus
UseSlowHordeMovement = Yes

End
End

Итак...

Если вы всё правильно сделали, то сможете купить данный юнит в бараках Харадрима. Стоимость найма - 650 золотых. Удачи!

Неплохие бойцы из первой части игры, которые могут оказать значительное сопротивление лучникам и коннице. Плюсы данного юнита в этой версии:

  • Индивидуальная модель
  • Индивидуальная анимация
  • Индивидуальная озвучка(это уже огромный плюс!)
  • Добавлена возможность захвата нейтральных зданий
  • Добавлена возможность, обменивать юнит на ресурсы в главном здании
  • Возможность, апгрейда брони и ее визуальное проявлениие в игре (в первой части такого не наблюдалось)
  • Добавлена возможность, менять строй отряда при котором отряд получает 25% брони и -40% скорости, к тому при данном построени отряд может передвигаться
  • Добавлена возможность прокачки
  • Тренировка отряда до 2 левела

Однако, портрет для юнитов используется от простых вастаков. Но всё же это не самый большой минус.

Скриншоты:

Исильдур
Для начала откроем основной ini Исильдура (примерное название ini-файлы Исильдура - GondorIsildur. Надеюсь, сами сможете найти полный адрес)
Итак, там находим:

Object GondorIsildur
; ButtonImage = HIIsildur
; SelectPortrait = HPIsildur

Тут нужно стереть перед строками ";"
Долно получиться вот так:

ButtonImage = HIIsildur
SelectPortrait = HPIsildur

Потом идем в datainiexperiencelevels.ini, там находим Исильдура (от него осталось только вот это:

ExperienceLevel IsildurLevel1
TargetNames = GondorIsildur
RequiredExperience = 1
ExperienceAward = 0
Rank = 10
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

Всё, что выше, меняем на это:

ExperienceLevel IsildurLevel1
TargetNames = GondorIsildur
RequiredExperience = 1
ExperienceAward = EOMER_LVL1_EXP_AWARD
Rank = 1
;Upgrades = Upgrade_EomerHorseLordLeader
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel2
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL2_EXP_NEEDED
ExperienceAward = EOMER_LVL2_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 2
;Upgrades = Upgrade_EomerOutlawLeader
AttributeModifiers = HeroLevelUpDamage1

SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel3
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL3_EXP_NEEDED
ExperienceAward = EOMER_LVL3_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 3
AttributeModifiers = HeroLevelUpDamage2
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel4
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL4_EXP_NEEDED
ExperienceAward = EOMER_LVL4_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 4
AttributeModifiers = HeroLevelUpDamage3
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel5
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL5_EXP_NEEDED
ExperienceAward = EOMER_LVL5_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 5

AttributeModifiers = HeroLevelUpDamage4
;Upgrades = Upgrade_EomerSpear
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel6
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL6_EXP_NEEDED
ExperienceAward = EOMER_LVL6_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 6
AttributeModifiers = HeroLevelUpDamage5
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel7
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL7_EXP_NEEDED
ExperienceAward = EOMER_LVL7_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 7
AttributeModifiers = HeroLevelUpDamage6
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel8
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL8_EXP_NEEDED
ExperienceAward = EOMER_LVL8_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 8
AttributeModifiers = HeroLevelUpDamage7
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel9
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL9_EXP_NEEDED
ExperienceAward = EOMER_LVL9_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 9
AttributeModifiers = HeroLevelUpDamage8
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

ExperienceLevel IsildurLevel10
TargetNames = GondorIsildur
RequiredExperience = EOMER_LVL10_EXP_NEEDED
ExperienceAward = EOMER_LVL10_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 10
AttributeModifiers = HeroLevelUpDamage9
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End

Ну а затем приписываем героя к нужной нам фракции. Как нам уже известно, нужно идти по адресу datainiplayertemplate.ini, затем найти нужную фракцию и, наконец, вписать героя в общий список как GondorIsildur. Вот и всё - герой добавлен.

Герой, который смог одолеть Саурона, срубив кольцо с его пальца. В этой части игры герой будет представлен без способностей, однако вы сможете ему их добавить, если, конечно, ознакомились с туториалами выше.

Балрог
Ну а теперь добавим Балрога. Он лежит здесь data/ini/object/neutral/neutralunits.ini

Дальше удаляешь некоторые строки здесь:

; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.

Должно получиться вот что:

SelectPortrait = HPBalrog
ButtonImage = HIBalrog

Дальше нужно убрать ему полоску времени. Делаешь это так (там же ищеш строки):
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime = BALROG_LIFETIME(вроде так,но суть одна)
MaxLifetime = BALROG_LIFETIME
End

И всё это удаляешь.

Теперь надо в playertemplate прописать его в строке BuildableHeroesMP прописываешь MordorBalrog.

Например за Мордор это будет выглядеть так:

BuildableHeroesMP = CreateAHero MordorBalrog EvilMenBlackRider EvilMenBlackRider EvilMenBlackRider MordorMouthOfSauron MordorFellBeast MordorFellBeast MordorWitchKingOnFellBeast // MordorGothmog NeutralGollum (это всё идет в одну строку).

Ну вот и всё. Герой добавлен.

ПРИМЕЧАНИЕ:

Спойлер

Однако, не стоит сразу редактировать INI-файл Балрога. Удалив некоторые строки, вы сможете нарушить баланс игры, а если захотите исправить всё назад, то у вас уже не будет этих самых строк, которые вы решили удалить. Итак, расскажу вам один способ, который позволит заблокировать определённые функции, не удаляя определённые строки в ini-файле. Рассмотрим этот небольшой туториал...

Блокирование ненужных функций:

Значок (;) - это значок комментария. Он делает строку после него неактивной (т.е. она перестаёт быть командой и не действует в игре). Если вы хотите заблокировать или разблокировать какую-либо строку, то просто поставьте или уберите перед ней этот значёк. Стирать строки, где он стоял изначально - бессмысленно, так как это есть просто коментарии, а стирать целые (строки чтоб избавиться от каких-либо команд) - это не эстетично. Полоску времени у Балрога (а также у любых других героев) можно убрать следующим образом:

WhichSpecialWeapon = 2
End

; Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
; MinLifetime = BALROG_LIFETIME
; MaxLifetime = BALROG_LIFETIME
; DeathType = FADED
; End

Behavior = CreateObjectDie ModuleTag_CrushUnitsOnDeath
CreationList = OCL_BalrogDie

А если вы хотите опять добавить полоску времени, то просто уберите (;) перед необходимыми строками.

Самый сильный из героев, вызывается Мордором после получения 25 очков силы. Теперь этого страшного героя вы сможете нанять в своей крепости! Но не злоупотребляйте этим - если вы часто будете нанимать его, то играть станет не интересно.

Фродо, Сэм, Мери, Пиппин
Добавить героев проще простого (если, конечно же, вы читали туториалы выше). Нам необходимо добавить одну сплошную строку:
RohanFrodo RohanMerry RohanPippin RohanSam
сразу после BuildableHeroesMP = (или же в самом конце строки - ну это уже от вас зависит, надеемся, что поймёте)

Героев мы добавили, но они не будут воскрешаться после смерти, а время их битвы на поле боя - ограничено. Чтобы сделать так, чтобы герои не исчезали после окончания времени в таймере, нам необходимо найти следующее:

Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime =
[тут стоит какое-либо число (в зависимости от юнита)]
MaxLifetime =
[тут стоит какое-либо число (в зависимости от юнита)]

Просто удаляем эти строки. Вот и всё. Героев можно будет нанять в крепости.

Герои-хоббиты, которые могут помочь вам. В бою они не очень сильны, но могут быть полезны вам как разведчики.

Полезные ссылки и файлы

В данном разделе вы сможете ознакомиться с другими материалами нашего портала, которые укрепят ваши знания о модостроительстве. Также сюда относятся некоторые полезные модификации, из которых вы сможете "вытягивать" новые текстуры и скрипты для создания модов. Кроме того, здесь можно найти программы, которые понадобятся для редактирования игровых файлов.

Темы:

Читы:


Файлы:

DOX-Документы:


Авторы F.A.Q.


Пользователь
Должность

TurbO.
Редактор DOX, автор туториалов, автор F.A.Q. по игре.

Akhorahil
Автор туториалов, модостроитель, помощник редактора DOX.

Aragorn Elessar
Автор туториалов, модостроитель.

B.a.r.r.a.c.u.d.a.
Автор туториалов, модостроитель. 

Param_Value
Автор туториалов.

ВАД
Автор туториалов.

С вами была команда модостроителей, удачи и до встречи на PlayGround.ru!

Комментарии: 41
Ваш комментарий

Играют ещё как! Сегодня пока старые туторы выложу, ибо время свободного нетЪ.

2

Я на 2 недели залип в неё...

2

Все предложения по обновлению данного документа пишите в личные сообщения. UPD: Вопросы и предложения пишем на форуме и в комментариях к этому документу. В Л.С. писать не нужно!

2

Да тут чёткая тема вышла.) Вот мод первую версию доделаю - посмотрю.

1

Подскажите, пожалуйста, как увеличить здоровье Гронду?

1

Редактирование стандартных параметров созданного героя не работает, сделал всё как описано в туториале, но в игре ничего не изменилось, как было 30 очков так и осталось..... Чуть позже Тревога отменяется, всё получилось, во первых оказалось ковырял не тот ini, во вторых забыл сохранить изменения в FinalBig.....pacheshier1 скорей всего и ты тоже забыл сохранить Много позже А можно ли добавить лучнику эльфу способности леголаса ( 2ой выстрел и клинки) и трандуила (выстрел в глаз) или орку способность лазать по стенам, если да то как...., да и как увеличить скорость стрельбы, а то мой герой почему то очень медленно стреляет, да и вообщем как увеличить скорость боя героев???

1

народ можно ли изменить урон созданного героя ? и где вообще находятся характеристики созданных героев ?

1

Итак как и обещал выкладываю Тутор с пояснениями (надеюсь поймете как устроена механика) как сделать для созданного героя - Тролля корректную массовую атаку (актуально для версий более ранних чем вич кинг). Перед изменением INI.big рекомендую сделать резервную копию, вдруг рука дрогнет потом ошибку можно неделю искать, проще будет восстановить и попробовать снова... Как я и писал, я не собираюсь использовать атаку галадриэль или прочих персонажей.

Итак приступим

Открывайте INI.big прогой FinalBig. У созданых героев тип доспеха, с которым они дерутся привязывается к типу оружия в файле data\ini\object\createahero \createaheroweaponupgrades.ini чтобы иметь возможность изменять этот файл сначала вытащите его (Edit --> Extract) и откройте блокнотом. Затем найдите там строчки (идут подряд, почти в начале): //---------------------------------- // Troll Mace Weapon upgrade. //---------------------------------- WeaponSet C WEAPONSET_CREATE_A_HERO_WS_12 // CLOSE_RANGE CONTESTING_BUILDING Weapon = PRIMARY CreateAHeroBasicMeleeWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End Behavior = WeaponSetUpgrade Create_A_Hero_Weapon12 TriggeredBy = Upgrade_CHW12 Weap WEAPONSET_CREATE_A_HERO_WS_12 End Behavior = SubObjectsUpgrade TrollWeapon_Upgrade12 TriggeredBy = Upgrade_CHW12 ShowSubObjects = TrollMace HideSubObjects Yes FadeTimeInSec 0.0 End //---------------------------------- // Troll Sword Weapon upgrade. //---------------------------------- WeaponSet C WEAPONSET_CREATE_A_HERO_WS_13 // CLOSE_RANGE CONTESTING_BUILDING Weapon = PRIMARY CreateAHeroBasicMeleeWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End Behavior = WeaponSetUpgrade Create_A_Hero_Weapon13 TriggeredBy = Upgrade_CHW13 Weap WEAPONSET_CREATE_A_HERO_WS_13 End Behavior = SubObjectsUpgrade TrollWeapon_Upgrade13 TriggeredBy = Upgrade_CHW13 ShowSubObjects = TrollSword HideSubObjects Yes FadeTimeInSec 0.0 End //-------------------------- // Troll Hammer Weapon upgrade. //-------------------------- WeaponSet C WEAPONSET_CREATE_A_HERO_WS_14 Weapon = PRIMARY CreateAHeroBasicMeleeWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End Behavior = WeaponSetUpgrade Create_A_Hero_Weapon14 TriggeredBy = Upgrade_CHW14 Weap WEAPONSET_CREATE_A_HERO_WS_14 End Behavior = SubObjectsUpgrade TrollWeapon_Upgrade14 TriggeredBy = Upgrade_CHW14 ShowSubObjects = TrollHammer HideSubObjects Yes FadeTimeInSec 0.0 End //--------------------------- // Troll Tree Weapon upgrade. //--------------------------- WeaponSet C WEAPONSET_CREATE_A_HERO_WS_15 Weapon = PRIMARY CreateAHeroBasicMeleeWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End Behavior = WeaponSetUpgrade Create_A_Hero_Weapon15 TriggeredBy = Upgrade_CHW15 Weap WEAPONSET_CREATE_A_HERO_WS_15 End Behavior = SubObjectsUpgrade TrollWeapon_Upgrade15 TriggeredBy = Upgrade_CHW15 ShowSubObjects = TrollTree HideSubObjects Yes FadeTimeInSec 0.0 End Итак мы видим что 4 типа доспеха (дробящее, меч, молот и дерево) все указывают на одно и то же оружие, например: C WEAPONSET_CREATE_A_HERO_WS_15 Это и есть сет, от 12 до 15 Weapon = PRIMARY CreateAHeroBasicMeleeWeapon А это оружие Но это не значит что надо лезть в data\ini\weapon.ini и менять там характеристики оружия CreateAHeroBasicMeleeWeapon, ибо этим оружием пользуются все создаваемые мили герои, а нам надо чтобы только тролль начал бить массово, поэтому надо все 4 строчки: Weapon = PRIMARY CreateAHeroBasicMeleeWeapon Поменять на: Weapon = PRIMARY CreateAHeroTrollBasicMeleeWeapon Мы получили для тролля свое уникальное вымышленное оружие под названием CreateAHeroTrollBasicMeleeWeapon теперь сохраняем изменения и добавляем файл обратно (Edit --> Add file) Важно чтобы файл заменил тот что был, в появившемся окошке сотрите все и укажите адрес файла который открывали. Осталось указать параметры для оружия CreateAHeroTrollBasicMeleeWeapon вот теперь надо открыть data\ini\weapon.ini и почти в самом низу надо найти строчки: Weapon CreateAHeroBasicMeleeWeapon LeechRangeWeapon = Yes AttackRange = STANDARD_MELEE_ATTACK_RANGE MeleeWeapon = Yes FireFX = FX_GondorSwordHit DelayBetweenShots = FARAMIR_DELAYBETWEENSHOTS // time between shots, msec PreAttackDelay = FARAMIR_PREATTACKDELAY // 400 is sword swing delay time before contact with target. PreAttackType = PER_SHOT // Do the delay each time we attack a new target FiringDuration = FARAMIR_FIRINGDURATION // Duration of the sword swing UseInnateAttributes = Yes DamageNugget // A basic Nugget that just does damage Damage = CREATE_A_HERO_DAMAGE Radius = 0.0 DelayTime = 0 DamageType = HERO DamageFXType = SWORD_SLASH DeathType = NORMAL End DOTNugget // A basic Nugget that just does damage Damage = DEFAULT_POISON_DAMAGE AcceptDamageAdd = No Radius = 0.0 DelayTime = 0 DamageType = POISON DamageFXType = POISON DeathType = NORMAL DamageInterval = 500 DamageDuration = 10000 SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER RequiredUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level1 ForbiddenUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level2 Upgrade_CreateAHeroPoisonAttack_Level3 Upgrade_CreateAHeroPoisonAttack_Level4 End DOTNugget // A basic Nugget that just does damage Damage = DEFAULT_POISON_DAMAGE AcceptDamageAdd = No Radius = 0.0 DelayTime = 0 DamageType = POISON DamageFXType = POISON DeathType = NORMAL DamageInterval = 500 DamageDuration = 15000 SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER RequiredUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level2 ForbiddenUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level3 Upgrade_CreateAHeroPoisonAttack_Level4 End DOTNugget // A basic Nugget that just does damage Damage = DEFAULT_POISON_DAMAGE AcceptDamageAdd = No Radius = 0.0 DelayTime = 0 DamageType = POISON DamageFXType = POISON DeathType = NORMAL DamageInterval = 500 DamageDuration = 20000 SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER RequiredUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level3 ForbiddenUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level4 End DOTNugget // A basic Nugget that just does damage Damage = DEFAULT_POISON_DAMAGE AcceptDamageAdd = No Radius = 0.0 DelayTime = 0 DamageType = POISON DamageFXType = POISON DeathType = NORMAL DamageInterval = 500 DamageDuration = 30000 SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER RequiredUpgradeNames = Upgrade_CreateAHeroPoisonAttack_Level4 End End Строчки идут подряд, копируем их и после нижнего End, нажав энтер чтобы отступить строчку (для удобства) вставляем их, далее работаем с тем что вставили - в первой строчке меняем Weapon CreateAHeroBasicMeleeWeapon на Weapon CreateAHeroTrollBasicMeleeWeapon теперь оружие CreateAHeroTrollBasicMeleeWeapon имеет отдельные настройки, которые идут сразу за только что замененной строчкой... Осталось их поменять (в самом начале): LeechRangeWeapon = Yes AttackRange = STANDARD_MELEE_ATTACK_RANGE MeleeWeapon = Yes FireFX = FX_GondorSwordHit DelayBetweenShots = FARAMIR_DELAYBETWEENSHOTS // time between shots, msec PreAttackDelay = FARAMIR_PREATTACKDELAY // 400 is sword swing delay time before contact with target. PreAttackType = PER_SHOT // Do the delay each time we attack a new target FiringDuration = FARAMIR_FIRINGDURATION // Duration of the sword swing UseInnateAttributes = Yes DamageNugget // A basic Nugget that just does damage Damage = CREATE_A_HERO_DAMAGE Radius = 0.0 DelayTime = 0 DamageType = HERO DamageFXType = SWORD_SLASH DeathType = NORMAL End Это все заменить на: LeechRangeWeapon = Yes RadiusDamageAffects = ENEMIES AttackRange = STANDARD_MELEE_ATTACK_RANGE MeleeWeapon = Yes FireFX = FX_TrollClubHit ClipSize = INFINITE_CLIP_SIZE AutoReloadsClip = No DelayBetweenShots = FARAMIR_DELAYBETWEENSHOTS // time between shots, msec PreAttackDelay = FARAMIR_PREATTACKDELAY // 400 is sword swing delay time before contact with target. PreAttackType = PER_SHOT // Do the delay each time we attack a new target PreAttackFX = FX_TrollTreeSwing DamageDealtAtSelfPosition = Yes AcceptableAimDelta = 35.0 FiringDuration = FARAMIR_FIRINGDURATION // Duration of the sword swing UseInnateAttributes = Yes DamageNugget // A basic Nugget that just does damage Damage = CREATE_A_HERO_DAMAGE DamageScalar = 50% NONE +HERO +PIKE Radius = 60.0 DamageArc = 90 DelayTime = 0 DamageType = HERO DamageFXType = SWORD_SLASH DeathType = NORMAL End Сохраните изменения в INI.big и можете создавать тролля и радоваться!

По этому же принципу можно и другим юнитам создавать уникальные атаки. P.S. Данные для аттак можно подсмотреть в data\ini\weapon.ini у других юнитов. Я подсмотрел данные атаки боевого тролля мордора (тот что за 1000 игровой валюты с шипастой дубинкой)

1

DiLouk Подскажи не могу разобраться в Edain mod 4.4 решил пару героев кольца перекинуть в Лотлориен. Перекинул старые исчезли...? Решил добавить пару строчек что бы разширить круг героев игра - крашит! Что делать?

1

Хм. Если есть проблема с построение таблиц, можешь обращаться. P.S. Неужели в эту игру до сих пор играют?

0

Примечание: Если вы случайно испортили оригинальный INI.big, то вы сможете скачать чистый файл, перейдя по этой ссылке.

0

подскажите как убрать чтобы эльфы не делали энтов

0

народ, вопрос на засыпку- как сделать что бы я мог создавать к примеру 2 своих героев- эльф лучник и эльфийка лучница? что бы одновременно мог обоих нанять, одного из них в настройках выставить, а второй что бы постоянный был?

0

Строк:BuildableHeroesMP! Там много в которую именно добавлять Барлога?

0

Да,можно добавить,держи название для добавления Барлога:MordorBarlog

0

Ничего не получается. Пробовал редактировать файл ini.big как в игре первой части, так и в этой. Никаких изменений не происходит. И очки командования пробовал менять, и деньги увеличивать-ничего. Как будто файл ini.big тут вообще не при чем. Что делать-не знаю...

0

А можно ли добавить лучнику эльфу способности леголаса ( 2ой выстрел и клинки) и трандуила (выстрел в глаз) или орку способность лазать по стенам Смотрите рубрику "Редактирование стандартных параметров созданного героя" и по аналогии старайтесь добавить необходимые способности.

0

Всем привет!!

Мои мысли по поводу темы

Отличная старая игрушка этот Властелин Колец, сам недавно решил поиграть в нее (давно играл когда только вышла), скачал торент вич кинга, столько радости некий ангмар появился. Однако радость была не долгой, играл в сражении и сразу обнаружил странный баг с озвучкой, никто не замечал что собственно ктоме новой рассы юниты других расс перестали говорить??? Тыкаю на строителя, в ответ тишина. Но это не все, у людей есть здание рынок, в котором улучшаете свою пассивную добычу с ферм, в общем ничего не меняется улучшение не дает прибавки. Как вы играете в эту глючную гадость?! Ну я тогда подумал ерунда пропатчу или другой торент скачаю... в общем весь день убил торентов 5-6 попробовал везде один и тот же противный глюк с озвучкой и улучшением. Пока искал уже и в вич кинг играть перехотелось, по мне дак главное игровой баланс по максимуму. В итоге я скачал голую версию без единого патча, в которую когда то давно играл: озвучка есть, глюка с приростом добычи ферм от улучшения нет. Поиграл денек..., а с того момента как я играл в нее последний раз воды утекло море и я уже стал шарить в игровом балансе очень нехило, за плечами скривтование AI для игры Warcraft 3, в которой я и баланс чутка фиксил. В общем желание изменить игру привело меня на этот сайт, тут немало инфы как изменить игру, а у меня как раз есть идеи. Перечитал темы "Вопросы по модостроительству", "Вопросы по модостроительству (Часть I)", "Вопросы по модостроительству (Часть II)". Удивляет количество нубов с дебильными вопросами, ну да ладно, куда же без них. Просто внимательно прочитав эти темы и попробовав потыкать в документе за пол дня разобрался что к чему. Тут главное понять механику, как разложена информация в INI.big и уже сделал отличную доработку: В вич кинге тролль (который создаваемый герой) сметал войска как и боевой тролль мордора, а в моей версии он бил по 1 юниту, что полный бред, ибо когда смотришь на эту махину даже представить немыслимо что она бьет по 1. В темах которые я тут прочел только предлогалось поменять оружие на галадриэль, типо так проще простого. Но это большая ошибка!!! Тупо менять оружие на галадриэль нельзя, ибо тогда наш Тролль получит не только массовую атаку, но и урон как у галадриэль, а между прочим урон у него рассчитывается по определенной формуле и зависит от количества вложенных при создании героя очков в параметр сила. Как задрот баланса я такой фикс не принял, покопался в INI.big и нашел правильное решение! У меня уже все работает как надо, сейчас высплюсь (пол 4 ночи) и завтра в мельчайших подробностях постараюсь расписать как это сделать, чтобы это работало КОРРЕКТНО. А для пущего баланса, дав троллю массовую атаку, я думаю надо будет снизить ему хотя-бы на 5 ед. очки атрибутов, которые при создании мы распределяем, или же изначальные значения атрибутов слегка понизить (там где много) в сумме на 5 очков атрибутов. Примерно к вечеру, а может и раньше завтра все будет :)

0

Советую скачать 2.02 там багов нет

0

А вот интересно можно ли в создаваемые герои добавить например Саурона или Арагорна?

0

Как увеличить здоровье всех зданий в игре?

0

Как увеличить здоровье Балгору?

0

Дайте пожалуйста ответ на такой вопрос. У редакторного героя гнома в редакторе есть пассивная способность ("СТОЙКОСТЬ") - подскажите пожалуйста как и где в ini. изменить ее базовую характеристику .

0

Привет всем! Я решил создать свой мод. Создал новую фракцию - Рохан. Когда запускаю игру не создается крепость(крепость людей)! Помогите пожалуйста!

0

Короче знатоки, всем добрый день, тут ещё кто то есть?) Вопрос есть серьёзный, нужна подсказка) никого не прошу делать что либо за меня)) в общем ситуация такая: хочу сделать своего героя (эльф), на базе создаваемого в игре героя (соответственно эльф-лучник). Теперь в чём загвоздка: нужно что бы модельки и текстуры тела были из редактора для создаваемого героя, нужна анимация переключения лука/клинка как она и есть у создаваемого лучника, спелы определённые лучника из редактора (хилка, переключение оружия, специализация лучника 4 уровня, призыв торнадо 3 уровня, наводнение как у арвен). НО!!! Как изменить модель меча на светящийся как у пехоты эльфов после апгрейда? Так же как и, какие статы поставить ему что б он не уступал создаваемому герою (у которого всё на 20 вкачано), а в чём то даже превосходил, как сложно сделать отдельно для него лук и меч? короче где искать все модели и анимации создаваемого героя и куда вписывать? Если можете - просто дайте пожалуйста ссылку на гайд, или подскажите где взять какие-нибудь новые текстуры для нового героя

0

в модах на AOTR в некоторых из фракций нельзя играть созданным героем..лажа..что делать???

0

Вообщем, скачал я Ennorath Mod и решил пройти компанию за Ангмар. Всё бы ничего, но есть одно НО! Меня, кардинально не устраивает изменённая внешность Моргомира! А если точнее, то его лицо. Из ужасающего призрака с внешностью ожившего мертвеца: бледно-синей кожей, чей стеклянный взгляд украшают тёмные впадины под глазами, он превратился человека с смуглой кожей и глупым выражением лица! Я нашёл его текстуры и заменил своим вариантом. Но при заходе, в игре, нет никаких изменений. Хотя, замену сделал правильно.

0

Dim434 Скопируй иник крепости в другое место и где есть Side пиши Rohan если будет выдавать ошибки Include то найди эти файлы и вставь вместо ссылки (#include)

0

Ребят, не могли бы подсказать - можно ли у Голлума убрать его невидимость? (Я сам играю в Edain Mod, вдруг поможет)

0

есть живые ? помогите если возможно убрать из игры (катапульты и прочую артилерию ) убрать или изменить им командные очки что бы больше одной строить нельзя было , или время строительства .хоть что то из этого возможно ?

0

Блин, хочется скил самоисцеление запилить так чтобы все герои могли им пользоваться, а не только созданные эльфы

0

в commandbutton, где CommandButton Command_CreateAHero_SpecialAbilityHealing_Level1 в строке CreateAHeroUIAllowableUpgrades дописываешь нужные классы героев

0

Здравствуйте! Нужна помощь! Мне хотелось заменить модель моргульских орков из мода The Onset of Darkness версии 3.5.1 на моргульских орков из мода Ennorath версии 1.9.6.6. Попытался сам, скопировав текстуры и модельку, а также поменяв файл юнита, но захожу в игру, а модельки ВООБЩЕ нет. Ну то есть, там вместо нормальных моргульских орков пустота, хотя сам отряд есть и его можно выбрать. В общем, никто не может написать подробный гайд по замене одной модельки на другую для таких как я?

0

Скажите пожалуйста, как изменить здоровье у юнитов

0

Если юниту то в gamedat,а если герою то не знаю

0

А почему когда я что то делаю в gamedat у меня игра при запуске вылетает?

0

Крайне любопытно. Вот бы такой же разбор на первую lotrbfme!

0

Как добавить абсолютно новых юнитиов в игру? Хочу из другой игры перекинуть юнитов. (Из Command & Conquer: Generals в lord of the rings the battle for middle-earth 2)

-1