Статистика по выложенному объему ( Общая )
Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее
Замедление игрока
Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее
Автор / ы урока : XaeroX Просмотров : 1521 ( +1 ) Прислал / (а) : Streit Дата создания : 07.04.2011 21:22:55 Источник : http://www.hlfx.ru/forum Рейтинг : ( 5 ) Поделиться :
Имеются следующие переводы : |
русский |
Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее (если вообще сможет бегать), а прыгать ниже. В этой статье я расскажу, как замедлить игрока, если он несет в руках ту или иную пушку.
Ключевой функцией здесь является функция движка pfnSetClientMaxspeed. Ее нужно будет вызвать дважды – когда оружие появляется в руках (замедлить или ускорить игрока), и когда появляется другое (восстановить старое значение скорости). В коде оружия для этого выделены специальные функции – Deploy и Holster.
Рассмотрим пример с базукой. В функции Deploy нам надо замедлить игрока (установим максимальную скорость 120), а в функции Holster – восстановить скорость по умолчанию (установив ее в 0).
Открываем rpg.cpp, находим функцию CRpg :: Deploy и добавляем туда новый код. Получается вот что:
BOOL CRpg :: Deploy( )
{
// ограничиваем скорость игрока до 120
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 120 );
if ( m_iClip == 0 )
{
return DefaultDeploy( "models/v_rpg.mdl", "models/p_rpg.mdl", RPG_DRAW_UL, "rpg" );
}
return DefaultDeploy( "models/v_rpg.mdl", "models/p_rpg.mdl", RPG_DRAW1, "rpg" );
}
Теперь переходим в функцию CRpg
Hoster. Должно получиться вот что:
void CRpg :: Holster( int skiplocal /* = 0 */ )
{
// восстанавливаем скорость игрока
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 0 );
m_fInReload = FALSE;// cancel any reload in progress.
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
SendWeaponAnim( RPG_HOLSTER1 );
#ifndef CLIENT_DLL
if (m_pSpot)
{
m_pSpot->Killed( NULL, GIB_NEVER );
m_pSpot = NULL;
}
#endif
}
Похожие 1. Создание нового оружия - В этом туторе не будет объяснено КАК сделать новое оружие, ибо для каждого оружия нужен свой код. Здесь просто будет приведена информация о тех нюансах без которых ваше оружие не будет работать 2. Изменяем классы монстров злой барн - Как известно, первое что хочет сделать начинающий кодер (по крайней так было у меня ) это написать какое-нибудь оружие и изменить монстров. 3. Больше слотов и позиций для оружия - Больше слотов и позиций для оружия 4. Мазлфлэш на брашах - Мазлфлэш на брашах 5. Создание сценариев - Для создания сценариев (aka скриптов) в Half-Life существуют две энтити: scripted_sequence и scripted_sentence. Первая отвечает за движения, выполняемые монстром/персонажем, будь то ходьба, бег, нажатие кнопки, тряска автомата с газировкой или почёсывание подбородка. Вторая служит для того, чтобы персонаж произнес какую-то фразу. При этом его голова повернётся в сторону слушателя, и рот будет открываться в соответствии с амплитудой звука. 6. Water Splash - Добавляем брызги при выстреле по воде
Вы не можете комментировать, т.к. вы не зарегистрированы.