Значит так.
Чтобы управлять включением и отключением фонаря в костюме, нам нужна переменная.
Идём в заголовочный файл плеера (hl2_player.h) и вставляем туда в приватную секцию переменную с понятным названием
code:
private:
// Собсна вот она
bool hasFlashlight;
// Ниже то, что уже есть
bool CommanderExecuteOne
Далее в секцию public добавляем функцию с названием вроде AddFlashlight(), он нужна для взаимодействия с переменной извне
code:
// Apply a battery – это уже есть в коде
bool ApplyBattery( float powerMultiplier = 1.0 );
// А вот тут добавляем
bool AddFlashlight();
Копируешь item_battery, меняешь название на item_flashlight и соответствующим образом переименовываешь классы. В функции MyTouch меняем то, что делает итем при подбирании:
code:
return (pHL2Player && pHL2Player->AddFlashlight());
Таким образом при подбирании фонарика будет задействована эта функция, но её пока нет, поэтому идём в hl2_player.cpp, ищем конструктор, в нём мы на всякий случай определим, что hasFlashlight у нас изначально ложь.
code:
CHL2_Player::CHL2_Player()
{
hasFlashlight = false;
Осталось только написать саму функцию управления фонариком, она очень проста. Идём куда-нибудь в район bool CHL2_Player::ApplyBattery и пилим:
code:
bool CHL2_Player::AddFlashlight( )
{
if (IsSuitEquipped() && !hasFlashlight) // если костюм надет и у нас пока нет фонарика
{
hasFlashlight = true; // надеваем фонарик
return true; // Функция должна возвращать истину, чтобы сам итем исчез при подбирании
}
return false; // если же нет костюма, или фонарь уже подобран, фонарь взять нельзя
}
Забыл самое важное: ищем функцию FlashlightTurnOn и добавляем эти две строчки (которые с комментариями)
code:
void CHL2_Player::FlashlightTurnOn( void )
{
//
if (!hasFlashlight) //если нет фонаря
return; //функция завершает работу
if( m_bFlashlightDisabled )
return;
...
Компилируем, радуемся результату, идём добавлять дорогого Alf-Life II в титры
Запрещается смотреть солдатам в глаза. Наносить ущерб собственности Альянса. Убивать комбайнов. Всегда носите при себе документы. Не поднимать шума после шести. И до шести, кстати, тоже.