Русское сообщество по скриптингу

Misc. Stats — звуки по желанию

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Misc. Stats — звуки по желанию

Сообщение qpAHToMAS » 11 авг 2013, 12:43

Очень простое (прошу не пинать :)), но на мой взгляд полезное руководство по тому, как сделать воспроизведение звуков Misc. Stats плагина (Multi-Kill, Headshot, etc.) по желанию пользователя.
По умолчанию звуки будут воспроизводиться (как обычно), если пользователь этого не хочет, то он должен добавить "no_sounds" строку в "setinfo", равную единице:
Код: Выделить всё
setinfo "no_sounds" "1"


miscstats.sma
  • Добавим массив глобальных переменных no_sounds[33], сравнивая которые, будем принимать решение, воспроизводить звук конкретному игроку, или нет.
    86 строка, после "new g_he_sync" добавьте:
    [pawn]
    1. new no_sounds[33]
    [/pawn]
  • В момент подключения игрока к серверу, считываем его "setinfo" и присваиваем 1 либо 0 переменной no_sounds[33].
    243 строка, после "g_streakKills[id] = {0, 0}" (внутри client_putinserver(id) функции) добавьте:
    [pawn]
    1. new ns[2]

    2. get_user_info(id, "no_sounds", ns, 1)

    3.  

    4. if (equali(ns, "1")) {

    5.         no_sounds[id] = 1

    6. } else {

    7.         no_sounds[id] = 0

    8. }
    [/pawn]
    Для проверок перед воспроизведением каждого звука всё готово, добавим условия путём "оборачивания" функций client_cmd(*, "spk *").
  • 428 строка, было:
    [pawn]
    1. client_cmd(g_LastAnnounce, "spk misc/oneandonly")
    [/pawn]
    Стало:
    [pawn]
    1. if (no_sounds[g_LastAnnounce] == 0) {

    2.         client_cmd(g_LastAnnounce, "spk misc/oneandonly")

    3. }
    [/pawn]
  • 495 строка, было:
    [pawn]
    1. client_cmd(killer, "spk misc/headshot")

    2. client_cmd(victim, "spk misc/headshot")
    [/pawn]
    Стало:
    [pawn]
    1. if (no_sounds[killer] == 0) {

    2.         client_cmd(killer, "spk misc/headshot")

    3. }

    4. if (no_sounds[victim] == 0) {

    5.         client_cmd(victim, "spk misc/headshot")

    6. }
    [/pawn]
  • 776 строка, было:
    [pawn]
    1. client_cmd(players[i], "spk %s", sound)
    [/pawn]
    Стало:
    [pawn]
    1. if (no_sounds[players[i]] == 0) {

    2.         client_cmd(players[i], "spk %s", sound)

    3. }
    [/pawn]

По желанию можно добавить "say" команду, которой можно будет включать/отключать звуки, что бы игроки не лезли в "setinfo". Пусть это будет "say /no_sounds".
  • 180 строка, после "register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")" добавим:
    [pawn]
    1. register_clcmd("say /no_sounds", "noSounds", 0, "- disable/enable Misc. Stats sounds (Headshot, Multi-Kill, etc.)")
    [/pawn]
  • В желаемом месте (например, 204 строка) добавим функцию переключения:
    [pawn]
    1. public noSounds(id)

    2. {

    3.         if(no_sounds[id] == 1) {

    4.                 no_sounds[id] = 0

    5.                 client_cmd(id, "setinfo ^"no_sounds^" ^"^"")

    6.                 client_print(id, print_chat, "* Misc. Stats Sounds have been enabled (default)")

    7.         } else {

    8.                 no_sounds[id] = 1

    9.                 client_cmd(id, "setinfo ^"no_sounds^" ^"1^"")

    10.                 client_print(id, print_chat, "* Misc. Stats Sounds have been disabled")

    11.         }

    12. }
    [/pawn]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось qpAHToMAS 11 авг 2013, 13:26, всего редактировалось 1 раз.
Аватара пользователя
qpAHToMAS
 
Сообщения: 707
Зарегистрирован: 02 ноя 2009, 18:45
Благодарил (а): 79 раз.
Поблагодарили: 204 раз.
Языки программирования: CStrike

Re: Misc. Stats — звуки по желанию

Сообщение ovr-ovr » 11 авг 2013, 12:57

Спасибо. equali не оч может equal?
Аватара пользователя
ovr-ovr
 
Сообщения: 52
Зарегистрирован: 02 июн 2013, 22:26
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Misc. Stats — звуки по желанию

Сообщение liFe iS GoOD » 11 авг 2013, 13:16

ovr-ovr писал(а):Спасибо. equali не оч может equal?



Чем она тебе "не оч"?
Эти функции идентичны , только различие в том , что equali не чувствительна к регистру текста.
Аватара пользователя
liFe iS GoOD
Модератор
 
Сообщения: 1416
Зарегистрирован: 24 май 2012, 19:48
Благодарил (а): 116 раз.
Поблагодарили: 472 раз.

Re: Misc. Stats — звуки по желанию

Сообщение ovr-ovr » 11 авг 2013, 13:21

Конопелька писал(а):
ovr-ovr писал(а):Спасибо. equali не оч может equal?



Чем она тебе "не оч"?
Эти функции идентичны , только различие в том , что equali не чувствительна к регистру текста.

Это я и хотел сказать
Аватара пользователя
ovr-ovr
 
Сообщения: 52
Зарегистрирован: 02 июн 2013, 22:26
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Misc. Stats — звуки по желанию

Сообщение qpAHToMAS » 11 авг 2013, 13:28

Ну, от смены equali() на equal() я думаю ничего не изменится, ибо мы сравниваем цифру.
Наверняка есть еще какой-нибудь способ сравнить, я не знаю.
И да, дополнил туториал, добавив "/no_sounds" чат-команду для игроков.
Аватара пользователя
qpAHToMAS
 
Сообщения: 707
Зарегистрирован: 02 ноя 2009, 18:45
Благодарил (а): 79 раз.
Поблагодарили: 204 раз.
Языки программирования: CStrike

Re: Misc. Stats — звуки по желанию

Сообщение Plrip » 11 авг 2013, 13:57

Ещё с containi вроде можно.

Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]


Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6