Экспорт монстров и оружия в собственные мутаторы

Экспорт монстров и оружия в собственные мутаторы

  • Тема закрыта
  • Вы не можете ответить в тему

Экспорт монстров и оружия в собственные мутаторы Гайд по переносу оружия и монстров из одного мутатора в другой, включая работу с ресурсами и зависимостями.

Geekrainian #1

    • Группа: Администратор
    • Сообщений: 800

    Отправлено:

    Экспорт монстров и оружия в собственные мутаторы

    Всё ниже написанное будет ещё неоднократно исправляться и оформляться…

    Некоторое время назад описывалось, как переносить оружие или монстров из мутатора в мутатор.

    Перенос оружия из мутатора в мутатор

    Рассмотрим ситуацию на примере 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.uc
    • HHGExplosion.uc
    • DamTypeExpBullet.uc

    Заменяем hiyokomodZombie4th и hiyokomod на ServerPerksV5.

    Удаляем из DamTypeHHGren.uc строчку:

    unrealscript
    WeaponClass=Class'ServerPerksV5.HolyGrenade'

    (иначе придётся переносить ещё и святую гранату в наш мутатор)

    Кроме того добавляем:

    unrealscript
    #exec OBJ LOAD FILE=godpatvoice.uax

    сверху в NinjaPat.uc, а то что-то не хочет находить его.

    Работа с ресурсами, не содержащимися в стандартных файлах

    Будем рассматривать ситуацию, когда есть большие файлы ресурсов (анимация, текстуры, статик меши и звуки) и надо из них вытащить ресурсы конкретного монстра.

    Всё будет делаться без стороннего софта, только KFEd.

    Извлечение текстур

    1. Открываем KFEd, открываем нужный пакет текстур
    2. Находим нужные текстуры
    3. Используем функцию Rename для переименования текстур с указанием нового пакета
    4. Убеждаемся, что все текстуры переименованы правильно
    5. Сохраняем в новом пакете

    Извлечение статик мешей

    1. Открываем KFEd, открываем нужный пакет статик мешей
    2. Находим нужные меши
    3. Переименовываем меши с указанием нового пакета
    4. Сохраняем в новом пакете

    Извлечение анимаций и звуков

    1. Открываем KFEd, открываем нужный пакет анимаций
    2. Находим нужные анимации
    3. Переименовываем анимации с указанием нового пакета
    4. Если есть звуки в нотификациях, нужно:
      • Выбрать нужную анимацию
      • Переименовать AnimationSet
      • Связать анимацию и меш
      • Добавить Notify, выбрав тип AnimNotify_Script
      • Убедиться, что все ссылки обновлены
    5. Сохраняем в новом пакете

    Важные замечания

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

    Результат

    После выполнения всех шагов оружие или монстр перенесены в ваш мутатор и готовы к использованию.


    Статья от Flame

    Назад