Удар ножом ПКМ

Тема в разделе "Программирование / Скриптинг", создана пользователем Колян, 14 окт 2016.

  1. Колян

    Колян

    Сообщения:
    124
    Симпатии:
    3
    Здравствуйте, подскажите как можно запретить игроку бить нозем с ПКМ (правой кнопки мыши)... можно ловить hurt и проверять демаг > 20 ... но это как-то хиленько... можно физически это запретить?
     
  2. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.570
    Симпатии:
    1.152
  3. Колян

    Колян

    Сообщения:
    124
    Симпатии:
    3
    чуть конкретней если можно)
     
  4. Grey83

    Grey83

    Сообщения:
    351
    Симпатии:
    101
    как-то так
    PHP:
    public Action OnPlayerRunCmd(int clientint &buttonsint &impulsefloat vel[3], float angles[3], int &weaponint &subtypeint &cmdnumint &tickcountint &seedint mouse[2])
    {
        if (
    IsPlayerAlive(client))
        {
            if (
    buttons IN_ATTACK2)
            {
                static 
    char class[32];
                
    GetClientWeapon(client, class, sizeof(class));
                if(
    StrContains(class, "knife") != -|| StrContains(class, "bayonet") != -1)
                {
                    
    buttons &= ~IN_ATTACK2;
                    
    buttons |= IN_ATTACK;    // замена на левую,  вроде должно работать
                    
    return Plugin_Changed;
                }
            }
        }
        return 
    Plugin_Continue;
    }
     
    Последнее редактирование: 14 окт 2016
  5. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Код:
    m_flNextPrimaryAttack
    m_flNextSecondaryAttack
    Клавиша IN_ATTACK2. Только нужно ещё проверить применяемое оружие. Оффтоп
    Вызов для игроков, а не entity - индекс не перевалит. И игрок всегда валиден.
    Обязательно static.
     
  6. Grey83

    Grey83

    Сообщения:
    351
    Симпатии:
    101
  7. Колян

    Колян

    Сообщения:
    124
    Симпатии:
    3
    m_flNextPrimaryAttack
    m_flNextSecondaryAttack

    вот это не понял)))
     
  8. Grey83

    Grey83

    Сообщения:
    351
    Симпатии:
    101
    можно через эти параметры выставить время через которое игра позволит нажать ЛКМ и ПКМ, соответственно
    Но там нужно ловить событие переключения на оружие (но не обязательно).
     
  9. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Кнопку бы заранее получать, чтобы оружие зря не узнавать. Массив поменьше.
    PHP:
    strncmp(class[7], "knife"5) == 0
    И второе оружие обычным сравнением строк.
    Код:
    SetEntPropFloat(weapon, Prop_Send, "m_flNextPrimaryAttack", 99999999.9);
    SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 99999999.9);
     
  10. Grey83

    Grey83

    Сообщения:
    351
    Симпатии:
    101
    лучше через int &weapon, но как через это значение определить тип оружия я не в курсе
     
  11. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Если не путаю, то эта штука часто возвращает -1. Т.е., не факт, что на нож адекватно вернёт индекс, надо проверить. Оффтоп
     
  12. Grey83

    Grey83

    Сообщения:
    351
    Симпатии:
    101
    @AlmazON, пофиксил проверку. Теперь после проверки кнопки только будет проверять тип оружия.
    Замена хоть работать будет? А то я с этими двоичными операторами не совсем в ладах. И посмотреть негде.
     
  13. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    PHP:
    buttons |= IN_ATTACK;
     
  14. Grey83

    Grey83

    Сообщения:
    351
    Симпатии:
    101
    Оффтоп
    Поправил и это