Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Отлов звука "самоубийства"

Статус пользователя ssx
сообщение 4.8.2016, 0:33
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Суть такая:
Перед тем как убивать игрока прописываю в глобально созданный масив SilentKill = 1
Но что-то не хочет блокировать звуки. Что делаю не так?!

Код:
public fw_emit_sound(id,channel,const sound[])
{
if (SilentKill == 1)
{
if(equal(sound,"player/death6.wav") || equal(sound,"player/die1.wav") || equal(sound,"player/die2.wav") || equal(sound,"player/die3.wav") )
{
SilentKill = 0
server_cmd("say SilentKill = %d", SilentKill)
return FMRES_SUPERCEDE
}
}
return PLUGIN_CONTINUE
}


Отредактировал: ssx, - 4.8.2016, 0:34


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя SISA
сообщение 4.8.2016, 9:42
Сообщение #2
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Так попробуй без SilentKill

Проверка, конечно, адовая. Берите код из ЗП. Это единственный плагин, из которого можно брать код.

Код
public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
    if (!is_user_connected(id))
        return FMRES_IGNORED;

    if (sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))
    {
        return FMRES_SUPERCEDE;
    }

    return FMRES_IGNORED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 4.8.2016, 10:53
Сообщение #3


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

SISA, ЗП это зомби плагуе?)


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 4.8.2016, 11:44
Сообщение #4
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

одному мне мозолит слово массив и код в виде SilentKill = 1 ? lol.gif


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Han1baL
сообщение 4.8.2016, 12:00
Сообщение #5


Стаж: 11 лет

Сообщений: 233
Благодарностей: 50
Полезность: 30

Fred Perry, да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 4.8.2016, 12:52
Сообщение #6


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

SISA,
Суть в том что проверка fw_emit_sound вызывается очень часто, и постоянно проверять на 4 звука это как никак нагрузка.
Вот и придумал что бы перед тем как
user_silentkill ( Players[id][itm] );
прописывать SilentKill = 1

Что бы в отлове блокировался звук. Тогда будет все как задумано.
А обычные самоубийства пусть будут со звуком.

Без проверки получается что все эти 4 звука будут блокироваться при любой погоде .
К примеру, выбежал за угла противник, засветился, забежал за угол и прописал kill в консоле. И сидит ржет себе наблюдая как противник ищет его.


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 4.8.2016, 13:09
Сообщение #7
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(ssx @ 4.8.2016, 14:52) *
SISA,
Суть в том что проверка fw_emit_sound вызывается очень часто, и постоянно проверять на 4 звука это как никак нагрузка.
Вот и придумал что бы перед тем как
user_silentkill ( Players[id][itm] );
прописывать SilentKill = 1

Что бы в отлове блокировался звук. Тогда будет все как задумано.
А обычные самоубийства пусть будут со звуком.

Без проверки получается что все эти 4 звука будут блокироваться при любой погоде .
К примеру, выбежал за угла противник, засветился, забежал за угол и прописал kill в консоле. И сидит ржет себе наблюдая как противник ищет его.

ssx,

Ну, если кодить как ты, на equal, то это не торт. В случае с моим кодом, нагрузка нулевая.

Цитата
Вот и придумал что бы перед тем как
user_silentkill ( Players[id][itm] );
прописывать SilentKill = 1


SilentKill - это не массив, а глобальная переменная в твоем случае.

SilentKill[128] - вот это массив. 128 размер массива.

Если ты хочешь убрать нагрузку вообще в 0 и избавиться от постоянного вызова EmitSound, тогда делай так:

Где-то в начале плагина:
Код
new g_fmEmitSoundPre;                        // ID EmitSound Форварда


Код
g_fmEmitSoundPre = register_forward(FM_EmitSound, "fw_EmitSound_Pre", 0);  // Регистрируем Форвард
user_kill(Players[id][itm], 0);
unregister_forward(FM_EmitSound, g_fmEmitSoundPre, 0); // Разрегистрируем Форвард


Код
public fw_EmitSound_Pre(id, channel, const sample[])
{
    if (!is_user_connected(id))
        return FMRES_IGNORED;

    if (sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))
        return FMRES_SUPERCEDE;

    return FMRES_IGNORED;
}


Отредактировал: SISA, - 4.8.2016, 13:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 4.8.2016, 14:04
Сообщение #8


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Получилось! Спасибо!

Только не понял как расшифровывается
Код:
if (sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))



П.С. Еще пару вопросов:
1. как добавить туда же блокировку звука give_item ?
2. как убрать труп кто умер от user_kill(Players[id][itm], 0); ?


Отредактировал: ssx, - 4.8.2016, 14:12


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 4.8.2016, 15:24
Сообщение #9
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

ssx,

1. Выдавать оружие через Ham и отказаться от give_item
2. Ни как. Это самая обычная смерть игрока. Откуда там вдруг возьмется работа с моделями ? Надо блокировать появление трупаков отдельно.

Цитата
Только не понял как расшифровывается


sample[] - это массив, в который записано название текущего звука (и его путь).

Отредактировал: SISA, - 4.8.2016, 15:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: