# 热血三国 **Repository Path**: luoyexiaohe/Blood-Three ## Basic Information - **Project Name**: 热血三国 - **Description**: 热血三国的自动化脚本 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-11-09 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用手册 ## 项目介绍 该项目适用于乐都网旗下的乐都助手,并在该助手下开启的热血三国游戏。(热血三国2和热血三国3尚不支持) 该项目的某些功能会临时接管用户的鼠标键盘等外设的操作权,用以模拟用户的输入操作,避免遭到游戏厂商的处罚。 当发现鼠标键盘在执行项目脚本时发生非用户操作,请不用惊慌,属于正常操作。 ## 如何使用 ### 若嫌弃下面的步骤过于复杂,可联系QQ:2653473896,或添加QQ群聊:778406410 ### 1. 下载项目 该项目目前仅在开源中国的Gitee上开源,仓库地址如下:https://gitee.com/luoyexiaohe/Blood-Three 建议使用pycharm运行该项目 ### 2. 安装环境 #### 2.1. 安装Python Python版本要求:3.9以上。 #### 2.2. 安装依赖 ```pip install -r requirements.txt``` ### 3. 配置项目 #### 3.1. 配置yaml文件 在项目config目录下,新建一个yaml文件,名称为自己的账号名称,例如luoyexiaohe1.yaml,账号就是luoyexiaohe1,然后打开进行配置。 以下面的代码为例, # 后的为注释说明: ``` 双线1434服: # 服务器名称 mainCity: [463, 135] # 主城坐标 soldierCities: # 兵城坐标列表 city1: [463,134] # 兵1的坐标 city2: [369, 133] # 兵2的坐标 ... # 依次编写兵城的坐标 sleepTime: 1 # 每次点击间隔时间,单位秒 ``` 复制以上代码时注意 **缩进** ### 4. 功能介绍 以下功能均需在乐都助手中打开游戏,且不能有任何窗口程序覆盖游戏助手,否则可能会点击到覆盖窗口,没有点击到游戏,导致脚本运行失败。 #### 4.1. 安抚 该功能的主要用途是在征兵后人口不足,调用各个兵城的安抚->增丁功能,从而补充人口,方便下次征兵。目前仅支持增丁和赈灾,默认为增丁功能。 入口文件为:根目录->安抚->main.py 调用方式: 1. 在pycharm中打开main.py文件 ![在pycharm中打开main.py文件](/RDImgs/安抚1.jpg) 2. 打开文件后,点击右键,找到"Run Main"选项,然后点击 ![运行](/RDImgs/安抚2.jpg) 该功能每15分钟运行一次 #### 4.2. 征兵 该功能会依次派遣热血勇士将领进入兵城担任主将,然后在城池内依次点击兵营进行兵种训练。 如果当前尚无热血勇士将领,有两种解决方案: 1. 将勇武最高的将领改名为热血勇士; 2. 一次招募一个兵城的兵,将最高勇武的将领任命为主将,并运行相关代码。则脚本仅会对当前城池进行兵种训练; 4.2.3章节将介绍如何在当前兵城进行招募 **注意:招兵前需确认资源及人口数量是足够的,并保证一定的冗余量,如果出现人口或资源的不足导致游戏弹窗,会导致脚本无法正常运行。** ##### 4.2.1. 兵营位置 脚本中对于兵营的有一个默认的位置,如下图: ![兵营位置](/RDImgs/征兵1.jpg) 其中中间的两派兵营为征兵脚本自动循环点击征兵的兵营。校场上面的兵营为辅助兵营,该兵营也可以进行招兵,但需要调用不同的方法。后面会有具体的征兵示例。 #### 4.2.2. 所有兵城进行征兵 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城坐标是否配置正确。 2. 检查以上配置并确认正确后,确认各兵城资源及人口是否充足。不充足的需要补充完整。 建议有一定的冗余量,因为12座兵营招兵需要的人口和资源还是很多的,且两者都在动态变化,避免招兵期间出现资源或人口不足出现弹窗导致脚本运行失败。 3. 在游戏中进入热血勇士所在的城池。 4. 在pycharm中打开征兵->main.py文件。 5. 在终于最下面找到main()的调用,并将前面的#去掉。如下所示: ![示例](/RDImgs/征兵2.jpg) 6. 点击右键,找到"Run main"选项,点击进行脚本运行。 7. 此时,脚本会接管鼠标键盘,请用户不要操作。 8. 脚本会将热血勇士将领进行任命无,可以进行派遣。同时,派遣的随行兵种为斥候,请用户确保城内至少有一个斥候。 该功能默认每个兵营单倍招募1000轻骑,如果需要招募其他兵种,可修改参数如下: ![示例](/RDImgs/征兵3.jpg) 以上示例为招募兵种为斥候,数量为100,关闭双倍招募即进行单倍招募。 #### 4.2.3. 单个兵城进行招兵 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城坐标是否配置正确。 2. 检查以上配置并确认正确后,确认当前兵城资源及人口是否充足。不充足的需要补充完整,并建议有一定的冗余量。 3. 将最高勇武的将领任命为武将。 4. 在pycharm中打开征兵->main.py文件。 5. 将其他代码注释,仅保留最后的三行代码。如下图所示: ![示例](/RDImgs/征兵4.jpg) #### 4.2.4. 兵城单个兵营的招兵 注意:该功能需要确认兵城是按照示例位置建造的,如 ![兵营位置](/RDImgs/征兵1.jpg) 该功能会对校场上面的兵营进行兵种招募。 开启步骤如下: 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城坐标是否配置正确。 2. 检查以上配置并确认正确后,确认当前兵城资源及人口是否充足。不充足的需要补充完整,并建议有一定的冗余量。 3. 通过乐都助手打开游戏,进入热血勇士所在的城池。 4. 在pycharm中打开征兵->main.py文件。 5. 打开solder_city_superfluous_make()方法的注释,并将其他代码进行注释,如下图所示: ![兵营位置](/RDImgs/征兵5.jpg) 6. 上图所示代码的意思为,每个兵城中的指定兵营使用双倍招募的方式招募1000辎重部队。 #### 4.2.5. 常见问题 > 1. 为什么代码一运行到招贤馆将热血勇士解除任命就报错? > > 因为当前项目是基于图片查找的功能来做的。如果运行到解除任命时就报错,是因为在任命栏中找不到热血勇士。 > 一个方面可能是当前城池中空闲的将领太多,导致热血勇士需要滚动下拉栏才能找到。 > 第二个原因可能是因为显示设备的分辨率原因导致图片找不到,可以根据征兵->imgs文件夹下的图片重新截图替换。 > > 2. 当前程序在招募兵种时会循环点击双倍造兵,需要怎么解决? > > 原因同第一个问题一样,建议将SBZB.jpg文件重新截取替换。 > 3. 如何取消双倍造兵? > > 将double参数设置为False即可。例如 > > main_city_make_soldiers(soldier_type=Config.Barrack.NFPositionNum, num=2000, double=False) > 4. 当前支持自动征兵的兵种有哪些?以及参数应该怎么填写? > > 可参考项目根目录下的Config.py文件,其中Barrack类中定义了兵种的名称和对应的参数。 > > ![兵营位置](/RDImgs/征兵6.jpg) ### 4.3. 战场 #### 4.3.1. 战场功能 该功能需要用户先派遣热血勇士将领进入战场,然后程序会接管用户的鼠标自动寻找目标进行攻击。期间如果出现兵力损失不会自动进行补充,需注意。 且路线为固定路线,会将所有的战场城池都进行攻击。后续会考虑增加快速路线功能,即根据用户设置的路线进行攻击。 #### 4.3.2. 战场功能使用 1. 确认已经派遣热血勇士进入战场且热血勇士带领的不对为被选中的部队。 2. 打开战场->main.py文件。 3. 点击右键,找到"Run main"选项,点击进行脚本运行。 4. 程序会接管用户的鼠标进行点击操作,请用户放心不要操作。 #### 4.3.3. 常见问题 > 1. 该功能是否会收到带队人数影响?毕竟队伍的人数不同,敌人的数量不同。 > 该功能不受到队伍人数的影响,程序会自动判断当前城池的敌人是否被清理干净,如果未清理干净,程序会继续进行攻击。但需要队友的配合,不要进行城池的攻击。 > 2. 城池明明还有敌人,脚本为什么不攻击? > 可能收到显示设备的分辨率影响,可联系作者进行反馈。 ### 4.4. 活动 #### 4.4.1. 活动功能 该功能会自动遍历所有兵城和主城,点开客栈查找是否存在活动将领,如果有就招募,没有就进入下一个城池进行招募,直至所有的城池都遍历完成。 招募到活动将领后,会自动打开将领界面查找活动将领进行解雇。 如果招募不到将领后,则会在一个小时候重新进行遍历招募。 #### 4.4.2. 活动功能使用 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城和主城坐标是否配置正确。 2. 打开活动->main.py文件。 3. 点击右键,找到"Run main"选项,点击进行脚本运行。 4. 程序会接管用户的鼠标进行点击操作,请用户放心不要操作。 #### 4.4.3. 活动查询 该功能是查询每周的活动,主要从四个维度来进行查询: * 活动道具的获得方式:采集还是招募。 * 是否有战场活动。 * 是否有礼金。 * 是否有孙子兵法换道具活动。 ### 4.5. 派遣 派遣功能主要用于城池较多的情况下,需要将每个城池招募的兵力派遣到主城,或是将主城的义兵派遣到各个兵城转成人口。 #### 4.5.1. 向主城派遣兵力 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城和主城坐标是否配置正确。 2. 打开派遣->main.py文件。 3. 如果是派遣兵力到主城,则运行send_soldier_to_main方法,如下图所示: ![示例](/RDImgs/派遣1.jpg) 如上图所示,表示各个兵城将向主城派遣6000个铁骑。 ### 4.6. 资源打包 该功能主要是将各个兵城的资源进行打包,方便从主城或是资源采集城中运输一定的资源到各个兵城,方便招兵。 #### 4.6.1. 资源打包使用 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城和主城坐标是否配置正确。 2. 确定当前游戏账号有足够的铜钱可用于打包。 3. 打开资源打包->main.py文件。 4. 点击右键,找到"Run main"选项,点击进行脚本运行。 ### 4.7. 运输 该功能适用于兵城较多,造兵时使用的资源比较多时,使用该脚本自动将资源运输到各个兵城。 #### 4.7.1. 运输使用 1. 检查配置文件,是否配置了当前账号的yaml文件,以及yaml文件中是否配置了当前区服,当前区服的兵城和主城坐标是否配置正确。 2. 打开游戏,通过乐都助手进入游戏的资源城。 3. 打开运输->main.py文件。 4. 点击右键,找到"Run main"选项,点击进行脚本运行。 5. 默认每次运输时,会派遣10000的辎重部队担任运输任务,可通过调整参数,使用其他兵种进行运输。代码如下所示: ![示例](/RDImgs/运输1.jpg) 上面的代码则调整为每次派遣9000的辎重部队担任运输任务。