Пятница, 29.03.2024, 14:13
Приветствую Вас 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

Наш опрос
Приводить ли сайт в чувство?
Всего ответов: 735

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

Альтернативный режим стрельбы пистолета.
В этом туторе я покажу как добавить к пистолету альтернативный режимы стрельбы, а точнее на левую кнопку стреляет как обычно, а на правую 3 патрона.

Итак приступим: зайдём в weapon_pistol.cpp.

Синий цвет: Код Valve
Красный цвет: Новый код

Шаг 1 Инициализация:


Перейдите к этой части кода:

private:
float m_flSoonestPrimaryAttack;
float m_flLastAttackTime;
float m_flAccuracyPenalty;
int m_nNumShotsFired;


Ниже этого кода вставляем следующее:

float m_flNextFireModeChange;
int nFireCount;
bool bFiring;
bool bFireMode;
void checkCount();
void FireMode();



Затем идите к описанию данных initializations:

BEGIN_DATADESC( CWeaponPistol )
DEFINE_FIELD( m_flSoonestPrimaryAttack, FIELD_TIME ),
DEFINE_FIELD( m_flLastAttackTime, FIELD_TIME ),
DEFINE_FIELD( m_flAccuracyPenalty, FIELD_FLOAT ),
DEFINE_FIELD( m_nNumShotsFired, FIELD_INTEGER ),



Надо добавить следующий код:

DEFINE_FIELD( m_flNextFireModeChange, FIELD_TIME ),
DEFINE_FIELD( nFireCount, FIELD_INTEGER ),
DEFINE_FIELD( bFiring, FIELD_BOOLEAN ),
DEFINE_FIELD( bFireMode, FIELD_BOOLEAN ),



Найдите это:

CWeaponPistol::CWeaponPistol( void )
{
m_flSoonestPrimaryAttack = gpGlobals->curtime;
m_flAccuracyPenalty = 0.0f;

m_fMinRange1 = 24;
m_fMaxRange1 = 1500;
m_fMinRange2 = 24;
m_fMaxRange2 = 200;

m_bFiresUnderwater = true;



И добавьте это:

nFireCount = 3;
bFiring = false;
bFireMode = false;
m_flNextFireModeChange = gpGlobals->curtime;



Шаг 2 Запрос к checkCount():


Добавить: checkCount(); в CWeaponPistol::ItemPostFrame

Показываю как это нужно сделать:


void CWeaponPistol::ItemPostFrame( void )
{
...
...

checkCount();
}





Шаг 3 Введение функций:


Создайте где нибудь ниже функцию:


void CWeaponPistol::FireMode( void )
{
if ( m_flNextFireModeChange < gpGlobals->curtime )
{
nFireCount = 3;
bFireMode = !bFireMode;
m_flNextFireModeChange = gpGlobals->curtime + 0.5f;
}
}



И ещё ниже создайте вот эту:

void CWeaponPistol::checkCount( void )
{
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );

if (pPlayer == NULL)
return;


if (pPlayer->m_afButtonPressed & IN_ATTACK2)
{
if(bFireMode)
bFiring = true;
nFireCount = 0;
}else if (pPlayer->m_afButtonReleased & IN_ATTACK2)
{
bFiring = false;
}

if((bFireMode==false)&&(gpGlobals->curtime - m_flLastAttackTime >= 0.1f)){
if(nFireCount < 3){
PrimaryAttack();
nFireCount++;
}
}
if((bFiring)&&(gpGlobals->curtime - m_flLastAttackTime >= 0.1f))
PrimaryAttack();
}



Шаг 4:


Найдите функцию перезарядки и добавьте: 'bFiring = false':

bool CWeaponPistol::Reload( void )
{
bool fRet = DefaultReload( GetMaxClip1(), GetMaxClip2(), ACT_VM_RELOAD );
if ( fRet )
{

bFiring = false;
WeaponSound( RELOAD );
m_flAccuracyPenalty = 0.0f;
}

return fRet;
}




Так вроде всё.

Источник: http://stav-mapping.info/e107_plugins/content/content.php?content.45
Категория: Туториалы по программированию (HL2) | Добавил: DetLeR (14.07.2007) | Автор: WeB-Monster
Просмотров: 1530 | Комментарии: 3 | Рейтинг: 5.0 |

Всего комментариев: 3
3 хуёф вам  
1
Как можно так УЁБИЩНО оформлять тутор? синий шрифт на сером фоне ну уебан говно хуйня

2 Chyvak  
1
Сделай для автомата!

1 Duffman™  
0
Мне пригодица, полезная штука, можно приспособить и к автомату. happy Зачот

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

Кто в Онлайн

Друзья сайта

Баннеры

  Сайт 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