Подробнее о EmitSoundToClient

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Здравствуйте форумчане, расскажите пожалуйста подробнее о EmitSoundToClient и работе с ним?
Вот так играет звук:
EmitSoundToClient(client, nsound, client);
Вот так уже не играет звук:
EmitSoundToClient(client, nsound, client, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, SNDVOL_NORMAL, SNDPITCH_NORMAL, -1, NULL_VECTOR, NULL_VECTOR, true, 2.0);

Где смотреть список этих параметров? Например какие есть каналы, флаги для звуков или это флаге обычные админов что бы им только этот звук проигрывался? pitch - что это такое? что за level еще?

float soundtime - как я понял это время через которое звук начнет играть звук?
 
Последнее редактирование:

xstage

🏹
Сообщения
726
Реакции
754
какие есть каналы, флаги для звуков или это флаге обычные админов что бы им только этот звук проигрывался? pitch - что это такое?
Можно посмотреть списков констант в инклюде, на некоторые из них есть комментарии

 

RoadSide Romeo

rest in peace...
Сообщения
1,628
Реакции
1,489
@KiKiEEKi используя эту функцию, необязательно использовать все аргументы в ней, если они вам не нужны.
На будущее, если хотите подсмотреть какие-то функции, вот вам наборчик SourceMod Scripting API Reference
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
@KiKiEEKi, пиши нижнее подчёркивание: _
Компилятор SourcePawn подставит вместо него стандартное значение из инклюда, если таковое указано.
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
А как принудительно остановить звук? Именно те которые нужны или по каким то критериям, enity там, оружия звуки
 

xstage

🏹
Сообщения
726
Реакции
754
Пример использование это для остановки звука не подскажешь?
Может лучше StopSound · sdktools_sound · SourceMod Scripting API Reference использовать
https://hlmod.ru/threads/razlichnye-funkcii-i-informacija.56180/:
public void OnPluginStart()
{
    // ПРЕДУПРЕЖДЕНИЕ: Избегайте хука более, чем один раз, хукайте только единожды.
    // Вы можете хукать, где угодно. Хук не обязательно должен быть в OnPluginStart.
    AddNormalSoundHook(SoundHook);
}

public Action SoundHook(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/molotov/fire_loop_1.wav") == 0 )
    {
        return Plugin_Handled;
    }

    // Уменьшаем громкость взрыва
    if( strcmp(sample, "weapons/molotov/molotov_detonate_3.wav") == 0 )
    {
        volume = 0.5;
        return Plugin_Changed;
    }

    return Plugin_Continue;
}
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Что-то мне подсказывает, что нужна остановка звука после воспроизведения, а не до.
Если до: вариант выше, только не надо забывать о том, что у звука в начале могут быть "флаги". Например, какой-нибудь ~weapons/best_sound.wav
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Создаю масив

Sound[10][]={"s1", ... , "s10"};

Хочу рандомно его проиграть

public Action round_start(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(GetEventInt(event, "userid"));
EmitSoundToClient(client, Sound[random_num(0, 9)], client, SNDCHAN_BODY, SNDLEVEL_NORMAL);
break;
}

//Но не работает так
Как реализовать не подскажите?
Сообщения автоматически склеены:

Так а почему не попробовал ещё? Думаю сработает.
Не останавливает звук, хотя я пытаюсь остановить звук который воспроизводится в плагине и потом при событие его останавливать
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
нет в SP функции random_num()
есть только GetRandomInt(), емнип
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@Grey83, А вы не знаете как остановить звук когда я его в плагине воспроизвожу через EmitSoundToClient
пытаюсь его остановить через StopSound не получается.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@KiKiEEKi, можно попробовать через EmitSoundToClient() воспроизвести другой звук в тот же канал (4-й параметр этой функции). Обычно воспроизведение звука в том же канале перебивает предыдущей воспроизводимый звук (м/б работает не для всех каналов, не проверял все).
Например, в КСГО можно такие звуки задействовать: sound/common/null.wav или sound/bot/null.wav (в КСС вроде только первый можно задействовать).
Ещё можно выставить параметр громкости level (5-й параметр функции) на минимум для другого звука.

И ещё ты в StopSound() точно тот же канал указываешь?
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@Grey83, да в StopSound() тот же канал указываю что в EmitSoundToClient() .

На счет воспроизведения другого звука в тот же канал что бы перебился не работает. Играет 2 звука вместе
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Можно(как) воспроизвести звук всем кроме того кто его воспроизводит?
EmitSoundToClient(client, sound, client);
EmitSoundToAll(sound, client);

Делаю так слышу тот и другой звук.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Можно(как) воспроизвести звук всем кроме того кто его воспроизводит?
EmitSoundToClient(client, sound, client);
EmitSoundToAll(sound, client);

Делаю так слышу тот и другой звук.
по циклу проходим каждого игрока и воспроизводим ему звук, ненужных игроков отсеиваем
 
Сверху Снизу