Написание плагинов

Synd1qate

Участник
Сообщения
999
Реакции
465
Всем добрый день, подскажите пожалуйста, есть ли готовая функция для воспроизведения звука игрокам в определенном радиусе с громкостью зависящей от дистанции?
Пример, есть круг, в центре крура сущность или игрок который воспроизводит звук, нужно чтоб все кто в радиусе этого круга слышали этот звук, НО чем ближе к игроку тем звук громче
34 ксс
EmitSound же
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
есть ли готовая функция для воспроизведения звука игрокам в определенном радиусе с громкостью зависящей от дистанции?
ну громкость звука и так всегда от дистанции зависит, а радиус разве что задавать отправкой его только тем, кто находится внутри радиуса
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
ПРоблема в том что нет корректного затухания. Да, можно через нее воспроизводить звук только тем кто в радиусе (как говорил Grey83), но громкость звука будет все равно обычной, но если игрок не в дистанции то звук попросту не воспроизводится, что не особо то что мне надо
Сообщения автоматически склеены:

@7pElllHuK Вызывайте эту функцию - возращаемое значение будет уровень громкости
Спасибо, сейчас попробую
Сообщения автоматически склеены:

@7pElllHuK Вызывайте эту функцию - возращаемое значение будет уровень громкости
То что нужно, спасибо
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
466
Реакции
215
EmitSoundToClient. Там с флагами и параметрами надо поиграться. Прикол в том, что работает она криво, на одних серверах нормально работает, на других есть артифакты и хз в чём причина.
 

Ice_Sochi

Участник
Сообщения
738
Реакции
433
Не буду плодить новую тему, надеюсь кто-то сможет подсказать тут
Решил допилить свой плагин ограничения оружия, и столкнулся с вопросами, прошу помощи :с
В событии CS_OnBuyCommand происходит какой-то эфемерный краш сервера. Краш, внимание, на строке отправки сообщения в чат (вычислил опытным комментированием всех строк подряд)
Вишенка на торте: в другом событии (SDKHook_WeaponCanUse) точно такое же сообщение в чат, все работает. Оставлял в плагине только CS_OnBuyCommand , думал мб конфликтует что, но то же самое.

Сама процедура:
public Action CS_OnBuyCommand(int iClient, const char[] sWeapon)    //без weapon_
{
  
    if(!g_bPluginOn) return Plugin_Continue;
  
    if(Blocked[iClient].FindString(sWeapon) >= 0) return Plugin_Handled;
  
    if(!IsClientCanUseWeapon(iClient, sWeapon))
    {
        int iNum = GetClientTeam(iClient) - 2;
      
        //PrintToChat(iClient, "%s", sWeapon);  - краш происходит, если раскомментить эту строку
        //PrintToChat(iClient, "%i", iNum); - или эту
        //PrintToChat(iClient, "%i", WeaponNames[iNum].FindString(sWeapon)); - или эту
      
        //а строка ниже - изначальный виновник
        //PrintToChat(iClient, "Оружие ограничено до \x04%i \x01для Вашей команды", Limits[iNum].Get(WeaponNames[iNum].FindString(sWeapon)));
      
        if(g_iTimerInterval > 0)
        {
            Blocked[iClient].PushString(sWeapon[7]);
            CreateTimer(float(g_iTimerInterval), ClearArrayTimer, GetClientUserId(iClient));
        }
      
        return Plugin_Handled;
      
    }
  
    return Plugin_Continue;
}

Также заметил непонятную мне особенность событий:
Происходит событие CS_OnBuyCommand, мы его блокируем. Если в плагине только одно оно, то блокировка закупки оружия работает правильно.
НО
Если мы добавляем сюда подписку на событие SDKHook_WeaponCanUse, оно также отрабатывает на поднимаемое оружие, но с ним при покупке запрещенного ствола списываются деньги.
Как вообще может доходить до SDKHook_WeaponCanUse при покупке оружия, если мы заблокировали само событие покупки (и только с ним одним все работало бы корректно)?
Как можно выкрутиться в такой ситуации, чтобы и деньги не списались, и оружие не поднялось/не купилось?

Metamod:Source version 1.12.0-dev+1219
SourceMod Version: 1.12.0.7221

В логах, естественно, нет ошибок
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Ice_Sochi, а в лог писать или в консоль сервера то сообщение пробовал?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Ice_Sochi, ощущение, что на вывод текста агрится.

Кстати, если выводится содержимое тектовой переменной, то можно и без форматирования обойтись:
PrintToChat(iClient, sWeapon);
При таком выводе крашит?

Попробуй выводить текст через RequestFrame(), кстати:

Может всё-таки дело именно в том что ты пытаешься вывести текст именно в CS_OnBuyCommand(), хотя вроде никогда такой проблемы не было. Может дело в sdktools или билде SM.
 

Ice_Sochi

Участник
Сообщения
738
Реакции
433
@Ice_Sochi, ощущение, что на вывод текста агрится.

Кстати, если выводится содержимое тектовой переменной, то можно и без форматирования обойтись:
PrintToChat(iClient, sWeapon);
При таком выводе крашит?

Попробуй выводить текст через RequestFrame(), кстати:

Может всё-таки дело именно в том что ты пытаешься вывести текст именно в CS_OnBuyCommand(), хотя вроде никогда такой проблемы не было. Может дело в sdktools или билде SM.
Спасибо
Отпишусь, как попробую
Сообщения автоматически склеены:

@Grey83 RequestFrame тоже краш вызывал. Сделал отправку сообщения таймером спустя 0,1 сек, так работает ._.
 
Последнее редактирование:

Webman

Nevermind
Сообщения
804
Реакции
332
В событии player_connect есть поле index:
C-подобный:
Structure:     
string     name     player name
byte     index     player slot (entity index-1)
short     userid     user ID on server (unique on server)
...
short     bot     is a bot
В данном событии GetClientOfUserId выдает 0. Его позже нужно ловить (в OnClientConnect, как вариант)
Но, как правило, в дальнейшем client = index + 1 всегда. Кто-нибудь знает, можно ли быть уверенным в том, что client всегда можно определять таким образом в player_connect и что он не будет меняться от смены карты к карте, пока игрок действительно не отключится через player_disconnect?

Мне нужно обрабатывать именно это событие, потому что форварды подключения/отключения игрока триггерятся каждый раз при смене карты, хотя игрок на самом деле не переподключается, а его жизненный цикл подключения находится в player_connect - player_disconnect
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Webman, при смене карты всегда происходит реконнект и clientid всегда назначается в порядке подключения.
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
В консоль попробовал - тоже краш.
Не помню, писали вы или нет, а на других серверах проблема сохраняется? Как уже выше писал, у меня связка CS_OnBuyCommand + SDKHook_WeaponCanUse
и при выводе в чат проблем никаких нет
 

Ice_Sochi

Участник
Сообщения
738
Реакции
433
Не помню, писали вы или нет, а на других серверах проблема сохраняется? Как уже выше писал, у меня связка CS_OnBuyCommand + SDKHook_WeaponCanUse
и при выводе в чат проблем никаких нет
На других не пробовал воспроизводить - только на локалке на самом крайнем на тот момент СМ из стабильной ветки

При связке этих событий у меня была другая проблема: при покупке запрещенного оружия деньги списывались. Может, нужно было с типом хуков поиграть - пре/пост, но уже сделал как работает)
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
На других не пробовал воспроизводить - только на локалке на самом крайнем на тот момент СМ из стабильной ветки

При связке этих событий у меня была другая проблема: при покупке запрещенного оружия деньги списывались. Может, нужно было с типом хуков поиграть - пре/пост, но уже сделал как работает)
Я не игрался. без этого работает, скорее всего проблема именно в локальном сервере, на линуксе где большинство серверов проблема должна уйти
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
969
Реакции
279
Всем привет!
Раз не смог найти такой пагин,либо плохо искал.
Интересует плагин,который будет удалять все стандарт вознаграждения баксов в игре.
Видел на одном проекте как работает.

Есть такое ваше?

Готов под заказ сделать.
По разумной цене.
 

Nekro

Терра инкогнита
Сообщения
4,169
Реакции
2,500
Всем привет!
Раз не смог найти такой пагин,либо плохо искал.
Интересует плагин,который будет удалять все стандарт вознаграждения баксов в игре.
Видел на одном проекте как работает.

Есть такое ваше?

Готов под заказ сделать.
По разумной цене.
maxresdefault.jpg

Сообщения автоматически склеены:

В кфг на сколько помню это настраивается Комментарии к переменным конфигурационных файлов - Counter-Strike: Global Offensive
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
969
Реакции
279
Сверху Снизу