remain22 2022-04-25 17:58 采纳率: 40%
浏览 77
已结题

游戏脚本制作失败pygame keyboard

问题遇到的现象和发生背景

想要做一个《流放之路》的固定点击脚本,写的代码可以在游戏外运行,一进入游戏就失灵?怎么回事?只要切换出游戏界面后又可以正常运行;同时我还发现键盘输出在文字聊天上可以正常使用

问题相关代码,请勿粘贴截图
import pyautogui
import time
import keyboard
while True:
    keyboard.press('r')#按下‘R’键
    keyboard.press('space')#按下空格键
    pyautogui.moveTo([100, 100], duration=0.1)  # 鼠标调用
    pyautogui.click(button='left')#点击左键
    time.sleep(2)
    pyautogui.moveTo([400, 400], duration=0.1)  # 鼠标调用
    pyautogui.click(button='left')#点击左键
    time.sleep(3)

运行结果及报错内容

无报错

我的解答思路和尝试过的方法

我怀疑是不是游戏将外置插件屏蔽了,所以我打开了老游戏《魔兽争霸》DOTA进行测试,发现DOTA中只可以运行一次键盘按键,鼠标按键一直生效

我想要达到的结果

让这个小玩意不受环境影响

  • 写回答

4条回答 默认 最新

  • remain22 2022-04-25 19:14
    关注

    目前已解决《魔兽争霸》中键盘按键问题。
    主要问题是keyboard.press的意思是按住‘R’键不放。所以后续的按键无法响应。将此命令改为keyboard.send('r'),即可解决。
    现在的问题应该改为《流放之路》中有检测外部按键输入的程序,有谁能绕过不?封号也算啊。

    2022.4.26日修改
    我参照B站QingAn71视频up主的脚本做法做了一下,目前结论是,利用pywin32 中的win32gui库,找到游戏主窗口并显示,再用win32con库中的命令与此窗口发生连接,目前已经可以正常输入指令了(程序封装为exe后用管理员模式运行,在pycharm中无法正常运行)。具体代码如下:

    python
    
    import keyboard
    import time
    import win32con
    import win32gui
    #查找主窗口
    win = win32gui.FindWindow(u'POEWindowClass', None)
    # 将窗口调到前台
    win32gui.SetForegroundWindow(win)
    win32gui.ShowWindow(win, win32con.SW_SHOW)
    while True:
        if keyboard.record('space'):
            keyboard.send('r')
            time.sleep(0.1)
            keyboard.send('j')
            time.sleep(0.1)
    
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 赞助了问题酬金10元 4月25日
  • 创建了问题 4月25日