Добавление woosh

Открываем hl2_player.cpp
Вписываем над "DEFINE_SOUNDPATCH( m_sndLeeches ),"
DEFINE_SOUNDPATCH(m_pWooshSound),
Добавим его определение в хэдер "hl2_player.h". Объявите наш "m_pWooshSound" в разделе "private:"
CSoundPatch *m_pWooshSound;
Подготовим место под наши функции. В хэдер "hl2_player.h" ниже виртуального типа "OnRestore();" пишем
virtual void CreateSounds(void); void UpdateWoosh(void);
Теперь прямо над "void CHL2_Player::StopLoopingSounds( void )" вписываем
//----------------------------------------------------------------------------- // Creating Sound //----------------------------------------------------------------------------- void CHL2_Player::CreateSounds() { if (!m_pWooshSound) { CSoundEnvelopeController &controller = CSoundEnvelopeController::GetController(); CPASAttenuationFilter filter(this); m_pWooshSound = controller.SoundCreate(filter, entindex(), "HL2Player.Woosh"); controller.Play(m_pWooshSound, 0, 100); } }
Теперь заставляем работать наш "CreateSounds". Внутри "Spawn(void)" ниже "BaseClass::Spawn();" добавляем
CreateSounds();
И теперь делаем пре-кэш звука. Внутри "void CHL2_Player::Precache( void )" пишем
PrecacheScriptSound("HL2Player.Woosh");
(Этого небыло в видео) Не забываем останавливать наш звук.
Внутри "void CHL2_Player::StopLoopingSounds( void )" в самом начале вписываем
if (m_pWooshSound) { CSoundEnvelopeController &controller = CSoundEnvelopeController::GetController(); controller.SoundDestroy(m_pWooshSound); m_pWooshSound = NULL; }
Добавляем обновление громкости нашего звука
void CHL2_Player::UpdateWoosh(void) { if (m_pWooshSound) { CSoundEnvelopeController &controller = CSoundEnvelopeController::GetController(); float fWooshVol = GetAbsVelocity().Length() - MIN_WOOSH_SPEED; if (fWooshVol < 0.0f) { controller.SoundChangeVolume(m_pWooshSound, 0.0f, 0.1f); return; } fWooshVol /= 2000.0f; if (fWooshVol > 1.0f) fWooshVol = 1.0f; controller.SoundChangeVolume(m_pWooshSound, fWooshVol, 0.1f); } }
Теперь заставляем его работать. Внутри "void CHL2_Player::PostThink( void )" пишем
UpdateWoosh();
Также нужно определить наш "MIN_WOOSH_SPEED". Открываем хэдер "hl2_shareddefs.h" и вписываем
#define MIN_FLING_SPEED 750
На этом этапе с кодом покончено. Компилируем и приступаем к самой игре.
После компиляции перекидываем библиотеки client и server в наш мод.
Создаем директорию sound и кладем туда наш файл со звуком ветра.
Далее в директории "scripts" создаем файл "game_sounds_mymod.txt" и вписываем в него
"HL2Player.Woosh" { "channel" "CHAN_STATIC" "volume" "1.00" "soundlevel" "SNDLVL_85dB" "pitch" "100" "wave" "woosh.wav" }
Далее, вам нужен файл "game_sounds_manifest.txt" от той игры под которую вы делаете ваш мод, в моей случае это "HL2:EP2" и файл я беру его от туда.
Добавляем в этот файл пре-кэш нашего нового файла со звуками.
"precache_file" "scripts/game_sounds_mymod.txt"
На этом все.