На днях столкнулся с багом. Делал скрипт под Nox и в определённый момент часть кликов перестала проходить. Изучив проблему и проведя тесты что выяснил:
если больше одного монитора и на них стоит разное разрешение, то клики/перемещения в координаты превышающие меньший монитор (или дополнительный, тут ХЗ) сбрасываются в X1max. Важно! Это происходит не всегда, а только если окно кликера (главное или редактор) находятся на меньшем мониторе.
Мой пример.
Есть 2 монитора. Основной левый 1920x1080. Дополнительный правый 1600x900
$_xmax, $_ymax кликер выдаёт 3519x1079 что суммарно правильно.
Вот демонстрационный код
MOVE(1000, 900)
LOGWRITE("X/Y ", $_xmouse, "/", $_ymouse)
HALT
На тесте пере6двигаем в координаты 1000x900 которые присутствуют всегда и находятся в области первого монитора.
Заметим, что Y больше чем максимум второго монитора 899.
При нахождении окна кликера на основном мониторе кликер двигает правильно в
15:18:59 X/Y 1000/900
При нахождении окна кликера на дополнительном мониторе курсор уходит в
15:19:07 X/Y 1919/900
т.е. координата X становится максимальной от первого монитора 1919, Y при этом сохраняется.
Кликер при нахождении на конкретном мониторе сравнивает координаты с максимальными именно этого монитора, даже если глобально они попадают не на него и в итоге ограничивает X первым монитором. Почему именно так, ну, такая ошибка.
Столкнулся, только когда окно NOX-а заняло слишком много места на экране и передвинул кликер на второй. И при этом рабочие координаты вышли за область второго монитора.
Понятно, что с этой ситуацией столкнуться только те, у кого на мониторах разное разрешение. Я вот столкнулся и мне пипец как неудобно.