HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Кодинг оружия
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1077

Рейтинг



Кодинг оружия

Написал idle-функцию для оружия, скомпилировал и сервер и клиент, положил в соответствующие папки мода. Но пушка проигрывает одну и ту же idle-анимацию, при этом заметно моргание в конце проигрывания, хотя переменной m_flTimeWeaponIdle я приравниваю соотношение Frames к FPS модели (модель v_desert_eagle из Опфора). Собственно, в чём подвох?

C++ Source Code:
1
void CDeagle::WeaponIdle( void )
2
{
3
  ResetEmptySound( );
4
 
5
  m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
6
 
7
  if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
8
    return;
9
 
10
  int iAnim;
11
  float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 );
12
  if (flRand <= 0.2)
13
  {
14
    iAnim = DEAGLE_IDLE1;
15
    m_flTimeWeaponIdle = (76.0/30.0);
16
  }
17
  else if (flRand <= 0.4)
18
  {
19
    iAnim = DEAGLE_IDLE2;
20
    m_flTimeWeaponIdle = (61.0/24.0);
21
  }
22
  else if (flRand <= 0.6)
23
  {
24
    iAnim = DEAGLE_IDLE3;
25
    m_flTimeWeaponIdle = (50.0/30.0);
26
  }
27
  else if (flRand <=0.8)
28
  {
29
    iAnim = DEAGLE_IDLE4;
30
    m_flTimeWeaponIdle = (76.0/30.0);
31
  }
32
  else
33
  {
34
    iAnim = DEAGLE_IDLE5;
35
    m_flTimeWeaponIdle = (61.0/30.0);
36
  }
37
 
38
  SendWeaponAnim( iAnim );
39
}


Ещё непонятно, почему в UTIL_SharedRandomFloat передаются 10 и 15. Если это диапозон, то почему он берется от 10 до 15, а сравнение идет с числами от 0 до 1? Копировал из магнума, а у него анимации проигрываются всегда.

Анимации в начале прописал, если что

C++ Source Code:
1
enum deagle_e {
2
  DEAGLE_IDLE1 = 0,
3
  DEAGLE_IDLE2,
4
  DEAGLE_IDLE3,
5
  DEAGLE_IDLE4,
6
  DEAGLE_IDLE5,
7
  DEAGLE_SHOOT,
8
  DEAGLE_SHOOT_EMPTY,
9
  DEAGLE_RELOAD,
10
  DEAGLE_RELOAD_EMPTY,
11
  DEAGLE_DRAW,
12
  DEAGLE_HOLSTER,
13
};
14
 

__________________
I'm on github
I'm on opendesktop.org

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

Старое сообщение 05-04-2011 20:28
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
FreeSlave писал:
Копировал из магнума, а у него анимации проигрываются всегда.

у магнума это дело играется на клиенте. Ставь туда обычный RANDOM_FLOAT, пиши 0.0f, 1.0f и не парься.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-04-2011 21:08
-
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1077

Рейтинг



Ок, теперь проигрываются разные.

Но осталась проблема моргания. Оказалось, в анимации нулевому фрейму соответствует предпоследний фрейм, а не последний. Уменьшил везде на единицу - однако моргание всё равно заметно. Есть ли способ исправить?

Сейчас кстати запустил опфор - там дигл тоже моргает при переходе с одной idle-анимации на другую.

__________________
I'm on github
I'm on opendesktop.org

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

Старое сообщение 06-04-2011 05:28
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
FreeSlave писал:
Есть ли способ исправить?

есть конечно. Декомпилить модельку, и убрать флаг LOOP изо всех idle-анимаций. Проблема моргания происходит из-за того, что в халфе намеренно отключен блендинг между анимациями для viewmodel.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-04-2011 08:31
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



Дядя Миша Зачем его отключили и как его включить?

__________________
Base Defense on Steam, ModDB

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

Старое сообщение 06-04-2011 11:36
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
PLut писал:
Зачем его отключили и как его включить?

отключили его затем, что 80% анимаций с ним смотрятся по идиотски, поскольку оружие в любой момент из режима idle может перейти в режим стрельбы. Включить его можно только в движке. Я включал в ксаше, но результат получился мерзкий, как я и говорил выше.
Кроме того оружие имеет особенности анимации, при котором основной animtime не используется, а вся анимация идет через latched.animtime - это так называемая авто-анимация valve - без внешней синхронизации.
Это тоже затрудняет использование блендинга.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-04-2011 12:24
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



Дядя Миша Просто я вспомнил монтировку в хл2, там после удара монтировка сначала возвращается не на свою прежнюю позицию, а потом плавно сдвигается в нужное место. И сделано это кодом.

__________________
Base Defense on Steam, ModDB

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

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

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

Рейтинг



PLut ну в хл2 - да. И в старом-новом ксаше я это замучу. А здесь - как есть.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-04-2011 16:21
-
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1077

Рейтинг



Для чего нужна функция AddToPlayer и почему она прописана не у всех оружий? Например, у монтировки нет. И зачем вообще нужны эвенты (sc-файлы), если там прописано одно и то же? Можно ли от них вовсе избавиться?

__________________
I'm on github
I'm on opendesktop.org

Отредактировано FreeSlave 21-04-2011 в 13:19

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

Старое сообщение 21-04-2011 13:13
- За что?
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



FreeSlave, функция AddToPlayer вызывается каждый раз, когда игрок поднимает оружие.

Однако её можно и не добавлять, так как она и так имеется в родительском классе.

Насчет event файлов:
Это что-то типа хака, sc файл кешируется и индекс кеширования используется как ID эвента для клиента.

Однако я видел в некоторых играх, что в sc файлдах был какой-то код, связанные с индексами анимаций, моделей и т.д.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 21-04-2011 14:14
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
FreeSlave писал:
Для чего нужна функция AddToPlayer и почему она прописана не у всех оружий?

иконку поднятия оружия посылает в худ. Ну ту, которая справа появляется.
если эта иконка не нужна, то можно избавится.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-04-2011 14:17
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 22:30. Новая тема    Ответить
  Предыдущая тема   Следующая тема
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