地平线6自动反复刷技能点脚本

杂类 · 今天 · 3 人浏览

脚本由ai编写+人工审查,基本没逻辑问题,代码全开放,如有需求、意见可在本文评论区回复留言

脚本非进程注入,而是采用 DirectX 底层输入接口-DirectInput 方式输入,基本和外设输入一致。运行期间请勿切屏其他软件(虽然我也不知道有啥影响),因为输入是全局的,不用时可以关掉脚本

刷技能点常用蓝图

  • 175 882 167 (约1min)
  • 861 243 219 (约35s)

刷技能点专用车

  • 斯巴鲁 1998 IMPREZA 22B-STI VERSION (优先喂满技能点以解锁9倍点数)

脚本使用说明

1、需要安装python环境,当前在测试阶段所以没打包exe,可以根据自身需求修改
2、脚本运行过程中依然需要手动长按前进键,如果不想手动按前进键,可尝试文章末尾的beta版脚本,可开局自动按前进键,但测试时间较少可能有bug
3、建议将输入法开大写锁定或者切换ENG输入法,否则“X”键重开可能会失效导致直接按下回车回到主菜单

脚本依赖

  • python 3.10.x
  • PyDirectInput==1.0.4
  • PyAutoGUI==0.9.54
  • opencv_python==4.13.0.92

requirements.txt

PyDirectInput==1.0.4
PyAutoGUI==0.9.54
opencv_python==4.13.0.92

环境安装

pip install pyautogui pydirectinput opencv-python

或 将上方requirements.txt保存下来:

pip install -r .\requirements.txt

前置工作

1、需要对特定按键进行截图,如下图:

2026-05-20T16:15:55.png

截图要求:尽可能紧贴着文字,并且保持默认的按钮背景(如“开始竞赛赛事”正常情况下是黑色背景,除非鼠标移动到其他按钮上)。将截图名称修改为restart.pngstart_race.png放到脚本相同目录下

2、修改代码区域:
在代码的检测区域修改坐标。我预设的是2k屏幕的坐标,如果不确定可以使用qq截图来确认坐标,选取文字左上角的X Y坐标,并设置区域高度与宽度(向下和向右的边长),建议要比截图大50左右。

3、先选好蓝图进入到有“开始竞赛赛事”按钮的页面,之后再运行脚本,防止在其他页面误触。

脚本内容

# 需手动按住前进键版本,可将前进键改成空格键方便按压
import time
import pyautogui
import pydirectinput
import random

# =================================================

# 提前准备好的 UI 截图文件名
IMG_RESTART = 'restart.png'
IMG_START_RACE = 'start_race.png'

# 扩大检测区域 (左上角X, 左上角Y, 宽度, 高度) (注:建议坐标设定要比截图的坐标大一些,提供容错区域)
RESTART_REGION = (280, 1280, 200, 100) 
START_RACE_REGION = (70, 830, 300, 120)

# =================================================

def check_ui(img_name, search_region, conf):
    """封装检测函数,处理异常并返回布尔值"""
    try:
        pos = pyautogui.locateOnScreen(img_name, region=search_region, confidence=conf)
        return True if pos else False
    except pyautogui.ImageNotFoundException:
        return False

def wait_and_click():
    print("🚗 地平线刷点辅助脚本已启动,5秒后开始监测,请切回游戏...")
    time.sleep(5)
    
    while True:
        # 1. 独立检测“重新开始”
        if check_ui(IMG_RESTART, RESTART_REGION, 0.8):
            print("🎯 检测到结算界面:按下 X 并 回车...")
            time.sleep(0.5 + random.uniform(-0.05, 0.2))
            pydirectinput.press('x')
            time.sleep(0.5 + random.uniform(-0.05, 0.2))
            pydirectinput.press('enter')
            
            time.sleep(5) 
            continue 
            
        # 2. 独立检测“开始竞赛赛事”
        if check_ui(IMG_START_RACE, START_RACE_REGION, 0.7):
            print("🚀 检测到发车界面:自动回车!")
            time.sleep(0.5 + random.uniform(-0.05, 0.3))
            pydirectinput.press('enter')
            time.sleep(5)
            continue
            
        time.sleep(1.5)

if __name__ == "__main__":
    wait_and_click()

Beta版脚本

支持开启后自动按压前进键(键位可自行修改),并且可以读取全局快捷键(默认F9开关脚本)。缺点是必须要管理员权限运行脚本,否则脚本虽然没报错但无法读取到全局快捷键。

requirements.txt:

PyDirectInput==1.0.4
PyAutoGUI==0.9.54
opencv_python==4.13.0.92
keyboard==0.13.5

main.py

import time
import pyautogui
import pydirectinput
import random
import keyboard

# ================= 配置区 =================

# 提前准备好的 UI 截图文件名
IMG_RESTART = 'restart.png'
IMG_START_RACE = 'start_race.png'

# 检测区域 (左上角X, 左上角Y, 宽度, 高度) 
RESTART_REGION = (280, 1280, 200, 100) 
START_RACE_REGION = (70, 830, 300, 120)

FORWARD_KEY = 'space'  # 前进键,可以自行修改为 'w' 或其他键
HOTKEY = 'f9'          # 脚本启停的快捷键

# ================= 状态变量 =================
is_running = False     # 脚本默认处于停止状态,按下热键后启动
is_driving = False     # 标记当前是否正在按压前进键

def toggle_script():
    """热键触发的回调函数:切换脚本启停状态"""
    global is_running, is_driving
    is_running = not is_running
    
    if is_running:
        print(f"\n▶️ [状态] 脚本已启动!正在监测游戏画面...")
    else:
        print(f"\n⏸️ [状态] 脚本已暂停!你可以安全地切换到其他窗口。")
        # 安全机制:如果在比赛中途暂停脚本,必须释放前进键,否则会一直往前冲
        if is_driving:
            pydirectinput.keyUp(FORWARD_KEY)
            is_driving = False
            print("🛑 [安全] 已强制释放前进键。")

def check_ui(img_name, search_region, conf):
    """封装检测函数,处理异常并返回布尔值"""
    try:
        pos = pyautogui.locateOnScreen(img_name, region=search_region, confidence=conf)
        return True if pos else False
    except pyautogui.ImageNotFoundException:
        return False

def main_loop():
    global is_driving
    
    print(f"🚗 地平线全自动刷点脚本已加载。")
    print(f"💡 请将输入法切换为纯英文 (ENG) 以防万一。")
    print(f"⌨️  按下 【{HOTKEY.upper()}】 键来 启动/暂停 脚本!\n")
    
    # 注册全局热键
    keyboard.add_hotkey(HOTKEY, toggle_script)
    
    while True:
        # 如果脚本被暂停,则休眠等待,不执行任何操作
        if not is_running:
            time.sleep(0.5)
            continue
            
        # 1. 检测“重新开始” (比赛结束)
        if check_ui(IMG_RESTART, RESTART_REGION, 0.8):
            print("🎯 检测到结算界面:准备重新开始...")
            
            # 停止按压前进键
            if is_driving:
                pydirectinput.keyUp(FORWARD_KEY)
                is_driving = False

            time.sleep(0.2)
            
            pydirectinput.press('x')
            time.sleep(0.5 + random.uniform(-0.05, 0.15))
            pydirectinput.press('enter')
            
            # 结算动画较长,休眠防止重复触发
            print("⏳ 等待加载下一局...")
            time.sleep(5) 
            continue
            
        # 2. 检测“开始竞赛赛事” (新局开始)
        if check_ui(IMG_START_RACE, START_RACE_REGION, 0.7):
            print("🚀 检测到发车界面:自动回车!")
            time.sleep(0.5 + random.uniform(-0.05, 0.15))
            pydirectinput.press('enter')
            
            # 等待几秒钟黑屏/发车倒计时结束
            time.sleep(4)
            
            print(f"🏎️ 开始按压前进键 ({FORWARD_KEY}) 跑图...")
            pydirectinput.keyDown(FORWARD_KEY)
            is_driving = True
            
            # 跑图过程中不需要高频检测,休眠几秒降低CPU占用
            time.sleep(5)
            continue
            
        # 常规休眠,避免死循环占满单核 CPU
        time.sleep(1)

if __name__ == "__main__":
    main_loop()
教程 娱乐
Theme Jasmine by Kent Liao
beian
皖公网安备34122202000364号