Всем добрый день, подскажите пожалуйста, есть ли готовая функция для воспроизведения звука игрокам в определенном радиусе с громкостью зависящей от дистанции?
Пример, есть круг, в центре крура сущность или игрок который воспроизводит звук, нужно чтоб все кто в радиусе этого круга слышали этот звук, НО чем ближе к игроку тем звук громче
34 ксс
ПРоблема в том что нет корректного затухания. Да, можно через нее воспроизводить звук только тем кто в радиусе (как говорил Grey83), но громкость звука будет все равно обычной, но если игрок не в дистанции то звук попросту не воспроизводится, что не особо то что мне надо
EmitSoundToClient. Там с флагами и параметрами надо поиграться. Прикол в том, что работает она криво, на одних серверах нормально работает, на других есть артифакты и хз в чём причина.
Не буду плодить новую тему, надеюсь кто-то сможет подсказать тут
Решил допилить свой плагин ограничения оружия, и столкнулся с вопросами, прошу помощи :с
В событии 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
Может всё-таки дело именно в том что ты пытаешься вывести текст именно в CS_OnBuyCommand(), хотя вроде никогда такой проблемы не было. Может дело в sdktools или билде SM.
Может всё-таки дело именно в том что ты пытаешься вывести текст именно в CS_OnBuyCommand(), хотя вроде никогда такой проблемы не было. Может дело в sdktools или билде SM.
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
Не помню, писали вы или нет, а на других серверах проблема сохраняется? Как уже выше писал, у меня связка CS_OnBuyCommand + SDKHook_WeaponCanUse
и при выводе в чат проблем никаких нет
Не помню, писали вы или нет, а на других серверах проблема сохраняется? Как уже выше писал, у меня связка CS_OnBuyCommand + SDKHook_WeaponCanUse
и при выводе в чат проблем никаких нет
На других не пробовал воспроизводить - только на локалке на самом крайнем на тот момент СМ из стабильной ветки
При связке этих событий у меня была другая проблема: при покупке запрещенного оружия деньги списывались. Может, нужно было с типом хуков поиграть - пре/пост, но уже сделал как работает)
На других не пробовал воспроизводить - только на локалке на самом крайнем на тот момент СМ из стабильной ветки
При связке этих событий у меня была другая проблема: при покупке запрещенного оружия деньги списывались. Может, нужно было с типом хуков поиграть - пре/пост, но уже сделал как работает)
Всем привет!
Раз не смог найти такой пагин,либо плохо искал.
Интересует плагин,который будет удалять все стандарт вознаграждения баксов в игре.
Видел на одном проекте как работает.
Всем привет!
Раз не смог найти такой пагин,либо плохо искал.
Интересует плагин,который будет удалять все стандарт вознаграждения баксов в игре.
Видел на одном проекте как работает.