Есть проблемка с пулеметом из opposing force: перезарядка состоит из двух анимаций (SAW_RELOAD1_1 и SAW_RELOAD1_2) Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?
KorteZZ насчет скорости: это все уже есть, остались только проблемы с получением максимальной скорости на клиенте. Да и еще на клиенте есть квары cl_sidespeed, cl_forwardspeed, cl_backspeed и sv_maxspeed. Посмотри на клиенте input.cpp по поиску этих кваров. Там есть формулы высчитывания гипотенузы, т. е. именно той диагонали. Нужно всего лишь скормить этому коду максимальную скорость игрока на сервере
насчет условия: тут без куска кода не понять
Vadiman писал: Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?
Там первая анимация проигрывается в Reload, а вторая в WeaponIdle. Довольно интересный и полезный подход, и вот почему:
Имеем очень длинную анимацию перезарядки (5 сек и более). Во время перезарадки хотим что-нибудь поюзать - хрен. Потому что время m_flNextAttack ещё не подошло, и игрок не тчинкает (функии PreThink и PostThink, не помню, какая из них). А вот если мы разрежем анимацию на 2 части, то после проигрывания первой и патроны в магазине сразу обновятся, и можно юзать что хочешь.
Я планирую длинные перезарадки оружий в своём моде понарезать таким образом.
Ku2zoff ну в опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты, чтобы указать правильную боди нужно уже перезарядить оружие.
Ku2zoff писал: Там первая анимация проигрывается в Reload, а вторая в WeaponIdle. Довольно интересный и полезный подход, и вот почему:
В принципе оно работает, только вот при простое или после каждого выстрела вторая анимация начинает о себе активно напоминать)
Тут где-то был тутор по добавлению saw и в нем предлагали такой вариант:
Chyvachok писал: опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты
Тащем-то, да, именно из-за бодей придумано разделение. Но почему бы его не использовать для других целей?
ИМХО, отображение патронов в ленте бодями, очень грамотный подход. Хотите увидеть неграмотный - посмотрите модели пулемётов из Day of Defeat. Там стопицот анимаций заведено для отображения патронов.
Цитата:
Vadiman писал: В принципе оно работает, только вот при простое или после каждого выстрела вторая анимация начинает о себе активно напоминать)
В опфоре же не напоминает?
Цитата:
Vadiman писал: где-то был тутор по добавлению saw и в нем предлагали такой вариант:
C++ Source Code:
m_flSoundDelay
Можно завести какую угодно переменную в классе оружия. И какую угодно временную задержку от неё считать. Прблема в том, что WeaponIdle - не самая лучшая функция, чтобы рисовать анимации и менять боди. Так уж устроена халфа, там всё завязано на тчинках CBasePlayer'a. Лучше юзать для мгновенной смены бодей функцию CBasePlayerItem::PostThink, из которой вызывается CBasePlayerWeapon::WeaponIdle. Если менять боди в посттчинке кбэйсплейеритем, то они будут меняться сразу, а не когда оружие протчинкает в очередной раз.
В коде оригинальных халфовских оружий вполне достаточно примеров кода для всяких таких штук. Я не понимаю, почему вы эти коды не читаете внимательно, а копипастите бурду из сомнительных источников.
Ku2zoff писал: ИМХО, отображение патронов в ленте бодями, очень грамотный подход. Хотите увидеть неграмотный - посмотрите модели пулемётов из Day of Defeat.
Пока здесь не описали эти бодигруппы, я их вообще не замечал. Сложна. Наверно мне все-таки пулемет не нужен
Цитата:
Ku2zoff писал: Это просто навскидку. Но должно сработать.
Нет, не работает. Я тоже заводил переменную, все работало как надо, только вот при простое или выстреле вторая анимация перезарядки снова появлялась. Но на мысль ты меня навел, буду эксперементировать)
Цитата:
Ku2zoff писал: Я не понимаю, почему вы эти коды не читаете внимательно, а копипастите бурду из сомнительных источников.
Ну это как в фильме "матрица": ты смотришь на код и видишь женщину в красном, а мы.....выражаясь предельно просто - фигу
Вот например недавно решил гонома к себе в проект добавить. Еле-еле откопал код Демиурга. Вроде все четко прописано где какие функции, звуки, ивенты, а работает на выходе все наоборот: при ударе руками звуки плевков, при плевках рычание какое-то, или непись вдруг сквозь игрока начинает пробегать
PS: А тебе удалось побороть тот баг с ногами от 1-го лица?
Vadiman писал: Вот например недавно решил гонома к себе в проект добавить. ... при ударе руками звуки плевков, при плевках рычание какое-то, или непись вдруг сквозь игрока начинает пробегать
не совпадают евенты или анимация в модели с кодом мoнстра.
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));
Куда его поставить?
Ну куда? В эвент на клиенте, вестимо. По аналогии с глоком.
1) Если с зумом и патронов больше 1, то играть MOSIN_IRON_SHOOT
2) Если с зумом и патрон единственный, то играть MOSIN_IRON_SHOOT_LAST
3) Если без змуа и патронов больше 1, то... MOSIN_SHOOT
4, Если без зума и патрон единственный, то... MOSIN_SHOOT_LAST
А просто по аналогии с глоком я сделал. У меня XashXT. Сейчас проигрывается стандартная анимация выстрела, вне зависимости от наличия зума. Он просто убирается.