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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

простенький и красивый /mute

, /mute
Статус пользователя mandarin
сообщение 31.1.2015, 14:00
Сообщение #1


Стаж: 11 лет

Сообщений: 80
Благодарностей: 3
Полезность: < 0

Ищу простенький и красивый /mute ;)

Отредактировал: mandarin, - 31.1.2015, 14:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Immunity
сообщение 31.1.2015, 14:01
Сообщение #2
Стаж: 11 лет

Сообщений: 444
Благодарностей: 119
Полезность: 139

Поиск, не?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mandarin
сообщение 31.1.2015, 14:02
Сообщение #3


Стаж: 11 лет

Сообщений: 80
Благодарностей: 3
Полезность: < 0

Цитата(Immunity @ 31.1.2015, 14:01) *
Поиск, не?

тут на форуме искал 1 понравился.но ссылка битая(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
BariN
сообщение 31.1.2015, 14:05
Сообщение #4
Стаж: 12 лет

Сообщений: 761
Благодарностей: 324
Полезность: 0

https://c-s.net.ua/forum/topic58692.html?hl...%F7%E0%ED%EA%E0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mandarin
сообщение 31.1.2015, 14:08
Сообщение #5


Стаж: 11 лет

Сообщений: 80
Благодарностей: 3
Полезность: < 0

Цитата(BariN @ 31.1.2015, 14:05) *

Спасибо,но мне не для админов.Нужно чтобы для всех игроков работала команда /mute
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
BariN
сообщение 31.1.2015, 14:17
Сообщение #6
Стаж: 12 лет

Сообщений: 761
Благодарностей: 324
Полезность: 0

А этот?
Код:
#include <amxmodx>
#include <fakemeta>

#define MAX_PLAYERS 32

new bool:g_mute[MAX_PLAYERS+1][MAX_PLAYERS+1], bool:g_muteall[MAX_PLAYERS + 1];
new g_menuposition[MAX_PLAYERS+1]
new g_menuplayers[MAX_PLAYERS+1][32]
new g_menuplayersnum[MAX_PLAYERS+1]

new cvar_alltalk
new g_maxclients

public plugin_init()
{
register_plugin("Mute", "1.0", "Frank")

register_clcmd("say", "clcmd_say")
register_clcmd("say_team", "clcmd_say")

register_forward(FM_Voice_SetClientListening, "fwd_voice_setclientlistening")
register_menucmd(register_menuid("mute menu"), 1023, "action_mutemenu")

cvar_alltalk = get_cvar_pointer("sv_alltalk")
g_maxclients = global_get(glb_maxClients)
}

public client_putinserver(id)
clear_list(id)

public client_disconnect(id)
clear_list(id)

clear_list(id)
{
for(new i = 0; i <= g_maxclients; ++i)
g_mute[id][i] = false

g_muteall[id] = false;
}

public clcmd_say(id)
{
static say_args[10]
read_args(say_args, 9)
remove_quotes(say_args)

if(say_args[0] == '/' && containi(say_args, "mute") != -1)
{
display_mutemenu(id, g_menuposition[id] = 0)
return PLUGIN_HANDLED_MAIN
}
return PLUGIN_CONTINUE
}

public fwd_voice_setclientlistening(receiver, sender, listen)
{
if(receiver == sender)
return FMRES_IGNORED

if(g_mute[receiver][sender])
{
engfunc(EngFunc_SetClientListening, receiver, sender, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}

display_mutemenu(id, pos)
{
if(pos < 0)
return

static team[11]
get_user_team(id, team, 10)

new at = get_pcvar_num(cvar_alltalk)
get_players(g_menuplayers[id], g_menuplayersnum[id],
at ? "c" : "ce", at ? "" : team)

new start = pos * 7
if(start >= g_menuplayersnum[id])
start = pos = g_menuposition[id]

new end = start + 7
if(end > g_menuplayersnum[id])
end = g_menuplayersnum[id]

static menubody[512]
new len = format(menubody, 511, "\rВыберите игрока.^n^n")

static name[32]

new b = 0, i
new keys = MENU_KEY_0 | MENU_KEY_8

for(new a = start; a < end; ++a)
{
i = g_menuplayers[id][a]
get_user_name(i, name, 31)

if(i == id)
{
++b
len += format(menubody[len], 511 - len, "\r%d. \d%s %s \d[\rЭто Вы\d]^n", b, name, g_mute[id][i] ? "\d[\rЗаткнут\d]" : "")
}
else
{
keys |= (1<<b)
len += format(menubody[len], 511 - len, "\r%s%d. %s%s %s^n", g_mute[id][i] ? "\r" : "\r", ++b, g_mute[id][i] ? "\d" : "\w", name, g_mute[id][i] ? "\d[\rЗаткнут\d]" : "")
}
}

len += format(menubody[len], 511 - len, "^n\r8. \w%s^n", g_mute[id][i] ? "Заткнуть всех" : "Слышать всех" );

if(end != g_menuplayersnum[id])
{
format(menubody[len], 511 - len, "^n\r9. \w%s^n\r0. %s", "\yДальше", pos ? "\yНазад" : "\rВыход")
keys |= MENU_KEY_9
}
else
{
format(menubody[len], 511-len, "^n\r0. \w%s", pos ? "\yНазад" : "\rВыход")
}

show_menu(id, keys, menubody, -1, "mute menu")
}


public action_mutemenu(id, key)
{
switch(key)
{
case 7:
{
new players[32], num;

get_players(players, num);

for(new i; i < num; ++i)
{
if(players[i] == id)
continue;

g_mute[id][players[i]] = g_mute[id][players[i]] ? false : true;
}
g_muteall[id] = g_muteall[id] ? false : true;
display_mutemenu(id, g_menuposition[id])
return PLUGIN_HANDLED;
}

case 8: display_mutemenu(id, ++g_menuposition[id])
case 9: display_mutemenu(id, --g_menuposition[id])

default:
{
new player = g_menuplayers[id][g_menuposition[id] * 7 + key]

g_mute[id][player] = g_mute[id][player] ? false : true
display_mutemenu(id, g_menuposition[id])

}
}
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя perfectblood0
сообщение 31.1.2015, 14:21
Сообщение #7
Стаж: 17 лет

Сообщений: 5065
Благодарностей: 2685
Полезность: 488

https://forums.alliedmods.net/showthread.php?p=480637
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя primm
сообщение 31.1.2015, 14:21
Сообщение #8


Стаж: 16 лет
Город: Москва

Сообщений: 517
Благодарностей: 140
Полезность: 520

Скрытый текст

Код
/*
*    Плагин: Client Mute Menu
*    Версии: 1.0 - Первый релиз
*            1.1 - Исправлен мистический баг
*                  Добавлен булевый массив, для сохранения настроек каждого игрока.
*    
*    Доработка: by Feodor, 9iky6
*
*    Автор идеи внедрения плагина с такой функцией: cheap_suit
*
*    Стиль использования кода(меню, переменные):
*   1.     AMXX Dev Team & Wildness Team
*
*    Следующие версии - не планируется !
*   ФАЙЛ СКАЧЕН С РОССИЙСКОГО ФОРУМА >>> AMX-X.RU
*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "MuteMenu(by Feodor/9iky6)"
#define VERSION "1.1"
#define AUTHOR "cheap_suit"

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new bool:g_mute[33][33]
new bool:allmute[33]
new g_maxClients
new g_SayText

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar(PLUGIN, VERSION, FCVAR_SERVER | FCVAR_SPONLY)
    register_clcmd("say /mute", "cmdSayMute")
    register_clcmd("say_team /mute", "cmdSayMute")
    register_forward(FM_Voice_SetClientListening, "voiceClientListening")
    register_menucmd(register_menuid("Mute Menu"), 1023, "actionMuteMenu")
    g_SayText = get_user_msgid("SayText")
    g_maxClients = get_maxplayers()
}
public client_putinserver(id) {
    clear_list(id)
}
public client_disconnect(id) {
    clear_list(id)
}
clear_list(id) {
    allmute[id] = false
    for(new i = 1; i <= g_maxClients; ++i)
        g_mute[id][i] = false
}
public voiceClientListening(receiver, sender, listen) {
    if(receiver == sender)
        return FMRES_IGNORED
    if(g_mute[receiver][sender]) {
        engfunc(EngFunc_SetClientListening, receiver, sender, 0)
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}
public cmdSayMute(id) {
    displayMuteMenu(id, g_menuPosition[id] = 0)
    return PLUGIN_HANDLED_MAIN
}
displayMuteMenu(id, pos) {
    if (pos < 0)
        return
    get_players(g_menuPlayers[id], g_menuPlayersNum[id])
    new menuBody[512]
    new name[32]
    new i,b = 0
    new start = pos * 7
    if(start >= g_menuPlayersNum[id])
        start = pos = g_menuPosition[id] = 0
    formatex(menuBody, 511,"%s\r[\yMEHЮ Заткнуть игрока :\d: Ваш сервер\r]\R%d/%d^n^n", menuBody, pos + 1,
        (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
    new end = start + 7
    new keys = MENU_KEY_0|MENU_KEY_8
    if (end > g_menuPlayersNum[id])
        end = g_menuPlayersNum[id]
    for(new a = start; a < end; ++a) {
        i = g_menuPlayers[id][a]
        get_user_name(i, name, 31)
        if (i == id) {
            ++b
            formatex(menuBody, 511, "%s\d%d. %s [\rВы\d]^n", menuBody, b, name)    
        }else{
            keys |= (1<<b)
            if (get_user_flags(i) & ADMIN_BAN && i != id)
                formatex(menuBody, 511, "%s\d%d. %s [\radmin\d]^n",menuBody , ++b, name)
            else
                formatex(menuBody, 511,  "%s\r%d. \w%s %s^n", menuBody, ++b, name, g_mute[id][i] ? "[\rMute\w]" : "")
        }
    }
    formatex(menuBody, 511,  "%s^n\r8. \y%s^n", menuBody, allmute[id] ? "Снять со Всех" : "Поставить на Всех")
    if (end != g_menuPlayersNum[id]) {
        formatex(menuBody, 511, "%s^n\r9. \yДaлee^n\r0. %s", menuBody, pos ? "[\yHaзaд :\d: EXIT\r]" : "[\yBыхoд :\d: EXIT\r]")
        keys |= MENU_KEY_9
    }else
        formatex(menuBody, 511, "%s^n\r0. %s", menuBody, pos ? "[\yHaзaд :\d: EXIT\r]" : "[\yBыхoд :\d: EXIT\r]")
    
    show_menu(id, keys, menuBody, -1, "Mute Menu")
}
public actionMuteMenu(id, key) {
    switch(key) {
        case 7: {
            if(allmute[id]) {
                clear_list(id)
                color_print(id, "!y[!gMUTE!y] Снял со Всех")
            }else{
                allmute[id] = true
                for (new i = 0; i <= g_maxClients; ++i) {
                    if (is_user_connected(i)) {
                        if (get_user_flags(i) & ADMIN_BAN || i == id)
                            g_mute[id][i] = false
                        else
                            g_mute[id][i] = true
                    }
                }
                color_print(id, "!y[!gMUTE!y] Поставил на Всех")
            }
        }
        case 8: displayMuteMenu(id, ++g_menuPosition[id])
        case 9: displayMuteMenu(id, --g_menuPosition[id])
        default: {
            new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
            if (is_user_connected(player)) {
                if (get_user_flags(player) & ADMIN_BAN || player == id) {
                    displayMuteMenu(id, g_menuPosition[id])
                    return PLUGIN_HANDLED
                }else{
                    allmute[id] = false
                    g_mute[id][player] = g_mute[id][player] ? false : true
                    new name[32], name2[32]
                    get_user_name(id, name, 31)
                    get_user_name(player, name2, 31)
                    color_print(id, "!y[!gMUTE!y] %s: %s - !t%s", name, g_mute[id][player] ? "Ты не слышишь игрока" : "Ты слышишь игрока", name2)
                    displayMuteMenu(id, g_menuPosition[id])
                    return PLUGIN_HANDLED
                }
            }else
            displayMuteMenu(id, g_menuPosition[id] = 0)
        }
    }
    return PLUGIN_HANDLED
}
/* Stock colors for chat messages */
stock color_print(index, const input[], any:...) {
    new msg[191], players[32], count = 1
    vformat(msg, charsmax(msg), input, 3)
    replace_all(msg,charsmax(msg),"!g","^4")
    replace_all(msg,charsmax(msg),"!y","^1")
    replace_all(msg,charsmax(msg),"!t","^3")
    if(index) players[0] = index; else get_players(players,count,"сh")
    for (new i = 0; i < count; ++i) {
        if (is_user_connected(players[i])) {
            message_begin(MSG_ONE_UNRELIABLE, g_SayText,_, players[i])
            write_byte(players[i])
            write_string(msg)
            message_end()
        }
    }
}


этот можешь посмотреть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mandarin
сообщение 31.1.2015, 14:30
Сообщение #9


Стаж: 11 лет

Сообщений: 80
Благодарностей: 3
Полезность: < 0

Цитата(primm @ 31.1.2015, 14:21) *
Скрытый текст

Код
/*
*    Плагин: Client Mute Menu
*    Версии: 1.0 - Первый релиз
*            1.1 - Исправлен мистический баг
*                  Добавлен булевый массив, для сохранения настроек каждого игрока.
*    
*    Доработка: by Feodor, 9iky6
*
*    Автор идеи внедрения плагина с такой функцией: cheap_suit
*
*    Стиль использования кода(меню, переменные):
*   1.     AMXX Dev Team & Wildness Team
*
*    Следующие версии - не планируется !
*   ФАЙЛ СКАЧЕН С РОССИЙСКОГО ФОРУМА >>> AMX-X.RU
*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "MuteMenu(by Feodor/9iky6)"
#define VERSION "1.1"
#define AUTHOR "cheap_suit"

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new bool:g_mute[33][33]
new bool:allmute[33]
new g_maxClients
new g_SayText

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar(PLUGIN, VERSION, FCVAR_SERVER | FCVAR_SPONLY)
    register_clcmd("say /mute", "cmdSayMute")
    register_clcmd("say_team /mute", "cmdSayMute")
    register_forward(FM_Voice_SetClientListening, "voiceClientListening")
    register_menucmd(register_menuid("Mute Menu"), 1023, "actionMuteMenu")
    g_SayText = get_user_msgid("SayText")
    g_maxClients = get_maxplayers()
}
public client_putinserver(id) {
    clear_list(id)
}
public client_disconnect(id) {
    clear_list(id)
}
clear_list(id) {
    allmute[id] = false
    for(new i = 1; i <= g_maxClients; ++i)
        g_mute[id][i] = false
}
public voiceClientListening(receiver, sender, listen) {
    if(receiver == sender)
        return FMRES_IGNORED
    if(g_mute[receiver][sender]) {
        engfunc(EngFunc_SetClientListening, receiver, sender, 0)
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}
public cmdSayMute(id) {
    displayMuteMenu(id, g_menuPosition[id] = 0)
    return PLUGIN_HANDLED_MAIN
}
displayMuteMenu(id, pos) {
    if (pos < 0)
        return
    get_players(g_menuPlayers[id], g_menuPlayersNum[id])
    new menuBody[512]
    new name[32]
    new i,b = 0
    new start = pos * 7
    if(start >= g_menuPlayersNum[id])
        start = pos = g_menuPosition[id] = 0
    formatex(menuBody, 511,"%s\r[\yMEHЮ Заткнуть игрока :\d: Ваш сервер\r]\R%d/%d^n^n", menuBody, pos + 1,
        (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
    new end = start + 7
    new keys = MENU_KEY_0|MENU_KEY_8
    if (end > g_menuPlayersNum[id])
        end = g_menuPlayersNum[id]
    for(new a = start; a < end; ++a) {
        i = g_menuPlayers[id][a]
        get_user_name(i, name, 31)
        if (i == id) {
            ++b
            formatex(menuBody, 511, "%s\d%d. %s [\rВы\d]^n", menuBody, b, name)    
        }else{
            keys |= (1<<b)
            if (get_user_flags(i) & ADMIN_BAN && i != id)
                formatex(menuBody, 511, "%s\d%d. %s [\radmin\d]^n",menuBody , ++b, name)
            else
                formatex(menuBody, 511,  "%s\r%d. \w%s %s^n", menuBody, ++b, name, g_mute[id][i] ? "[\rMute\w]" : "")
        }
    }
    formatex(menuBody, 511,  "%s^n\r8. \y%s^n", menuBody, allmute[id] ? "Снять со Всех" : "Поставить на Всех")
    if (end != g_menuPlayersNum[id]) {
        formatex(menuBody, 511, "%s^n\r9. \yДaлee^n\r0. %s", menuBody, pos ? "[\yHaзaд :\d: EXIT\r]" : "[\yBыхoд :\d: EXIT\r]")
        keys |= MENU_KEY_9
    }else
        formatex(menuBody, 511, "%s^n\r0. %s", menuBody, pos ? "[\yHaзaд :\d: EXIT\r]" : "[\yBыхoд :\d: EXIT\r]")
    
    show_menu(id, keys, menuBody, -1, "Mute Menu")
}
public actionMuteMenu(id, key) {
    switch(key) {
        case 7: {
            if(allmute[id]) {
                clear_list(id)
                color_print(id, "!y[!gMUTE!y] Снял со Всех")
            }else{
                allmute[id] = true
                for (new i = 0; i <= g_maxClients; ++i) {
                    if (is_user_connected(i)) {
                        if (get_user_flags(i) & ADMIN_BAN || i == id)
                            g_mute[id][i] = false
                        else
                            g_mute[id][i] = true
                    }
                }
                color_print(id, "!y[!gMUTE!y] Поставил на Всех")
            }
        }
        case 8: displayMuteMenu(id, ++g_menuPosition[id])
        case 9: displayMuteMenu(id, --g_menuPosition[id])
        default: {
            new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
            if (is_user_connected(player)) {
                if (get_user_flags(player) & ADMIN_BAN || player == id) {
                    displayMuteMenu(id, g_menuPosition[id])
                    return PLUGIN_HANDLED
                }else{
                    allmute[id] = false
                    g_mute[id][player] = g_mute[id][player] ? false : true
                    new name[32], name2[32]
                    get_user_name(id, name, 31)
                    get_user_name(player, name2, 31)
                    color_print(id, "!y[!gMUTE!y] %s: %s - !t%s", name, g_mute[id][player] ? "Ты не слышишь игрока" : "Ты слышишь игрока", name2)
                    displayMuteMenu(id, g_menuPosition[id])
                    return PLUGIN_HANDLED
                }
            }else
            displayMuteMenu(id, g_menuPosition[id] = 0)
        }
    }
    return PLUGIN_HANDLED
}
/* Stock colors for chat messages */
stock color_print(index, const input[], any:...) {
    new msg[191], players[32], count = 1
    vformat(msg, charsmax(msg), input, 3)
    replace_all(msg,charsmax(msg),"!g","^4")
    replace_all(msg,charsmax(msg),"!y","^1")
    replace_all(msg,charsmax(msg),"!t","^3")
    if(index) players[0] = index; else get_players(players,count,"сh")
    for (new i = 0; i < count; ++i) {
        if (is_user_connected(players[i])) {
            message_begin(MSG_ONE_UNRELIABLE, g_SayText,_, players[i])
            write_byte(players[i])
            write_string(msg)
            message_end()
        }
    }
}


этот можешь посмотреть.

Спасибо)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя knix
сообщение 5.2.2015, 20:11
Сообщение #10


Стаж: 14 лет

Сообщений: 245
Благодарностей: 57
Полезность: 37

есть у кого нибудь рабочий?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя igas
сообщение 5.2.2015, 21:51
Сообщение #11


Стаж: 13 лет

Сообщений: 107
Благодарностей: 52
Полезность: 361

knix, держи, делал скромный мут для себя, в отличие от других:
- не показывает себя в списке
- возможность одной кнопкой дать\снять всем мут
- в меню показывает кому дан мут
- админам показывает кто администратор ( ник *)
- в зависимости какой присвоен квар sv_alltalk, отображаются игроки (команда\все)
- простой и легкий

Скрытый текст
Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define ADMIN_FLAG ADMIN_BAN

new const m_iMenu = 205

enum base_
{
c_player[32],
c_name[32],
c_page,
c_num
}
new data[33][base_]
new bool:g_bPlayerMute[33][33], bool:g_bMuteAll[33]
new g_cvar_alltalk

public plugin_init()
{
register_plugin(
"Mute Menu",
"1.0",
"Rjava"
)

new cvar_alltalk
new szCommand[][] = {
"say /mute",
"say_team /mute"
}

for(new i = 0; i < sizeof szCommand; i++)
register_clcmd(szCommand[i], "cmdMuteMenu")

register_dictionary("addon_mute_menu.txt")
cvar_alltalk = get_cvar_pointer("sv_alltalk")
g_cvar_alltalk = get_pcvar_num(cvar_alltalk)
register_forward(FM_Voice_SetClientListening, "fwd_voice_setclientlistening")
register_menucmd(register_menuid("PlayerMenu"), 1023, "MenuHandler")
}

public cmdMuteMenu(id)
{
fnShowMenu(id, data[id][c_page] = 0)
return PLUGIN_HANDLED
}

public client_connect(id)
{
g_bMuteAll[id] = false
arrayset(g_bPlayerMute[id], false, sizeof g_bPlayerMute[])

}
public client_disconnect(id)
{
g_bMuteAll[id] = false
arrayset(g_bPlayerMute[id], false, sizeof g_bPlayerMute[])
}

public fnShowMenu(id, iPage)
{
if(iPage < 0)
return PLUGIN_HANDLED

new iPlayers[32], iPlayer, iNum, iMute, iItem, i
new szMenu[512], szName[32], szTeam[32]

get_user_team(id, szTeam, charsmax(szTeam))
get_players(iPlayers, iNum, g_cvar_alltalk ? "h":"eh", g_cvar_alltalk ? "":szTeam)

data[id][c_num] = 0
data[id][c_page] = iPage

for(i = 0; i < iNum; i++){
iPlayer = iPlayers[i]

if(id != iPlayer)
data[id][c_player][data[id][c_num]++] = iPlayer

get_user_name(iPlayer, data[iPlayer][c_name], charsmax(data[][c_name]))
}

if(data[id][c_num] <= 0){
set_hudmessage(0, 255, 50, -1.0, 0.35, 0, 0.0, 2.0, 0.0, 1.0, -1)
show_hudmessage(id, "%L", id, "#MuteNoPlayer")
return PLUGIN_HANDLED
}

i = min(iPage * 7, data[id][c_num])
new iStart = i - (i % 7)
new iEnd = min(iStart + 7, data[id][c_num])
iPage = iStart / 7

new iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "#MuteMenuTitle")
new iKeys = MENU_KEY_0

for(i = iStart; i < iEnd; ++i){
if(i < data[id][c_num]){
iKeys |= (1 << iItem)
iPlayer = data[id][c_player][i]
iMute = g_bPlayerMute[id][iPlayer]
copy(szName, charsmax(szName), data[iPlayer][c_name])

if((get_user_flags(id) & ADMIN_FLAG) && (get_user_flags(iPlayer) & ADMIN_FLAG))
add(szName, charsmax(szName), "^t\r*")

if(iMute)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w%d\r].\w^t%s^t%L^n", ++iItem, szName, id, "#Muted")
else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w%d\r].\w^t%s^n", ++iItem, szName)
} else {
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen,"^n")
++iItem
}
}

iKeys |= MENU_KEY_8
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w8\r].^t\y%L^n", id, g_bMuteAll[id] ? "#UnmuteAll":"#MuteAll")

if(iEnd < data[id][c_num]){
iKeys |= MENU_KEY_9
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w9\r].^t\w%L^n\r[\w0\r].^t\w%L", id, "#MuteNext", id, iPage ? "#MuteBack":"#MuteExit")
} else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w0\r].^t\w%L", id, iPage ? "#MuteBack":"#MuteExit")

set_pdata_int(id, m_iMenu, 0)
return show_menu(id, iKeys, szMenu, -1, "PlayerMenu")
}

public MenuHandler(id, iKeys)
{
switch(iKeys){
case 7:{
g_bMuteAll[id] = !g_bMuteAll[id]
arrayset(g_bPlayerMute[id], g_bMuteAll[id], sizeof g_bPlayerMute[])
}
case 8: fnShowMenu(id, ++data[id][c_page])
case 9: fnShowMenu(id, --data[id][c_page])
default:{
new iPlayer = data[id][c_player][data[id][c_page] * 7 + iKeys]
g_bPlayerMute[id][iPlayer] = !g_bPlayerMute[id][iPlayer]
fnShowMenu(id, data[id][c_page])
}
}
return PLUGIN_HANDLED
}

public fwd_voice_setclientlistening(receiver, sender, listen)
{
if(receiver == sender)
return FMRES_IGNORED

if(g_bPlayerMute[receiver][sender])
{
engfunc(EngFunc_SetClientListening, receiver, sender, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}

Прикрепленные файлы:
Прикрепленный файл  mute_menu.rar ( 1,87 килобайт ) Кол-во скачиваний: 374
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 11 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: