Создание модификаций

## Что нужно для создания модификации? Мод TechFortress лучший!!

Чтобы создать пользовательскую модификацию нам необходимо обладать 1 программой- es проводником, и самой игрой соответственно.(на пк можно воспользоваться классическим текстовым редактором) и спрайтовым редактором с возможностью настройки прозрачности(на пк gimp или Photoshop,на телефоне pixart или еще что-нибудь)

## Начало

Для начала заходим в игру, после в настройки, затем в "mods" и нажимаем "Create mod folder". После этого у

вас создастся папка на главном столе(android)

На ПК есть папка "mods" в файлах игры

Заходим в папку "rustedwarfare" (android) или "mods" (ПК), далее заходим в папку "units", создаем в ней папку с любым названием (например: "ExampleMod"), в созданной папке создаем файл "mod-info.txt" и еще 1 папку с любым названием.

## Написание кода

Заходим в файл "mod-info.ini" и вставляем в него следующий текст:

```
[mod]

```

```
title:

```

```
description:

```

```
tags:

```

```
thumbnail:

```

## Неизвестно

*title - это название нашего мода*

*description- это описание нашего мода*

*tags- это категория нашего мода( в игре не имеет значения )*

thumbnail- фотография нашего мода ( также не используется )

теперь заходим во 2-ую папку нашего мода,в ней создаем файл "СВОЕ НАЗВАНИЕ.ini" - это будет код нашего юнита(здания)

перед тем как мы приступим к написанию кода юнита(здания),я расскажу о секциях кода, Всего существует 8 секций кода

*[core] - отвечает за самые главные параметры( стоимость, кол-во жизней и тд ), (обязательная секция)*

*[graphics] - отвечает за графическую часть юнита( изображения юнита, изображение турели и т.д), (обязательная секция)*

*[attack] - отвечает за атаку( кого может атаковать, радиус атаки, скорость атаки и т.д), (обязательная секция)*

*[turret] - отвечает за атаку имеет схожие параметры что и секция [attack]*

*[projectile] - отвечает за снаряд выпушенный секцией [turret] (урон*

*.дальность полет, скорость полета и т.д)*

*[leg] - используется только у мехов(жуков, или других ходячих юнитов). Отвечает за расположение ног*

*[movement] - отвечает за передвижение юнита( скорость, скорость поворота и т.д), (обязательная секция)*

*[ai] - отвечает за функции связанные с ботами( приоритет в строительстве, кол-во производящих баз и т.д)*

*[action] - отвечает за способность юнита*

## формат текста:

1. тф - True или false
2. циф - числа
3. ваш - произвольное название (написание)

После каждого элемента нужно ставить  : это важно!

Пример

"name(ваш)- название юнита"

А должно быть

"name: test\_units" - без кавычек, дефиса, в скобках тоже ничего не пишется!

Теперь к самому коду

## в секции [core]используются следующие параметры:

```
name(ваш)- название юнита

```

```
class - обычно CustomUnitMetaData

```

```
price(циф) - стоимость юнита

```

```
maxHp(циф) - Количество очков жизни.

```

```
mass(циф) - масса юнита

```

```
techLevel (1-2) - Отвечает за необходимый уровень фабрики (за фабрику отвечает - builtFrom_(циф)_name) для постройки.

```

```
buildSpeed(циф) - скорость строительства. Рекомендуемое значение - одна сотая и ниже (0.0хх)

```

```
radius(циф) - Радиус круга выделения юнита. От него так же зависит размер щита.

```

```
isBio(тф) - Является ли юнит "Живым". Добавляет текстуры крови юниту.

```

```
NumBitsOnDeath(циф) - количество 'кусков' которые появится после смерти юнита

```

```
displayText(ваш) - используется для отображения названия юнита

```

```
displayDescription(ваш) - используется для описания юнита

```

```
copyFrom(ваш) - для копирования с другого юнита

```

```
dont_load(тф) - отключает загрузку юнита в игре

```

```
overrideAndReplace(ваш) - заменяет юнита  на другого

```

```
globalScale(циф)- ?( просто не ставьте больше 1)

```

```
displayLocaleKey(ваш)- используется для перевода

```

```
ShowInEditor(тф)- Будет ли юнит отображён в редакторе песочницы.

```

```
isLocked(тф) - Блокирует юнита, запрещает его строить зданиям.

```

```
experemental(тф) - Экспериментален ли юнит

```

```
generation_credits(циф) - генерация кредитов

```

```
generation_delay(циф) - скорость генерации кредитов ( обычно 40 )

```

```
stayNeutral

```

```
autoRepair(tf)-при true юнит будет пытаться починить ближайшее поврежденное здание,юнита (необходимо [ai]useAsBuilder:true)

```

```
MaxShield(циф) - Максимальное значение щита

```

```
startShieldAtZero(циф) - Значение щита сразу после постройки юнита

```

```
ShieldRegen(циф) - Скорость восстановления щита

```

```
shieldDisplayOnlyDeflection(тф) - отобразить щит после выстрела по юниту

```

```
shieldDisplayOnlyDeflectionRate(циф) - время отображения щита

```

```
EnergyMax(циф) - максимальное кол-во энергии

```

```
transportSlotsNeeded(циф)-колво места необходимое для перевозки юнита

```

```
EnergyRegen(циф) - регенерация энергии

```

```
EnergeStartingPercentage(циф) - кол-во энергии при постройки юнита в процентах

```

```
EnergyNeedsToRechargeToFull(тф) - Требуют ли использующие энергию параметры полного ее восполнения после полной разрядки.

```

```
selfRegenRate(циф) - отвечает за регенерацию жизней юнита. Без него юнит не будет регенерировать

```

```
builtFrom_(циф)_name(ваш) - кем строиться (каким зданием). (experimentalLandFactory, builder,  airFactory и т. д.)

```

```
action_(циф)_convertTo: (ваш)- превращение/перестройка (во что). (experimentalLandFactory, builder,  airFactory и т. д.)

```

## [graphics]

```
total_frames(циф) - Количество кадров анимации.

```

```
image(ваш) - Текстура юнита.

```

```
image_back(ваш) - Вторая текстура, лежит под первой текстурой.

```

```
image_wreak(ваш) - Текстура разрушенного юнита.

```

```
image_shadow(ваш) - Текстура тени, если особая. Параметр AUTO создаёт тень автоматически.

```

```
image_turret(ваш) - Текстура оружия.

```

```
dust_effect(тф) - эффект пыли при движении

```

```
scaleImagesTo(циф) - увеличить изображения в Х раз

```

```
lock_body_rotation_with_main_turret(тф) - Будет ли поворачиваться корпус вместе с главной турелью.

```

```
lock_shadow_rotation_with_main_turret(тф) - Будет ли поворачиваться тень вместе с турелью.

```

```
teamColorsOnTurret (тф) - Будет ли менять цвет турель юнита в зависимости от команды

```

## [attack]

```
turretSize(циф) - размер турели

```

```
turretTurnSpeed(циф) - скорость поворота турели, градус/секунда

```

```
turretRotateWithBody(тф) - турель крутиться с корпусом

```

```
attackMovement - Тип движения при атаке. Только Bomber.

```

```
disablePasiveTargeting(тф) - при false автонаведение на цель( то есть юнит сам направляется на цель)

```

`turretMultiTargeting: (тф) - если у юнита несколько турелей, он может стрелять по нескольким противникам`

```
maxAttackRange(циф) - максимальный радиус атаки (например тяжелый ракетоносец имеет радиус атаки 390)

```

```
canAttack(тф) - может ли юнит атаковать

```

```
canAttackFlyingUnits(тф) - может ли юнит атаковать воздушных юнитов

```

```
canAttackLandUnits(тф) - может ли юнит атаковать наземных юнитов

```

```
canAttackUnderwaterUnits(тф) - может ли юнит атаковать подводных юнитов

```

```
canAttackNotTouchingWaterUnits(тф) - может ли юнит атаковать юнитов, не касающихся воды (корабли касаются, ховертанки - нет)

```

```
isFixedFiring(тф) - юниту нужно остановиться что бы атаковать

```

## [turret\_#]

```
x(циф): расположение турели (лево-право)

```

```
y(циф): расположение турели (вверх-низ)

```

```
linkDelayWithTurret(ваш): выстрел после турели Х

```

```
delay(циф) - задержка между выстрелами

```

```
warmup(циф) - задержка перед выстрелом

```

`chargeEffectImage:(ваш) - эффект перед выстрелом (длительность зависит от warmup)`

```
recoilOffset(циф) - насколько турель отойдет назад пикселей

```

`recoilOutTime:(циф) - сколько будет оставаться в положении после встрела турель`

`recoilReturnTime:(циф) - сколько будет турель возвращаться в исходное положение`

```
energyUsage(циф) - используемая энергия при выстреле

```

```
canShoot(тф) - может ли турель стрелять

```

```
shoot_sound(ваш) - Звук при выстреле. Имеет фиксированные значения.

```

```
shoot_sound_vol(циф) - громкость звука выстрела

```

```
shoot_flame(ваш) - эффект при выстреле(small - маленький огонь,large - большой огонь при выстреле, smoke - эффект дыма, shockwave - эффект взрывной волны)

```

```
shoot_light(ваш) - освещение при выстреле в шестнадцатеричной системе счисления.

```

```
canAttack(тф) - может ли турель атаковать

```

```
canAttackFlyingUnits(тф) - может ли турель атаковать воздушных юнитов

```

```
canAttackLandUnits(тф) - может ли турель атаковать наземных юнитов

```

```
canAttackUnderwaterUnits(тф) - может ли турель атаковать подземных юнитов

```

```
canAttackNotTouchingWaterUnits(тф) - может ли турель атаковать парящих юнитов

```

```
limitingRange(циф) - минимальный радиус атаки ( то есть юнит не сможет атаковать если цель за минимальным радиусом)

```

```
laserDefenceEnergyUse(циф) - Использование энергии лазерной защитой.

```

```
isMainNanoTurret(тф) - используется ли турель для создания юнитов

```

```
invisible(тф) - невидимость турели

```

```
image(ваш)-пользовательское изображение турели(необходимо что бы хотя бы одна турель использовала image_turret)

```

```
projectile(ваш)- номер снаряда

```

## [projectile\_#]

```
image-изображение снаряда

```

```
directDamage(циф)-урон который наносится при прямом попадании

```

```
areaDamage(циф)-урон наносящийся по площади(взрыв)

```

```
areaRadius(циф)-площадь взрыва

```

```
life(циф)- продолжительность полета снаряда

```

```
deflectionPower(циф(по умолчанию: 1)) - сколько лазерной защите необходимо энергии чтобы разрушить снаряд(при 0 лазерная защита будет игнорировать)

```

```
speed(циф)-скорость полета снаряда

```

```
instant(тф)-если true то снаряд долетает до цели мгновенно

```

```
autoTargetingOnDeadTarget(тф)-если true то снаряд будет искать новую цель при смерти старой

```

```
hitSound(ваш)-звук который будет издан при попадании

```

```
frame(циф)-использовать игровую библиотеку снарядов (начинается с нуля)

```

```
targetGround(тф)-при true снаряды будут лететь только на уровне земли (рекомендуются отключать canAttackFlyingUnits)если true то directDamage будет равен 0 (не areaDamage)

```

```
targetGroundSpread(циф)-работает только при включенном targetGround, создает разброс снарядов

```

```
buildingDamageMultiplier(циф)-увеличивает(или уменьшает) урон по постройкам в н-ное количество раз

```

```
shieldsDeflectionMultiplier(циф)-чем меньше значение тем больше будет игнорироваться щит(т.е. урон будет наносится корпусу)

```

```
shieldsDamageMultiplier(циф)-увеличивает урон по щитам в н-ное кол во раз

```

```
friendlyFire(тф)-будет ли наносится урон союзникам при уроне по площади

```

```
SpeedSpread(циф)-случайное значение скорости снаряда из заданного диапазона

```

```
shouldRevealFog(тф)-при взрыве снаряда туман войны будет убираться(радиус взрыва)

```

```
nukeWeapon(тф)-при true полет снаряда будет отображаться на мини карте

```

## [movement]

```
movementType:(LAND - наземный, AIR - воздушный, HOVER - по земле и по воде, WATER - ПО ВОДЕ, OVER_CLIFF_WATER - шагоход)

```

```
moveSpeed:(циф) - максимальная скорость юнита, чем больше тем быстрее

```

```
maxTurnSpeed:(циф) - максимальная скорость поворота корпуса

```

```
turnAcceleration: (циф) - ускорение поворота корпуса (до максимального значения скорости поворота)

```

```
moveAccelerationSpeed: (циф) - ускорение юнита (до максимального значения скорости)

```

```
moveDecelerationSpeed: (циф) - торможение юнита (до нуля)

```

## [ai]

```
useAsBuilder: (тф) - будет ли юнит использоваться в качестве строителя

```

```
useAsTransport: (тф) - будет ли юнит использоваться в качестве транспорта

```

**[leg\_#]**

x - расположение стопы в бок

y - расположение стопы вверх или вниз

attach\_x - расположение ноги (откуда будет идти нога) в бок

attach\_y - расположение ноги вверх или вниз

moveSpeed: (циф) - с какой скоростью будут двигаться ноги

image\_foot: текстура стопы

image\_leg: текстура ноги

moveWarmUp: (циф) - задержка перед шагом (в среднем это 0.1s)

rotateSpeed: (циф) - скорость поворота ног (в среднем это 7)

holdDisMin: (циф) - насколько будет отходить нога назад (в пикселях)

holdDisMax: (циф) - насколько пикселей будет отходить нога вперед (в пикселях)

heightSpeed: (циф) - с как высоко шагает мех (желательно от 0.30 до 1)

#draw\_foot\_on\_top: (тф) - будет ли стопа рисоваться на ноге (ставьте false)

`[action_#]`

`convertTo:(ваш) - превращается в юнита, которого вы вписали`

`price:(ваш) - цена способности`

`buildSpeed:(циф) - скорость превращения`

`description:(ваш) - описание способности`

`text:(ваш) - название способности`

## Дополнительно

Список всех функций для моддинга

Список всех функций для создания карт

Канал на YouTube с гайдами

Переведенная таблица со всеми функциями моддинга