Заблокировать звук в начале и в конце раунда

ivanms1337

Участник
Сообщения
69
Реакции
2
Надо заблокировать звук в начале и в конце раунда.
(То есть в конце раунда заблокировать стандартный звук выигрыша и в начале стандартный звук)
Возможно ли это?
 

EaglEs

Гуру пробития усилений
Сообщения
924
Реакции
192
В начале раунда свист что-ли?
sv_hudhint_sound 0
cl_hudhint_sound 0.
 
  • Мне нравится
Реакции: rgba

MFS

Участник
Сообщения
1,533
Реакции
787
В ксс нет ничего по указанному пути.

Это какой то плагин. Его и проверяй.
 

DarklSide

Участник
Сообщения
931
Реакции
468
Надо заблокировать звук в начале и в конце раунда.
(То есть в конце раунда заблокировать стандартный звук выигрыша и в начале стандартный звук)
В начале раунда sound/radio/rounddraw.wav

PHP:
#include <sourcemod>
#include <sdktools_sound>
#include <cstrike>

#define DPRE_CACHE

//#define DNEW_SOUNDRAW

#if defined DNEW_SOUNDRAW
#define g_RoundDraw                            "new_sound/radio/rounddraw.wav"
#endif

public void OnPluginStart()
{
    HookEvent("round_end", Event_RoundEnd); //EventHookMode_Pre
    
    UserMsg g_um_SendAudio;
    if ((g_um_SendAudio = GetUserMessageId("SendAudio")) != INVALID_MESSAGE_ID)
    {
        HookUserMessage(g_um_SendAudio, UserMsgSendAudio, true);
    }
}

#if defined DPRE_CACHE
public void OnMapStart()
{
    PrecacheSound("radio/moveout.wav", false);
    PrecacheSound("radio/letsgo.wav", false);
    PrecacheSound("radio/locknload.wav", false);
    PrecacheSound("radio/go.wav", false);
    PrecacheSound("radio/bombpl.wav", false);
    PrecacheSound("radio/bombdef.wav", false);
    PrecacheSound("radio/ctwin.wav", false);
    PrecacheSound("radio/terwin.wav", false);
    PrecacheSound("radio/rounddraw.wav", false);
    
    #if defined DNEW_SOUNDRAW
    PrecacheSound(g_RoundDraw, false);
    #endif
}
#endif

public Action UserMsgSendAudio(UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init)
{
    char msg_str[32];
    msg.ReadString(msg_str, sizeof(msg_str));
    if (!strcmp(msg_str[6], "moveout"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "letsgo"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "locknload"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "go"))
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    //if (!dontBroadcast)event.BroadcastDisabled = true; //EventHookMode_Pre
    
    #if defined DNEW_SOUNDRAW
    bool bSendSoundNewDraw = false;
    #endif
    
    CSRoundEndReason i_reasonId = view_as<CSRoundEndReason>(event.GetInt("reason"));
    for (int i = 1; i <= MaxClients; ++i)
    {
        if (IsClientInGame(i))
        {
            if (i_reasonId == CSRoundEnd_Draw || i_reasonId == CSRoundEnd_GameStart)
            {
                #if defined DNEW_SOUNDRAW
                bSendSoundNewDraw = true;
                #endif
                
                StopSound(i, SNDCHAN_STATIC, "radio/rounddraw.wav");
                
            }
            else
            {
                StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
                StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            }
        }
    }
    
    #if defined DNEW_SOUNDRAW
    if (bSendSoundNewDraw)EmitSoundToAll(g_RoundDraw);
    #endif
}
 
Последнее редактирование:

ivanms1337

Участник
Сообщения
69
Реакции
2
PHP:
#include <sourcemod>
#include <sdktools_sound>
#include <cstrike>

#define DPRE_CACHE

//#define DNEW_SOUNDRAW

#if defined DNEW_SOUNDRAW
#define g_RoundDraw                            "new_sound/radio/rounddraw.wav"
#endif

public void OnPluginStart()
{
    HookEvent("round_end", Event_RoundEnd); //EventHookMode_Pre
   
    UserMsg g_um_SendAudio;
    if ((g_um_SendAudio = GetUserMessageId("SendAudio")) != INVALID_MESSAGE_ID)
    {
        HookUserMessage(g_um_SendAudio, UserMsgSendAudio, true);
    }
}

#if defined DPRE_CACHE
public void OnMapStart()
{
    PrecacheSound("radio/moveout.wav", false);
    PrecacheSound("radio/letsgo.wav", false);
    PrecacheSound("radio/locknload.wav", false);
    PrecacheSound("radio/go.wav", false);
    PrecacheSound("radio/bombpl.wav", false);
    PrecacheSound("radio/bombdef.wav", false);
    PrecacheSound("radio/ctwin.wav", false);
    PrecacheSound("radio/terwin.wav", false);
    PrecacheSound("radio/rounddraw.wav", false);
   
    #if defined DNEW_SOUNDRAW
    PrecacheSound(g_RoundDraw, false);
    #endif
}
#endif

public Action UserMsgSendAudio(UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init)
{
    char msg_str[32];
    msg.ReadString(msg_str, sizeof(msg_str));
    if (!strcmp(msg_str[6], "moveout"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "letsgo"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "locknload"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "go"))
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    //if (!dontBroadcast)event.BroadcastDisabled = true; //EventHookMode_Pre
   
    #if defined DNEW_SOUNDRAW
    bool bSendSoundNewDraw = false;
    #endif
   
    CSRoundEndReason i_reasonId = view_as<CSRoundEndReason>(event.GetInt("reason"));
    for (int i = 1; i <= MaxClients; ++i)
    {
        if (IsClientInGame(i))
        {
            if (i_reasonId == CSRoundEnd_Draw || i_reasonId == CSRoundEnd_GameStart)
            {
                #if defined DNEW_SOUNDRAW
                bSendSoundNewDraw = true;
                #endif
               
                StopSound(i, SNDCHAN_STATIC, "radio/rounddraw.wav");
               
            }
            else
            {
                StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
                StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            }
        }
    }
   
    #if defined DNEW_SOUNDRAW
    if (bSendSoundNewDraw)EmitSoundToAll(g_RoundDraw);
    #endif
}
Можешь написать код на sourcemod 1.6.3?
 

Александр33333

Участник
Сообщения
46
Реакции
1
здорова помогите почему то звук за теров остался
 

Вложения

  • DisableGameSounds.sp
    2.6 КБ · Просмотры: 100

FuckYeah

Челик
Сообщения
474
Реакции
57
PHP:
#include <sourcemod>
#include <sdktools_sound>
#include <cstrike>

#define DPRE_CACHE

//#define DNEW_SOUNDRAW

#if defined DNEW_SOUNDRAW
#define g_RoundDraw                            "new_sound/radio/rounddraw.wav"
#endif

public void OnPluginStart()
{
    HookEvent("round_end", Event_RoundEnd); //EventHookMode_Pre
   
    UserMsg g_um_SendAudio;
    if ((g_um_SendAudio = GetUserMessageId("SendAudio")) != INVALID_MESSAGE_ID)
    {
        HookUserMessage(g_um_SendAudio, UserMsgSendAudio, true);
    }
}

#if defined DPRE_CACHE
public void OnMapStart()
{
    PrecacheSound("radio/moveout.wav", false);
    PrecacheSound("radio/letsgo.wav", false);
    PrecacheSound("radio/locknload.wav", false);
    PrecacheSound("radio/go.wav", false);
    PrecacheSound("radio/bombpl.wav", false);
    PrecacheSound("radio/bombdef.wav", false);
    PrecacheSound("radio/ctwin.wav", false);
    PrecacheSound("radio/terwin.wav", false);
    PrecacheSound("radio/rounddraw.wav", false);
   
    #if defined DNEW_SOUNDRAW
    PrecacheSound(g_RoundDraw, false);
    #endif
}
#endif

public Action UserMsgSendAudio(UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init)
{
    char msg_str[32];
    msg.ReadString(msg_str, sizeof(msg_str));
    if (!strcmp(msg_str[6], "moveout"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "letsgo"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "locknload"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "go"))
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    //if (!dontBroadcast)event.BroadcastDisabled = true; //EventHookMode_Pre
   
    #if defined DNEW_SOUNDRAW
    bool bSendSoundNewDraw = false;
    #endif
   
    CSRoundEndReason i_reasonId = view_as<CSRoundEndReason>(event.GetInt("reason"));
    for (int i = 1; i <= MaxClients; ++i)
    {
        if (IsClientInGame(i))
        {
            if (i_reasonId == CSRoundEnd_Draw || i_reasonId == CSRoundEnd_GameStart)
            {
                #if defined DNEW_SOUNDRAW
                bSendSoundNewDraw = true;
                #endif
               
                StopSound(i, SNDCHAN_STATIC, "radio/rounddraw.wav");
               
            }
            else
            {
                StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
                StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            }
        }
    }
   
    #if defined DNEW_SOUNDRAW
    if (bSendSoundNewDraw)EmitSoundToAll(g_RoundDraw);
    #endif
}
Звук за победы теров остался. Round draw также остался
 

babka68

Участник
Сообщения
2,124
Реакции
956
Звук за победы теров остался. Round draw также остался
Раздел создан в разделе Counter-Strike: Source
Собственно проверил на Counter-Strike Source Orange Box, все успешно блокирует, проверял кодом ниже.
Уточните вашу игру

C-подобный:
#include <sdktools_sound>

#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart()
{
    HookEvent("round_end", Round_End, EventHookMode_Pre);
}
public void Round_End(Event event, char[] name, bool B_DontBroadcast)
{
    for (int i = 1; i < MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
        }
    }
}
 

FuckYeah

Челик
Сообщения
474
Реакции
57
Раздел создан в разделе Counter-Strike: Source
Собственно проверил на Counter-Strike Source Orange Box, все успешно блокирует, проверял кодом ниже.
Уточните вашу игру

C-подобный:
#include <sdktools_sound>

#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart()
{
    HookEvent("round_end", Round_End, EventHookMode_Pre);
}
public void Round_End(Event event, char[] name, bool B_DontBroadcast)
{
    for (int i = 1; i < MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
        }
    }
}
CSS v34
 

babka68

Участник
Сообщения
2,124
Реакции
956
@FuckYeah Только что проверил на css v34, проверял на простом клиенте и на clientmod, плагин успешно отрабатывает, проблема на вашей стороне.
 

Vyacheslav

Участник
Сообщения
164
Реакции
24
Раздел создан в разделе Counter-Strike: Source
Собственно проверил на Counter-Strike Source Orange Box, все успешно блокирует, проверял кодом ниже.
Уточните вашу игру

C-подобный:
#include <sdktools_sound>

#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart()
{
    HookEvent("round_end", Round_End, EventHookMode_Pre);
}
public void Round_End(Event event, char[] name, bool B_DontBroadcast)
{
    for (int i = 1; i < MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
        }
    }
}
Не мог бы добавить в этот список эти звуки

radio/moveout.wav
radio/letsgo.wav
radio/locknload.wav
radio/go.wav
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Vyacheslav, добавить не проблема:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_sound>

static const char
    BLOCK_SND[][]    =
{
    "radio/terwin.wav",
    "radio/ctwin.wav",

    "radio/moveout.wav",
    "radio/letsgo.wav",
    "radio/locknload.wav",
    "radio/go.wav",
    "radio/bombpl.wav"
};

public void OnPluginStart()
{
    HookEvent("round_end", Round_End, EventHookMode_Pre);
}

public void Round_End(Event event, char[] name, bool B_DontBroadcast)
{
    for (int i = 1, j = -1; i < MaxClients; i++, j = -1) if(IsClientInGame(i) && !IsFakeClient(i))
    {
        while(++j < sizeof(BLOCK_SND)) StopSound(i, SNDCHAN_STATIC, BLOCK_SND[j]);
    }
}
Проблема, в том, что их блокировку добавлять нужно то ли в начале раунда, то ли в другой момент времени.
 

Vyacheslav

Участник
Сообщения
164
Реакции
24
@Vyacheslav, добавить не проблема:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_sound>

static const char
    BLOCK_SND[][]    =
{
    "radio/terwin.wav",
    "radio/ctwin.wav",

    "radio/moveout.wav",
    "radio/letsgo.wav",
    "radio/locknload.wav",
    "radio/go.wav",
    "radio/bombpl.wav"
};

public void OnPluginStart()
{
    HookEvent("round_end", Round_End, EventHookMode_Pre);
}

public void Round_End(Event event, char[] name, bool B_DontBroadcast)
{
    for (int i = 1, j = -1; i < MaxClients; i++, j = -1) if(IsClientInGame(i) && !IsFakeClient(i))
    {
        while(++j < sizeof(BLOCK_SND)) StopSound(i, SNDCHAN_STATIC, BLOCK_SND[j]);
    }
}
Проблема, в том, что их блокировку добавлять нужно то ли в начале раунда, то ли в другой момент времени.
Короче воспроизводится звук в начале раунда!
То есть нужно два отдельных плагина? Один в начале раунда гасит а второй в конце.

CSS V34
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
То есть нужно два отдельных плагина? Один в начале раунда гасит а второй в конце.
Нет, достаточно одного, но нужно знать в какой момент вызывать функцию StopSound() для каждого из звуков.
 

Vyacheslav

Участник
Сообщения
164
Реакции
24
PHP:
#include <sourcemod>
#include <sdktools_sound>
#include <cstrike>

#define DPRE_CACHE

//#define DNEW_SOUNDRAW

#if defined DNEW_SOUNDRAW
#define g_RoundDraw                            "new_sound/radio/rounddraw.wav"
#endif

public void OnPluginStart()
{
    HookEvent("round_end", Event_RoundEnd); //EventHookMode_Pre
  
    UserMsg g_um_SendAudio;
    if ((g_um_SendAudio = GetUserMessageId("SendAudio")) != INVALID_MESSAGE_ID)
    {
        HookUserMessage(g_um_SendAudio, UserMsgSendAudio, true);
    }
}

#if defined DPRE_CACHE
public void OnMapStart()
{
    PrecacheSound("radio/moveout.wav", false);
    PrecacheSound("radio/letsgo.wav", false);
    PrecacheSound("radio/locknload.wav", false);
    PrecacheSound("radio/go.wav", false);
    PrecacheSound("radio/bombpl.wav", false);
    PrecacheSound("radio/bombdef.wav", false);
    PrecacheSound("radio/ctwin.wav", false);
    PrecacheSound("radio/terwin.wav", false);
    PrecacheSound("radio/rounddraw.wav", false);
  
    #if defined DNEW_SOUNDRAW
    PrecacheSound(g_RoundDraw, false);
    #endif
}
#endif

public Action UserMsgSendAudio(UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init)
{
    char msg_str[32];
    msg.ReadString(msg_str, sizeof(msg_str));
    if (!strcmp(msg_str[6], "moveout"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "letsgo"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "locknload"))
    {
        return Plugin_Handled;
    }
    else if (!strcmp(msg_str[6], "go"))
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    //if (!dontBroadcast)event.BroadcastDisabled = true; //EventHookMode_Pre
  
    #if defined DNEW_SOUNDRAW
    bool bSendSoundNewDraw = false;
    #endif
  
    CSRoundEndReason i_reasonId = view_as<CSRoundEndReason>(event.GetInt("reason"));
    for (int i = 1; i <= MaxClients; ++i)
    {
        if (IsClientInGame(i))
        {
            if (i_reasonId == CSRoundEnd_Draw || i_reasonId == CSRoundEnd_GameStart)
            {
                #if defined DNEW_SOUNDRAW
                bSendSoundNewDraw = true;
                #endif
              
                StopSound(i, SNDCHAN_STATIC, "radio/rounddraw.wav");
              
            }
            else
            {
                StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
                StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
            }
        }
    }
  
    #if defined DNEW_SOUNDRAW
    if (bSendSoundNewDraw)EmitSoundToAll(g_RoundDraw);
    #endif
}
На css v92+ работает отлично! sourcemod 1.11 - build 6931
А на css v34 воспроизводиться звук terwin.wav sourcemod 1.11.0.6541

Воспроизводятся на обоих серверах!
moveout.wav
bombpl.wav
bombdef.wav
 
Последнее редактирование:
Сверху Снизу