Понедельник, 18.12.2017, 04:22

logo

Пользовательский поиск

Меню сайта
Категории раздела
Разное [15]
Tutorials
Создание карт [13]
Создание моделей [2]
Кодинг [14]
Создание карт CS [197]
Учебник cs-mapper
Свойства entity HL-CS [117]
Форма входа
Логин:
Пароль:
Наш сервер CS 1.6
Поиск
Наш опрос
Ваш телефон
Всего ответов: 103
Атмосфера
Друзья сайта


Главная » Статьи » HL Development » Кодинг

Замедление игрока, когда у него в руках тяжелое оружие

Замедление игрока, когда у него в руках тяжелое оружие

Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее (если вообще сможет бегать), а прыгать ниже. В этой статье я расскажу, как замедлить игрока, если он несет в руках ту или иную пушку.

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

Компилируем, запускаем и наслаждаемся большей реалистичностью игры.
Категория: Кодинг | Добавил: SuperStart (23.11.2010)
Просмотров: 1067 | Рейтинг: 0.0/0 |


Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright www.akksimo.net © 2017