keep silence
-
Автор темы
- #1
Всем привет! Дело было вечером, делать было нечего. Более бесполезной функции придумать сложно, но всё же.
Прежде всего, рекомендую ознакомиться с гайдом для новичков от xLamantine (*тык*)
Ознакомились? Тогда без лишних прелюдий приступаем.
Так как у меня всё выполняется в отдельном потоке, хитсаунды я тоже запихну в отдельную функцию. Вы можете это сделать просто в while(true) в мейне
Прежде всего, там где у вас инклуды, подключаем след. библиотеку:
Теперь нам нужно получить локального игрока, и делается это очень просто:
В моём случае:
В вашем:
Теперь нам нужно получить общее кол-во попаданий на сервере, делается это также просто:
Ах да, ещё над циклом while(true) нам понадобиться переменная типа int, в которой мы будем хранить старое кол-во попаданий:
Теперь, чтобы наши супериор хитсаунды работали после смены карты, нам понадобиться маленькая проверочка:
Думаю, не стоит обьяснять, зачем она нужна? (напоминаю: hitsCount - общее кол-во попаданий на сервере)
А теперь, самое главное - сами хитсаунды :) Вот, для чего нам понадобилась переменная oldHitsCount.
Тут всё очень-очень просто, если кол-во попаданий на сервере не совпадает со старым их кол-вом, то мы будем воспроизводить файл "hitsound.wav" (который, в данной ситуации, должен храниться в папке с билдом).
Стоит уточнить момент с SND_ASYNC. Если поставить SND_SYNC, то перед воспроизведением PlaySound будет ждать, пока доиграет прошлый хитсаунд, что, согласитесь, не круто.
Но, теперь встал вопрос: как менять громкость самих хитсаундов? Мы же не интернал читло кодим, громкость самой кс нас не волнует.
Всё очень просто:
Цифрами от 1 до 5 я условно подписал громкость. 5 - 100%, 1 - хз, но уж точно не 0 :)
Вода полезна для здоровья. Всем хорошего настроения! :)
Прежде всего, рекомендую ознакомиться с гайдом для новичков от xLamantine (*тык*)
Ознакомились? Тогда без лишних прелюдий приступаем.
Так как у меня всё выполняется в отдельном потоке, хитсаунды я тоже запихну в отдельную функцию. Вы можете это сделать просто в while(true) в мейне
Прежде всего, там где у вас инклуды, подключаем след. библиотеку:
C++:
#pragma comment(lib, "Winmm.lib")
В моём случае:
C++:
DWORD localPlayer = Player::GetPlayer();
C++:
DWORD localPlayer = Mem.Read<DWORD>(clientModule + dwLocalPlayer);
C++:
int hitsCount = Mem.Read<int>(localPlayer + m_totalHitsOnServer);
C++:
int oldHitsCount = 0;
C++:
if (hitsCount == 0) oldHitsCount = 0;
А теперь, самое главное - сами хитсаунды :) Вот, для чего нам понадобилась переменная oldHitsCount.
C++:
if (hitsCount != oldHitsCount)
{
PlaySound("hitsound.wav", NULL, SND_ASYNC);
oldHitsCount = hitsCount;
}
Стоит уточнить момент с SND_ASYNC. Если поставить SND_SYNC, то перед воспроизведением PlaySound будет ждать, пока доиграет прошлый хитсаунд, что, согласитесь, не круто.
Но, теперь встал вопрос: как менять громкость самих хитсаундов? Мы же не интернал читло кодим, громкость самой кс нас не волнует.
Всё очень просто:
C++:
// 1 (min)
waveOutSetVolume(0, 858993459);
// 2
waveOutSetVolume(0, 1717986918);
// 3
waveOutSetVolume(0, -1717986919);
// 4
waveOutSetVolume(0, -858993460);
// 5 (max)
waveOutSetVolume(0, -1);
C++:
int oldHitsCount - 0;
while (true)
{
DWORD localPlayer = Mem.Read<DWORD>(clientModule + dwLocalPlayer);
int hitsCount = Mem.Read<int>(localPlayer + m_totalHitsOnServer);
if (hitsCount == 0) oldHitsCount = 0;
else if (hitsCount != oldHitsCount)
{
waveOutSetVolume(0, -1); // или какую вы там громкость хотите
PlaySound("hitsound.wav", NULL, SND_ASYNC);
oldHitsCount = hitsCount;
}
Sleep(1);
}
Вода полезна для здоровья. Всем хорошего настроения! :)