Автокликер Clickermann :: Форум

Основной раздел => Ошибки => Topic started by: Vint on December 29, 2020, 03:31:29 PM

Title: Баг с координатами при 2 мониторах
Post by: Vint on December 29, 2020, 03:31:29 PM
На днях столкнулся с багом. Делал скрипт под Nox и в определённый момент часть кликов перестала проходить. Изучив проблему и проведя тесты что выяснил:
если больше одного монитора и на них стоит разное разрешение, то клики/перемещения в координаты превышающие меньший монитор (или дополнительный, тут ХЗ) сбрасываются в X1max. Важно! Это происходит не всегда, а только если окно кликера (главное или редактор) находятся на меньшем мониторе.

Мой пример.
Есть 2 монитора. Основной левый 1920x1080. Дополнительный правый 1600x900
$_xmax, $_ymax кликер выдаёт 3519x1079 что суммарно правильно.

Вот демонстрационный код
Code: (clickermann) [Select]
MOVE(1000, 900)
LOGWRITE("X/Y  ", $_xmouse, "/", $_ymouse)
HALT

На тесте пере6двигаем в координаты 1000x900 которые присутствуют всегда и находятся в области первого монитора.
Заметим, что Y больше чем максимум второго монитора 899.

При нахождении окна кликера на основном мониторе кликер двигает правильно в
Quote
15:18:59 X/Y  1000/900

При нахождении окна кликера на дополнительном мониторе курсор уходит в
Quote
15:19:07 X/Y  1919/900
т.е. координата X становится максимальной от первого монитора 1919, Y при этом сохраняется.

Кликер при нахождении на конкретном мониторе сравнивает координаты с максимальными именно этого монитора, даже если глобально они попадают не на него и в итоге ограничивает X первым монитором. Почему именно так, ну, такая ошибка.

Столкнулся, только когда окно NOX-а заняло слишком много места на экране и передвинул кликер на второй. И при этом рабочие координаты вышли за область второго монитора.
Понятно, что с этой ситуацией столкнуться только те, у кого на мониторах разное разрешение. Я вот столкнулся и мне пипец как неудобно.
Title: Re: Баг с координатами при 2 мониторах
Post by: kiril on December 29, 2020, 07:29:18 PM
Еще сталкивался когда два монитора и более, то некоторые видеокарты, иногда на обычный
GETSCREEN, который десятки раз, на этом скрипте и этом компе работал штатно, Выдаёт полную черноту, как при неправильной привязке.
Лечение нашёл в добавлении проверки цвета пикселя который заведомо не может быть чёрным и если он чёрный, то  условие возвращает выполнение к GETSCREEN.
Проявляется такое, когда пользователь во весь экран гоняет игру с быстрым обсчётом изменяющейся графики, а на втором мониторе смотрит какое-то видео в сжатом формате или гоняет вторую копию этой игры.
Верный признак если графика игры подвисает и есть второй монитор, то подстраховываться от такого бага, а несколько мониторов встречается у людей всё чаще и чаще.
Title: Re: Баг с координатами при 2 мониторах
Post by: Алексей87 on February 21, 2021, 09:59:44 PM
Интересное и полезное замечание!
Я так понимаю на виртуализацию это не распространяется, и предполагается что отдельная ВМ = 1 монитору и это ни от чего не зависит. У меня просто три монитора и везде разное разрешение.