| Геймплей Half-life рассчитан на вдумчивые позиционные бои, где можно отойти в укрытие, перезарядится или сменить оружие. Вооружение игрока отсортировано по типам и разложено в слоты, из которых и выбирается. Наглядно, но медленно. Я уже экспериментировал с переключением оружия (SoHL RB 1.0), но полученый результат меня не удовлетворил. Геймплей К62, хоть и построен в стиле survival horror, но все же в боевом плане задумывался как аркадный, следовательно игрока нужно избавить от длительного переключения основного оружия. В итоге решение оказалось очень простым и в то же время радикально отличным от прежних экспериментов. Итак, работать будем на сервере, в файлах player.h и player.cpp Откроем player.h, найдем описание класса CBasePlayer и после строчки 
 
 BOOL SwitchWeapon( CBasePlayerItem *pWeapon );
 
 Вставляем объявление: 
 
 BOOL IdSwitchWeapon( int idWeapon);
 
 Теперь открываем player.cpp и находим там функцию CBasePlayer::SwitchWeapon(), после нее (после закрывающей фигурной скобки, естественно) вставляем следующую функцию: 
 
BOOL CBasePlayer :: IdSwitchWeapon( int idWeapon)
{
 CBasePlayerItem *pCheck;
 int i;
 for ( i = 0 ; i <= MAX_ITEM_TYPES ; i++ )
 {
 pCheck = m_rgpPlayerItems[ i ];
 while (pCheck)
 {
 if ((pCheck) && (pCheck->m_iId == idWeapon) && (pCheck != m_pActiveItem))
 {
 if (pCheck->CanDeploy()) SwitchWeapon(pCheck);
 return TRUE;
 }
 pCheck = pCheck->m_pNext;
 }
 }
 return FALSE;
}
 Теперь в этом же player.cpp находим функцию CBasePlayer::ImpulseCommands() и в конструкции swtch перед default добавляем строки для своего оружия, например: 
 
 case 221: 
 IdSwitchWeapon(WEAPON_CROWBAR);
 break;
 case 222: 
 IdSwitchWeapon(WEAPON_GLOCK);
 break;
 case 223: 
 IdSwitchWeapon(WEAPON_SHOTGUN);
 break;
 
 Естественно, импульсов можно занять и больше - хоть под все стволы (лично я взрывчатку оставлю по-старинке), только нужно следить, чтоб они уже не были заняты. Осталось вписать в конфиг: 
 
bind [key] "impulse 221"
bind [key] "impulse 222"
bind [key] "impulse 223"
 Вместо [key] подставьте удобные клавиши.
 |