HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Страницы (269): « Первая ... « 265 266 267 268 [269]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6879
Возраст: 34

Рейтинг



Цитата:
Дядя Миша писал:
Сложна-сложна.

Самый простой вариант - сделать это одной длинной анимацией. А вот если кодить, то придётся заморочиться. Проще перейти на сорс, там NPC умеют пятиться и даже одновременно атаковать. Собсно, неделю назад я принял такое решение на основе того, что на моём железе игры на сорс 2013 летают. Оригинальные компиляторы собирают карты для сорса раза в 3 дольше, чем Дядьмишины паранойевские для голдсорса (кастомные для сорса пока не пробовал), но это ещё и мой косяк, просто перенёс карты без причёсывания. Впечатления пока положительные, хл2 еп2 вполне знает многие энтити для первой халфы: функ_валлы, функ_доры, монстер_генерик, лайты. Буду попробовать, может что из этого выйдет.

Отредактировано Ku2zoff 19-08-2025 в 16:42

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

Старое сообщение 19-08-2025 16:31
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 681

Рейтинг



Цитата:
Ku2zoff писал:
Самый простой вариант - сделать это одной длинной анимацией

не додумывался до этого, надо будет попробовать)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

Старое сообщение 20-08-2025 08:17
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 681

Рейтинг



в принципе рабочий вариант https://youtu.be/AwWeHXn8gVY
Из минусов: нпс проходят сквозь друг-друга и стены, но иногда можно применить

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

Отредактировано JPEG 23-08-2025 в 20:45

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

Старое сообщение 23-08-2025 20:42
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13524
Возраст: 33

Рейтинг



Смотришь вектор куда игрок смотрит, отслеживаешь удар, если удар нанесён то отбрасываешь монстра назад по вектору взгляда игрока (задаешь велосити или импульс на время проигрывания анимации) и включаешь собственно саму анимацию. Можно ещё развернуть самого монстра мордой в направлении игрока, чтобы он потом не тупил когда сам разворачивался. Так же можно кинуть трассу из спины монстра чтобы считать дистанцию насколько далеко он должен отойти, чтобы не пятился в стенки.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 26-08-2025 в 07:10

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

Старое сообщение 26-08-2025 07:01
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 681

Рейтинг



Цитата:
FiEctro писал:
Смотришь вектор куда игрок смотрит, отслеживаешь удар, если удар нанесён то отбрасываешь монстра назад по вектору взгляда игрока (задаешь велосити или импульс на время проигрывания анимации) и включаешь собственно саму анимацию. Можно ещё развернуть самого монстра мордой в направлении игрока, чтобы он потом не тупил когда сам разворачивался. Так же можно кинуть трассу из спины монстра чтобы считать дистанцию насколько далеко он должен отойти, чтобы не пятился в стенки.


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

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

Старое сообщение 26-08-2025 14:51
- За что?
ZGreen
Роугнесс

Дата регистрации: Sep 2007
Проживает: Красноярск
Сообщений: 431
Возраст: 37

Рейтинг



Почему бы не сделать анимацию удара с подшагом и последующим отскоком? Вроде, когда дерешься несподручно нос в нос стоять. Теоретически. Сам не дерусь, я только на форуме смелый.

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

Старое сообщение 26-08-2025 15:25
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 681

Рейтинг



Цитата:
ZGreen писал:
Почему бы не сделать анимацию удара с подшагом и последующим отскоком? Вроде, когда дерешься несподручно нос в нос стоять. Теоретически. Сам не дерусь, я только на форуме смелый.


так я так делал, при анимации нпс может сквозь стены проходить

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

Старое сообщение 26-08-2025 15:35
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6879
Возраст: 34

Рейтинг



Цитата:
ZGreen писал:
Почему бы не сделать анимацию удара с подшагом и последующим отскоком?

Мудрить с анимациями не надо (если только хочется сделать быстро и просто), у ИИ в халфе есть система щедъюлей, где можно переключать активности, типа: шаг вперёд, удар, шаг назад, тремя разными анимациями. Оно не работает как хочется по двум причинам: первая - затупы при переключении активностей, из-за того, что серверный фпс плавает и эвенты плохо отлавливаются (привет ковыряния с DispatchAnimEvents), вторая - монстры не умеют ходить назад, им надо повернуться лицом по направлению движения. И если второе можно победить, невозбранно модифицировав код перемещения с оглядкой на летающих монстров, то первое очень геморно, и корень проблемы сидит в движке, как объяснял Дядя Миша, ЕМНИП.

Добавлено 27-08-2025 в 00:34:

Там даже в коде flInterval фиксированный - 0.1, чтобы срабатывания DispatchAnimEvents совпадали с интервалами тчинка монстра gpGlobals->time + 0.1. Я уже точно не помню, но вроде это нужно для того, чтобы клиентский и серверный эвенты срабатывали одновременно. В этой теме я экспериментировал, и в разных вариациях было так, что либо клиентский эвент опаздывает на один pev->frame за серверным, либо серверный не срабатывает. ДМ в этой же теме упоминал, что интервал в IEngineStudio.ClientEvents - сотые доли секунды, а в CBaseAnimating::DispatchAnimEvents - десятые. Соответственно, клиент в любом случае воспроизведёт эвент, например маззлфлеш при стрельбе. А вот сервер может пропустить. Отсюда все затупы со сменой активностей, например, при попытках монстра выйти из боя и найти укрытие. Мой вариант в теме вполне рабочий, но не на моделях, где эвент стоит на последнем кадре. Я забил на это всё, не стал дальше копаться в теме. Хотя очень хотел сделать НПС подвижнее. Если анимаций нет, незачем и код для них писать.

Добавлено 27-08-2025 в 00:50:

Есть ещё один вариант, но он, на мой взгляд, лишает всей прелести использования студио эвентов на сервере. Это полностью выкинуть эту замечательную систему, и писать фиксированные тайминги в коде, что де на такой-то секунде такой-то анимации монстр наносит урон, делает выстрел, или что-то ещё. Такое себе, потому что опять же, фпс всегда разный, и попасть в эти тайминги нереально. В таком случае монстры должны быть анимированы как игрок. А ведь через эвенты можно не только вызывать функции из кода монстров, но и активировать энтити на карте и ещё много чего.

Отредактировано Ku2zoff 26-08-2025 в 17:54

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

Старое сообщение 26-08-2025 17:50
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 681

Рейтинг



ну в общем получилось так. Говнокот, но по-крайней мере работает

void CZombie :: HandleAnimEvent( MonsterEvent_t *pEvent )
{
switch( pEvent->event )
{
case ZOMBIE_AE_ATTACK_RIGHT:
{
//в момент удара запускаются таймеры на включении отступления и его выключение
m_flFallbackOn = gpGlobals->time + 0.5; //задержка перед отступлением
m_flFallbackOff = gpGlobals->time + 1.5; //то, сколько бежит назад



int CZombie::IgnoreConditions ( void )
{
int iIgnore = CBaseMonster::IgnoreConditions();

if (m_flFallbackOn && gpGlobals->time >= m_flFallbackOn)
m_fFallback = 1; //разрешить отступать

if (m_flFallbackOff && gpGlobals->time >= m_flFallbackOff)
m_fFallback = 0;

if (m_fFallback == 1)
pev->velocity = pev->velocity - gpGlobals->v_forward * 100; //отступление

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

Старое сообщение 27-08-2025 00:02
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6879
Возраст: 34

Рейтинг



JPEG ну конечно говнокод. По-хорошему должно быть что-то такое:

C++ Source Code:
1
// primary melee attack
2
Task_t	tlPrimaryMeleeAttack1[] =
3
{
4
  { TASK_STOP_MOVING,	0		},
5
  { TASK_FACE_ENEMY,	(float)0	},
6
  { TASK_MELEE_ATTACK1,	(float)0	},
7
  { TASK_FALL_BACK,           (float)0	}, // грамотнее будет TASK_RETREAT
8
};
9
 
10
case TASK_FALL_BACK:
11
{
12
  m_IdealActivity = ACT_WALK_BACK;
13
  break;
14
}

Хотя, если работает, то почему не использовать?

Добавлено 28-08-2025 в 21:38:

Почему таски с щедъюлями лучше? Потому что не надо заводить какие-то сомнительные переменные типа m_fFallback. Тайминги можно задавать прям в массиве тасков, поставив вместо нуля другое число.

Отредактировано Ku2zoff 28-08-2025 в 14:49

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

Старое сообщение 28-08-2025 14:38
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 10:03. Новая тема    Ответить
Страницы (269): « Первая ... « 265 266 267 268 [269]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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