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

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

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

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

18 страниц V  « 12 13 14 ... 16 17 »

Yet Another Voteban

, Баним негодяев бесплатно без смс и регистрации
Статус пользователя freeman92
сообщение 19.1.2015, 11:37
Сообщение #241
Стаж: 11 лет

Сообщений: 46
Благодарностей: 1
Полезность: 18

Цитата(AndrewZ @ 19.1.2015, 10:44) *
v1.52:
Исправил пару ошибок со звуковым оповещением.

https://c-s.net.ua/forum/ipb.html?act=attac...st&id=30566

как этот звук вообще убрать ?

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 19.1.2015, 11:43
Сообщение #242


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Цитата(freeman92 @ 19.1.2015, 13:37) *
как этот звук вообще убрать ?

путем редактирования исходника)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя freeman92
сообщение 19.1.2015, 11:45
Сообщение #243
Стаж: 11 лет

Сообщений: 46
Благодарностей: 1
Полезность: 18

Цитата(AndrewZ @ 19.1.2015, 11:43) *
путем редактирования исходника)

не могли бы сделать и скинуть исходник, так как я не знаю как сделать)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя syomka
сообщение 21.2.2015, 18:51
Сообщение #244
Стаж: 11 лет

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

а что делать если в контре пишет ?
Сервер отправил запрещеную команду: messagemode voteban_reaso
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Evgen016
сообщение 10.3.2015, 15:19
Сообщение #245
Стаж: 11 лет

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

Да такая же история... Тестировал на 5 разных контрах (нон стим) на 1-ой только все норм. На остальных: Сервер отправил запрещеную команду: messagemode voteban_reaso.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 10.3.2015, 15:25
Сообщение #246


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Evgen016, это вопрос к сборщикам которые так настраивают протекторы
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Oneshot
сообщение 10.3.2015, 21:05
Сообщение #247
Стаж: 13 лет

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

Закомментируйте или удалите, если не хотите использовать модуль fakemeta.
для чего нужна этот модуль в вотебане?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Jlx7
сообщение 10.3.2015, 23:23
Сообщение #248


Стаж: 12 лет
Город: Moscow

Сообщений: 322
Благодарностей: 243
Полезность: 346

Oneshot, omg
Цитата
#Дополнительные модули:
Fakemeta - опционально, для предотвращения "накладывания" менюшек на стандартные меню CS (voice, team menu). (Отключается в исходнике).


HI!!!!!!!!!!!!!!!!!!!!!!!!!!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kenZZo
сообщение 12.3.2015, 20:45
Сообщение #249
Стаж: 14 лет

Сообщений: 64
Благодарностей: 6
Полезность: 75

AndrewZ, как тебе идея, переназначить клавиши выбора решения?)

Клик

Отредактировал: kenZZo, - 12.3.2015, 20:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
voed
сообщение 15.6.2015, 16:11
Сообщение #250
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(kenZZo @ 12.3.2015, 21:45) *
AndrewZ, как тебе идея, переназначить клавиши выбора решения?)

Клик

Я считаю это ненужной опцией. Со стороны бана да, это хорошо, игроки будут внимательно смотреть на меню перед нажатием. Но со стороны игрока бывает стреляешься с кем-то а тут вылазит разноцветная менюшка, которая отвлекает, ты пытаешься ее закрыть, и пока находишь как это сделать тебя уже убили
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zippel
сообщение 23.6.2015, 14:18
Сообщение #251


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

Цитата
Use your ban-menu


Это еще что такое?) Какое еще ur menu?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 23.6.2015, 14:34
Сообщение #252
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(zippel @ 23.6.2015, 15:18) *
Это еще что такое?) Какое еще ur menu?)

amx_banmenu, ваш кэп
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zippel
сообщение 25.6.2015, 10:33
Сообщение #253


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

Цитата(voed @ 23.6.2015, 15:34) *
amx_banmenu, ваш кэп


дык это же вроде стандартное.. я хочетл затестить этот :) ну ладно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 25.6.2015, 10:35
Сообщение #254


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Цитата(zippel @ 25.6.2015, 12:33) *
дык это же вроде стандартное.. я хочетл затестить этот :) ну ладно.


Ну типа у админов есть своя банилка, зачем им вотебан для юзеров. Да и голосование "забанить ли этого игрока" от админа - выглядит ужасно глупо.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя zippel
сообщение 25.6.2015, 13:06
Сообщение #255


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

Цитата(AndrewZ @ 25.6.2015, 10:35) *
Ну типа у админов есть своя банилка, зачем им вотебан для юзеров. Да и голосование "забанить ли этого игрока" от админа - выглядит ужасно глупо.


Понятно. Да мне админ вотебан ненадо, если что я могу и стандартный вотебан запустить. Тут я косяк заметил, или это может и не косяк. Просто сам лично не знаком с функцией cmd_target, которая работает с параметром target в скрипте multi_advanced_bans, который является дополнением к системе advanced_bans. И в общем к чему я веду. multi_advanced_bans банит через ID игрока, а YAV через SteamID (ну как и должно быть для стандартного случая с advanced, который конечно по дефолту нет смысла юзать, ведь нормальный его функционал без патча multi_ невозможен(конечно если у вас не онли стим, ибо в этом случае все нормально тогда)). Смысл в чем моего поста: если вы используете стандартный AB тогда все нормально, если вы используете multiban для AB тогда надо переписать 3й case либо добавить еще один. Просто сейчас с этим столнулся, решил сразу отписать, что бы не возникало вопросов.

p.s. кстати, синтаксис amx_superban точно такой же как и amx_multiban

Отредактировал: zippel, - 25.6.2015, 13:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя zippel
сообщение 27.6.2015, 15:11
Сообщение #256


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

БАГ: после окончания бана, у игрока который не проголосовал, не пропадает меню выбора голоса.

Отредактировал: zippel, - 27.6.2015, 15:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 3.7.2015, 15:37
Сообщение #257


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Цитата(zippel @ 27.6.2015, 17:11) *
БАГ: после окончания бана, у игрока который не проголосовал, не пропадает меню выбора голоса.

Эт не баг, там и нет функции закрытия меню :I

Просто ему скажут, что голосование уже окончено, если нажмет что-то.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 3.7.2015, 16:32
Сообщение #258


Стаж: 11 лет

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Было бы хорошо,если было бы два выбора : Да и Нет,на цыфры 5,6 и можно было бы ограничить доступ к нему,для випов только или для всех :)
Этот вотебан просто шикарен.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 4.7.2015, 18:49
Сообщение #259


Стаж: 11 лет

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Всем привет.

Прошу помощи в небольшой корректировки плагина:
Yet Another Voteban (Пост #516905)
Как подредактировать:
1.Чтобы в менюшке было только Да и Нет,на 5 и 6 цыфры.
2.Чтобы могли использовать VIP игроки только. (Можно кваром.Флаг доступа к вотебану типо blush.gif )
Буду благодарен.
Исходник код:
Скрытый текст

Код:
Код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta> // Закомментируйте или удалите, если не хотите использовать модуль fakemeta.

#define PLUGIN        "Yet Another Voteban"
#define VERSION        "1.52"
#define AUTHOR        "AndrewZ/noskill"


#if defined _fakemeta_included
    #define OFFSET_CSMENUCODE    205
#endif


#define MAX_PLAYERS    32        // Максимальное количество игроков на вашем сервере. Вообще-то, можно и не трогать.
#define MSGS_PREFIX    "YAV"    // Префикс для сообщений в чат и для причины бана в банлисте (оставьте как есть, если хотите, чтобы автору было приятно).

#define TID_ENDVOTE 1000

enum
{
    MENU_SOUND_SELECT, // 0
    MENU_SOUND_DENY, // 1
    MENU_SOUND_SUCCESS // 2
}

new g_pcvar_time_default,
    g_pcvar_time,
    g_pcvar_ban_type,
    g_pcvar_delay,
    g_pcvar_duration,
    g_pcvar_percent,
    g_pcvar_min_players,
    g_pcvar_spec_admins,
    g_pcvar_time_access,
    g_pcvar_admin_access,
    g_pcvar_immunity_access

new g_menus_sounds[][] =
{
    "buttons/lightswitch2.wav", // 0
    "buttons/button2.wav", // 1
    "buttons/blip1.wav" // 2
}

new g_user_menu_page[ MAX_PLAYERS + 1 ],
    g_user_menu_players[ MAX_PLAYERS + 1 ][ MAX_PLAYERS ],
    g_user_playerid[ MAX_PLAYERS + 1 ],
    g_user_reason[ MAX_PLAYERS + 1 ][ 26 ],
    g_user_time[ MAX_PLAYERS + 1 ],
    g_user_votes_for_ban[ MAX_PLAYERS + 1 ],
    g_user_start_game_time[ MAX_PLAYERS + 1 ]

new g_ban_id,
    g_reason[ 26 ],
    g_time

new bool:g_started
new g_parsed_time_strings[ 5 ][ 8 ]


public plugin_precache()
{
    static i
    
    for(  i = 0; i < sizeof g_menus_sounds; i ++ )
        precache_sound( g_menus_sounds[ i ] )
}

public plugin_init()
{
    register_plugin( PLUGIN, VERSION, AUTHOR )
    
    g_pcvar_time_default =         register_cvar( "yav_time_default", "5" )
    g_pcvar_time =                 register_cvar( "yav_time", "5 15 30 60 180" )
    g_pcvar_ban_type =             register_cvar( "yav_ban_type", "2" )
    g_pcvar_delay =             register_cvar( "yav_delay", "5" )
    g_pcvar_duration =            register_cvar( "yav_duration", "15" )
    g_pcvar_percent =             register_cvar( "yav_percent", "60" )
    g_pcvar_min_players =         register_cvar( "yav_min_players", "3" )
    g_pcvar_spec_admins =         register_cvar( "yav_spec_admins", "0" )
    g_pcvar_time_access =         register_cvar( "yav_time_access", "c" )
    g_pcvar_admin_access =         register_cvar( "yav_admin_access", "d" )
    g_pcvar_immunity_access =     register_cvar( "yav_immunity_access", "a" )
    
    register_clcmd( "say /voteban", "cmd_voteban_players_menu" )
    register_clcmd( "say_team /voteban", "cmd_voteban_players_menu" )
    register_clcmd( "amx_votebanmenu", "show_voteban_main_menu" )
    
    register_clcmd( "voteban_reason", "cmd_voteban_reason" )
    
    register_menu( "voteban_players_menu", 1023, "handler_voteban_players_menu" )
    register_menu( "voteban_main_menu", -1, "handler_voteban_main_menu" )
    register_menu( "voteban_time_menu", -1, "handler_voteban_time_menu" )
    register_menu( "voteban_menu", -1, "handler_voteban_menu" )

    register_dictionary( "yet_another_voteban.txt" )
}

public plugin_cfg()
{
    new string[ 44 ]; get_pcvar_string( g_pcvar_time, string, 43 )
    
    parse( string,    g_parsed_time_strings[ 0 ], 7,
                    g_parsed_time_strings[ 1 ], 7,
                    g_parsed_time_strings[ 2 ], 7,
                    g_parsed_time_strings[ 3 ], 7,
                    g_parsed_time_strings[ 4 ], 7 )
}

public client_connect( id )
    clear_user_voteban_data( id )

public client_disconnect( id )
    clear_user_voteban_data( id )

public clear_user_voteban_data( id )
{
    g_user_menu_page[ id ] = 0
    g_user_playerid[ id ] = 0
    g_user_time[ id ] = get_pcvar_num( g_pcvar_time_default )
    arrayset( g_user_menu_players[ id ], 0, MAX_PLAYERS )
    arrayset( g_user_reason[ id ], 0, 26 )
    
    if( g_ban_id == id )
        clear_voteban_data()
}

public clear_voteban_data()
{
    g_started = false
    g_ban_id = 0
    g_time = 0
    arrayset( g_reason, 0, 26 )
    arrayset( g_user_votes_for_ban, 0, MAX_PLAYERS + 1 )
}

public cmd_voteban_reason( id )
{
    new args[ 26 ]
    read_args( args, 25 )
    remove_quotes( args )
    
    g_user_reason[ id ] = args
    
    show_voteban_main_menu( id )
    
    return PLUGIN_HANDLED
}

public cmd_voteban_players_menu( id )
{
    if( !voteban_available( id ) )
        return PLUGIN_HANDLED

    show_voteban_players_menu( id, 0 )

    return PLUGIN_HANDLED
}

public show_voteban_players_menu( id, page )
{
    if( !voteban_available( id ) )
        return PLUGIN_HANDLED
    
    if( page < 0 )
    {
        clear_user_voteban_data( id )
        return PLUGIN_HANDLED
    }
    
#if defined _fakemeta_included
    set_pdata_int( id, OFFSET_CSMENUCODE, 0 )
#endif
    
    new players[ 32 ], num
    get_players( players, num, "ch" )
    
    new i = min( page * 8, num )
    new start = i - ( i % 8 )
    new end = min( start + 8, num )
    page = start / 8
    
    g_user_menu_page[ id ] = page
    g_user_menu_players[ id ] = players
    
    new menu[ 512 ], item, keys = MENU_KEY_0
    new len = formatex( menu, 511, "\y%L : %L\R%d/%d^n^n", id, "VOTEBAN_MENU_TITLE", id, "VOTEBAN_MENU_PLAYERS_TITLE", page + 1, ( ( num - 1 ) / 8 ) + 1 ) //Голосование за бан || Выбор игрока
    
    for( i = start; i < end; i ++ )
    {
        new name[ 32 ], b_id = players[ i ]
        
        get_user_name( b_id, name, 31 )
        
        if( id == b_id )
            len += formatex( menu[ len ], 511 - len, "\d%d. \y%s^n", ++ item, name )
        
        else
        {
            new flags[ 23 ]; get_pcvar_string( g_pcvar_immunity_access, flags, 22 )
        
            if( get_user_flags( b_id ) & read_flags( flags ) )
                len += formatex( menu[ len ], 511 - len, "\d%d. %s \r*^n", ++ item, name )
            
            else
            {
                keys |= ( 1 << item )
                len += formatex( menu[ len ], 511 - len, "\w%d. \w%s^n", ++ item, name )
            }
        }
    }
    
    if( end < num )
    {    
        keys |= MENU_KEY_9
        formatex( menu[ len ], 511 - len, "^n\w9. %L^n0. %L", id, "VOTEBAN_MENU_NEXT", id, page ? "VOTEBAN_MENU_BACK" : "VOTEBAN_MENU_EXIT" ) //Туда/Сюда/Выход
    }
    
    else  formatex( menu[ len ], 511 - len, "^n\w0. %L", id, page ? "VOTEBAN_MENU_BACK" : "VOTEBAN_MENU_EXIT" ) // Туда/Выход
    
    show_menu( id, keys, menu, -1, "voteban_players_menu" )
    
    return PLUGIN_HANDLED
}

public handler_voteban_players_menu( id, key )
{
    if( !voteban_available( id ) )
        return PLUGIN_HANDLED

    switch( key )
    {
        case 0..7:
        {
            new temp[ 190 ], b_id = g_user_menu_players[ id ][ g_user_menu_page[ id ] * 8 + key ]
            
            if( is_user_connected( b_id ) )
            {
                new flags[ 23 ]; get_pcvar_string( g_pcvar_immunity_access, flags, 22 )
            
                if( !( get_user_flags( b_id ) & read_flags( flags ) ) )
                {
                    g_user_playerid[ id ] = b_id
                    show_voteban_main_menu( id )
                }
                else
                    format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_IMMUNITY")// Выбранный игрок имеет иммунитет к бану.
            }
            
            else format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_LEAVE" )         // Выбранный игрок покинул сервер.
            
            yav_print_color( id, temp )
        }
        
        case 8: show_voteban_players_menu( id, ++ g_user_menu_page[ id ] )
        case 9: show_voteban_players_menu( id, -- g_user_menu_page[ id ] )
    }
    
    client_spk( id, MENU_SOUND_SELECT )
    
    return PLUGIN_CONTINUE
}

public show_voteban_main_menu( id )
{
    if( !voteban_available( id ) )
        return PLUGIN_HANDLED
    
#if defined _fakemeta_included
    set_pdata_int( id, OFFSET_CSMENUCODE, 0 )
#endif

    new menu[ 256 ], len,
        keys = MENU_KEY_1 + MENU_KEY_2 + MENU_KEY_4 + MENU_KEY_0,
        b_id = g_user_playerid[ id ]
    
    len = formatex( menu, charsmax( menu ), "\y%L", id, "VOTEBAN_MENU_TITLE" ) // Голосование за бан

// === 1 ===
    if( is_user_connected( b_id ) )
    {
        new name[ 32 ]; get_user_name( b_id, name, 31 )
        len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n\w1. %L: \y%s", id, "VOTEBAN_MENU_PLAYER", name ) // Игрок
    }
    
    else len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n\w1. %L: \d%L", id, "VOTEBAN_MENU_PLAYER", id, "VOTEBAN_MENU_SELECT_PLAYER" ) // Выбрать игрока
// =========
    

// === 2 ===
    if( g_user_reason[ id ][ 0 ] )
        len += formatex( menu[ len ], charsmax( menu ) - len, "^n\w2. %L: \y%s", id, "VOTEBAN_MENU_REASON", g_user_reason[ id ] ) // Причина
        
    else len += formatex( menu[ len ], charsmax( menu ) - len, "^n\w2. %L: \d%L", id, "VOTEBAN_MENU_REASON", id, "VOTEBAN_MENU_ENTER_REASON"  )  // Причина || Ввести причину бана
// =========
    

// === 3 ===

    new flags[ 23 ]; get_pcvar_string( g_pcvar_time_access, flags, 22 )
    
    if( get_user_flags( id ) & read_flags( flags ) )
    {
        keys |= MENU_KEY_3
        len += formatex( menu[ len ], charsmax( menu ) - len, "^n\w3. %L: \y%d %L", id, "VOTEBAN_MENU_TIME", g_user_time[ id ], id, "VOTEBAN_MENU_MINUTES" ) // Время бана || минут
    }
// =========
    
    
    new admins = get_admins_online()
    
    if( admins )
        len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n\w4. %L", id, "VOTEBAN_MENU_NOTIFY", admins ) // Сообщить администратору (\y%d в сети\w)
    else
        len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n\w4. %L", id, "VOTEBAN_MENU_START_VOTE" ) // Начать голосование
    
    len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n0. %L", id, "VOTEBAN_MENU_EXIT" ) // Выход

    show_menu( id, keys, menu, _, "voteban_main_menu" )
    
    return PLUGIN_HANDLED
}

public handler_voteban_main_menu( id, key )
{
    if( !voteban_available( id ) )
        return PLUGIN_HANDLED
    
    key ++
    switch( key )
    {
        case 1:
        {
            show_voteban_players_menu( id, 0 )
            client_spk( id, MENU_SOUND_SELECT )
        }
        
        case 2:
        {
            client_cmd( id, "messagemode voteban_reason" )
            client_spk( id, MENU_SOUND_SELECT )
        }
        
        case 3:
        {
            show_voteban_time_menu( id )
            client_spk( id, MENU_SOUND_SELECT )
        }
        
        case 4:
        {
            new b_id = g_user_playerid[ id ]
            new temp[ 190 ]
            
            if( !is_user_connected( b_id ) )
            {
                format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_NEED_PLAYER" )// Вы должны выбрать игрока
                yav_print_color( id,  temp )
                show_voteban_main_menu( id )
                
                client_spk( id, MENU_SOUND_DENY )
            }
            
            else if( !g_user_reason[ id ][ 0 ] )
            {
                format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_NEED_REASON" ) // Вы должны ввести причину бана
                yav_print_color( id, temp )
                show_voteban_main_menu( id )
                
                client_spk( id, MENU_SOUND_DENY )
            }
            
            else
            {    
                new admins = get_admins_online()
                
                if( admins )
                {
                    new str[ 190 ], i
                    
                    for( i = 1; i <= MAX_PLAYERS; i ++ )
                    {
                        new flags[ 23 ]; get_pcvar_string( g_pcvar_admin_access, flags, 22 )
        
                        if( is_user_connected( i ) && get_user_flags( i ) & read_flags( flags ) )
                        {
                            new b_name[ 32 ]; get_user_name( b_id, b_name, 31 )
                            new name[ 32 ]; get_user_name( id, name, 31 )
                            format( str, charsmax( str ), "^1[^4%s^1] %L", MSGS_PREFIX, i, "VOTEBAN_ADMIN_NOTIFICATION", name, b_name, g_user_reason[ id ] )// %s хочет забанить %s за "%s".
                            yav_print_color( i, str )
                            
                            client_spk( i, MENU_SOUND_SUCCESS )
                        }
                    }
                    
                    format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_ADMIN_NOTIFIED", admins )// Администраторов уведомлено о вашей жалобе: %d.
                    yav_print_color( id,  temp )
                    client_spk( id, MENU_SOUND_SUCCESS )
                    clear_user_voteban_data( id )
                    
                    return PLUGIN_HANDLED
                }
                
                g_ban_id = b_id
                g_reason = g_user_reason[ id ]
                
                new flags[ 23 ]; get_pcvar_string( g_pcvar_time_access, flags, 22 )
                
                if( get_user_flags( id ) & read_flags( flags ) )
                    g_time = g_user_time[ id ]
                
                else g_time = get_pcvar_num( g_pcvar_time_default )
                
                clear_user_voteban_data( id )
                show_voteban_menu( id )
                
                g_user_start_game_time[ id ] = floatround( get_gametime() )
                
                set_task( get_pcvar_float( g_pcvar_duration ), "task_end_vote", TID_ENDVOTE )
                g_started = true
            }
        }
        
        case 10:
        {
            clear_user_voteban_data( id )
            client_spk( id, MENU_SOUND_SELECT )
        }
    }
    
    return PLUGIN_CONTINUE
}

public show_voteban_time_menu( id )
{
    new menu[ 256 ], item, len, keys = MENU_KEY_0
    
    len = formatex( menu, charsmax( menu ), "\y%L : %L^n\w", id, "VOTEBAN_MENU_TITLE", id, "VOTEBAN_MENU_TIME_TITLE" ) // Голосование за бан || Выбор срока бана

    for( new i; i < sizeof g_parsed_time_strings; i ++ )
    {
        if( !g_parsed_time_strings[ i ][ 0 ] )
            break
        
        keys |= ( 1 << item )
        len += formatex( menu[ len ], charsmax( menu ) - len, "^n%d. %s %L", ++ item, g_parsed_time_strings[ i ], id, "VOTEBAN_MENU_MINUTES" ) // минут
    }
    
    len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n0. %L", id, "VOTEBAN_MENU_EXIT" ) // выход

    show_menu( id, keys, menu, _, "voteban_time_menu" )
}

public handler_voteban_time_menu( id, key )
{
    if( !voteban_available( id ) )
        return PLUGIN_HANDLED
    
    switch( key )
    {
        case 0..4: g_user_time[ id ] = str_to_num( g_parsed_time_strings[ key ] )
        
        case 9:
        {
            clear_user_voteban_data( id )
            return PLUGIN_HANDLED
        }
    }
    
    show_voteban_main_menu( id )
    client_spk( id, MENU_SOUND_SELECT )
    
    return PLUGIN_CONTINUE
}

public show_voteban_menu( id )
{
    new v_id, temp[ 190 ]
    
    for( v_id = 1; v_id <= MAX_PLAYERS; v_id ++ )
    {
        if( is_user_connected( v_id ) )
        {
#if defined _fakemeta_included
            set_pdata_int( v_id, OFFSET_CSMENUCODE, 0 )
#endif
            new b_id = g_ban_id
            
            if( v_id != b_id )
            {
                client_spk( v_id, MENU_SOUND_SUCCESS )
                
                new name[ 32 ]; get_user_name( id, name, 31 )
                new player_name[ 32 ]; get_user_name( b_id, player_name, 31 )
                format( temp, charsmax( temp ), "^1[^4%s^1] %s %L %s!", MSGS_PREFIX, name, v_id, "VOTEBAN_WHO_START", player_name)
                yav_print_color( v_id, temp ) // начал голосование за бан
                
                new menu[ 256 ], len, keys = MENU_KEY_1 + MENU_KEY_2 + MENU_KEY_3 + MENU_KEY_4
                
                len = formatex( menu, charsmax( menu ), "\y%L", v_id, "VOTEBAN_MENU_TITLE" ) // Голосование за бан
                
                len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n\w%L", v_id, "VOTEBAN_MENU_VOTE_FOR", player_name, g_time ) // Забанить \y%s \wна \y%d\w минут?
                len += formatex( menu[ len ], charsmax( menu ) - len, "^n\w%L: \y%s", v_id, "VOTEBAN_MENU_REASON", g_reason ) // Причина
                
                len += formatex( menu[ len ], charsmax( menu ) - len, "^n^n%L", v_id, "VOTEBAN_MENU_NO_YES" ) // \w1. Нет^n2. Нет^n3. Нет^n4. \rДа
                
                show_menu( v_id, keys, menu, _, "voteban_menu" )
            }
        }
    }
}

public handler_voteban_menu( v_id, key )
{
    key ++
    
    if( key == 4 )
        add_vote( v_id )
    
    client_spk( v_id, MENU_SOUND_SELECT )
}

public add_vote( v_id )
{
    if( !is_user_connected( v_id ) )
        return PLUGIN_HANDLED
        
    new b_id = g_ban_id
    
    if( !is_user_connected( b_id ) )
        return PLUGIN_HANDLED
    
    if( !g_started )
    {
        new temp[ 190 ]
        format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, v_id, "VOTEBAN_ALREADY_FINISHED" ) // Голосование уже закончено.
        yav_print_color( v_id, temp )
        return PLUGIN_HANDLED
    }

    
    g_user_votes_for_ban[ b_id ] ++
    
    static total_votes, need_votes
    total_votes = g_user_votes_for_ban[ b_id ]
    need_votes = get_pcvar_num( g_pcvar_percent ) * get_players_num() / 100
    
    if( total_votes < need_votes )
    {
        new name[ 32 ], id
        
        get_user_name( b_id, name, 31 )
        
        for( id = 1; id <= MAX_PLAYERS; id ++ )
        {
            if( is_user_connected( id ) )
            {
                if( id != b_id )
                    client_print( id, print_center, "%L", id, "VOTEBAN_VOTE", name, total_votes, need_votes ) // За бан %s проголосовало: %d, нужно: %d.
            }
        }
    }
    
    else ban_player( b_id )
    
    return PLUGIN_CONTINUE
}

public ban_player( b_id )
{
    remove_task( TID_ENDVOTE )
    
    if( is_user_connected( b_id ) )
    {
        new name[ 32 ], ip[ 16 ], authid[ 35 ], userid, time, id, temp[ 190 ]
        
        get_user_name( b_id, name, 31 )
        get_user_ip( b_id, ip, 15, 1 )
        get_user_authid( b_id, authid, 34 )
        userid = get_user_userid( b_id )
        time = g_time
        
        switch( get_pcvar_num( g_pcvar_ban_type ) )
        {
            case 1: server_cmd( "amx_ban %d ^"%s^" ^"[%s] %s^"", time, authid, MSGS_PREFIX, g_reason ) // AMXBANS
            case 2: server_cmd( "fb_ban %d #%d ^"[%s] %s^"", time, userid, MSGS_PREFIX, g_reason ) // FRESH BANS
            case 3: server_cmd( "amx_ban ^"%s^" %d ^"[%s] %s^"", authid, time, MSGS_PREFIX, g_reason ) // ADVANCED BANS
            case 4: server_cmd( "amx_superban #%d %d ^"[%s] %s^"", userid, time, MSGS_PREFIX, g_reason ) // SUPERBAN
            case 5: server_cmd( "addip %d %s", time, ip ) // BAN IP
            case 6: server_cmd( "banid %d ^"%s^" kick", time, authid ) // BAN AUTHID (STEAMID)
        }
        
        for( id = 1; id <= MAX_PLAYERS; id ++ )
        {
            if( is_user_connected( id ) )
            {
                if( id != b_id )
                {
                    format( temp, charsmax( temp ), "^1[^4%s^1] %s %L", MSGS_PREFIX, name, id, "VOTEBAN_BANNED" )
                    yav_print_color( id,  temp ) // забанен через голосование!
                }
            }
        }
    }
    
    clear_voteban_data()
}

public task_end_vote()
{
    new temp[ 190 ], id
    
    for( id = 1; id <= MAX_PLAYERS; id ++ )
    {
        if( is_user_connected( id ) )
        {
            format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_ENDED" ) // Голосование за бан провалено.
            yav_print_color( id, temp )
        }
    }
    
    clear_voteban_data()
    
    g_started = false
}

public voteban_available( id )
{
    new user_flags, flags[ 2 ][ 23 ], temp[ 190 ]

    if( g_started )
    {
        
        format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_ALREADY_STARTED" )// В данный момент уже идёт голосование.
        yav_print_color( id, temp )
        return 0
    }
    
    user_flags = get_user_flags( id )
    get_pcvar_string( g_pcvar_admin_access, flags[ 0 ], 22 )
    get_pcvar_string( g_pcvar_time_access, flags[ 1 ], 22 )
    
    if( user_flags & read_flags( flags[ 0 ] ) )
    {
        format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_YOU_ADMIN" )
        yav_print_color( id, temp )// Используйте своё бан-меню.
        return 0
    }
    
    if( g_user_start_game_time[ id ] )
    {
        static interim, delay_cvar
        
        interim = floatround( get_gametime() ) - g_user_start_game_time[ id ]
        delay_cvar = get_pcvar_num( g_pcvar_delay )
        
        if( flags[ 1 ][ 0 ] && ( user_flags & read_flags( flags[ 1 ] ) ) )
            return 1
        
        else if( interim < delay_cvar * 60 )
        {
            format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_DELAY", ( delay_cvar - ( interim / 60 ) ) + 1 ) // Вы должны подождать еще %d мин. после предыдущего голосования.
            yav_print_color( id, temp )
            return 0
        }
    }
    
    if( get_players_num() < get_pcvar_num( g_pcvar_min_players ) )
    {
        format( temp, charsmax( temp ), "^1[^4%s^1] %L", MSGS_PREFIX, id, "VOTEBAN_NOT_ENOUGH_PLAYERS" ) // Недостаточно игроков, чтобы начать голосование.
        yav_print_color( id, temp )
        return 0
    }

    return 1
}

stock get_admins_online()
{
    new admins, i, team
    
    admins = 0
    
    for( i = 1; i <= MAX_PLAYERS; i ++ )
    {
        new flags[ 23 ]; get_pcvar_string( g_pcvar_admin_access, flags, 22 )
        
        if( !is_user_connected( i ) )
            continue
        
        if( !( get_user_flags( i ) & read_flags( flags ) ) )
            continue
            
        if( get_pcvar_num( g_pcvar_spec_admins ) )        
            admins ++
        else
        {
            team = get_user_team( i )
            
            if( !( ( team == 2 ) || ( team ==1 ) ) )
                continue
                
            admins ++
        }
    }
    
    return admins
}

stock get_players_num()
{
    static num, id, team
    num = 0
    
    for( id = 1; id <= MAX_PLAYERS; id ++ )
    {
        if( !is_user_connected( id ) )
            continue
            
        if( is_user_bot( id ) )
            continue
        
        team = get_user_team( id )
        
        if( !( ( team == 2 ) || ( team == 1 ) ) )
            continue

        num ++
    }
    return num
}

stock client_spk( id, sound_id )
    client_cmd( id, "spk %s", g_menus_sounds[ sound_id ] )

stock yav_print_color( const id, const input[], any:... )
{
#if AMXX_VERSION_NUM < 183
    new num = 1, players[ 32 ]
    static msg[ 191 ]
    vformat( msg, 190, input, 3 )
    
    replace_all( msg, 190, "!g", "^4" ) // Green Color
    replace_all( msg, 190, "!n", "^1" ) // Default Color
    replace_all( msg, 190, "!t", "^3" ) // Team Color
    
    if( id ) players[ 0 ] = id; else get_players( players, num, "ch" )
    {
        static i
        for( i = 0; i < num; i ++ )
        {
            if( is_user_connected( players[ i ] ) )
            {
                message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] )
                write_byte( players[ i ] )
                write_string( msg )
                message_end()
            }
        }
    }
#else
    client_print_color( id, print_team_default, input )
#endif
    return 0
    
}


Отредактировал: Bloo, - 6.7.2015, 11:36
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 4.7.2015, 19:32
Сообщение #260


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Цитата
1.Чтобы в менюшке было только Да и Нет,на 5 и 6 цыфры.


Ну а смысл какой? Допустим, сделать цифры 1, 2, 3 и 4 кликабельными, но при этом голос учитываться не будет (что не очень правильно). Если сделать их не кликабельными, то представь такую ситуацию: бежишь такой на зигу рашить, тут появляется враг, вылазит менюшка, ты жмешь единичку чтоб взять АК, А НИФИГА, ничего не происходит.

Цитата
2.Чтобы могли использовать VIP игроки только. (Можно кваром.Флаг доступа к вотебану типо blush.gif )


сделаю квар


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
18 страниц V  « 12 13 14 ... 16 17 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 8 гостей читают эту тему: