HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Две головы одного охранника
а лучше три!
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Дядя Миша

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

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

Сообщить модератору | IP: Записан
Сообщение: 121787

Старое сообщение 18-06-2013 13:01
- За что?
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 86
Возраст: 30

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 121788

Старое сообщение 18-06-2013 13:09
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33041
Нанёс повреждений: 392 ед.

Рейтинг



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

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | IP: Записан
Сообщение: 121789

Старое сообщение 18-06-2013 13:29
-
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 86
Возраст: 30

Рейтинг



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

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 минут.

Сообщить модератору | IP: Записан
Сообщение: 121790

Старое сообщение 18-06-2013 14:27
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33041
Нанёс повреждений: 392 ед.

Рейтинг



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'

Сообщить модератору | IP: Записан
Сообщение: 121791

Старое сообщение 18-06-2013 14:33
-
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 86
Возраст: 30

Рейтинг



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

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

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

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

Сообщить модератору | IP: Записан
Сообщение: 121792

Старое сообщение 18-06-2013 15:08
- За что?
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 86
Возраст: 30

Рейтинг



Небольшая поправка:
Как вы наверное уже заметили, при смерти пушка выпадает только от 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 минут.

Сообщить модератору | IP: Записан
Сообщение: 121834

Старое сообщение 19-06-2013 08:09
- За что?
Paopapel
Житель форума

Дата регистрации: Aug 2012
Проживает: Новоросс
Сообщений: 225
Возраст: 39

Рейтинг



Half

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

Вложение: xash_studiomdl.rar (425.6 кб)
Этот файл был скачан 157 раз.

Сообщить модератору | IP: Записан
Сообщение: 121868

Старое сообщение 20-06-2013 20:32
- За что?
SteamPlay43
Житель форума

Группа: Неопытный
Дата регистрации: May 2012
Проживает: Барнаул
Сообщений: 273
Возраст: 27

Рейтинг



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

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


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

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

[ Вложение ]
Безимени-1.png

Сообщить модератору | IP: Записан
Сообщение: 122002

Старое сообщение 23-06-2013 14:04
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 09:08. Новая тема    Ответить
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Две головы одного охранника
а лучше три!
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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