Playing Sounds in Radius

Playing Sounds in Radius 1.1.0

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
  • Автор ресурса
  • #1
HenryTownshand добавил(а) новый ресурс:

Playing Sounds in Radius - Воспроизведение звуков в небольшом радиусе игрока

Плагин проигрывает звуки указанные в конфиге в радиусе от игрока.
Есть возможность воспроизводить звуки из меню или быстрой командой(например для бинда).
пример бинда:
bind ALT "sm_ps <id>"

Предустановлено для примера 11 звуков:
C-подобный:
"PlaySounds"
{
    "Назад ни шагу"
    {
        "path"        "serverTK/playsounds/nazad_ni_shagu.mp3"
    }
    "Тихо работаем"
    {
        "path"        "serverTK/playsounds/tiho_rabotaem.mp3"
    }...

Узнать больше об этом ресурсе...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
У тебя в функции ReadConfig() утечка: ты не удаляешь KeyValues после чтения конфига, а OnConfigsExecuted() может вызываться неоднократно во время работы сервера (при смене карты, если запускаются или перезапускаются плагины).

Кроме того у тебя прекеш неправильно сделан (вместо FakePrecacheSound(szBuffer); должно быть FakePrecacheSound(sBuffer);)

И разбивать плагин из 300 строчек на 5 кусков - это что-то с чем-то.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Хм, да и в g_aPath отправляется неправильный путь к звуку: нет символа "*" в начале пути.
Оно хоть работало?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
И мне ещё совершенно не понятен смысл вот этого куска кода:
menus.sp:
            hMenu.GetItem(iItem, sSelected, sizeof(sSelected));
            char szBuffer[64];
            
            if (g_bPlay[iClient]) {
                DataPack dPack = new DataPack();
                dPack.WriteCell(iClient);
                
                for (int i = 0; i < g_aPath.Length; i++)
                {
                    g_aPath.GetString(i, szBuffer, sizeof(szBuffer));
                    if (StrEqual(sSelected, szBuffer, true))
Сообщения автоматически склеены:

@Grey83, даже сейчас работает)
игра хоть ксго?
 

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
  • Автор ресурса
  • #7
Агась
Сообщения автоматически склеены:

И мне ещё совершенно не понятен смысл вот этого куска кода:
Ну это я делал чтобы он не в таком виде писал в чат.
1663500894958.png


я понимаю что можно сделать так

C-подобный:
char szInfo[128], szTitle[128];
    hMenu.GetItem(iItem, szInfo, sizeof(szInfo), _, szTitle, sizeof(szTitle));
    if (g_bPlay[iClient]) {
        DataPack dPack = new DataPack();
        dPack.WriteCell(iClient);
        EmitSoundRange(szInfo, iClient);
        CGOPrintToChat(iClient, "%s {GRAY}Воспроизведён файл: {RED}%s", g_sTag, szTitle);
 
Последнее редактирование:

Tavian

Участник
Сообщения
1,184
Реакции
119
Всё работает, причём отлично. Спасибо автору 👍
Сделать бы применение рандомного звука, а то я добавил 50 мемов и хотелось бы рандом.
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Почистил и немного оптимизировал код, добавил недостающие проверки.
Также изменил содержимое файла настроек: теперь имя трека используется в качестве ключа, а путь к треку - в качестве значения.
SM 1.10:
//// playsounds 1.0.sp
//
// Code size:            12320 bytes
// Data size:             7312 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   36016 bytes
//
// Compilation Time: 0,19 sec
// ----------------------------------------

//// playsounds 1.1.0.sp
//
// Code size:            11176 bytes
// Data size:             6616 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   34176 bytes
//
// Compilation Time: 0,17 sec
// ----------------------------------------

я понимаю что можно сделать так
Да не нужно в меню путь к треку сохранять вообще: для этого нужно туда у тебя есть g_aPath.
Как и получать название трека в его каллбэке: есть g_aName.
И в таймере не нужен DataPack. Собственно и таймер вообще не нужен.

Кстати: теперь при использовании команд всех 3 команд без аргумента или если он будет неправильным плагин будет вызывать меню, а не пытаться воспроизвести трек (что будет вызывать ошибки в логах). Ну и если будет правильный аргумент, то соответственно будет пытаться воспроизвести звук.
Ну и использование команды от имени сервера будет игнорится (тоже возможно вызывало бы ошибки в логах).

Разве что забыл в исходнике свой ник указать. =)
 

Вложения

  • playsounds.cfg
    749 байт · Просмотры: 15
  • playsounds 1.1.0.sp
    7.9 КБ · Просмотры: 12
Последнее редактирование:

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
  • Автор ресурса
  • #11
HenryTownshand обновил(а) ресурс Playing Sounds in Radius новой записью:

Обновление, чистка и оптимизация кода

Обновил и оптимизировал код @Grey83. Говорим спасибо ему

Узнать больше об этом обновлении...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@sibiryak54, пробуй: по идее должно работать всё, кроме вывода сообщений (там с расцветкой будут проблемы из-за использования csgo_colors).
Но это можно поправить заменой инклюда csgo_colors и вызова CGOPrintToChat() на соответствующую функцию применённого.
 

Tavian

Участник
Сообщения
1,184
Реакции
119
Почистил и немного оптимизировал код, добавил недостающие проверки.
Также изменил содержимое файла настроек: теперь имя трека используется в качестве ключа, а путь к треку - в качестве значения.
SM 1.10:
//// playsounds 1.0.sp
//
// Code size:            12320 bytes
// Data size:             7312 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   36016 bytes
//
// Compilation Time: 0,19 sec
// ----------------------------------------

//// playsounds 1.1.0.sp
//
// Code size:            11176 bytes
// Data size:             6616 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   34176 bytes
//
// Compilation Time: 0,17 sec
// ----------------------------------------


Да не нужно в меню путь к треку сохранять вообще: для этого нужно туда у тебя есть g_aPath.
Как и получать название трека в его каллбэке: есть g_aName.
И в таймере не нужен DataPack. Собственно и таймер вообще не нужен.

Кстати: теперь при использовании команд всех 3 команд без аргумента или если он будет неправильным плагин будет вызывать меню, а не пытаться воспроизвести трек (что будет вызывать ошибки в логах). Ну и если будет правильный аргумент, то соответственно будет пытаться воспроизвести звук.
Ну и использование команды от имени сервера будет игнорится (тоже возможно вызывало бы ошибки в логах).

Разве что забыл в исходнике свой ник указать. =)
Вовсе перестало работать, теперь когда ты жив не работает и пишет вы должны быть живы, а когда ты мёрт работает ( всё на оборот ) и помимо названий звука теперь ещё и путь пишется в меню
1663574663783.png
Так-же пропали их id, можно и в ручную посчитать но это не удобно.
Ошибок в логах нет
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Tavian, качай по основной ссылке: там это уже исправлено
Сообщения автоматически склеены:

На всякий случай перезалил и в своём комменте исходник
 

WTF#MLG

Эффект кузи!
Сообщения
365
Реакции
142
Буду очень благодарен ,если кто-то запихнёт данное меню в vip :з
 

WTF#MLG

Эффект кузи!
Сообщения
365
Реакции
142
VIP_Command_Blocker чем не устраивает?
Имеется ввиду запихнуть это в меню !vip , я ограничил это по старинке - флагом :D
Если не ошибаюсь сортировка в вип работает немного иначе ,следовательно запихнуть это как в админку не получиться
Оффтоп
 

Tavian

Участник
Сообщения
1,184
Реакции
119
Имеется ввиду запихнуть это в меню !vip , я ограничил это по старинке - флагом :D
Если не ошибаюсь сортировка в вип работает немного иначе ,следовательно запихнуть это как в админку не получиться
Оффтоп
Там всё очень просто, выбираешь команды которые хочешь блокнуть и напротив прописываешь те группы которым доступны данные команды.
 

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
  • Автор ресурса
  • #20
Так же тестово добавил поддержку вип
1. В addons/sourcemod/data/vip/cfg/grous.ini в группу добавь "PlaySounds" "1".
2. В addons/sourcemod/data/vip/cfg/sort_menu.ini если надо.
3. В addons/sourcemod/translations/vip_modules.phrases.txt добавь:
C-подобный:
"PlaySounds"
{
    "ru"        "Меню звуков"
    "en"        "Sounds menu"
}
4. Удали cfg/sourcemod/TK_PlaySounds.cfg. Он пересоздастся. Добавил новый квар.
C-подобный:
// Использовать плагин для VIP игроков?
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
sm_playsounds_vip "1"

Задумка в чём. Если на сервере нет вип ядра, плагин просто работает как обычно для всех.
Если есть вип ядро и sm_playsounds_vip "1", то можно пользоваться только випам.
А если есть вип ядро, но sm_playsounds_vip "0", то плагин доступен для всех.
 

Вложения

  • playsounds.smx
    10.4 КБ · Просмотры: 11
  • playsounds.sp
    10.8 КБ · Просмотры: 10
Сверху Снизу