如何使用Python在游戏中移动目标

问题描述 投票:0回答:1

我正在尝试创建一个播放CS:GO的AI。

但是我无法移动目标。

我尝试了pyautogui,win32api,pynput库,它们全部都在台式机或任何有光标的地方工作。

但是在游戏中没有光标,并且当我跟随鼠标的位置时,将鼠标移到中间位置(对我来说是(1920/2,1080/2))会增加一小段时间然后又回到该位置。

如何通过python在CS:GO或GTAV或任何游戏中移动目标。 python代码和真正的鼠标有什么区别?

我不认为这是因为反作弊,因为它不适用于GTAV

我看过相同的主题,但它们没有解决我的问题

所有库的代码都相似,所以我使用的代码是这样:

import pyautogui, sys
import _thread
import time

time.sleep(2)

def kaydir(miktarX, miktarY):
    pyautogui.moveRel(miktarX, miktarY)

print('Press Ctrl-C to quit.')
try:
    while True:
        x, y = pyautogui.position()
        positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
        print(positionStr, end='')
        print('\b' * len(positionStr), end='', flush=True)
        _thread.start_new_thread(kaydir, (1, 1))
        time.sleep(0.08)
except KeyboardInterrupt:
    print('\n')
python auto aim
1个回答
1
投票

所以第一件事是:您对这个问题有什么意思:

python代码和真正的鼠标有什么区别?

但是,如果您想为任何游戏创建一个机器人,则有两个选择:

  • Memory Hacking:获取一些内存指针以更改输入标志等(通过CheatEngine等)

  • 模拟用户互动(您的方式):如果您想使用PyAutoGUI进行交互,我认为这是一个不错的起点:https://www.youtube.com/watch?v=NaZTtUmE990

    我更喜欢的另一种方法是(如您所提到的)WinAPI:鼠标移动的C ++实现(因为我不知道如何在python中做到):

    int main() {
        HWND tWin= FindWindow("TargetWindow", "Target Window");
        if (tWin) {
            RECT rect = {0};
            GetWindowRect(tWin, &rect);
            SetCursorPos(rect.right - 180 /*x offset*/, rect.bottom - 300 /*y offset*/);
        }
    
        return 0;
    }
    

    还请确保如果您的程序是64位,请使用64位WinAPI

    如果您的机器人在游戏中以更高的特权运行,则您需要以管理员或系统身份运行机器人

    但是我想创建一个机器人您还需要内存破解(只是读取)以获取玩家的位置等信息,因为从程序员的角度来看,您是如何从gamescreen-imgage中提取pos项目等的。 ?。您可能还可以使用机器学习,但是对于游戏而言,它需要大量的训练过程。

© www.soinside.com 2019 - 2024. All rights reserved.