Player Weapon Blocker 2.1.2

Плагин позволяет заблокировать игроку доступ к выбранному оружию (На время или навсегда).

  1. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Пользователь san911 разместил новый ресурс:

    Player Weapon Blocker - Плагин позволяет заблокировать игроку доступ к оружию (На время или навсегда).

    Узнать больше об этом ресурсе...
     
    Dreizehnt нравится это.
  2. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.715
    Симпатии:
    452
    PHP:
    new String:TimeNames
    >>
    PHP:
    static String:TimeNames
    --- Добавлено позже ---
    PHP:
        decl String:Title[80];
        
    Format(Title80"%s оружие игроку:"status "Заблокировать":"Разблокировать");
    >>
    PHP:
        decl String:Title[80];
        
    FormatEx(Title80"%s оружие игроку:"status "Заблокировать":"Разблокировать");
    --- Добавлено позже ---
    PHP:
                        new time g_cTime[client] - getTime;
                        new 
    days time/3600/24;
                        new 
    hours time/3600%24;
                        new 
    mins time/60%60;
                        new 
    secs time%60;
                        
    PrintToChat(client"\x07FFFFFF[Player Weapon Blocker] \x07FFF700До разблокировки доступа к оружию осталось: \x0700BFFF%s%s%s%s"NumToName(days0), NumToName(hours1), NumToName(mins2), NumToName(secs3));
    >>
    PHP:

                        
    new time g_cTime[client] - getTime;
                        
    PrintToChat(client"\x07FFFFFF[Player Weapon Blocker] \x07FFF700До разблокировки доступа к оружию осталось: \x0700BFFF%s%s%s%s"NumToName(time/3600/240), NumToName(time/3600%241), NumToName(time/60%602), NumToName(time%603));
    --- Добавлено позже ---
    ну, и в некоторых местах размерности массивов нужно было бы подкоректировать
     
    Последнее редактирование: 5 окт 2016
    san911 нравится это.
  3. avanger.usa

    avanger.usa

    Сообщения:
    76
    Симпатии:
    19
    На CS:GO будет работать?
     
  4. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Так что ли?
    PHP:
    String:NumToName(numtype)
    {
        static 
    String:TimeNames[][][] = { {"день""дня""дней"}, {"час""часа""часов"}, {"минута""минуты""минут"}, {"секунда""секунды""секунд"} };
       
        
    decl String:buffer[156];
        
    //buffer[0] = '\0';
        
    switch(num)
        {
            case 
    0:        {}
            case 
    1:        FormatEx(buffer156"%s 1 %s"bufferTimeNames[type][0]);
            case 
    2,3,4:    FormatEx(buffer156"%s %i %s"buffernumTimeNames[type][1]);
            default:
            {
                if(
    num 21FormatEx(buffer156"%s %i %s"buffernumTimeNames[type][2]);
                else
                {
                    switch(
    num 10)
                    {
                        case 
    1:        FormatEx(buffer156"%s %i %s"buffernumTimeNames[type][0]);
                        case 
    2,3,4:    FormatEx(buffer156"%s %i %s"buffernumTimeNames[type][1]);
                        default:        
    FormatEx(buffer156"%s %i %s"buffernumTimeNames[type][2]);
                    }
                }
            }
        }
        return 
    buffer;
    }
    Да
     
  5. Grey83

    Grey83

    Сообщения:
    319
    Симпатии:
    94
    @san911, не комментируй buffer[0] = '\0'; как в последнем примере, тебе же не нужны проблемы с выводом?
    --- Добавлено позже ---
    Можно "\x07FFFFFF[Player Weapon Blocker] \x07FFF700" сделать текстовой переменной, а во всех сообщениях просто её подставлять (чтобы можно было правкой в одном месте плагина исправить все сообщения сразу).
    PHP:
    static String:sPrefix[] = "\x07FFFFFF[Player Weapon Blocker] \x07FFF700";
    А потом вместо
    PHP:
    PrintToChat(param1" \x07FFFFFF[Player Weapon Blocker] \x07FFF700Игрок вышел!");
    просто
    PHP:
    PrintToChat(param1" %sИгрок вышел!"sPrefix);
    Так же и с цветами можно поступить.
    --- Добавлено позже ---
    Да и менюшку можно немного упростить: одна кнопка с именем будет переключать режимы. Но мне лень возиться с этим кодом. Там нужно при создании меню добавить флаг MENU_ACTIONS_ALL, а в каллбэке добавить кейс MenuAction_DisplayItem, в котором (через перевод строки или справа от ника) можно будет указывать текущий статус.
    Если игроку ещё оружие не заблокировано, то будет предлагать варианты блокировки, а если уже оно заблокировано, то сразу после выбора разблокируется.
    В общем есть способы улучшить.
    Главное чтобы в CSGO не было той же проблемы с динамическим меню, что и у L4D2.

    UPD или у тебя отдельные списки генерируются? Один для тех, кто может пользоваться, а другой для тех, кто не может?
     
    Последнее редактирование: 5 окт 2016
    san911 нравится это.
  6. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.715
    Симпатии:
    452
    san911 нравится это.
  7. Grey83

    Grey83

    Сообщения:
    319
    Симпатии:
    94
    Ещё совет: в блоке MenuHandler_CommandsList (110-я строка) в кейсе MenuAction_Select весь код можно свести к
    PHP:
    DisplayPlayerWeaponBlockerMenu(param1, (param2 == 0));
    --- Добавлено позже ---
    @Danyas, точно. Читал недавно, но запамятовал.
    Уже поправил в том комменте.
     
    Последнее редактирование: 5 окт 2016
    san911 нравится это.
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.978
    он там не нужен. Он нужен только здесь:
    PHP:
    case 0: {}
     
    san911 нравится это.
  9. Grey83

    Grey83

    Сообщения:
    319
    Симпатии:
    94
    ну да, ну да
    Внимательно смотрим на первый параметр FormatEx во всех кейсах:
    PHP:
    ..."%s 1 %s"buffer, ...
    Правда не знаю для чего он там вообще нужен. Т.к. там всегда будет пустая строка.
    --- Добавлено позже ---
    и чуть не забыл: прекрати создавать отдельную строковую переменную для названия меню.
    SetMenuTitle и так прекрасно поддерживает форматирование:
    PHP:
    SetMenuTitle(menu"Выдать блокировку оружия:\n%N"target);
     
    Последнее редактирование: 5 окт 2016
    san911 нравится это.
  10. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Думаю это лишнее.

    В списках нет ботов и есть подключающиеся игроки (А так просто все игроки отображаються). COMMAND_FILTER_NO_BOTS|COMMAND_FILTER_CONNECTED

    Как это работать должно что-то не пойму?

    Спасибо, не знал...
     
    Последнее редактирование: 5 окт 2016
  11. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Пользователь san911 обновил ресурс Player Weapon Blocker новой записью:

    Оптимизация и улучшения плагина Player Weapon Blocker.

    Узнать больше об этом обновлении...
     
  12. Grey83

    Grey83

    Сообщения:
    319
    Симпатии:
    94
    Вообще-то это можно было сделать 1 плагином :cool:
    Достаточно при загрузке проверять движок, а потом подставлять нужные цвета.
    И поэтому, то что ты посчитал лишним было бы совсем не лишним.
    Ну у тебя 2 раза одно и то же, только в конце параметр true или false, а у меня это же делается в одну строку
    DisplayPlayerWeaponBlockerMenu(param1, (param2 == 0));
    Если param2 равен нулю, то там будет true, в остальных случаях этот параметр будет равняться false.

    И да, объясни в конце концов какой смысл в функции NumToName в кейсах, выполняя FormatEx, в начале перед цифрами ставить текст, содержащийся в переменной buffer?
    PHP:
    FormatEx(buffer156"%s %i %s"buffernumTimeNames[type][1]);
    Ведь у тебя эта переменная в тот момент всегда имеет значение пустой строки
    PHP:
     buffer[0] = '\0';
    И, соответственно твоя запись равнозначна следующей:
    PHP:
    FormatEx(buffer156" %i %s"numTimeNames[type][1]);
    А ты пишешь о какой-то оптимизации.
    --- Добавлено позже ---
    И цвета можно было сделать так:
    PHP:
    ...
    static 
    String:white[8];
    static 
    String:yellow[8];
    static 
    String:red[8];
    static 
    String:cyan[8];
    ...
    public 
    OnPluginStart()
    {
    ...
        if(
    GuessSDKVersion() == SOURCE_SDK_CSGO)      // или if(GetEngineVersion() == Engine_CSGO)
        
    {
            
    white "4";
            
    yellow "1";
            
    red "2";
            
    cyan "6";
        }
        else
        {
            
    white "7FFFFFF";
            
    yellow "7FFF700";
            
    red "7FF0000";
            
    cyan "700BFFF";
        }
    ...
    }
    ...
    public 
    MenuHandler_TimeList(Handle:menuMenuAction:actionparam1param2)
    {
    ...
                        if(
    time 0PrintToChat(param1" \x0%s[Player Weapon Blocker] \x0%sДоступ к оружию игроку \x0%s%N \x0%sбыл успешно заблокирован! \x0%s(На %d минут)"whiteyellowredtargetyellowcyantime);
    ...
    }
    ...
    Так нет надобности в 2 плагинах только из-за одних цветов текста.
    Если ты, конечно не хочешь юзать инклюды вроде Multi Colors
     
    Последнее редактирование: 5 окт 2016
    san911 и AlmazON нравится это.
  13. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Пользователь san911 обновил ресурс Player Weapon Blocker новой записью:

    Добавление нативов и прочие улучшения.

    Узнать больше об этом обновлении...
     
  14. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Пользователь san911 обновил ресурс Player Weapon Blocker новой записью:

    Добавлена возможность блокировать оружие выборочно. И другое...

    Узнать больше об этом обновлении...
     
    Последнее редактирование: 14 окт 2016
  15. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Пользователь san911 обновил ресурс Player Weapon Blocker новой записью:

    Мелкие поправки и улучшения.

    Узнать больше об этом обновлении...
     
    Последнее редактирование: 4 ноя 2016
  16. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Последнее редактирование: 4 ноя 2016
  17. (А)ндRю✘а

    (А)ндRю✘а

    Сообщения:
    11
    Симпатии:
    4
    Чего обновил опять, и так все работало.