yanhy的学习记录匣 - 娱乐 https://yanhy.top/index.php/tag/%E5%A8%B1%E4%B9%90/ 地平线6自动反复刷技能点脚本 https://yanhy.top/index.php/archives/492/ 2026-05-21T00:26:00+08:00 脚本由ai编写+人工审查,基本没逻辑问题,代码全开放,如有需求、意见可在本文评论区回复留言脚本非进程注入,而是采用 DirectX 底层输入接口-DirectInput 方式输入,基本和外设输入一致。运行期间请勿切屏其他软件(虽然我也不知道有啥影响),因为输入是全局的,不用时可以关掉脚本刷技能点常用蓝图175 882 167 (约1min)861 243 219 (约35s)刷技能点专用车斯巴鲁 1998 IMPREZA 22B-STI VERSION (优先喂满技能点以解锁9倍点数)脚本使用说明1、需要安装python环境,当前在测试阶段所以没打包exe,可以根据自身需求修改2、脚本运行过程中依然需要手动长按前进键,如果不想手动按前进键,可尝试文章末尾的beta版脚本,可开局自动按前进键,但测试时间较少可能有bug3、建议将输入法开大写锁定或者切换ENG输入法,否则“X”键重开可能会失效导致直接按下回车回到主菜单脚本依赖python 3.10.xPyDirectInput==1.0.4PyAutoGUI==0.9.54opencv_python==4.13.0.92requirements.txtPyDirectInput==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、需要对特定按键进行截图,如下图:截图要求:尽可能紧贴着文字,并且保持默认的按钮背景(如“开始竞赛赛事”正常情况下是黑色背景,除非鼠标移动到其他按钮上)。将截图名称修改为restart.png、start_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.5main.pyimport 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() 服务器上部署小游戏之《人生重开模拟器》(附screen使用方法) https://yanhy.top/index.php/archives/118/ 2021-10-11T00:12:00+08:00 偶然发现个开源的js项目,部署到服务器上玩玩~简介该项目名为 lifeRestart ,开源在github,源码主要为JS编写,可同时运行在本地控制台、网页上。以下为控制台截图:步骤环境安装由于本项目为js项目,依赖于Node运行,因此先在服务器安装上NodeJS与npm:sudo apt install nodejs sudo apt install npm如果报错找不到该软件包,请先执行sudo apt update 与 sudo apt upgrade安装完后输入node -v即可查看安装版本,验证是否安装成功如果出现的版本号为14版本以下的旧版本,可能运行不了项目,请输入sudo apt autoremove nodejs来卸载旧版本node,然后跟着下面的教程安装最新版node:去 node官网 找到最新版后,选择Linux 二进制文件 (x64) 或者选择自己平台的下载,复制下载链接,然后进入ssh。先新建文件夹为node(个人习惯,不想把目录搞的很乱),再使用wget将node下载下来并解压,下载链接与安装包名不一定一致,自行变通:mkdir node cd node wget https://npm.taobao.org/mirrors/node/v16.10.0/node-v16.10.0-linux-x64.tar.xz tar –xvf node-v16.10.0-linux-x64.tar.xz再将解压后的重命名,然后移动到要长期存放的地方,个人推荐在usr文件夹下创建,以下教程就是在usr下创建个soft,防止目录管理起来乱:mv node-v16.10.0-linux-x64 node mkdir /usr/soft mv node /usr/soft/node最后一步,将node添加到系统环境变量:sudo nano /etc/profile 在文档最下面回车一行,并添加: export NODE_HOME=/usr/soft/node (此处填Node所在路径)(注释不要复制!) export PATH=$NODE_HOME/bin:$PATH然后输入source /etc/profile刷新环境变量,再输入node -v确认版本如果是用上述链接下载,应该是显示 v16.10.0至此,node算是安装完成(如果在其他地方输入node -v没有反应,可以重新输入source /etc/profile来刷新,或者重启后也可以全局刷新)运行环境安装完成后,还需要有个能在服务器上持续运行该项目的环境,否则ssh连接一旦断开项目将会被终止。如果服务器已经安装了VNC或者Xrdp,可无视下面的安装,直接远程连接后到部署项目步骤即可。为了让项目在服务器持续运行且不需要值守,只需要使用Screen软件包即可:sudo apt install screen安装后可输入screen -v查看版本来验证是否安装成功。附:Screen使用方法简要总结(指令区分大小写!)screen -ls 列出所有创建的窗口screen -S xxxx 新建一个名字为xxxx的新窗口并进入screen -r xxxx 进入一个名字为xxxx的窗口,如果没有这个名字的窗口会显示There is no screen to be resumed matching xxxx.screen -R xxxx 进入一个名字为xxxx的窗口,如果没有这个窗口会自动创建新窗口且名字为xxxx关闭screen : 进入一个窗口,然后关闭当前的项目,再输入exit,即可退出窗口并从列表中移除Ctrl + a + d 暂离当前窗口(进入一个窗口后,先按ctrl+a,保持ctrl键再按d即可离开该窗口,不影响运行的项目)screen -wipe 列出全部窗口并自动移除无效的窗口出现名字相同的多个窗口时,进入窗口时需要输入id而不是窗口名,如:列表中有114514.test 1919810.test,进入窗口时需要输入screen -r 114514kill 9 id号 强制杀死窗口进程(id号为23333.Name中的23333,如 kill 9 23333,不能输入窗口名)项目部署1、先创建一个窗口用于专门跑项目:screen -S lifeRestart2、根据github文档,首先需要下载项目包:git clone https://github.com/VickScarlet/lifeRestart.git lifeRestart cd lifeRestart3、进入文件夹后,先安装依赖(如果服务器是第一次安装node环境,可能会安装久一些):npm install4、启动本地服务器:npm run dev5、开放端口8080各服务商开放端口的方法自行百度,如果是使用宝塔面板的,可以在宝塔后台-安全-添加放行端口,手动添加8080即可(暂时没找到哪里可以改端口,待我琢磨一下...)6、连接网页在浏览器输入http://服务器ip地址:8080/view/index.html本文到此结束,感谢支持!