关于游戏脚本中按键“失灵”的问题

编程入门 行业动态 更新时间:2024-10-03 21:17:52

关于游戏脚本中<a href=https://www.elefans.com/category/jswz/34/1768466.html style=按键“失灵”的问题"/>

关于游戏脚本中按键“失灵”的问题

问题描述

在上一篇文章中我写到了要挂机刷级的操作,但是同时留下了一个问题,就是说数字键盘始终不能被造梦西游捕捉到,键盘上按键可以操作人物,但是用过代码把虚拟按键信息传递给游戏的时候就会失败,游戏没有任何反应,本来想着可能是pyautogui的虚拟按键信息有点问题(但是在其他软件中都是可以成功捕捉的),所以我又使用了pywin32这个库进行尝试,但是传输进去虚拟按键的信息还是失败。

import time
import win32api
import win32gui
import win32contitlename = "FCBrowser"
hwnd = win32gui.FindWindow(None, titlename)
win32gui.ShowWindow(hwnd,win32con.SW_SHOWMAXIMIZED)
win32gui.SetForegroundWindow(hwnd)
while 1:time.sleep(1)win32api.keybd_event(51,0,0,0);time.sleep(0.1)win32api.keybd_event(51,0,win32con.KEYEVENTF_KEYUP,0);  # 键盘的码位,表示数字键3

问题解决

本来我是打算开始新的整活(试试用python进行机器学习帮我完成游戏辅助的工作),但是一想到这里有个问题,就忍不住想解决,在经过一番查找资料之后,我成功找到了原因,应该是虚拟按键没有被游戏承认。

就是说虚拟按键只是传输进去了一个信息,但是硬件并没有相应的动作,可能游戏的操作是需要检测到数字键盘在硬件上的信息才行。我不知道是否是制作者故意设置了这样一个检测来防止脚本辅助,但我觉得大概率不是,因为只有数字键盘失灵,由于对这方面知识的欠缺,我无法深入探究它的原因,但是有办法解决,只要在传输信息的时候动点手脚,让它认为我们也有硬件上对应的动作就好啦,也就是跟硬件相关的扫描码。

所以只需要把第二个参数改成键盘对应的扫描码就可以成功实现。

import time
import win32api
import win32gui
import win32con
titlename = "FCBrowser"
hwnd = win32gui.FindWindow(None, titlename)
win32gui.ShowWindow(hwnd,win32con.SW_SHOWMAXIMIZED)
win32gui.SetForegroundWindow(hwnd)
while 1:time.sleep(1)win32api.keybd_event(51,81,0,0);time.sleep(0.1)win32api.keybd_event(51,81,win32con.KEYEVENTF_KEYUP,0);  

这时候就可以对玩家二进行操控啦!

不同按键对应的扫描码先放一个网址在这里。

键盘码表:单键扫描码,ascii,组合键码 - 百度文库 (baidu)

键盘按键的各种编码对照表_键盘编码_liuyukuan的博客-CSDN博客

效果

插入视频太麻烦,先不放了

更多推荐

关于游戏脚本中按键“失灵”的问题

本文发布于:2024-02-28 05:43:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768597.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:按键   脚本   游戏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!