HLFX.Ru Forum Страницы (2): « 1 [2]
Показать все 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)


Отправлено 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. Текущее время 14:48. Страницы (2): « 1 [2]
Показать все 24 сообщений этой темы на одной странице

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