怎么在 CS2 内实现鼠标的移动?

122 天前
 zhuxs

最近在研究 AI 玩 CS2 ,模型训练完毕后测试效果,遇到比较奇葩的情况: Python 几个模拟输入的库均可操作键盘按键、鼠标单击事件,唯独不支持鼠标的移动。(为什么不一起禁用了?) 翻了几个仓库,知道可行的方案是:Andunio 开发板输入、罗技驱动、Kmclass 。目前正在使用罗技驱动,但是有个问题,在移动的过程中,鼠标位置会被重置为(960,540)屏幕中心点,移动到目标点,需要分 3 次移动,速度太慢了。kmclass 驱动因为 ASUS 死活不给关 Security Boot ,W 用不了,而且还不清楚是否支持最新 W10 想问还有没有比较成熟的方案,这些太鸡肋。

752 次点击
所在节点    游戏
14 条回复
codehz
122 天前
cs2 用 direct input 的吧,不然没法屏蔽系统层面的鼠标加速()
另外你搞这个不怕封号的吗,还是说不进 vac 服单纯测试效果?
CSGO
122 天前
@codehz 题外话:如果我开外挂,自己本地开游戏会被 VAC 吗?以及开了外挂,再进入 VAC 服务器前关闭,也不会 VAC ?
zhuxs
122 天前
@codehz 我想做的是一个基于计算机视觉的 DQL 强化学习 AI ,CS2 好像暂时不支持 RAW Input ,G Hub 用的也好鸡肋
nipvc
121 天前
目前正在使用罗技驱动,但是有个问题,在移动的过程中,鼠标位置会被重置为(960,540)屏幕中心点,移动到目标点,需要分 3 次移动,速度太慢了。

移动到目标点为啥要三次移动?移动到目标点指什么?
cs2 鼠标用的 rawinput 接口
nipvc
121 天前
模拟输入不是直接用 sendinput 就好了?
zhuxs
121 天前
@nipvc 不行啊,用了没有反应:
```
SendInput = ctypes.windll.user32.SendInput
def set_pos(x, y):
x = 1 + int(x * 65536./1920.)
y = 1 + int(y * 65536./1080.)
extra = ctypes.c_ulong(0)
ii_ = pynput._util.win32.INPUT_union()
ii_.mi = pynput._util.win32.MOUSEINPUT(x, y, 0, (0x0001 | 0x8000), 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))
```
至于罗技是这样的:
从当前位置(x1,y1) 移动到 目标位置(x2,y2)的过程中游戏会重置准星位置为(960,540),重置后鼠标就动不了,需要再次计算位置。
zhuxs
121 天前
我买了个 CH9329 模块,用 python 给串口发型号看看可行性如何
zhuxs
121 天前
罗技完整代码:
```
dll_path = os.path.join("..", "驱动", "ghub_device.dll")
global gmok, gm # Access global variables
try:
gm = CDLL(dll_path)
gmok = gm.device_open() == 1
if not gmok:
print('未安装 ghub 或者 lgs 驱动!!!')
exit();
print('初始化成功!')

except FileNotFoundError:
print('缺少文件')

# 鼠标移动
def mouse_xy(x, y, abs_move = False):
if gmok:
gm.moveR(int(x), int(y), abs_move)
```
nipvc
121 天前
@zhuxs dwFlags 错了
nipvc
121 天前
cs2 写着不支持手柄,手柄能操作 cs2 ,用的 SendInput 接口
zhuxs
121 天前
@nipvc SendInput 相信是可以完成按键输入的,但是对于 Mouse move 我怎么改都无法成功让视角变动一下🙃
nipvc
120 天前
@zhuxs 上面说了,你的示例 dwFlags 写错了,不要 8 ,只要 0 ,再改下 dx 和 dy
nipvc
120 天前
@nipvc 说错了,只要 1
zhuxs
120 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1044983

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX