Повторить движение мыши в 3D -игре FPS с помощью Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Повторить движение мыши в 3D -игре FPS с помощью Python?

Сообщение Anonymous »

Я пытаюсь сделать ИИ, основанный на нейронной сети для академии джедаев, посредством поведенческого клонирования (обучение подражать профессионалам). Чтобы поведенческое клонирование было верным, важно для того, чтобы иметь возможность воспроизводить движения мыши. То есть, если данные говорится, что поверните символ на 45 градусов влево, тогда ИИ должен быть в состоянии воспроизвести это при представленной с той же ситуацией. Вот видео, которое я снял много лет назад, в котором показано, чего я пытаюсь достичь: . К сожалению, я не сохранил код для этой конкретной демонстрации. Вот один, где время не внедряется, и оно запускает мышь в игре (еще одна проблема, которую я пытаюсь понять). < /P>

from pynput import mouse
import time
import json
import win32gui
import pydirectinput
import ctypes
import pynput
from ctypes import windll, Structure, c_long, byref

class POINT(Structure):
_fields_ = [("x", c_long), ("y", c_long)]
SendInput = ctypes.windll.user32.SendInput
hwnd = win32gui.FindWindow(None, 'EternalJK')
win32gui.SetForegroundWindow(hwnd)

recorded_data = []
previous_time = None
previous_x, previous_y = None, None

def MousePosition_ctypes():
pos = POINT()
windll.user32.GetCursorPos(byref(pos))
return pos.x, pos.y

print("Recording..")
t0 = time.time()
t = time.time()
mouse_positions = []
while t < t0 + 3:
x, y = MousePosition_ctypes()
mouse_positions.append((x, y, t))
t = time.time()

print("Playing..")

def set_pos(x, y):
x = 1 + int(x * 65536./2048.)
y = 1 + int(y * 65536./1536.)
extra = ctypes.c_ulong(0)
ii_ = pynput._util.win32.INPUT_union()
ii_.mi = pynput._util.win32.MOUSEINPUT(x, y, 0, (0x0001), 0, ctypes.cast(ctypes.pointer(extra), ctypes.c_void_p))
command=pynput._util.win32.INPUT(ctypes.c_ulong(0), ii_)
SendInput(1, ctypes.pointer(command), ctypes.sizeof(command))

t0 = time.time()
cumulative_time = 0
for delta_x, delta_y, time_delta in mouse_positions:
# time.sleep(time_delta)
set_pos(delta_x, delta_y)



Подробнее здесь: https://stackoverflow.com/questions/795 ... ing-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Движение мыши и щелчки не работают правильно в игре с использованием YOLOv5 и PyWin32
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Движение мыши в игре (fortnite) с использованием pydirectinput
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Движение мыши не работает в игре (fortnite) с использованием pydirectinput
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Движение 3D склона Unity создает неровное движение
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как изменить движение в игре в шашки на Python?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»