Воскресенье, 19.11.2017, 22:24
 
Приветствую Вас Guest | RSS
Главная страница | [HL2]Скрываем оружие на лестнице(тутор) - Форум | Регистрация | Вход
[Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Игровая мастерская » Программирование » [HL2]Скрываем оружие на лестнице(тутор)
[HL2]Скрываем оружие на лестнице(тутор)
Dark_AlexДата: Суббота, 04.06.2011, 22:35 | Сообщение # 1
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
Приветствую всех.Данный тутор может быть полезен не всем,т.к умелые руки и без меня смогут такое провернуть=)
Сегодня мы делаем так,что бы когда игрок лез по лестнице скрывалось оружие.(и все его функции)
Кому-то может пригодиться.
Поехали.
Откроем Gamemovement.cpp
Находим функцию,что отвечает за положение игрока на лестнице.
Code
bool CGameMovement::LadderMove( void )

И после строчек
Code
// no ladder in that direction, return
if ( pm.fraction == 1.0f || !OnLadder( pm )  )
        return false;

Вставляем(добавляем)
Code
//Dark_Alex No weapon on ladders
m_pWeapon = player->GetActiveWeapon();
if( m_pWeapon )
        m_pWeapon->Holster();

Теперь Работаем с обратной функцией(когда игрок слезает с лестницы)
Code
void CGameMovement::PlayerMove( void )

Сменим
Code
if ( !LadderMove() && ( player->GetMoveType() == MOVETYPE_LADDER ) )
{

        // Clear ladder stuff unless player is dead or riding a train
        // It will be reset immediatly again next frame if necessary
        player->SetMoveType( MOVETYPE_WALK );
        player->SetMoveCollide( MOVECOLLIDE_DEFAULT );
}


На

Code
if ( !LadderMove() && ( player->GetMoveType() == MOVETYPE_LADDER ) )
{
        //No Weapons on ladders
        if ( m_pWeapon )
        {
            m_pWeapon->Deploy();
        }

        // Clear ladder stuff unless player is dead or riding a train
        // It will be reset immediatly again next frame if necessary
        player->SetMoveType( MOVETYPE_WALK );
        player->SetMoveCollide( MOVECOLLIDE_DEFAULT );
}


Итак,нам осталось зарегистрировать функцию m_pWeapon в данном классе,я вставил следующий код сразу после указателя игрока(Player pointer)
Code
CBasePlayer *player;
//No Weapons on ladders
CBaseCombatWeapon *m_pWeapon;


Так,мы сделали чтоб оружие скрывалось на лестницах,но оно ещё может стрелять итп.
Нужно это исправить,заходим в basecombatcharacter_shared.cpp
И следуем к функции Weapon_CanSwitchTo( ...
Добавим несколько строк.
Code
bool CBaseCombatCharacter::Weapon_CanSwitchTo( CBaseCombatWeapon *pWeapon )
{

        //Dark_Alex No Weapons on ladders
        if( GetMoveType() == MOVETYPE_LADDER )
            return false;

        if( IsPlayer() )
        .
        .
        .


Это было сделано для того,чтоб нельзя было сменить оружие,теперь выключаем стрельбу.
В basecombatweapon_shared.cpp следуем к ItemPostFrame() функции.
Так же добавим несколько строк.
Code
void CBaseCombatWeapon::ItemPostFrame( void )
{
        CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
        if (!pOwner)
            return;

        //Dark_Alex No Weapons on ladders
        if( pOwner->GetMoveType() == MOVETYPE_LADDER )
            return;
        .
        .
        .


Вот собственно и всё.Если что упустил,то исправляйте(мог накосячить)
А так же можно будет подключить анимацию рук,например.Но это уже давайте сами =)
Спасибо всем кто дочитал до данного предложения cool
Источник http://articles.thewavelength.net/
Переводил я. (Dark_Alex)
P.S написал бы в раздел статей,но уполномочий таких не имею

P.S2 Если надо будет перевести ещё какой тутор,который вас заинтересует,пишите=) Я добрый=)


Было отредактированно - Dark_Alex - Суббота, 04.06.2011, 23:09
 
AndreazzzДата: Воскресенье, 05.06.2011, 10:07 | Сообщение # 2
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
Quote (Dark_Alex)
P.S написал бы в раздел статей,но уполномочий таких не имею

Статью можно добавить и ждать пока её не проверит модератор/админ.


 
StriderДата: Воскресенье, 05.06.2011, 12:32 | Сообщение # 3
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
Andreazzz, Проверенный only


Ох и сложная эта работа, из болота тащить два вмода...
 
DetLeRДата: Воскресенье, 05.06.2011, 18:52 | Сообщение # 4
Engineer
Группа: Администраторы
Сообщений: 1731
Статус: Offline
Dark_Alex, пофиксь баг на который указал дядя миша на ксм и я добавлю.
 
Dark_AlexДата: Воскресенье, 05.06.2011, 19:14 | Сообщение # 5
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
DetLeR,
Будет время сделаю
 
Форум » Игровая мастерская » Программирование » [HL2]Скрываем оружие на лестнице(тутор)
Страница 1 из 11
Поиск:

Помощь в разработке форума: HOMiE7