Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[FAQ] Анимация своей модели, без использования .int файла
#1
Перенос кода анимации действий из .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)
Ответ
#2
Нужно будет попробовать , спасибо за вклад в развитие форума сергей ^
Ответ
#3
Не раз уже проверялось, не забываем что в вашем компиляторе должна быть прописана поддержка данных функций. Если этого нет, то идем в ваш 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 и юзаем наши новые примочки))
Ответ
#4

[Изображение: 91ef39382cb5435b9313fe8e1c2080c1.png]
Анимацию проигрывает нормально , файлов int нету все в u по мануалу ! хех приятно ^
Ответ
#5
Angelika, спасибо за тест, я тестил тоже перед выкладыванием но все равно наглядный пример лучше чем слова! Может у кого то будут ошибки, если не добавляли в компилятор стандартных опций ла2! Я подсказал решение проблем по статье, ошибки могут быть по опциям выше что не относятся к анимации! Если cделал ошибки в синтаксисе статье извините писал статью в 4 утра ещё и без пробела, клава накрылась))) Если нужна помощь в личку или скайп!
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)