Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите со скриптом Python для RDR 2

У меня есть скрипт для прокачки доверия лошади в афк режиме:

1234567891011121314151617181920212223242526272829303132333435363738394041
 import pyautogui as pg 
import keyboard as kb 
import time as t 
import sys 
 
kb.wait('=') 
print("START") 
 
stop = 0 
 
def k(e): 
    global stop 
    if str(e.name) == "-" and stop == 0: 
        pg.mouseUp(button="right") 
        print("Правая кнопка мыши: OFF") 
        t.sleep(0.5) 
        print("EXIT") 
        stop = 1 
 
kb.hook(k) 
pg.mouseDown(button='right') 
print("Правая кнопка мыши: ON") 
def cycle(): 
    global stop 
    t.sleep(0.3) 
    pg.keyDown("g") 
    print("Команда G: started\n-==-") 
    t.sleep(0.5) 
    pg.keyUp("g") 
    print("Команда G: finished\n") 
    t.sleep(6) 
    pg.keyDown("b") 
    print("Команда B: started\n-==-") 
    t.sleep(0.5) 
    pg.keyUp("b") 
    print("Команда B: finished\n") 
    t.sleep(12) 
    if stop == 0: 
        cycle() 
cycle() 
t.sleep(200)  

Когда я запускаю его в блокноте, буквы печатаются, когда я нажимаю эти клавиши с этим интервалом в игре, все работает, но скрипт в игре не работает. :( Нажимается только пкм, а клавиши не считываются. Может в игре защита от скриптов? Помогите пожалуйста

По дате
По рейтингу
Аватар пользователя
Оракул
5мес

Используйте библиотеку pydirectinput вместо pyautogui.

1
 pip install pydirectinput 

Модифицированный скрипт:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
 import pydirectinput as pdi 
import keyboard as kb 
import time as t 
import sys 
import ctypes 
 
if not ctypes.windll.shell32.IsUserAnAdmin(): 
    print("Запустите скрипт от имени администратора!") 
    sys.exit() 
 
kb.wait('=') 
t.sleep(3)  # Дайте 3 секунды на активацию окна игры 
print("START") 
 
stop = 0 
 
def k(e): 
    global stop 
    if e.name == "-" and stop == 0: 
        pdi.mouseUp(button="right") 
        print("Правая кнопка мыши: OFF") 
        t.sleep(0.5) 
        print("EXIT") 
        stop = 1 
 
kb.hook(k) 
pdi.mouseDown(button='right') 
print("Правая кнопка мыши: ON") 
 
def cycle(): 
    global stop 
    while stop == 0: 
        # Команда G (уход за лошадью) 
        pdi.keyDown("g") 
        print("Команда G: started") 
        t.sleep(1.5)  # Увеличенная задержка 
        pdi.keyUp("g") 
        print("Команда G: finished") 
        t.sleep(6) 
         
        # Команда B (похлопывание) 
        pdi.keyDown("b") 
        print("Команда B: started") 
        t.sleep(1.5) 
        pdi.keyUp("b") 
        print("Команда B: finished") 
        t.sleep(12) 
 
cycle() 
t.sleep(200) 

Если это не поможет, скорее всего в игре активна защита, и придётся поискать обходные методы (AutoHotkey, HID-эмуляция и т.д.), но тут уже всё сильно зависит от версий игры и анти-cheat-политики Rockstar.