HalfLife
February 15

Half-Life SDK: Разнообразные звуки стрельбы

Суть: Несколько звуков стрельбы для оружия.

Например, у "MP5" в "dlls/mp5.cpp" в "::Precache()" с помощью операции "PRECACHE_SOUND(...)" взято три звука: "hks(1-3).wav":

    PRECACHE_SOUND("weapons/hks1.wav");
    PRECACHE_SOUND("weapons/hks2.wav");
    PRECACHE_SOUND("weapons/hks3.wav");

Проигрывание звуков в "cl_dlls/ev_hldm.cpp" в функции "EV_FireMP5":

switch (gEngfuncs.pfnRandomLong(0, 1))
	{
	case 0:
		gEngfuncs.pEventAPI->EV_PlaySound(idx, origin, CHAN_WEAPON, "weapons/hks1.wav", 1, ATTN_NORM, 0, 94 + gEngfuncs.pfnRandomLong(0, 0xf));
		break;
	case 1:
		gEngfuncs.pEventAPI->EV_PlaySound(idx, origin, CHAN_WEAPON, "weapons/hks2.wav", 1, ATTN_NORM, 0, 94 + gEngfuncs.pfnRandomLong(0, 0xf));
		break;
	}

Здесь ставим свои звуки. Количество проигрываемых звуков регулируем вторым параметром "gEngfuncs.pfnRandomLong(a, b)". Например, если нужно проиграть три звука, то завместо 1 (единицы) пишем 2 (два) и додаём ещё один "case" ("case 2:"), копируя содержимое других "case". Только не забудьте додать нужный звук в "PRECACHE_SOUND" в функцию "Precache" нужного оружия.

Для других оружий всё тоже самое. Например, для "glock" в файле "cl_dlls/ev_hldm.cpp" в функции "EV_FireGlock1":

Вместо:

gEngfuncs.pEventAPI->EV_PlaySound(idx, origin, CHAN_WEAPON, "weapons/pl_gun3.wav", gEngfuncs.pfnRandomFloat(0.92, 1.0), ATTN_NORM, 0, 98 + gEngfuncs.pfnRandomLong(0, 3));

Додаём "switch-case" как в у "MP5" и кешируем звук в "Precache".

Вот и всё.