5мес



Программирование
+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)
Когда я запускаю его в блокноте, буквы печатаются, когда я нажимаю эти клавиши с этим интервалом в игре, все работает, но скрипт в игре не работает. :( Нажимается только пкм, а клавиши не считываются. Может в игре защита от скриптов? Помогите пожалуйста
По дате
По рейтингу
Используйте библиотеку 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.