[FAQ] Перенос кода анимация действий модели, из .int файла в .u

webdes27

Легендарный
Проверенный
Победитель в номинации 2021
Победитель в номинации 2020
Победитель в номинации 2019
Светоч знаний
На страже закона
Часть системы
За заслуги перед форумом
Клиент разработчик
За веру и верность форуму
Сообщения
1 369
Розыгрыши
0
Решения
3
Репутация
3 895
Реакции
807
Баллы
1 733
Перенос кода анимации действий из .int файлов в .u

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

Думаю не для кого не секрет что в Lineage 2 в некоторых хрониках, таких как Gracia и до GOD использовались .int файлы для того что б задать анимацию разных действий для понимания клиентом. Но к примеру многим не удобно использовать их да за частую они просто забываются, по этому для тех кто собирает .u пакет с классом от нпц, как это и пологаеться, есть возможность дописывать анимацию действий на прямую в класс самого нпц или моба.

К примеру у вас есть нпц который использует класс из пакета LineageMonster5.u к примеру br_wooldie, значит анимация к нему прописана в LineageMonster5.int
Открываем наш LineageMonster5.int через File Edit и ищем по запросу br_wooldie, после чего находим примерно такой код:
Код:
[br_wooldie]

WalkAnimName[0]=walk          
RunAnimName[0]=run         
WaitAnimName[0]=wait          
AtkWaitAnimName[0]=atkwait  
Atk01AnimName[0]=atk01  
SpAtk01AnimName[0]=SpAtk01
DeathAnimName[0]=death      
DeathWaitAnimName[0]=deathwait

CastShortAnimName[0]=atkwait
CastEndAnimName[0]=atkwait
CastMidAnimName[0]=atkwait
CastLongAnimName[0]=atkwait
MagicShotAnimName[0]=SpAtk02
MagicThrowAnimName[0]=SpAtk02
MagicNoTargetAnimName[0]=SpAtk03

NpcSocialAnimName[0]=social01
NpcSocialAnimName[1]=social02
NpcSocialAnimName[2]=spatk03

Тут и задается кодом какой функции движения задана какая анимация. Что мы делаем? Ищем теперь класс нашего нпц в .u через Wot Greal, кто не знает название класса, его можно подсмотреть в датки хроник с которых вы вытаскиваете вашего нпц, либо в дев моде, поставив галочку показывать класс нпц. В нашем случае этот класс лежит в LineageMonster4.u и называется он у нас wooldie.
Копируем куда вам удобно в вашем компиляторе .u пакетов, для дальнейшей сборки ваш класс и открываем его любым текстовым редактором и видим примерно такой код:
Код:
class wooldie extends LineagePawn;

defaultproperties
{
    GroundMaxSpeed=60.00
    GroundMinSpeed=60.00
    bSpineRotation=True
    ControllerClass=Class'LineageMonster.HerdMonster'
    NameOffset=5.00
    DrawScale=0.60
    CollisionRadius=8.00
    CollisionHeight=17.00
}

Что мы делаем? А делаем мы вот что, идем в наш .int откуда мы будем брать код наших действий нпц и копируем его в наш класс нпц который мы переносим и получаем примерно такой код:
Код:
class wooldie extends LineagePawn;

defaultproperties
{
    GroundMaxSpeed=60.00   // Макс. скорость движения по земле
    GroundMinSpeed=60.00   // Мин. скорость движения по земле
    bSpineRotation=True    // Разворот при обращении к нпц
    ControllerClass=Class'LineageMonster.HerdMonster' // Класс контролера нашего обьекта, нпц, моб и т.д
    NameOffset=5.00        // Подъем имени нпц, для тех кто извращается через унреал, подъемом оси Z(Теперь этот изврат не нужен)
    DrawScale=0.60         // Размер объекта
    CollisionRadius=8.00   // Радиус объекта, не позволяет проходить сквозь объект (НПЦ, Монстр и т.д)
    CollisionHeight=17.00  // Высота положения объекта (НПЦ, Монстр и т.д)

    WalkAnimName[0]=walk          
    RunAnimName[0]=run         
    WaitAnimName[0]=wait          
    AtkWaitAnimName[0]=atkwait  
    Atk01AnimName[0]=atk01  
    SpAtk01AnimName[0]=SpAtk01
    DeathAnimName[0]=death      
    DeathWaitAnimName[0]=deathwait
    CastShortAnimName[0]=atkwait
    CastEndAnimName[0]=atkwait
    CastMidAnimName[0]=atkwait
    CastLongAnimName[0]=atkwait
    MagicShotAnimName[0]=SpAtk02
    MagicThrowAnimName[0]=SpAtk02
    MagicNoTargetAnimName[0]=SpAtk03
    NpcSocialAnimName[0]=social01
    NpcSocialAnimName[1]=social02
    NpcSocialAnimName[2]=spatk03
}

Что мы сделали? А мы просто перенесли код анимации действий с .int в наш .u, теперь собираете вашим компилятором ваш пакет с классом или классами нпц или мобов и пользуемся .u пакетом уже с прописанной анимацией действий.

Спасибо за внимание, и приятного так сказать использования мод хака.

Автор статьи: webdes27(Phantom-Dev)
 
Последнее редактирование:

Не забываем что в вашем компиляторе должна быть прописана поддержка данных функций. Если этого нет, то идем в ваш Engine.u в разобранный, ищем там класс Pawn и добавляем в него примерно такой код:
Код:
// Добавление параметров анимации
var localized name TurnAnimName[8];
var localized name WalkAnimName[8];
var localized name RunAnimName[8];
var localized name FallAnimName[8];
var localized name DamageFlyAnimName[8];
var localized name JumpAnimName[8];
var localized name BJumpAnimName[8];
var localized name WaitAnimName[8];
var localized name AtkWaitAnimName[8];
var localized name SitAnimName[8];
var localized name SitWaitAnimName[8];
var localized name StandAnimName[8];
var localized name DeathStandAnimName[8];
var localized name ChairSitAnimName[8];
var localized name ChairWaitAnimName[8];
var localized name ChairStandAnimName[8];
var localized name StunAnimName[8];
var localized name Atk01AnimName[8];
var localized name Atk02AnimName[8];
var localized name Atk03AnimName[8];
var localized name AtkUpAnimName[8];
var localized name AtkDownAnimName[8];
var localized name SpAtk01AnimName[8];
var localized name SpAtk02AnimName[8];
var localized name SpAtk03AnimName[8];
var localized name SpAtk04AnimName[8];
var localized name SpAtk05AnimName[8];
var localized name SpAtk06AnimName[8];
var localized name SpAtk07AnimName[8];
var localized name SpAtk08AnimName[8];
var localized name SpAtk09AnimName[8];
var localized name SpAtk10AnimName[8];
var localized name SpAtk11AnimName[8];
var localized name SpAtk12AnimName[8];
var localized name SpAtk13AnimName[8];
var localized name SpAtk14AnimName[8];
var localized name SpAtk15AnimName[8];
var localized name SpAtk16AnimName[8];
var localized name SpAtk17AnimName[8];       
var localized name SpAtk18AnimName[8];
var localized name SpAtk19AnimName[8];
var localized name SpAtk20AnimName[8];
var localized name SpAtk21AnimName[8];
var localized name SpAtk22AnimName[8];
var localized name SpAtk23AnimName[8];
var localized name SpAtk24AnimName[8];
var localized name SpAtk25AnimName[8];
var localized name SpAtk26AnimName[8];
var localized name SpAtk27AnimName[8];
var localized name SpAtk28AnimName[8];
var localized name ShieldAtkAnimName[8];
var localized name DefenceAnimName[8];
var localized name DodgeAnimName[8];
var localized name DeathAnimName[8];
var localized name DeathWaitAnimName[8];
var localized name SitDeathAnimName[8];
var localized name SitDeathWaitAnimName[8];
var localized name DamageAnimName[8];
var localized name CastShortAnimName[8];
var localized name CastMidAnimName[8];
var localized name CastLongAnimName[8];
var localized name CastEndAnimName[8];
var localized name MagicThrowAnimName[8];
var localized name MagicShotAnimName[8];
var localized name MagicNoTargetAnimName[8];
var localized name MagicFriendAnimName[8];
var localized name PicItemAnimName[8];
var localized name ThrowAnimName[8];
var localized name PcSocialAnimName[20];
var localized name NpcSocialAnimName[5];
var localized name RiderWaitAnimName[3];
var localized name RiderAtkAnimName[3];
var localized name RiderRunAnimName[3];
var localized name RiderDeathWaitAnimName[3];
var localized name RiderDeathAnimName[3];
var localized name SwimDeathAnimName[8];
var localized name SwimAnimName[8];
var localized name SwimWaitAnimName[8];
var localized name SwimDeathWaitAnimName[8];
var localized name SwimAttackWaitAnimName[8];
var localized name FishStartAnimName;
var localized name FishWaitAnimName;
var localized name FishControlAnimName;
var localized name FishPullAnimName;
var localized name FishEndAnimName;

var localized float WalkAnimRate[8];
var localized float RunAnimRate[8];
var localized float Atk01AnimRate[8];
var localized float Atk02AnimRate[8];
var localized float Atk03AnimRate[8];
var localized float AtkUpAnimRate[8];
var localized float AtkDownAnimRate[8];
var localized float SpAtk01AnimRate[8];
var localized float SpAtk02AnimRate[8];
var localized float SpAtk03AnimRate[8];
var localized float SpAtk04AnimRate[8];
var localized float ShieldAtkAnimRate[8];
var localized float CastShortAnimRate[8];
var localized float CastMidAnimRate[8];
var localized float CastLongAnimRate[8];
var localized float CastShortEndAnimRate[8];
var localized float MagicThrowAnimRate[8];
var localized float MagicShotAnimRate[8];
var localized float MagicNoTargetAnimRate[8];
var localized float MagicFriendAnimRate[8];
var localized float ThrowAnimRate[8];

У меня это добавлено перед комментарием "// Physics related flags.". Компилируем Engine.u и юзаем наши новые примочки))
 
Эм, такой вопрос. Engine брать линаговский или ue? Ибо в ue vehicle не открывается, а в линаговском открывается)
 
Я немного не понял о каком vehicle вы говорите, я не упоминал его в мануале. А так унреаловские скрипты раскомпиливает сам унреал, единственное теряются картинки но их можно взять с всеразличных сурсов, ро2 и т.д.

Декомпилировать можно как в запущенном унреале в вкладке Actor и верху в File там будет меню Export All Scripta или командой через консоль с использованием ucc:
Код:
ucc batchexport engine.u class .uc ..\engine\classes
 
Последнее редактирование:
Воу, вот этого не знал)
Я спросил это впринципе т.к. не догоняю как собрать этот компилятор)) и я пытался совместить engine ла2 и анрила, добавляя что-то, что требует компил)
 
Если что то надо и не займет много времени подскажу! Я на этом не зарабатываю для меня это хобби хоть и знаю не мало! Но времени не много, если что то могу подсказать подскажу! Мне не лень!Главное полным дубом не быть что б я не подсказывал самое элюментарное пару дней!
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Проверяли всё работает нормально по мануалу ^
тестик на видео .
 
Назад
Сверху Снизу