如何使用ctypes控制彩虹六号攻城?

2024-05-05 17:18:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过python控制游戏彩虹六号围攻。我发现了一些利用库ctypes创建鼠标事件的代码,但是当它用于游戏(单人模式下的恐怖分子追捕)时,它会自动让我看地面

我尝试了MOUSEEVENTF\u MOVE和MOUSEEVENTF\u ABSOLUTE标志的不同组合,但没有效果。这是迄今为止唯一一个能够影响游戏的库。当我专注于游戏窗口时,其他人什么都不做

import ctypes

class MouseInput(ctypes.Structure):
    _fields_ = [("dx", ctypes.c_long),
                ("dy", ctypes.c_long),
                ("mouseData", ctypes.c_ulong),
                ("dwFlags", ctypes.c_ulong),
                ("time",ctypes.c_ulong),
                ("dwExtraInfo", PUL)]

class Input_I(ctypes.Union):
    _fields_ = [("ki", KeyBdInput),
                 ("mi", MouseInput),
                 ("hi", HardwareInput)]

class Input(ctypes.Structure):
    _fields_ = [("type", ctypes.c_ulong),
                ("ii", Input_I)]

def move_mouse(x, y):
    extra = ctypes.c_ulong(0)
    ii_ = Input_I()
    x = int(x*(65536/ctypes.windll.user32.GetSystemMetrics(0))+1)
    y = int(y*(65536/ctypes.windll.user32.GetSystemMetrics(1))+1)
    ii_.mi = MouseInput(x, y, 0, 0x0001 | 0x8000, 0, ctypes.pointer(extra))
    x = Input(ctypes.c_ulong(0), ii_)
    ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))

我想能够移动鼠标一个特定的量,改变角色的角度在彩虹六攻城。我相信鼠标试图到达屏幕上的一个固定点,这是不可能的,因为移动鼠标只会移动角色的视角。这导致它的行为不稳定时,积极,旅行远比我想它的距离


Tags: 游戏fieldsinput鼠标ctypesstructurelongclass