Экспорт монстров и оружия в собственные мутаторы Гайд по переносу оружия и монстров из одного мутатора в другой, включая работу с ресурсами и зависимостями.
#1
Отправлено:
Экспорт монстров и оружия в собственные мутаторы
Всё ниже написанное будет ещё неоднократно исправляться и оформляться…
Некоторое время назад описывалось, как переносить оружие или монстров из мутатора в мутатор.
Перенос оружия из мутатора в мутатор
Рассмотрим ситуацию на примере NovaSix из hiyokomod, когда мы не хотим вытаскивать анимацию, текстуры, статик меши и звуки из пакетов hiyokomod и вставлять в собственные пакеты.
Окидываем взглядом содержание файлов NovaSix\*.uc и видим что нам не хватает ещё AntiSirenNade.uc и DamTypeAcid.uc.
Шаг 1: Копирование файлов
Берём эти 9 файлов и кидаем, например, в ServerPerksV5 (для простоты будем рассматривать ситуацию, когда всё в 1 папке, как в версиях до 5.10).
Шаг 2: Замена префиксов пакетов
Теперь во всех этих 9 файлах заменяем hiyokomod. на ServerPerksV5. (на самом деле придётся заменять в 6 файлах).
Шаг 3: Настройка зависимостей от перков
Если мы поглядим внутрь NovaSixFire.uc, то увидим такую вот функцию:
unrealscript
function projectile SpawnProjectile(Vector Start, Rotator Dir)
{
local KFPlayerReplicationInfo KFPRI;
KFPRI = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo);
if (KFPRI != none)
{
if (KFPRI.ClientVeteranSkill == Class'hiyokoPerksScientist')
ProjectileClass=Class'ServerPerksV5.NovaSixProj';
}
else
ProjectileClass=Class'KFMod.M79GrenadeProjectile';
return Super.SpawnProjectile(Start,Dir);
}
Здесь мы в зависимости от перка стреляем либо гранатой NovaSix, либо обычной гранатой из M79. Так как в ServerPerks нет перка Учёный, то можем сделать, например, чтобы медик мог стрелять из NovaSix, а для остальных выстрел был бы гранатами M79.
Правим таким образом:
unrealscript
function projectile SpawnProjectile(Vector Start, Rotator Dir)
{
local KFPlayerReplicationInfo KFPRI;
KFPRI = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo);
if (KFPRI != none)
{
if (KFPRI.ClientVeteranSkill == Class'SRVetFieldMedic')
ProjectileClass=Class'ServerPerksV5.NovaSixProj';
}
else
ProjectileClass=Class'KFMod.M79GrenadeProjectile';
return Super.SpawnProjectile(Start,Dir);
}
Если же хотим сделать оружие для всех, то так:
unrealscript
function projectile SpawnProjectile(Vector Start, Rotator Dir)
{
ProjectileClass=Class'ServerPerksV5.NovaSixProj';
return Super.SpawnProjectile(Start,Dir);
}
Шаг 4: Добавление в магазин
В магазин добавляем следующим образом:
TraderInventory=3:ServerPerksV5.NovaSixPickup
(пусть 3 это категория медика, например)
Если хотим - добавляем его в SRVet\*.uc файлы для соответствующих перков.
Перенос монстров
Простой монстр (BloatEX)
Декомпилируем hiyokoZombiesMut, копируем ZombieBloatEX.uc в ServerPerksV5 и всё.
Можем добавлять в песочницу:
MonsterClasses=(MClassName="ServerPerksV5.ZombieBloatEX",Mid="P")
Монстр с собственным контроллером (NinjaPat)
Копируем NinjaPat.uc, HardPatController.uc и BossPlasmaProj.uc в наш мутатор.
Кроме того понадобятся ещё:
DamTypeHHGren.ucHHGExplosion.ucDamTypeExpBullet.uc
Заменяем hiyokomodZombie4th и hiyokomod на ServerPerksV5.
Удаляем из DamTypeHHGren.uc строчку:
unrealscript
WeaponClass=Class'ServerPerksV5.HolyGrenade'
(иначе придётся переносить ещё и святую гранату в наш мутатор)
Кроме того добавляем:
unrealscript
#exec OBJ LOAD FILE=godpatvoice.uax
сверху в NinjaPat.uc, а то что-то не хочет находить его.
Работа с ресурсами, не содержащимися в стандартных файлах
Будем рассматривать ситуацию, когда есть большие файлы ресурсов (анимация, текстуры, статик меши и звуки) и надо из них вытащить ресурсы конкретного монстра.
Всё будет делаться без стороннего софта, только KFEd.
Извлечение текстур
- Открываем KFEd, открываем нужный пакет текстур
- Находим нужные текстуры
- Используем функцию Rename для переименования текстур с указанием нового пакета
- Убеждаемся, что все текстуры переименованы правильно
- Сохраняем в новом пакете
Извлечение статик мешей
- Открываем KFEd, открываем нужный пакет статик мешей
- Находим нужные меши
- Переименовываем меши с указанием нового пакета
- Сохраняем в новом пакете
Извлечение анимаций и звуков
- Открываем KFEd, открываем нужный пакет анимаций
- Находим нужные анимации
- Переименовываем анимации с указанием нового пакета
- Если есть звуки в нотификациях, нужно:
- Выбрать нужную анимацию
- Переименовать AnimationSet
- Связать анимацию и меш
- Добавить Notify, выбрав тип
AnimNotify_Script - Убедиться, что все ссылки обновлены
- Сохраняем в новом пакете
Важные замечания
- При переносе мешей и анимаций нужно удалять нотификации и создавать заново, присваивая прежние настройки
- Простым перемещением звуков с анимациями обойтись не получится
- Переместив анимацию и сохранив в новом пакете, останутся ссылки на старый пакет
- В любых других случаях всё отлично срабатывает, но вот со звуками, при использовании их в нотификациях простое перемещение не работает и возникнут проблемы
Результат
После выполнения всех шагов оружие или монстр перенесены в ваш мутатор и готовы к использованию.
Статья от Flame