Отловить удар ножа об стену CS:GO

w0hderful

Участник
Сообщения
131
Реакции
27
Всем привет, не подскажите как можно отловить удар любого ножа об стену в CS:GO?
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
пример кода можно пожалуйста?
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/"))
    {
        //
    }
}
 

w0hderful

Участник
Сообщения
131
Реакции
27
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/"))
    {
        //
    }
}
Благодарю.
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
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/"))
    {
        //
    }
}
А звук удара ножа один и тот же? Об стену, дерево и так далее разные звуки же.. Есть вариант как то иначе отловить ?
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
А звук удара ножа один и тот же? Об стену, дерево и так далее разные звуки же.. Есть вариант как то иначе отловить ?
вариантов много. но это один из простых. можно даже извращаться и сделать трейсинг в момент удара, и получить уже на фильтре попал ли луч на саму карту, и дистанцию.
можно по декалю который создается после удара как след, конечно насчет этого не уверен ибо никогда не пытался. но как вариант.
 

w0hderful

Участник
Сообщения
131
Реакции
27
Я отловил 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

я так полагаю прописывать следующим образом?

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, "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"))
    {
        сам код
    }
}
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
Я отловил 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)
{

}


C++:
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"))
{

}

ну или короче так.
C++:
if(StrContains(sample, "weapons/knife/knife_hit", false) != -1)
 
Сверху Снизу