Posts for zymeez


Post subject: Проблема с хуком мышки в 3д шутере (COD4 MW)
Joined: 5/14/2020
Posts: 1
Здравствуйте уважаемые ТАСеры) Немного предыстории: Загорелся я как-то идеей сделать свой ТАС (или же повторитель действий) для игры Call of Duty 4 MW на РС (windows). Почитал, изучил инфу как можно отследить сообщения от клавиатуры и мышке. Сделал в итоге программку которая может устанавливать хук на клавиши, мышку перед тем как само сообщение отправится в процесс игры. Могу все действия клавиатуры записать к примеру, по таймеру (минимум 15 мс интервал) или по мере поступления сообщений и потом их воспроизвести в таком же порядке и с такой же скоростью. С мышкой немного посложнее было так как там есть 2 способа имитации движения мышки: абсолютный и относительны. Оба варианта реализовал. Все тесты провожу не в игре, а так в системе или в паинте напишу, нарисую (так по мне проще). Все работает найс. Теперь настало дело тестить в игре записывать действие и воспроизводить. Клавиши записывают/воспроизводятся корректно. А вот мышкой жуть полная. А теперь суть проблемы: В игре используется 2 режима мышки относительный и абсолютный. Абсолютный используется в меню и везде, где есть указатель мышки. Относительный используется для ориентации персонажа в пространстве игры. Абсолютный режим удается записать и воспроизвести, а вот относительный нет. Каждый определенный цикл в игре значения положения мышки всегда возвращается к центру окна игры. При 125 фпс получается что этот цикл срабатывает каждые 8 миллисекунд (1000 мс / 125 фпс = 8 ). При всей текущей возможности могу отслеживать мышку только каждые 15 мс. Даже при записи по мере поступления сообщений не удается корректно отследить мышь. 125 фпс это мой минимальный фпс для записи в дальнейшем нужен даже будет еще больше. Так же имею в распоряжении координаты и угол по горизонтали и вертикали куда смотрю в игре. В память игры залез и могу без проблем их записывать, но 1 градус в игре не равен 1 пройденному значению по х или у мышки. Вопрос: Делал ли кто запись движения мышки в 3д играх с относительным движением мыши? Поделитесь логикой как правильно записать мышь или что-то другое. Или направьте меня в нужную сторону. Может я вообще неправильно мыслю. У меня в голове только одно решение: Сделать так, чтобы значения пройденное мышкой было равно отклонению угла в игре. В таком случае я буду записывать углы в игре. Высчитывать текущее значение из прошлого это и будет значением для имитации в режиме относительного движения мыши. Спасибо.