Показать сообщение отдельно
Непрочитано 02.03.2015, 00:21   #12
Пользователь

Автор темы (Топик Стартер) Re: Компиляция .u

Если кому интересно, так же есть возможность увеличить размер монстра или нпц, не перепаковывать саму модель, используя всего лишь .u скрипт. А так же немного распишу некоторые параметры. Информация может сгодится для создания рб, что б не перепаковывать нпц тем самым делая его без звука, так как большинство админов не умеют собирать монстров или нпц со звуками!

Делается это так:

Меняем размер монстра или нпц через .u

Ищем необходимого монстра или нпц через umodel и определяемся с необходимым вам.
Далее смотрим в окне umodel на выбранном нпц информацию о названии модели а именно поле Package и Object
Как пример:
Package: LineageMonsters
Object: oel_mahum_warrior_m00
Получаем такой путь к нашему нпц: LineageMonsters.oel_mahum_warrior_m00

Теперь открываем в File Edite файл npcgrp.dat из папки system клиента.
И поиском по файлу ищем LineageMonsters.oel_mahum_warrior_m00. После чего находим к примеру такую строку:
Код:
20575	LineageMonster.oel_mahum_warrior	LineageMonsters.oel_mahum_warrior_m00	3	LineageMonstersTex.oel_mahum_warrior_t00	LineageMonstersTex.oel_mahum_warrior_t01	LineageMonstersTex.oel_mahum_warrior_t02					0			12	4416	6	4410	12	4411	12	4412	10	4413	10	5620	10																							1.00000000	0	3	ItemSound.sword_big_9	ItemSound.sword_big_2	ItemSound.spear_4	4	MonSound.Hit_Stone_3	ItemSound.shield_steel_2	MonSound.Hit_normal_12	ItemSound.shield_steel_8		3	MonSound2.oel_w_dmg_1	MonSound2.oel_w_dmg_2	MonSound.oel_mahum_dmg_3	0			1	0																																										1	0																																										LineageEffect.p_u002_a	0	50.00000000	250.00000000	70.00000000	0	1	0						0
Здесь нам самое важное, это 2-й столбец а именно LineageMonster.oel_mahum_warrior - это путь к классу в .u пакете, который описует параметры нашего нпц.
Далше ищем декомпилятором к примеру WOTgreal Package Exporter в .u пакете, необходимый класс, а именно oel_mahum_warrior в пакете LineageMonster.
Копируем код и создаём наш новый .u пакет с таким же кодом, к примеру LineageMonster10.
Код:
Код:
class oel_mahum_warrior extends LineagePawn;

defaultproperties
{
    GroundMaxSpeed=60.00
    GroundMinSpeed=60.00
    bSpineRotation=True
    ControllerClass=Class'HerdMonster'
    CollisionRadius=20.00
    CollisionHeight=38.00
}
И добавляем в код, параметр который отвечает за увеличение нашего обьекта а в данном случае нпц.
Параметр DrawScale= и разумеется размер с указанием до сотых. К примеру 1.50 и получаем следующий код:
Код:
class oel_mahum_warrior extends LineagePawn;

defaultproperties
{
    GroundMaxSpeed=60.00
    GroundMinSpeed=60.00
    bSpineRotation=True
    ControllerClass=Class'HerdMonster'
    DrawScale=1.50
    CollisionRadius=20.00
    CollisionHeight=38.00
}
Затем сохраняем и собираем пакет по гайду из этой темы. Затем заходим в нашу npcgrp.dat и дублируем строку с нашим нпц но уже с новым ид нпц и изменённым адресом к нашему классу.
Получаем следующее:
Код:
40000	LineageMonster10.oel_mahum_warrior	LineageMonsters.oel_mahum_warrior_m00	3	LineageMonstersTex.oel_mahum_warrior_t00	LineageMonstersTex.oel_mahum_warrior_t01	LineageMonstersTex.oel_mahum_warrior_t02					0			12	4416	6	4410	12	4411	12	4412	10	4413	10	5620	10																							1.00000000	0	3	ItemSound.sword_big_9	ItemSound.sword_big_2	ItemSound.spear_4	4	MonSound.Hit_Stone_3	ItemSound.shield_steel_2	MonSound.Hit_normal_12	ItemSound.shield_steel_8		3	MonSound2.oel_w_dmg_1	MonSound2.oel_w_dmg_2	MonSound.oel_mahum_dmg_3	0			1	0																																										1	0																																										LineageEffect.p_u002_a	0	50.00000000	250.00000000	70.00000000	0	1	0						0
Где 40000 новый ид нашего нпц а LineageMonster10.oel_mahum_warrior путь к новому классу который мы собрали.

Так же можно увеличивать и размер оружия у нпц, если оно отдельным обьектом в одной модели. Параметр WeaponScale=

Так же изменение минимальной и максимальной скорости передвижения:
Код:
    GroundMaxSpeed=60.00
    GroundMinSpeed=60.00
и колизии для обьекта:
Код:
    CollisionRadius=20.00
    CollisionHeight=38.00
И если правильно понял, параметр отвечающий за то что б объект разворачивался при обращении к объекту стоящему спиной:
Код:
bSpineRotation=True
и параметр отвечающий наоборот лицом:
Код:
bFaceRotation=True
Часто используются вместе.

А так же класс отвечающий за поведение объекта к примеру как к монстру или нпц или объекту неподвижному.
Параметр ControllerClass= а тут выбираем уже либо Class'HerdMonster' либо Class'HerdNpc', а так же Class'WarnHerd'

Так же привязка к кости левой руки или аттачь, делается параметром:
Код:
    LeftHandBone=Bip01 L Hand
    LeftArmBone=Bip01 L Hand
Если правильно понял, алиас и кость.

Так же привязка к спине, как пример смотрим в классе broadcasting_tower:
Код:
    SpineBone=Bone02
Параметр отображение тени. В данном случае отключена.
Код:
    bActorShadows=False
Параметр отвечающий за наклон и разворот объекта. Обычно ставится в конце, не забываем ставить запятую.
Код:
RotationRate=(Pitch=10000,Yaw=0,Roll=0),
Параметр NameOffset=60.00 как я понял отвечает за отображение титула имени нпц или моба. Если не ошибаюсь.

Так же нашел такие параметры, но ещё не понял за что они отвечают, просьба, разобравшихся отписываться в теме:
Код:
    bBlockPlayers=False - судя по параметру, какае то блокировка взаимодействия с персонажем
А так же параметр привязывание класса эмитера, ещё раз повторюсь, привязка именно эмитера а не эффекта, эффект прописуется не в параметрах а непосредственно в самом классе через Spawn, примеров этому множество, полистайте классы и сразу найдёте(к примеру training_doll_150p):
Код:
EmitterClass="Lineageeffect.teleport_map_a"
Если где то допущена ошибка по описанию параметров, просьба писать в тему, будем по мере поступления разбираться со скриптами и их функционалом.

Добавлено через 1 час 23 минуты
***

Параметры описали практически все, дабы не путать людей и не вводить в заблуждение, описание функций самого класса буду писать здесь.

Если у вас задан эффект и заспавнен функцией Spawn, то в его условии вы можете привязать его к кости, данным параметром:
Код:
AttachToBone(Effect0, '');
Так же функция для разрушения эффекта:
Код:
Effect0.NDestroy();
Данной функцией задаётся тип физики для эффекта 0 (Типы физики смотрим на вики унреала тут):
Код:
Effect0.SetPhysics(PHYS_Trailer);
Как пример создадим создание эффект в нашем классе нпц или монстра или ещё чего либо:
Код:
			Effect0 = Spawn(class'LineageEffect.d_belecp_deco', Self, '', Location, Rotation);
			if(Effect0 != None)
			{
				Effect0.SetPhysics(PHYS_Trailer);
				Effect0.bRelativeTrail = true;
				Effect0.RelativeTrailOffset.X = 0;
				Effect0.RelativeTrailOffset.Y = 0;
				Effect0.RelativeTrailOffset.Z = -30;
				Effect0.SetSizeScale(1.0);
				//AttachToBone(Effect0, '');
			}
Создаём эффект, точней спавним его отображение из пака наших эффектов LineageEffect.
Задаём физику нашему эффекту.
Это как я понял точка смещения относительно. Для координат ниже.
Задаём координаты расположения от точки спавна, а именно смещение.
Размер эффекта.

Если сделал где то ошибку, прошу не критиковать а поправить меня, программирование я знаю достаточно плохо. Скажем так, в скриптах я пытаюсь обтачивать навыки и могу ошибаться.

Последний раз редактировалось Phantom-Dev; 02.03.2015 в 16:33. Причина: Добавлено сообщение
Phantom-Dev вне форума Ответить с цитированием
Сказали спасибо: