Не работает python скрипт в игре

Есть такой простенький код

import keyboard
import pyautogui
from time import sleep

sleep(5)
while True:
    pyautogui.keyDown('u')

Когда я запускаю игру, то по идее персонаж должен без остановки идти прямо, но персонаж просто стоит на месте и ничего не происходит


Ответы (1 шт):

Автор решения: DiHASTRO

Если я всё правильно помню, игры реагируют на DirectX-нажатия в основном. Такие путхоновские нажатия в вашем коде - просто письмо текста. Для такого дела я когда-то использовал ctypes. Не судите строго: код написан на коленке, какими-то лютыми комбинациями.

import ctypes
SendInput = ctypes.windll.user32.SendInput

def PressKey(hexKeyCode):
    extra = ctypes.c_ulong(0)
    ii_ = Input_I()
    ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra) )
    x = Input( ctypes.c_ulong(1), ii_ )
    SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))

def ReleaseKey(hexKeyCode):
    extra = ctypes.c_ulong(0)
    ii_ = Input_I()
    ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra) )
    x = Input( ctypes.c_ulong(1), ii_ )
    SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))

Вам лишь остаётся найти таблицу с HEX-кодами на клавишах

Пример использования функций:

PressKey(0x1E) # Нажатие на клавишу под номером 0x1E
ReleaseKey(0x1E) # Отпускание клавиши под номером 0x1E

я движения мыши в игре PyAutoGui вполне себе подходит

====================================================================

Всем добра-бобра

→ Ссылка