1. mcrc Пользователь

    Регистрация:
    01.03.15
    Сообщения:
    76
    Симпатии:
    16
    Пол:
    Мужской
    Хочется, чтобы при выборе 3-го скина (SAS и Arctic) игрок на самом деле получал 1-й скин.
    Ребята в чате мне подсказали (спасибо: neygomon, MakapoH), но я не очень понял как довести до ума.
    Помогите допилить:
    PHP:
    #include <amxmodx>

    public plugin_init()
    register_clcmd("joinclass""clcmdJoinClass");
    public 
    clcmdJoinClass(id)
    {
        new 
    arg[2]; read_argv(1arg1);
        return (
    str_to_num(arg) == 3) ? 0;
    }

        
    engclient_cmd(id"joinclass""1")
     
  2. InzGIBA Пользователь

    Регистрация:
    13.04.16
    Сообщения:
    39
    Симпатии:
    21
    Пол:
    Мужской
    VKcom:
    id319741830
    Telegram:
    87475975017
    Skype:
    InzGIBA
    А не проще тебе будет заменить модельки игроков?
     
  3. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    153
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    @InzGIBA, он, наверное, хочет, чтобы не у одного него так отображались модельки, а у всех).
     
  4. InzGIBA Пользователь

    Регистрация:
    13.04.16
    Сообщения:
    39
    Симпатии:
    21
    Пол:
    Мужской
    VKcom:
    id319741830
    Telegram:
    87475975017
    Skype:
    InzGIBA
    @Le$hiy, это да, но я имел ввиду чтобы заменить стандартные модельки у всех и забыть про это вовсе
     
  5. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    153
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    @InzGIBA, но это ведь можно сделать только посредством плагина). Или ты говоришь о ручной замене моделей в своей папке с игрой каждым игроком?
    А вообще можно сошку отредактировать в hex-редакторе и обойтись без плагинов. Я так менял все модельки на сервере.
     
  6. InzGIBA Пользователь

    Регистрация:
    13.04.16
    Сообщения:
    39
    Симпатии:
    21
    Пол:
    Мужской
    VKcom:
    id319741830
    Telegram:
    87475975017
    Skype:
    InzGIBA
    @Le$hiy, да, я говорю про плагин. 1 моделька у ТТ и 1 моделька у КТ (custom models) вроде. Но так же есть плагины заменяющие определенные модельки на другие. Начиная от рук, заканчивая заложниками
     
  7. TauJIeP Пользователь

    Регистрация:
    04.04.16
    Сообщения:
    389
    Симпатии:
    42
    Пол:
    Мужской
    Skype:
    hohlachev-s
    cl_minmodels 0
    не?
     
  8. InzGIBA Пользователь

    Регистрация:
    13.04.16
    Сообщения:
    39
    Симпатии:
    21
    Пол:
    Мужской
    VKcom:
    id319741830
    Telegram:
    87475975017
    Skype:
    InzGIBA
    @TauJIeP, Думая на вряд-ли. ТЗ нужно сделать это на сервере. Да возможно просто менять квары игрокам с cl_minmodels/cl_min_t/cl_min_ct, но как мне известно, мониторинги против, чтобы пользователю что нибудь меняли в CS, без их ведома.
     
  9. mcrc Пользователь

    Регистрация:
    01.03.15
    Сообщения:
    76
    Симпатии:
    16
    Пол:
    Мужской
    Хочется обособить определённую группу игроков. Т.е. чтобы можно было без труда визуально их отличить от других.
    При этом не хочется грузить отдельные модели или подменять кастомные.
     
  10. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.567
    Симпатии:
    197
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    не обязательно что-то менять клиентам. не проще ли поставить плагин замены моделек от неугомона и поставить одну модель вместо 4х ?
     
  11. mcrc Пользователь

    Регистрация:
    01.03.15
    Сообщения:
    76
    Симпатии:
    16
    Пол:
    Мужской
    @Punisher
    >Хочется обособить определённую группу игроков
     
  12. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    153
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    @mcrc, ну он тебе про это и говорит. Повесить модель на флаг посредством плагина, а "обособленной группе" повесить этот флаг. Или ты как-то по-другому хочешь?
    Другой вопрос - то, что ты не хочешь посторонние модели ставить, а хочешь, чтобы были только кастомные... Ну тогда я вижу 2 пути: 1) плагин твой допиливать, но при этом все равно придется использовать второй плаг для моделей; 2) редактирование cs.so + плагин для моделей (чтобы повесить их на флаг для твоих избранных).
     
  13. wopox1337 Пользователь

    Регистрация:
    10.12.15
    Сообщения:
    23
    Симпатии:
    6
    Пол:
    Мужской
    Skype:
    wopox3
    @mcrc, согласно вашему запросу Ув. Vaqtincha подготовил для вас готовое решение.
    По скольку он не имеет адекватного соединения с интернетом, я иногда помогаю ему.

    Готовое решение для прикрепил к этому комментарию.
    Отпишитесь о том, подошло ли вам это решение.

    Код плагина:
    PHP:
    //    Copyright © 2016 Vaqtincha

    //============================ CONFIG START ===========================//
    // #define NOTIFY_MESSAGE        "* This class is not available!"
    // #define IMMUNITY_ACCESS         ADMIN_IMMUNITY

    #define TARGET_CLASS         CLASS_4
    #define ENTER_CLASS            CLASS_1
    //============================= CONFIG END ============================//

    #include <amxmodx>

    enum _:CLASSESCLASS_1CLASS_2CLASS_3CLASS_4 }

    new const 
    KEYS_BITSUM[CLASSES] = { MENU_KEY_1MENU_KEY_2MENU_KEY_3MENU_KEY_4 }
    new const 
    KEYS_COMMAND[CLASSES] = { '1''2''3''4' }
    new const 
    KEYS_STRING[CLASSES][2] = { "1""2""3""4" }

    new const class[] = 
    "joinclass"

    public plugin_init()
    {
        
    register_plugin("Choose Class Block""0.0.1""Vaqtincha")

        
    register_clcmd(class, "ClCmd_Joinclass")    // vgui menu
        
    register_menucmd(register_menuid("Terrorist_Select"1), KEYS_BITSUM[TARGET_CLASS], "ClCmd_Joinclass")// old menu
        
    register_menucmd(register_menuid("CT_Select"1), KEYS_BITSUM[TARGET_CLASS], "ClCmd_Joinclass")// old menu

    }

    public 
    ClCmd_Joinclass(id)
    {
    /*     if(!is_user_connected(id))
        {
            return PLUGIN_CONTINUE
        }
    */
    #if defined IMMUNITY_ACCESS
        
    if(get_user_flags(id) & IMMUNITY_ACCESS)
        {
            return 
    PLUGIN_CONTINUE
        
    }
    #endif

        
    new szCommand[2]
        
    read_argv(1szCommandcharsmax(szCommand))
       
        
    // if(equali(szCommand, KEYS_STRING[TARGET_CLASS]) || equali(szCommand, "6"))
        
    if(szCommand[0] == KEYS_COMMAND[TARGET_CLASS] || szCommand[0] == '6')
        {
        
    #if defined NOTIFY_MESSAGE
            
    client_print(idprint_chatNOTIFY_MESSAGE)
        
    #endif
            
    engclient_cmd(id, class, KEYS_STRING[ENTER_CLASS])

            return 
    PLUGIN_HANDLED
        
    }

        return 
    PLUGIN_CONTINUE
    }

    Надеюсь мы вам помогли.
     

    Вложения:

    mcrc нравится это.
  14. mcrc Пользователь

    Регистрация:
    01.03.15
    Сообщения:
    76
    Симпатии:
    16
    Пол:
    Мужской
    @worox1337, ух ты, спасибо вам и уважаемому Vaqtincha)
    Потестил локально, вроде, нормуль.
    Поставлю сегодня на "живой" сервер, если что, отпишусь сюда.
    Ещё раз, спасибо вам! :)
     
  15. wopox1337 Пользователь

    Регистрация:
    10.12.15
    Сообщения:
    23
    Симпатии:
    6
    Пол:
    Мужской
    Skype:
    wopox3
    @mcrc, рады вам помочь
     
  16. mcrc Пользователь

    Регистрация:
    01.03.15
    Сообщения:
    76
    Симпатии:
    16
    Пол:
    Мужской
    @wopox1337, а можно в TARGET_CLASS указать несколько классов?
    чтобы несколько пунктов меню вели на один и тот же скин.
    Если "да", то как правильно написать?
     
  17. Lexx Пользователь

    Регистрация:
    19.06.16
    Сообщения:
    9
    Симпатии:
    2
    Пол:
    Мужской
    @mcrc, попробуй, может устроит такой вариант (не проверял работоспособность, должно при любом выборе класса выставлять 2 модельку для Т и 4 модельку для КТ):
    Код:
    #include <amxmodx>
    #include <amxmisc>
    
    #define CLASS_KEYS MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5
    
    public plugin_init ( )
    {
        register_plugin ( "Custom joinclass", "0.1", "Lexx" )
    
        register_clcmd ( "joinclass", "f_choose_model" )
        register_menucmd ( register_menuid ( "Terrorist_Select", 1 ), CLASS_KEYS, "f_choose_model" )
        register_menucmd ( register_menuid ( "CT_Select", 1 ), CLASS_KEYS, "f_choose_model" )
    }
    
    public f_choose_model(id)
    {
        new szCommand [2]
        read_argv ( 1, szCommand, charsmax ( szCommand ) )
    
        new szTeam [ 2 ]
        get_user_team ( id, szTeam, 1 )
    
        switch ( szTeam [ 0 ] )
        {
            case 'T':
            {
                if (szCommand [0] == '2') return PLUGIN_CONTINUE
                else
                {
                    if ( task_exists ( id ) ) remove_task ( id )
                    set_task ( 0.1 , "task_joinclass_t" , id )
                    return PLUGIN_HANDLED
                }
            }
            case 'C':
            {
                if (szCommand [0] == '4') return PLUGIN_CONTINUE
                else
                {
                    if ( task_exists ( id ) ) remove_task ( id )
                    set_task ( 0.1 , "task_joinclass_ct" , id )
                    return PLUGIN_HANDLED
                }
            }
        }
    
        return PLUGIN_HANDLED
    }
    
    public task_joinclass_t ( id ) client_cmd ( id, "joinclass 2" )
    public task_joinclass_ct ( id ) client_cmd ( id, "joinclass 4" )
     
  18. Lexx Пользователь

    Регистрация:
    19.06.16
    Сообщения:
    9
    Симпатии:
    2
    Пол:
    Мужской
    Может и без тасков будет нормально работать:
    Код:
    #include <amxmodx>
    #include <amxmisc>
    
    #define CLASS_KEYS MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5
    
    public plugin_init ( )
    {
        register_plugin ( "Custom joinclass", "0.1.1", "Lexx" )
    
        register_clcmd ( "joinclass", "f_choose_model" )
        register_menucmd ( register_menuid ( "Terrorist_Select", 1 ), CLASS_KEYS, "f_choose_model" )
        register_menucmd ( register_menuid ( "CT_Select", 1 ), CLASS_KEYS, "f_choose_model" )
    }
    
    public f_choose_model(id)
    {
        new szCommand [2]
        read_argv ( 1, szCommand, charsmax ( szCommand ) )
    
        new szTeam [ 2 ]
        get_user_team ( id, szTeam, 1 )
    
        switch ( szTeam [ 0 ] )
        {
            case 'T':
            {
                if (szCommand [0] == '2') return PLUGIN_CONTINUE
                else
                {
                    client_cmd ( id, "joinclass 2" )
                    return PLUGIN_HANDLED
                }
            }
            case 'C':
            {
                if (szCommand [0] == '4') return PLUGIN_CONTINUE
                else
                {
                    client_cmd ( id, "joinclass 4" )
                    return PLUGIN_HANDLED
                }
            }
        }
    
        return PLUGIN_HANDLED
    }
     
    mcrc нравится это.
  19. mcrc Пользователь

    Регистрация:
    01.03.15
    Сообщения:
    76
    Симпатии:
    16
    Пол:
    Мужской
    @Lexx, оба варианта попробовал, результат один: после выбора скина, респауна не происходит, игрок просто висит в спектрах
    В вашем коде ещё можно добавить, чтобы при выборе любого скина, рандомно брался, скажем, 1-й или 2-й?
     
  20. Lexx Пользователь

    Регистрация:
    19.06.16
    Сообщения:
    9
    Симпатии:
    2
    Пол:
    Мужской
    Странно, сейчас запустил на тестовом сервере, у меня оба варианта сработали. Именно "просто висит в СПЕКТРАХ"? Если спектры, а не в какой-то команде, то это очень странно, ведь плагин начинает работать только тогда, когда выбирается моделька, а моделька выбирается только после того, как выбрана сторона T или CT, не спектры. Рандомность можно добавить, вопрос только в том, что конкретно нужно (разделять ли T и CT модели, какие модели должны быть доступны и рандомиться).