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

Колян

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

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
как-то так
PHP:
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2])
{
    if (IsPlayerAlive(client))
    {
        if (buttons & IN_ATTACK2)
        {
            static char class[32];
            GetClientWeapon(client, class, sizeof(class));
            if(StrContains(class, "knife") != -1 || StrContains(class, "bayonet") != -1)
            {
                buttons &= ~IN_ATTACK2;
                buttons |= IN_ATTACK;    // замена на левую,  вроде должно работать
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
физически это запретить?
C-подобный:
m_flNextPrimaryAttack
m_flNextSecondaryAttack
чуть конкретней
Клавиша IN_ATTACK2. Только нужно ещё проверить применяемое оружие. Оффтоп
0 < client<= MaxClients && IsClientInGame(client)
Вызов для игроков, а не entity - индекс не перевалит. И игрок всегда валиден.
Обязательно static.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
вот это не понял)))
можно через эти параметры выставить время через которое игра позволит нажать ЛКМ и ПКМ, соответственно
Но там нужно ловить событие переключения на оружие (но не обязательно).
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Кнопку бы заранее получать, чтобы оружие зря не узнавать. Массив поменьше.
StrContains(class, "knife") != -1
PHP:
strncmp(class[7], "knife", 5) == 0
И второе оружие обычным сравнением строк.
вот это не понял
C-подобный:
SetEntPropFloat(weapon, Prop_Send, "m_flNextPrimaryAttack", 99999999.9);
SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 99999999.9);
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
Кнопку бы заранее получать, чтобы оружие зря не узнавать. Массив поменьше.
PHP:
strncmp(class[7], "knife", 5) == 0
И второе оружие обычным сравнением строк.
лучше через int &weapon, но как через это значение определить тип оружия я не в курсе
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
лучше через int &weapon
Если не путаю, то эта штука часто возвращает -1. Т.е., не факт, что на нож адекватно вернёт индекс, надо проверить. Оффтоп
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@AlmazON, пофиксил проверку. Теперь после проверки кнопки только будет проверять тип оружия.
Замена хоть работать будет? А то я с этими двоичными операторами не совсем в ладах. И посмотреть негде.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
Оффтоп
Поправил и это
 
Сверху Снизу