Добавление новых типов пехоты в мод.

Добавлен , опубликован

Полноценное руководство по созданию модов

Содержание:
Добавление новых типов пехоты в мод.
Для начала нужно обратиться в оригинальные ресурсы игры по направлению:
"В тылу врага 2 - Лис Пустыни\2.pat\set\breed\mp\"
Там будут несколько папок:
  • Eng
  • Ger
  • Jap
  • Rus
  • Usa
Я хочу добавить новый тип пехоты, а именно партизана для русских, по этому захожу по направлению:
"В тылу врага 2 - Лис Пустыни\2.pat\set\breed\mp\Rus"
От туда в ваш мод по направлению:
"SERIY mod\resource\set\breed\mp\"
Создаем папку «Rus», что бы получилось:
"SERIY mod\resource\set\ breed\mp\Rus"
Далее из дерриктории:
"В тылу врага 2 - Лис Пустыни\2.pat\set\breed\mp\Rus"
Переносим первую понравившийся файл, я переношу rifle.set
В наш мод по направлению:
"SERIY mod\resource\set\breed\mp\Rus"
Далее открываем этот файл, вот его содержимое:
code
{breed
{skin "rus-smguner"}
{portrait "rus_smg1"}
{nationality rus}
{icon "riflemans"}
{icon_priority 0}
{armors
{head "fieldcap_rus"}
}
{perks
{"health" "150%"
}
{"power" "100%"
}
{"vision" "mp_soldier"
}
{"pistol" "basic"
}
{"speed" 0.9
}
{"smg" "none"
}
{"mgun" "none"
}
{"rifle" "basic"
}
{"rocketlauncher" none}
{"melee" advanced}
}
{inventory
{item "mosin" filled}
{item "ammo rifle" 50}
{item "bandage" 4}
{item "grenade f1" 1}
{item "sandbag_kit" 1}
{in_hands 0}
}
}
Где:
{skin "rus-smguner"} общий вид(шкурка) солдата.
{portrait "rus_smg1"} его портрет в левом нижнем углу экрана.
{nationality rus} национальность.
{icon "riflemans"} иконка юнита в столбике подконтрольных на данный момент игроку юнитов.
{armors броня, защита, которая присутствует на теле солдата
{head "fieldcap_rus"} каска, которая будет надета на голову юниту.
{perks перки(возможности) юнита.
{"health" "150%" здоровье
{"power" "100%" энергия бега
{"pistol" "basic" уровень владение пистолетом.
{"speed" 0.9 максимальная скорость бега.
{"smg" "none" уровень владения автоматом, пистолетом-пулеметом.
{"mgun" "none" уровень владения пулеметом.
{"rifle" "basic" уровень владения винтовкой.
{"rocketlauncher" none} уровень владения гранатометом.
{inventory инвентарь юнита
{item "mosin" filled} винтовка мосина(1 шт.)
{item "ammo rifle" 50} патроны к винтовке мосина(50 шт.)
{item "bandage" 4} бинты(4 шт.)
{item "grenade f1" 1} гранаты ф-1(1 шт.)
{item "sandbag_kit" 1} инструмент для создания собственного окопа для стрельбы лежа
{in_hands 0} код отвечающий за оружие в руках во время вызова юнита.
Теперь приступаем к редактированию этого файла стрелка с целью переделать его в файл партизана.
Вот что получилось у меня:
code
{breed
{skin "rus_partizan"}
{portrait "rus_partizan"}
{nationality rus}
{icon "riflemans"}
{icon_priority 0}
{perks
{armors
{head warden_furcap}
}
{"health" "250%"
}
{"power" "100%"
}
{"vision" "mp_soldier"
}
{"pistol" "basic"
} 
{"speed" 0.9
}
{"smg" "basic"
}
{"mgun" "basic"
}
{"rifle" "basic"
}
{"rocketlauncher" basic}
{"melee" advanced}
}
{inventory
{item "shotgun" filled} 
{item "ammo ptr" 60}
{item "warden_furcap" }
{item "bandage" 4}
{item "grenade molotov_coctail" 2}
{item "grenade f1" 3}
{item "dynamite" }
{in_hands 0}
}
}
Инвентарь:
{inventory
{item "shotgun" filled} – дробовик(1 шт.)
{item "ammo ptr" 60}- патроны 12.7 птр, используються в обрезе охотничьего ружья(сделано разработчиками втв)(60 шт.)
{item "warden_furcap" } – шапка-ушанка(1 шт.)
{item "bandage" 4} – Бинт(4 шт.)
{item "grenade molotov_coctail" 2} – коктейль Молотова(2 шт.)
{item "grenade f1" 3} – гранаты ф-1(3 шт.)
{item "dynamite" } – динамит(1 шт.)
{in_hands 0}
}
Теперь сохраняем изменения в файле и меняем его название на «Partizan.set»
Теперь нам надо внести этого солдата в доступные для вызова юниты в мультиплеер и локализировать его.
Открываем:
В тылу врага 2 - Лис Пустыни\2.pat\set\multiplayer\units\
Можно так же:
В тылу врага 2 - Лис Пустыни\4.pat\set\multiplayer\units\
И выбираем файл «soldiers.set», далее копируем его в наш мод по направлению:
SERIY mod \resource\set\multiplayer\units\
Терерь приступаем к его редактированию, всю начинку данного файла я выложить не могу, по этому покажу всего несколько строк для примера:
(define "kamikaze" название юнита
{tags "kamikaze %side spec infantry man"} специализация(в данном случае специальные войска)
{score 4} 0чки за уничтожение данного юнита врагом
{cp 3} это CP, сколько CP юнит занимает от общего количества доступных средств.
{order 130} приоритет. У кого чисто больше – иконка того выше.
{cost 2} цена
Теперь делаем на основе этого кода новый тип пехоты так, как нам это нужно:
Теперь делаем на основе этого кода новый тип пехоты так, как нам это нужно:
(define "Partizan"
{tags "partizan %side infantry man"}
{score 16}
{cp 9}
{order 140}
{cw 0.5} 
{basic}
{breed}
{cost 2}
)
{"mp/rus/Partizan" ("Partizan" side(rus))}
Где:
{cw 0.5}- это вес на флаге, чем больше тем быстрее данный юнит захватывает флаг.
Сохраняем изменения в файле и новый тип пехоты готов, он это еще не все, теперь нужно подключить его к мультиплееру.
Для этого скопируем из:
"В тылу врага 2 - Лис Пустыни\2.pat\set\multiplayer\units\"
В:
"SERIY mod \resource\set\multiplayer\units\"
Файл "«squads.set»"
В открываем его и ищем вот такой текст:
«squads.set»
("squad_with3types" side(rus) name(riflemans) c(30) g(reg_2) c1(rifle:3) c2(rifle2:2) c3(rifle3:1) b(squad1) t(all infan_squad riflemans) cost(7) f(1))
("squad_with3types" side(ger) name(riflemans) c(30) g(reg_2) c1(rifle:3) c2(rifle2:2) c3(rifle3:1) b(squad1) t(all infan_squad riflemans) cost(7) f(1))
("squad_with3types" side(usa) name(riflemans) c(30) g(reg_2) c1(rifle:3) c2(rifle2:2) c3(rifle3:1) b(squad1) t(all infan_squad riflemans) cost(7) f(1))
("squad_with3types" side(eng) name(riflemans) c(30) g(reg_2) c1(rifle:3) c2(rifle2:2) c3(rifle3:1) b(squad1) t(all infan_squad riflemans) cost(7) f(1))
("squad_with3types" side(jap) name(riflemans) c(30) g(reg_2) c1(rifle:3) c2(rifle2:2) c3(rifle3:1) b(squad1) t(all infan_squad riflemans) cost(7) f(1))
("squad_with3types" side(rus) name(smgs) c(30) g(reg_1) c1(smg:3) c2(smg2:2) c3(smg3:1) b(squad1) t(all infan_squad smgs) cost(8) f(1))
("squad_with3types" side(ger) name(smgs) c(30) g(reg_1) c1(smg:3) c2(smg2:2) c3(smg3:1) b(squad1) t(all infan_squad smgs) cost(8) f(1))
("squad_with3types" side(usa) name(smgs) c(30) g(reg_1) c1(smg:3) c2(smg2:2) c3(smg3:1) b(squad1) t(all infan_squad smgs) cost(8) f(1))
("squad_with3types" side(eng) name(smgs) c(30) g(reg_1) c1(smg:3) c2(smg2:2) c3(smg3:1) b(squad1) t(all infan_squad smgs) cost(8) f(1))
("squad_with3types" side(jap) name(smgs) c(30) g(reg_1) c1(smg:3) c2(smg2:2) c3(smg3:1) b(squad1) t(all infan_squad smgs) cost(8) f(1))
("squad_with1types" side(rus) name(mgs) c(30) g(reg_s) c1(mgun:1) b(squad1) t(all infan_squad mgunners use_charge) cost(5) f(1))
("squad_with1types" side(ger) name(mgs) c(30) g(reg_s) c1(mgun:1) b(squad1) t(all infan_squad mgunners use_charge) cost(5) f(1))
("squad_with1types" side(usa) name(mgs) c(30) g(reg_s) c1(mgun:2) b(squad1) t(all infan_squad mgunners use_charge) cost(6) f(1))
("squad_with1types" side(eng) name(mgs) c(30) g(reg_s) c1(mgun:2) b(squad1) t(all infan_squad mgunners use_charge) cost(6) f(1))
("squad_with1types" side(jap) name(mgs) c(30) g(reg_s) c1(mgun:2) b(squad1) t(all infan_squad mgunners use_charge) cost(6) f(1))
На этой строке я покажу, за что отвечают коды примененные в ней:
("squad_with1types" side(jap) name(mgs) c(30) g(reg_s) c1(mgun:2) b(squad1) t(all infan_squad mgunners use_charge) cost(6) f(1))
side(jap) – сторона конфликта, которой будет принадлежать юнит
name(smgs) – название юнита
c1(mgun:2) – составляющие части отряда, проще говоря какие юниты в нем будут находиться и сколько(тут 2 пулеметчика)
b(squad1) к какому макросу принадлежит отряд, от этого зависит как нужно заполнять код для добавление юнита в мультиплеер(находиться в этом же файле: )
Макросы:
code
)
(define "squad_1"
("squad_with1types" side(rus) name(%name) c1(%c1) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with1types" side(ger) name(%name) c1(%c1) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with1types" side(usa) name(%name) c1(%c1) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with1types" side(eng) name(%name) c1(%c1) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
)
(define "squad_2"
("squad_with2types" side(rus) name(%name) c1(%c1) c2(%c2) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with2types" side(ger) name(%name) c1(%c1) c2(%c2) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with2types" side(usa) name(%name) c1(%c1) c2(%c2) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with2types" side(eng) name(%name) c1(%c1) c2(%c2) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
("squad_with2types" side(jap) name(%name) c1(%c1) c2(%c2) c(%c) co(%co) g(%g) b(%b) t(%t) cost(%cost) f(%f))
) 
t(all infan_squad mgunners use_charge) – обозначение отвечающие за то, что это отряд пулеметчиков
cost(6) – цена
Эту часть файла я показал для примера.
По примеру (уже добавленным юнитам) мы добавляем нашего партизана русским:
("squad_with3types" side(rus) name(partizan) c(30) g(reg_2) c1(partizan:1) b(squad1) t(all infan_squad partizan) cost(20) f(-3))
Так же в этом файле есть строка, после которой пишутся юниты имеющие специализацию:
;///////////////////////////// Specialized infantry ///////////////////
("squad_1" name(ap_miners) c(30) g(min) c1(antipersonel_miner:4) b(squad2) t(all infan_squad ap_miners use_charge) cost(8) f(1))
("squad_1" name(at_miners) c(30) g(min_2) c1(antitank_miner:4) b(squad2) t(all infan_squad at_miners use_charge) cost(8) f(1))
("squad_1" name(sappers) c(30) g(min_3) c1(saper:2) b(squad2) t(all infan_squad sappers use_charge) cost(3) f(0))
Напомню:
На специализацию юнита указывает строка в коде отмеченная красным.
Указываеться при создании нового юнита в файле «soldiers.set»
(define "at_rifle"
{tags "at_rifle %side spec infantry man"}
{score 6}
{cp 3}
{order 130}
{basic}
{breed}
{cost 2}
)
{"mp/rus/at_rifle" ("at_rifle" side(rus))}
Теперь наш партизан доступен для вызова в мультиплеере, но нам еще надо его локализировать.
Для этого из:
В файле «desc.lng» который находиться в ранние созданной нами папке:
SERIY mod\localization
Находим строки:
}
{"mp"
{"rus"
После них идет локализация пехоты принадлежащей к советскому союзу:
code
{"antipersonel_miner" "ПП минер"}
{"antitank_miner" "ПТ минер"}
{"bazooker" "гранатометчик"}
{"engineer" "инженер"}
{"flamer" "огнеметчик"}
{"mgun" "пулеметчик"}
{"oficer" "офицер"}
{"rifle" "стрелок"}
{"saper" "сапер"}
{"scout" "разведчик"}
{"smg" "автоматчик"}
{"sniper" "снайпер"}
{"sturmovik" "штурмовик"}
{"tankman" "танкист"}
{"tankman2" "танкист"}
{"tankman3" "танкист"}
{"vehicle_supporter" "солдат"}
{"at_rifle" "бронебойщик"}
{"home_guard" "партизан"}
{"elite" "морпех"}
{"elite2" "морпех"}
{"elite3" "морпех"}
{"rifle2" "стрелок"}
{"rifle3" "стрелок"}
{"smg2" "автоматчик"}
{"smg3" "автоматчик"}
{"sturmovik2" "штурмовик"}
{"sturmovik3" "штурмовик"}
}
Между двумя любыми строками из этого блока мы вставляем вот такой код:
{"Partizan" "Партизан"}
Что бы получилось:
{"antipersonel_miner" "ПП минер"}
{"antitank_miner" "ПТ минер"}
{"bazooker" "гранатометчик"}
{"engineer" "инженер"}
{"Partizan" "Партизан"}
{"flamer" "огнеметчик"}
{"mgun" "пулеметчик"}
{"oficer" "офицер"}
}
После добавления нашего партизана в этот список я решил не писать его полностью, что бы сэкономить время и размер мануала.
Теперь партизан локализирован, но предстоит еще локализировать его как составляющую отряда, для этого в этом же файле «desc.lng» находим строки(пример будут сделан фрагментом а не всем что находиться после {"squad": )
}
{"squad"
{"smgs(usa)" "Автоматчики"}
{"smgs(rus)" "Автоматчики"}
{"smgs(ger)" "Автоматчики"}
{"riflemans(usa)" "Стрелки"}
{"riflemans(rus)" "Стрелки"}
}
Где:
smgs(usa) – сторона к которой пренадлежит отряд.
Выбираем место и вписываем:
{"Partizan(rus)" "Партизан"}
Получается:
}
{"squad"
{"smgs(usa)" "Автоматчики"}
{"smgs(rus)" "Автоматчики"}
{"smgs(ger)" "Автоматчики"}
{"riflemans(usa)" "Стрелки"}
{"riflemans(rus)" "Стрелки"}
{"Partizan(rus)" "Партизан"}
}
Сохраняем изменения в файле и теперь наш партизан добавлен в меню выбора юнитов в мультиплеере и локализирован.
Теперь создаем для него описание.
Из:
В тылу врага 2 - Лис Пустыни\localization.pak\
Копируем в:
SERIY mod\ localization
Файл «info.lng» - в нем находиться описание и характеристика техники, а так же описание пехоты.
Вот фрагмент этого файла:
«info.lng»
{tags
{"squad"
{"smgs(rus)" "Бойцы вооружены пистолетами-пулеметами системы Шпагина, несколькими противопехотными гранатами и противотанковой РПГ 40. ППШ снабжен большим магазином на 71 патрон и особенно эффективен на близких и средних дистанциях. Отряд из шести автоматчиков может быть с успехом использован как для штурма вражеских позиций, так и для охраны полевых орудий и танков."}
{"riflemans(rus)" "Отряд из шести рядовых бойцов вооружен парой противопехотных гранат и стандартными винтовками Мосина. Такое оружие имеет отличную дальность стрельбы, но маленький магазин и сравнительно небольшую скорострельность, поэтому отряды стрелков действуют особо эффективно на дальних и средних дистанциях боя, а при резком сокращении расстояния они становятся довольно уязвимы для автоматчиков и штурмовых групп противника."}
{"mgs(rus)" "Высокая убойная сила и скорострельность ручного пулемета Дегтярева обеспечивают дружественной пехоте отличную огневую поддержку и делают пулеметчика серьезной угрозой для живой силы противника. При стрельбе из укрытия либо из положения лежа оружие устанавливается на специальные опоры, что приводит к резкому увеличению точности и плотности огня."}
}
Теперь мы вписываем описание нашего партизана, у меня оно получилось таким:
{"Partizan(rus)" "Бойци которые не попали или избежали службы в красной армии, но ведущие подпольную борьбу с фашистскими захватчиками, собираються небольшими группами и пускают поезда под откос, взрывают мосты, нападают на вражеские патрули или колонны войск. В своем арсенале имеют мало оружия, по этому пользуються обрезом охотничьего ружья, имеют несколько гранат, коктейли Молотова и динамит. Незаменимый атрибут таких бойцов - шапка ушанка. "}
Вписываем его между уже созданных строк и сохраняем файл. Описание для данного юнита теперь можно посмотреть в игре.