пример кода можно пожалуйста?по отлову звука.
пример кода можно пожалуйста?
#include <sourcemod>
#include <sdktools>
public void OnPluginStart()
{
AddNormalSoundHook(HookSounds);
}
public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed)
{
PrintToChatAll("sample: %s", sample);
}
public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed)
{
if(!strcmp(sample, "/path/"))
{
//
}
}
Благодарю.C++:#include <sourcemod> #include <sdktools> public void OnPluginStart() { AddNormalSoundHook(HookSounds); } public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed) { PrintToChatAll(client, "sample: %s"); }
ударь ножом об стенку, получи пути звука. потом пропиши в функции так:
C++:public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed) { if(!strcmp(sample, "/path/")) { // } }
посмотри новый код, немного изменил. забыл добавить вывод звука в чате.Благодарю.
А звук удара ножа один и тот же? Об стену, дерево и так далее разные звуки же.. Есть вариант как то иначе отловить ?C++:#include <sourcemod> #include <sdktools> public void OnPluginStart() { AddNormalSoundHook(HookSounds); } public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed) { PrintToChatAll("sample: %s", sample); }
ударь ножом об стенку, получи пути звука. потом пропиши в функции так:
C++:public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed) { if(!strcmp(sample, "/path/")) { // } }
вариантов много. но это один из простых. можно даже извращаться и сделать трейсинг в момент удара, и получить уже на фильтре попал ли луч на саму карту, и дистанцию.А звук удара ножа один и тот же? Об стену, дерево и так далее разные звуки же.. Есть вариант как то иначе отловить ?
public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed)
{
if(!strcmp(sample, "weapons/knife/knife_hit_01.wav", "weapons/knife/knife_hit_02.wav", "weapons/knife/knife_hit_03.wav", "weapons/knife/knife_hit_04.wav", "weapons/knife/knife_hit_05.wav"))
{
сам код
}
}
Я отловил 5 звуков
sample: )weapons/knife/knife_hit_05.wav
sample: )weapons/knife/knife_hit_04.wav
sample: )weapons/knife/knife_hit_03.wav
sample: )weapons/knife/knife_hit_02.wav
sample: )weapons/knife/knife_hit_01.wav
я так полагаю прописывать следующим образом?
public Action HookSounds(int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed)
{
}
if(!strcmp(sample, "weapons/knife/knife_hit_01.wav") || !strcmp(sample, "weapons/knife/knife_hit_02.wav") || !strcmp(sample, "weapons/knife/knife_hit_03.wav") || !strcmp(sample, "weapons/knife/knife_hit_04.wav") || !strcmp(sample, "weapons/knife/knife_hit_05.wav"))
{
}
if(StrContains(sample, "weapons/knife/knife_hit", false) != -1)