Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Кони, страйдеры, вакханалия
#1
Собственно проблема в том, что было желание осатанеть заменить страйдеров на разные другие модельки, кони, львы и т.п. Накачал текстур из шары и оформил себе вместо двух страйдеров коня и льва соответственно. Проблема возникла на этапе посадки на них, когда садишься На льва - все орк, вызываешь лошадь - садишься на лошадь и ты снова на льве. Собственно как и если вызвать обычного страйдера. Я так понял, что информация о том, какую модель загружать при посадке на животное - лежит в файлике LineageMonster.u. Теперь вопрос на сотку, как разделить посадку на разных животных, чтобы подгружались разные модели? Где пошерстить, чем пошерстить? Буду благодарен. Да, хроники Interlude.
Ответ
#2
В интерлюде можно добавить модель только одного ездового маунта.
Ответ
#3
это потому что вы используете класс .u скрипта LineageMonster.strider а в нём прописано чётко садить на меш страйдера! Для того что бы посадить на кого то другого, вам необходимо создать новый класс для нового пета! Вот вам код страйдера и поймёте почему садит на одну и туже модель.
Код:
class strider extends LineageRidePawn;

function PostBeginPlay()
{
    Super.PostBeginPlay();

    SimulationCollisionObjects.length = 2;
    SimulationCollisionObjects[0] = new class'SimulationSphereCollision';
    SimulationSphereCollision( SimulationCollisionObjects[0] ).BoneIndexA = 1;
    SimulationSphereCollision( SimulationCollisionObjects[0] ).Radius = 21.5f;
    SimulationCollisionObjects[1] = new class'SimulationCylinderCollision';
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexA = 18;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexB = 16;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).Radius = 8.f;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereA = false;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereB = true;
}

defaultproperties
{
    GroundMaxSpeed=180.00
    GroundMinSpeed=120.00
    GroundSpeed=120.00
    WalkingPct=0.40
    ControllerClass=Class'HerdMonster'
    bNeedSetPawnResource=False
    Mesh=SkeletalMesh'LineageMonsters.strider_m00'
    CollisionRadius=23.00
    CollisionHeight=31.00
}

А вот пример лошадей с хроник выше (cobalt_horse):
Код:
class cobalt_horse extends LineageRidePawn;

function PostBeginPlay()
{
    Super.PostBeginPlay();

    SimulationCollisionObjects.length = 2;
    SimulationCollisionObjects[0] = new class'SimulationSphereCollision';
    SimulationSphereCollision( SimulationCollisionObjects[0] ).BoneIndexA = 1;
    SimulationSphereCollision( SimulationCollisionObjects[0] ).Radius = 10.f;
    SimulationCollisionObjects[1] = new class'SimulationCylinderCollision';
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexA = 78;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexB = 76;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).Radius = 5.f;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereA = false;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereB = false;

}

defaultproperties
{
    GroundMaxSpeed=180.00
    GroundMinSpeed=60.00
    bSpineRotation=True
    bCrawler=True
    CollisionRadius=31.00
    CollisionHeight=32.25
}

А вот птица железная ездовая clock work cucuru с года:
Код:
class clock_work_cucuru extends LineageRidePawn;

function PostBeginPlay()
{
    Super.PostBeginPlay();

    SimulationCollisionObjects.length = 3;
    SimulationCollisionObjects[0] = new class'SimulationCylinderCollision';
    SimulationCylinderCollision( SimulationCollisionObjects[0] ).BoneIndexA = 39;
    SimulationCylinderCollision( SimulationCollisionObjects[0] ).BoneIndexB = 41;
    SimulationCylinderCollision( SimulationCollisionObjects[0] ).Radius = 3.f;
    SimulationCylinderCollision( SimulationCollisionObjects[0] ).SphereA = false;
    SimulationCylinderCollision( SimulationCollisionObjects[0] ).SphereB = false;
    SimulationCollisionObjects[1] = new class'SimulationCylinderCollision';
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexA = 67;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexB = 26;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).Radius = 10.f;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereA = false;
    SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereB = false;
    SimulationCollisionObjects[2] = new class'SimulationCylinderCollision';
    SimulationCylinderCollision( SimulationCollisionObjects[2] ).BoneIndexA = 67;
    SimulationCylinderCollision( SimulationCollisionObjects[2] ).BoneIndexB = 88;
    SimulationCylinderCollision( SimulationCollisionObjects[2] ).Radius = 10.f;
    SimulationCylinderCollision( SimulationCollisionObjects[2] ).SphereA = false;
    SimulationCylinderCollision( SimulationCollisionObjects[2] ).SphereB = false;

}



defaultproperties
{
    GroundMaxSpeed=170.00
    GroundMinSpeed=26.00
    bSpineRotation=True
    CollisionRadius=20.00
    CollisionHeight=40.00
}

Думаю если сравнить клас страйдера и остальных 2 ездовых, сразу видно что в страйдене идёт привязка специально к мешу по данному коду:
Код:
Mesh=SkeletalMesh'LineageMonsters.strider_m00'

И как я понял в хрониках выше есть ещё файл RideData.dat который отвечает за посадку персонажа на определённую кость, но так пока и не понял как связать код npcgrp с RideDate, можно всё решить физическим вмешательством в модель, но хотелось бы сделать через датки.

Я сейчас сам мучаю ездовых но на HF5, есть некие проблемки но это скорей всего из-за того что я использую серверную часть под страйдера, мне влом стало искать замарачиватся. А лошади не помню ид и браслет, найти можно поиском в npcgrp но итем к которому привязан не помню где смотреть! Просто у некоторых сборках раньше была связка в ядре, я когда для инта делал прописывал потребление питания и итем для связки/призыва в ядре. Но тогда у меня он не мог сесть как надо из-за того что я клиент не делал, а именно скрипт. Сейчас должно быть нормально!

Как компилить рассказывать не буду, но намекну что в интернете полно гайдов как это делается и довольно таки просто!Просто ищи не под ла2 а под унреал движки любой игры! Принцип компиляции везде идентичный, там разберёшься!

Вот если надо прикрепляю собранный скрипт с 2-мя ездовыми петами, скрипты которых выше: скачать
Скрипты не криптовал! Может кому пригодится в позновательных целях.
Ответ
#4
Phantom-Dev, либо же можно воспользоваться библиотекой acmi, перед этим подправив ее, что бы пропатчить любой скрипт до нужного состояния Smile
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#5
возможно, но иногда оно не нужно, так как заменяет скрипт если с таким же названием и куча не нужного внутри! Да и это не даст мне возможность его редактировать! Мне проще компилировать любой пак, я для себя пересобрал все пакеты ла2 необходимые для компила)) Хотя можно было подключить их после декрипта, но не все подключишь нормально так как имена совпадают с оригинальными от движка! И если оставить часть старых и часть новых то идёт иногда при компиле комфликт, из-за чего я просто пересобрал все оригинальные паки включая енгайн и коре. Меня сейчас больше интересует как посадить на нужную кость через датку а не 3д макс))

Кстати заметил что в клиенте одисея ниже не смотрел в шейдеры добавили карту нормалей! Текстуры не смотрел!Наверно ещё нету но видать готовят к будущим изменениям!

Правда про патчер acmi в первые вижу, хотя часто на его сайте.
Ответ
#6
Phantom-Dev,
В чем проблема изменить название и вырезать все, что не нужно? Пересбор всего, как по мне - лишняя головная боль.
Не патчер, он пишется руками. Я говорю про l2io библиотеку Smile Убирает кучу мороки с ручной реализацией чтения формата.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#7
Можно и вырезать но мне было удобней собрать!Да мороки куча не спорю, но собиралось е для себя, почему бы и не заморочится, зато теперь есть. Да и вырезать не всегда достаточно! А переименовав на допустим ещё engine не помогает уйти от проблемы когда один из методов отличается структурой и даёт сбой в работе чего то. Да и если назвать engine2 потом будет весеть в связях скрипта в импортах запрос на engine2, что не есть хорошо!
Ответ
#8
А вы что разве научились делать патчер для Engine.dll, В Interlude Ride class, Связан напрямую с LineageMonster.Strider, и больше 1 класса не сделать без правки в Engine.dll, то есть можно заменить Strider На Lion, но так чтобы одновременно был и Strider И Lion - нельзя( в Interlude)
Ответ
#9
Честно, врать не буду я от интерлюда давно отошел, тогда я не замарачивался ездовыми. Мне больше нравится HF5 но не сам мир игровой а возможности клиента. Я для себя хф5 обрезал как мне нужно! Убрал расу переделал интерфейс, убрал локи не нужные и т.д! Так сказать подобие интерлюда но с большим функционалом!
Я не утверждаю я dll не ковырял, так как с дизассемблером я не дружу и реверсом! Я лишь переделал Engine.u Core.u Editor.u и естественно LineageWarior.u где хранится LineagePawn класс а так же рассы. Ну и остальные необходимые библиотеки. Теперь могу компилировать пока до одисея хоть целиком все эффекты и т.д мобы и т.д и т.п! В общем все имеющиеся классы в ла2! Конечно есть свои недочёты, надо доводить до ума, но это всё со временем. Был бы сурс любого движка от унреал 2, в плане любой игры было бы конечно же проще)

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

Confusion а разве нельзя целиком пересобрать LineameMonster для инта? Или в dll прописан именно конкретно класс strider? Я просто не ковырял dll, вот в научных целях интересуюсь)) И как я понял крепёж эффектов к нпц крепится через унреал через аттачь. По алиасу и имени кости, ну и т.д!

Pointer*Rage спасибо за подсказку, теперь понял о чём ты, ты о классах от l2tool acmi, которые позволяют считать текстуры для конвертации. И я когда то пробывал модель он тоже пробует но из-за отсутствия некого функционала кидает ошибки, я так понял ты просто его допилил)) Если да то это да есть такая возможность. Просто не задумывался, спасибо за полезную идейку. Сам конечно не полезу, но может товарищь посмотрит что можно сделать)
Ответ
#10
Phantom-Dev, я не об этом говорил :/ Я говорил именно о редактировании скриптов.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ


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


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