Zoom
Вот пока делать нечего, решил накатить тутор для "маленьких"
Ничего особенно, для новичков сойдет 
______________________________
Сложность: новичек.
Создание приближения для оружия. Рассмотрим несколько примеров создания зум-режима.
Для начала сделаем самый простой зум. Как у арбалета. Для нам потребуется код такого содержания:
В классе оружия нам потребуется сама функция, к примеру назовем её просто zoom:
и небольшая переменная:
Так же нам надо записать нашу переменную в DataDesk:
Теперь нам надо что б наш зум вызывался на ПКМ ( правая кнопка мыши ). Для этого мы идём в функцию ItemPostFrame и там напишем что-нибудь вроде этого:
С этим покончено. Теперь непосредственно перейдем к самому приближению. Для этого создадим функцию:
Так же надо сделать такие мелочи, что если вы в игре и, к примеру, у вас включен зум у оружия и вдруг вам пришло в голову переключить пушку не выключая зума, надо что б этот зум не заморозился на месте и его нельзя было убрать 
Для фикса этого бага надо в функции Holster сделать так
Полный пример функции:
Такой же метод надо всунуть с функцию Reload для того что бы зум возвращался в позицию ноль и проигрывалась анимация. Ну и напоследок в функции Drop, если у вас в проекте работает такая вещь как выброс оружия 
Если вам ненужны звуки при переключении "простой режим - зум" и обратно, то просто удалите строки начинающиеся с WeaponSound.
Ну вот собственно с самым легким зумом покончено
На этом пока всё.
To be continued…
______________________________
Удачного програмирования вам
Потом допишу более сложные примеры.
Вот пока делать нечего, решил накатить тутор для "маленьких"
______________________________
Сложность: новичек.
Создание приближения для оружия. Рассмотрим несколько примеров создания зум-режима.
Для начала сделаем самый простой зум. Как у арбалета. Для нам потребуется код такого содержания:
В классе оружия нам потребуется сама функция, к примеру назовем её просто zoom:
Код:
[COLOR=Blue]void[/Color] Zoom( [COLOR=Blue]void[/Color] );
Код:
[COLOR=Blue]bool[/Color] m_bZoomed;
Код:
DEFINE_FIELD( m_bZoomed, FIELD_BOOLEAN ),
Код:
[COLOR=Blue]if[/Color] ( pPlayer -> m_nButtons & IN_ATTACK2 ) [COLOR=Green]// если игрок нажмет на правую кнопку мышы[/COLOR]
{
Zoom(); [COLOR=Green]// то будем вызывать нашу фукцию zoom[/COLOR]
}
Код:
[COLOR=Blue]void[/Color]CWeaponTest::Zoom( [COLOR=Blue]void[/Color] )
{
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
[COLOR=Blue]if[/Color] ( pPlayer == NULL ) [COLOR=Blue]return[/Color];
[COLOR=Blue]if[/Color] ( m_bZoomed )
{
pPlayer -> ShowViewModel( [COLOR=Blue]true[/Color] ); [COLOR=Green]// пока игрок не нажал на ПКМ, то вью модель оружия будет видна[/COLOR]
WeaponSound( SPECIAL2 ); [COLOR=Green]// звук при нажатии[/COLOR]
pPlayer -> SetFOV( [COLOR=Blue]this[/Color], 0, 0.1f );
m_bZoomed = [COLOR=Blue]false[/Color]; [COLOR=Green]// m_bZoomed не активен[/COLOR]
}
[COLOR=Blue]else[/Color]
{
pPlayer -> ShowViewModel( [COLOR=Blue]false[/Color] ); [COLOR=Green]// вьюмодель будет уже скрыта, так как зум ативирован :)[/COLOR]
WeaponSound( SPECIAL1 ); [COLOR=Green]// звук при нажатии[/COLOR]
pPlayer -> SetFOV( [COLOR=Blue]this[/Color], 35, 0.1f ); [COLOR=Green]// 35 – значение насколько сильно приближение[/COLOR]
m_bZoomed = [COLOR=Blue]true[/Color]; [COLOR=Green]// m_bZoomed активен[/COLOR]
}
}

Для фикса этого бага надо в функции Holster сделать так
Код:
[COLOR=Blue]if[/COLOR] ( m_bZoomed )
{
Zoom();
}
Код:
[COLOR=Blue]bool[/COLOR] CWeaponTest::Holster( CBaseCombatWeapon *pSwitchingTo )
{
[COLOR=Blue]if[/COLOR] ( m_bZoomed )
{
Zoom();
}
[COLOR=Blue]return[/COLOR] BaseClass::Holster( pSwitchingTo );
}
Если вам ненужны звуки при переключении "простой режим - зум" и обратно, то просто удалите строки начинающиеся с WeaponSound.
Ну вот собственно с самым легким зумом покончено
To be continued…
______________________________
Удачного програмирования вам
Последнее редактирование: