Всем доброго дня. Помогите с информацией, пожалуйста. Я определяю нажатия клавиш в OnPlayerRunCmd примерно так:
Внутри этого условия я дополнительно проверяю статус клавиш WASD:
Но мне надо знать, когда нажаты не только клавиши по отдельности, но и вместе, например, W + D. У меня же нажатия ловятся раздельно, то есть, если нажаты W + D, то в один вызов OnPlayerRunCmd приходит W, а в следующий - D. Это нормально? Или я неправильно получаю клавиши:
Во-вторых, не могли бы вы объяснить мне, что есть что из этого ряда операторов:
& - я так понял, логическое "и", а остальные?
C-подобный:
if ((buttons & IN_JUMP && buttons & IN_USE) || (buttons & IN_JUMP && buttons & IN_DUCK))
Внутри этого условия я дополнительно проверяю статус клавиш WASD:
C-подобный:
if(buttons & IN_FORWARD)
{
ClientEyeAngle[0] = -40.0;
} else
if(buttons & IN_BACK)
{
ClientEyeAngle[0] = -140.0;
} else
if(buttons & IN_MOVELEFT)
{
ClientEyeAngle[0] = -40.0;
ClientEyeAngle[1] -= 270.0;
} else
if(buttons & IN_MOVERIGHT)
{
ClientEyeAngle[0] = -40.0;
ClientEyeAngle[1] -= 90.0;
} else
{
ClientEyeAngle[0] = -90.0;
}
Но мне надо знать, когда нажаты не только клавиши по отдельности, но и вместе, например, W + D. У меня же нажатия ловятся раздельно, то есть, если нажаты W + D, то в один вызов OnPlayerRunCmd приходит W, а в следующий - D. Это нормально? Или я неправильно получаю клавиши:
C-подобный:
if ((buttons & IN_FORWARD) && (buttons & IN_MOVERIGHT))
{
// Вот сюда я никогда не попадаю
}
Во-вторых, не могли бы вы объяснить мне, что есть что из этого ряда операторов:
C-подобный:
|, &, ^, ~, <<, >>
& - я так понял, логическое "и", а остальные?