HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)
Отправлено Vadiman 23-03-2016 в 19:32:
Есть проблемка с пулеметом из opposing force: перезарядка состоит из двух анимаций (SAW_RELOAD1_1 и SAW_RELOAD1_2) Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?
Отправлено PLut 24-03-2016 в 04:27:
Vadiman Смотри как в дробовике перезарядка сделана, вот по аналогии делается перезарядка пулемета.
__________________
Base Defense on Steam, ModDB
Отправлено ILZM 24-03-2016 в 05:15:
KorteZZ насчет скорости: это все уже есть, остались только проблемы с получением максимальной скорости на клиенте. Да и еще на клиенте есть квары cl_sidespeed, cl_forwardspeed, cl_backspeed и sv_maxspeed. Посмотри на клиенте input.cpp по поиску этих кваров. Там есть формулы высчитывания гипотенузы, т. е. именно той диагонали. Нужно всего лишь скормить этому коду максимальную скорость игрока на сервере
насчет условия: тут без куска кода не понять
Отправлено PLut 24-03-2016 в 06:09:
KorteZZ [Кодинг] Замедление игрока
__________________
Base Defense on Steam, ModDB
Отправлено Ku2zoff 24-03-2016 в 07:44:
Цитата:
Vadiman писал:
Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?
Там первая анимация проигрывается в Reload, а вторая в WeaponIdle. Довольно интересный и полезный подход, и вот почему:
Имеем очень длинную анимацию перезарядки (5 сек и более). Во время перезарадки хотим что-нибудь поюзать - хрен. Потому что время m_flNextAttack ещё не подошло, и игрок не тчинкает (функии PreThink и PostThink, не помню, какая из них). А вот если мы разрежем анимацию на 2 части, то после проигрывания первой и патроны в магазине сразу обновятся, и можно юзать что хочешь.
Я планирую длинные перезарадки оружий в своём моде понарезать таким образом.
Отправлено Chyvachok 24-03-2016 в 12:48:
Ku2zoff ну в опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты, чтобы указать правильную боди нужно уже перезарядить оружие.
Отправлено KorteZZ 24-03-2016 в 15:10:
Спасибо большое за помощь! Со скоростями разобрался, а насчет условий:
Это первичная атака Мосина. Мне надо сделать так, чтобы учитывался еще и последний патрон, как на Глоке.
C++ Source Code:
5 | g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 170 ); |
6 | m_flNextPrimaryAttack = m_flNextPrimaryAttack + 1.6; |
7 | m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_1DEGREES, 8192, BULLET_PLAYER_762MOS, 0); |
12 | g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 170 ); |
13 | m_flNextPrimaryAttack = m_flNextPrimaryAttack + 1.6; |
14 | m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_762MOS, 0); |
Что-нибудь в стиле:
C++ Source Code:
2 | SendWeaponAnim( MOSIN_FIRE_LAST); |
4 | SendWeaponAnim( MOSIN_FIRE1 + RANDOM_LONG(0,2)); |
Куда его поставить?__________________
Killing Floor: Horzine Outbreak
Отправлено Vadiman 24-03-2016 в 16:05:
Цитата:
Ku2zoff писал:
Там первая анимация проигрывается в Reload, а вторая в WeaponIdle. Довольно интересный и полезный подход, и вот почему:
В принципе оно работает, только вот при простое или после каждого выстрела вторая анимация начинает о себе активно напоминать)
Тут где-то был тутор по добавлению saw и в нем предлагали такой вариант:
C++ Source Code:
1 | if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 )) |
3 | SendWeaponAnim( SAW_RELOAD2 ); |
но проигрывается только 2-я
Отправлено Ku2zoff 24-03-2016 в 18:27:
Цитата:
Chyvachok писал:
опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты
Тащем-то, да, именно из-за бодей придумано разделение. Но почему бы его не использовать для других целей?
ИМХО, отображение патронов в ленте бодями, очень грамотный подход. Хотите увидеть неграмотный - посмотрите модели пулемётов из Day of Defeat. Там стопицот анимаций заведено для отображения патронов.
Цитата:
Vadiman писал:
В принципе оно работает, только вот при простое или после каждого выстрела вторая анимация начинает о себе активно напоминать)
В опфоре же не напоминает?
Цитата:
Vadiman писал:
где-то был тутор по добавлению saw и в нем предлагали такой вариант:
C++ Source Code:
Можно завести какую угодно переменную в классе оружия. И какую угодно временную задержку от неё считать. Прблема в том, что WeaponIdle - не самая лучшая функция, чтобы рисовать анимации и менять боди. Так уж устроена халфа, там всё завязано на тчинках CBasePlayer'a. Лучше юзать для мгновенной смены бодей функцию CBasePlayerItem::PostThink, из которой вызывается CBasePlayerWeapon::WeaponIdle. Если менять боди в посттчинке кбэйсплейеритем, то они будут меняться сразу, а не когда оружие протчинкает в очередной раз.
Добавлено 25-03-2016 в 00:27:
Цитата:
Vadiman писал:
if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 ))
{
SendWeaponAnim( SAW_RELOAD2 );
m_flSoundDelay = 1.5;
}
Косяк 100%.
Надо так:
C++ Source Code:
1 | if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 )) |
3 | m_flSoundDelay = UTIL_WeaponTimeBase() + 1.5; |
а затем в функции WeaponIdle
C++ Source Code:
1 | if (m_flSoundDelay <= UTIL_WeaponTimeBase()) |
3 | SendWeaponAnim( SAW_RELOAD2 ); |
Это просто навскидку. Но должно сработать.
В коде оригинальных халфовских оружий вполне достаточно примеров кода для всяких таких штук. Я не понимаю, почему вы эти коды не читаете внимательно, а копипастите бурду из сомнительных источников.
Отправлено Vadiman 24-03-2016 в 22:15:
Цитата:
Ku2zoff писал:
ИМХО, отображение патронов в ленте бодями, очень грамотный подход. Хотите увидеть неграмотный - посмотрите модели пулемётов из Day of Defeat.
Пока здесь не описали эти бодигруппы, я их вообще не замечал. Сложна. Наверно мне все-таки пулемет не нужен
Цитата:
Ku2zoff писал:
Это просто навскидку. Но должно сработать.
Нет, не работает. Я тоже заводил переменную, все работало как надо, только вот при простое или выстреле вторая анимация перезарядки снова появлялась. Но на мысль ты меня навел, буду эксперементировать)
Цитата:
Ku2zoff писал:
Я не понимаю, почему вы эти коды не читаете внимательно, а копипастите бурду из сомнительных источников.
Ну это как в фильме "матрица": ты смотришь на код и видишь женщину в красном, а мы.....выражаясь предельно просто - фигу
Вот например недавно решил гонома к себе в проект добавить. Еле-еле откопал код Демиурга. Вроде все четко прописано где какие функции, звуки, ивенты, а работает на выходе все наоборот: при ударе руками звуки плевков, при плевках рычание какое-то, или непись вдруг сквозь игрока начинает пробегать 
PS: А тебе удалось побороть тот баг с ногами от 1-го лица?
Отправлено ***FantoM*** 25-03-2016 в 09:24:
Цитата:
Vadiman писал:
Вот например недавно решил гонома к себе в проект добавить. ... при ударе руками звуки плевков, при плевках рычание какое-то, или непись вдруг сквозь игрока начинает пробегать
не совпадают евенты или анимация в модели с кодом мoнстра.
Отправлено Ku2zoff 25-03-2016 в 16:29:
Цитата:
Vadiman писал:
А тебе удалось побороть тот баг с ногами от 1-го лица?
Нет. Если рисовать ноги в отдельном вьюпорте, к ним на некоторых картах в определённых местах применяется эффект типа fullbright. Не знаю, с чем это связано. Если рисовать во вьюпорте вьюмодели - то ноги могут летать где-то за пределами уровня.
Добавлено 25-03-2016 в 22:27:
Цитата:
Vadiman писал:
ты смотришь на код и видишь женщину в красном
Не целиком правда, а по частям: к примеру, только одну ногу или руку
Мои познания в кодинге всё-таки не супер.
Добавлено 25-03-2016 в 22:29:
Цитата:
KorteZZ писал:
Что-нибудь в стиле:
C++ Source Code:
if (m_iClip == 1)
____SendWeaponAnim( MOSIN_FIRE_LAST);
else
____SendWeaponAnim( MOSIN_FIRE1 + RANDOM_LONG(0,2));
Куда его поставить?
Ну куда? В эвент на клиенте, вестимо. По аналогии с глоком.
Отправлено KorteZZ 25-03-2016 в 16:49:
Ну, надо сделать чтобы были условия:
1) Если с зумом и патронов больше 1, то играть MOSIN_IRON_SHOOT
2) Если с зумом и патрон единственный, то играть MOSIN_IRON_SHOOT_LAST
3) Если без змуа и патронов больше 1, то... MOSIN_SHOOT
4, Если без зума и патрон единственный, то... MOSIN_SHOOT_LAST
А просто по аналогии с глоком я сделал. У меня XashXT. Сейчас проигрывается стандартная анимация выстрела, вне зависимости от наличия зума. Он просто убирается.
__________________
Killing Floor: Horzine Outbreak
Отправлено Shadow762 25-03-2016 в 21:40:
***FantoM*** А у тебя есть псевдоисходники опфора? Поделишься? Я на каком-то зарубежном сайте ухватил файлик волтигоры, но гонома там не видел.
Отправлено ***FantoM*** 26-03-2016 в 00:48:
Цитата:
Shadow762 писал:
А у тебя есть псевдоисходники опфора? Поделишься?
Я лично не встречай таких исходников
Цитата:
Shadow762 писал:
... но гонома там не видел.
Гонома лучше создать на основе зомби + добавить атаку из bullsquid и пожирания трупов
по моему ничего сложного