You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用asyncio时游戏Bot的hunt()函数无法正常运行问题

问题分析与修复方案

你的游戏Bot代码存在几个核心问题,导致hunt()无法按预期触发并执行:

核心问题

  • grind()是同步死循环:调用grind()后会直接阻塞整个程序,main()里后续的条件检测逻辑根本不会运行,自然无法触发hunt()
  • 变量作用域错误:eltime是hunt()内部定义的变量,main()无法直接访问,await asyncio.sleep(eltime)会直接报错
  • 同步time.sleep()阻塞事件循环:在async函数中使用time.sleep()会卡死整个asyncio事件循环,导致异步逻辑失效
  • 无暂停grind()的机制:原代码没有设计暂停grind()的逻辑,就算触发hunt(),grind()的循环也会持续运行

修复后的代码

import pyautogui
import pydirectinput
import asyncio
import random

# 控制grind运行状态的全局标志位
is_grinding = True

# 生成随机间隔,避免固定操作节奏
def get_random_interval():
    return random.randint(1, 2)

async def grind():
    global is_grinding
    while True:
        if is_grinding:
            # 执行左右移动逻辑
            pydirectinput.keyDown('left')
            await asyncio.sleep(get_random_interval())
            pydirectinput.keyDown('right')
            pydirectinput.keyUp('left')
            await asyncio.sleep(get_random_interval())
            pydirectinput.keyUp('right')
        # 让出事件循环,避免占用全部CPU资源
        await asyncio.sleep(0.1)

async def hunt():
    global is_grinding
    # 暂停grind任务
    is_grinding = False
    # 确保松开方向键,避免冲突
    pydirectinput.keyUp('left')
    pydirectinput.keyUp('right')
    
    # 执行hunt操作逻辑
    await asyncio.sleep(3)
    pydirectinput.press('1')
    await asyncio.sleep(0.2)
    pydirectinput.press('1')
    await asyncio.sleep(3)
    
    # 完成hunt后恢复grind
    is_grinding = True

async def main():
    # 启动grind异步任务
    grind_task = asyncio.create_task(grind())
    
    # 持续检测像素条件
    while True:
        if pyautogui.pixel(941, 664)[0] == 205:
            await hunt()
        # 控制检测频率,避免资源浪费
        await asyncio.sleep(0.5)

asyncio.run(main())

修复说明

  • 异步化grind():将grind()改为async函数,用asyncio.sleep()替代time.sleep(),避免阻塞事件循环
  • 全局标志位控制状态:通过is_grinding变量实现grind()的暂停与恢复,执行hunt()时暂停,完成后自动恢复
  • 简化按键操作:用pydirectinput.press('1')替代手动的keyDown/keyUp,代码更简洁可靠
  • 分离任务执行:main()中单独启动grind()异步任务,同时循环检测像素条件,满足时直接等待hunt()执行完成
  • 优化资源占用:在循环中添加短暂的sleep,避免程序占用过高CPU资源

内容的提问来源于stack exchange,提问作者Kgold545

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:03:22