Registration - or - Enter
RetributionRetribution

Отечественный мод, в котором мы можем сыграть за самого GMan´а!...

27/03/2003

Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее


  • Description
  • Link and installation

Замедление игрока

Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее


Author/s of lesson : XaeroX
Views : 429 ( +1 )
Uploaded by : Streit
Created : 04/07/2011 6:22:55 PM
Source : http://www.hlfx.ru/forum
Rating :
 ( 0 ) 
Share :


Available following translations : | russian |

Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее (если вообще сможет бегать), а прыгать ниже. В этой статье я расскажу, как замедлить игрока, если он несет в руках ту или иную пушку. Ключевой функцией здесь является функция движка pfnSetClientMaxspeed. Ее нужно будет вызвать дважды – когда оружие появляется в руках (замедлить или ускорить игрока), и когда появляется другое (восстановить старое значение скорости). В коде оружия для этого выделены специальные функции – Deploy и Holster. Рассмотрим пример с базукой. В функции Deploy нам надо замедлить игрока (установим максимальную скорость 120), а в функции Holster – восстановить скорость по умолчанию (установив ее в 0). Открываем rpg.cpp, находим функцию CRpg :: Deploy и добавляем туда новый код. Получается вот что:

Code:

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. Должно получиться вот что:

Code:

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
}


Similar1. Исходный код ножа - weapon_knife (Нож) с двумя режимами атаки: Slash и Stab.
2. Добавление новых классов для монстр - Мы будем добавлять новый класс Блэк Опс из Оппосинг Форс
3. И снова наследование классов :) - Казалось бы тема наследования классов давно избита, ан нет всё ещё существуют вопросы, правда про чуть боле сложное наследование.
4. Сохранение анимаций - как сделать так чтобы анимации на оружии(допустим) сохранялись, например все помнят КС вот там был Usp
5. Quake strafing & DoD bobing styles - Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл.
6. Наследование классов в С++ - В этом туторе я попытаюсь кратко рассказать про наследование классов в С++
7. Создание сценариев - Для создания сценариев (aka скриптов) в Half-Life существуют две энтити: scripted_sequence и scripted_sentence. Первая отвечает за движения, выполняемые монстром/персонажем, будь то ходьба, бег, нажатие кнопки, тряска автомата с газировкой или почёсывание подбородка. Вторая служит для того, чтобы персонаж произнес какую-то фразу. При этом его голова повернётся в сторону слушателя, и рот будет открываться в соответствии с амплитудой звука.
8. Изменение цвета HUD'а(полное)! - Изменение цвета HUD'а(полное)! Но прицелы придётся переделывать вам самим! Сдесь я перевевёл туториал с twhl.info на русский язык!
You cannot comment, because you are not registered.
    Sleepytime
    Half-Life 2Sleepytime
    Machine Gun
    Half-LifeMachine Gun
    Lightning Gun
    Half-LifeLightning Gun
    Hyperblaster
    Half-LifeHyperblaster