Пятница, 03.05.2024, 03:08
Приветствую Вас Guest | RSS
Главная страница | Статьи | Регистрация | Вход
Меню сайта

Случайный рисунок

Категории каталога
Туториалы по маппингу (HL2) [68]
Туториалы по маппингу для Half-Life
Туториалы по текстурированию (HL2) [10]
Туторы по текстурированию для Half-Life
Туториалы по моделированию (HL2) [9]
Туторы по моделированию для Half-Life
Туториалы по программированию (HL2) [53]
Туторы по прагроммированию для Half-life
Другие туториалы (HL1 и HL2) [4]
Туторы которые не вошли в другие категории
Half-Life 2 Beta [1]
Статьи о npc и weapon в бете Half-Life 2, а так же мануалы и FAQ.
Туториалы по маппингу (HL1) [14]
Туторы по маппингу для Half-Life 1
Туториалы по текстурированию (HL1) [1]
Туторы по текстурированию для Half-Life 1
Туториалы по моделированию (HL1) [1]
Туторы по моделированию для Half-Life 1
Туториалы по программированию (HL1) [30]
Туторы по программированию для Half-Life 1

Наш опрос
Оцените мой сайт
Всего ответов: 632

Начало » Статьи » Туториалы по программированию (HL1)

Замедление игрока
Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее (если вообще сможет бегать), а прыгать ниже. В этой статье я расскажу, как замедлить игрока, если он несет в руках ту или иную пушку.
Ключевой функцией здесь является функция движка
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
}
 
Компилируем, запускаем и наслаждаемся большей реалистичностью игры.


Источник: http://www.hlfx.ru/forum/showthread.php?s=08077d3c0f5c95eb3c499ca8c7341ced&threadid=592
Категория: Туториалы по программированию (HL1) | Добавил: DetLeR (16.08.2007) | Автор: XaeroX
Просмотров: 921 | Рейтинг: 0.0 |

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

Кто в Онлайн

Друзья сайта

Баннеры

  Сайт CrazyArts   Black   Сообщество сайтов о Half-Life   Самый   Только   Все   hl2 top 100     Rambler's Top100  

игры
игры

  Каталог сайтов Планета Топ 100 - Planet Top 100       ТОП ЛУЧШИХ ИГРОВЫХ САЙТОВ           Detroit Team Site :: Моды от Detroit Team, видео, новости.   Naruto-kun[Звезда Наруто]  


The idea of dising: Homie7