HLFX.Ru Forum
Показать все 24 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Две головы одного охранника (https://hlfx.ru/forum/showthread.php?threadid=3973)


Отправлено Half 17-06-2013 в 15:35:

Question Две головы одного охранника

Приветствую всех форумчан!
Вот, возник вопрос: Играя в свой мод, на уровнях of1a1 (там лежат PCV и разводной ключ) и of1a5b (где трупер с учёным отправились в мир иной) я заметил что у толстого охранника Отиса всегда одна и та же голова (HEAD_WITH_HAIR). Однако в оригинале на of1a5b голова Отиса выглядит иначе (HEAD_BALD). Как моему Отису сделать две?

P. S. Лучше три головы, т. к. в Blue Shift есть третья голова – Отис-Негр (HEAD_BLACK).

+сама моделька: http://rghost.ru/46823656

__________________
Пруха длится всего 5 минут.


Отправлено Cybermax 17-06-2013 в 15:43:

ты бы свою модель залил на rghost.ru

Добавлено 17-06-2013 в 19:43:

В op4 отис с двумя головами. Это же все мапингом делается на картах.

__________________


Отправлено Дядя Миша 17-06-2013 в 16:17:

Я совершенно точно помню, что делал такого отиса, путем объединения двух моделек - из опфора и блушифта. Там есть какая-то сложность, но сделать реально.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Half 17-06-2013 в 16:25:

Ну так и я сделал. Там надо всего лишь поменять
"Torus01 17" на "Torus01 18" Делов то!

__________________
Пруха длится всего 5 минут.


Отправлено Half 18-06-2013 в 10:33:

Может лучше дать вам исходник, а вы поможете найти ошибку?

__________________
Пруха длится всего 5 минут.


Отправлено Qwertyus 18-06-2013 в 10:50:

Half:
Тебе же говорят, модель нормально сделана, вопрос не в этом. Нужно в настройках монстра на карте задать нужный тип головы, прямо указать на необходимость использования интересующего тебя варианта субмодели головы. Нужен параметр типа Body у модели и прописываешь туда цифру 0, 1 или 2 для выбора нужного варианта из трёх.


Отправлено Half 18-06-2013 в 10:55:

Qwertyus
я ведь не про OpFor. Я про свой мод, в котором есть тот же охранник, но не меняющий своей головы, даже если Body 1, 2 или 3. Потому и выложил исходник.

__________________
Пруха длится всего 5 минут.


Отправлено Дядя Миша 18-06-2013 в 11:13:

Ну в своём моде надо менять одновременно скин и боди.
Как у учёного сделано.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Half 18-06-2013 в 11:30:

В учёного смотрел я не один раз, результата 0, хотя... нет. Не меняет этот жирдяй своей головы.

__________________
Пруха длится всего 5 минут.


Отправлено GioHAUS0n 18-06-2013 в 12:11:

Так дайка свой .FGD мода и модель Otis.mdl, по колдую....


Отправлено Half 18-06-2013 в 12:17:

Моделька отиса есть в 1-м посте, а фгд аттачем:
Сейчас попытался прописать голову как у солдат, результат тот же.

__________________
Пруха длится всего 5 минут.


Отправлено GioHAUS0n 18-06-2013 в 12:30:

Теперь проверка:


Отправлено Half 18-06-2013 в 12:42:

GioHAUS0n
Одинаково

__________________
Пруха длится всего 5 минут.


Отправлено GioHAUS0n 18-06-2013 в 12:53:

Понял, проблему:


Отправлено Half 18-06-2013 в 12:58:

Мне кажется, я тебя запутал. Дело не в fgd-файлах, а в исходном коде монстра.

__________________
Пруха длится всего 5 минут.


Отправлено thambs 18-06-2013 в 13:01:

Дядя Миша

по моему, проще всего делать как в спирте/ксашмоде -- под каждую голову отиса свою модельку. у него ж там ещё боди с оружием/в кобуре/без оружия.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Half 18-06-2013 в 13:09:

thambs
Спасибочки, обойдусь.
Этот Отис сделан на основе Барни, поэтому убирать и доставать оружие он умеет без проблем.

__________________
Пруха длится всего 5 минут.


Отправлено Дядя Миша 18-06-2013 в 13:29:

thambs Отисов сами делайте, у меня никогда не было такого риквеста.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Half 18-06-2013 в 14:27:

Готово!!!
На самом деле всё проще некуда!
Инструкция для тех, кому интересно:
Сначала задефайним головы Отиса:

C++ Source Code:
1
// Head group
2
#define	OTIS_HEAD_GROUP	2
3
#define OTIS_HEAD_BALD               0
4
#define OTIS_HEAD_HAIR               1
5
#define OTIS_HEAD_BLACK	2

Затем в функции Spawn запишем следующее: (460 строка)
C++ Source Code:
1
if ( m_iHead == -1 )
2
{
3
  m_iHead = RANDOM_LONG(0,2);// pick a head, any head
4
}
5
if ( m_iHead == 0 )
6
{
7
  SetBodygroup( OTIS_HEAD_GROUP, OTIS_HEAD_BALD );
8
}
9
else if ( m_iHead == 1 )
10
{
11
  SetBodygroup( OTIS_HEAD_GROUP, OTIS_HEAD_HAIR );
12
}
13
else if ( m_iHead == 2 )
14
{
15
  SetBodygroup( OTIS_HEAD_GROUP, OTIS_HEAD_BLACK );
16
}

После этого скомпилите клиент и сервер.
Всё! Наслаждайтесь!

+ Обещанный Отис-Негр
P. S. Сори за текст, что-то с табуляцией.

__________________
Пруха длится всего 5 минут.


Отправлено Дядя Миша 18-06-2013 в 14:33:

Half Я тебе код малость поправил, а то смотреть же невозможно.

Добавлено 18-06-2013 в 18:33:

Хотя можно сделать в разы просче:

C++ Source Code:
1
if( m_iHead <= -1 )
2
  m_iHead = RANDOM_LONG(0,2);
3
if( m_iHead > 2 ) m_iHead = 2;
4
SetBodygroup( OTIS_HEAD_GROUP, m_iHead );

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Half 18-06-2013 в 15:08:

Дядя Миша
Спасибо, тоже вариант.

Добавлено 18-06-2013 в 22:08:

Надо бы теперь это оформить всё, как тутор. Типа: "Сделали из Барни - Отиса, а головы не меняются?..." и т.п.

__________________
Пруха длится всего 5 минут.


Отправлено Half 19-06-2013 в 08:09:

Небольшая поправка:
Как вы наверное уже заметили, при смерти пушка выпадает только от OTIS_HEAD_HAIR. Чтобы исправить эту ситуацию нужно в исходном коде Отиса заменить:

C++ Source Code:
#define	OTIS_BODY_GUNHOLSTERED	0
#define	OTIS_BODY_GUNDRAWN		1
#define OTIS_BODY_GUNGONE			2

(не знаю как у вас записан Отис, но вы разберётесь)
на
C++ Source Code:
1
#define	OT_GUN_GROUP	1
2
#define	OT_GUN_HOLSTER	0
3
#define OT_GUN_DRAWN	1
4
#define OT_GUN_DONUT	2

Далее в HandleAnimEvent ( 400 строка) заменим код:
C++ Source Code:
1
{
2
case OTIS_AE_SHOOT:
3
    OtisFireEagle();
4
  break;
5
 
6
case OTIS_AE_DRAW:
7
    // barney's bodygroup switches here so he can pull gun from holster
8
  pev->body = OTIS_BODY_GUNDRAWN;
9
  m_fGunDrawn = TRUE;
10
  break;
11
 
12
case OTIS_AE_HOLSTER:
13
    // change bodygroup to replace gun in holster
14
  pev->body = OTIS_BODY_GUNHOLSTERED;
15
  m_fGunDrawn = FALSE;
16
  break;

(Или как там у вас)
вот на этот:
C++ Source Code:
1
{
2
case OTIS_AE_SHOOT:
3
    Eagle();
4
  break;
5
 
6
case OTIS_AE_DRAW:
7
    // otis's bodygroup switches here so he can pull gun from holster
8
  SetBodygroup( OT_GUN_GROUP, OT_GUN_DRAWN );
9
  m_fGunDrawn = TRUE;
10
  break;
11
 
12
case OTIS_AE_HOLSTER:
13
    // change bodygroup to replace gun in holster
14
  SetBodygroup( OT_GUN_GROUP, OT_GUN_HOLSTER );
15
  m_fGunDrawn = FALSE;
16
  break;

Затем в Killed (640 строка) заменим:
C++ Source Code:
1
if ( pev->body < OTIS_BODY_GUNGONE )
2
{// drop the gun!
3
Vector vecGunPos;
4
Vector vecGunAngles;
5
 
6
pev->body = OTIS_BODY_GUNGONE;
7
 
8
GetAttachment( 0, vecGunPos, vecGunAngles );
9
 
10
CBaseEntity *pGun = DropItem( "weapon_eagle", vecGunPos, vecGunAngles );
11
}

вот этим:
C++ Source Code:
1
if ( GetBodygroup( OT_GUN_GROUP ) != OT_GUN_HOLSTER )
2
{// drop the gun!
3
Vector vecGunPos;
4
Vector vecGunAngles;
5
 
6
SetBodygroup( OT_GUN_GROUP , OT_GUN_HOLSTER );
7
 
8
GetAttachment( 0, vecGunPos, vecGunAngles );
9
 
10
CBaseEntity *pGun = DropItem( "weapon_eagle", vecGunPos, vecGunAngles );
11
}

Теперь, при смерти мы получим пушку от всех трёх Отисов, если они вынули её из кобуры.

__________________
Пруха длится всего 5 минут.


Отправлено Paopapel 20-06-2013 в 20:32:

Half

Если тебе нужно я доделаю. Моделька Отиса.


Отправлено SteamPlay43 23-06-2013 в 14:04:

Half Это не сложно! Смотри код от учёного:

C++ Source Code:
if ( pev->body == HEAD_LUTHER )
  pev->skin = 1;


Добавлено 23-06-2013 в 21:04:

Half Так же как и в самой модели!


Временная зона GMT. Текущее время 21:37.
Показать все 24 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024