# bestjs_gameframework **Repository Path**: lc6a/bestjs_gameframework ## Basic Information - **Project Name**: bestjs_gameframework - **Description**: bestjs游戏框架 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bestjs游戏脚本框架(基于Auto.js) ### 项目地址 * [github](https://github.com/bestjs-admin/bestjs_gameframework) * [gitee](https://gitee.com/lc6a/bestjs_gameframework) ### 常规开发游戏脚本的问题 1. 直接开发脚本对于延时时间不好把握,需要大量使用循环判断; 2. 开发时找多点颜色工作量大,相关工具少; 3. 难以应对掉线、卡顿等突发状况; 4. 各流程顺序固定,对于有开放时间限制、次数限制、时间间隔限制的任务不好处理; 5. 各流程顺序固定,场景间的跳转固定,后期不能随意更改任务顺序。 ### 框架简介 * Bestjs游戏脚本框架是一款基于Auto.js开发的脚本框架,使用javascript语言,其具有以下特点: 1. 屏蔽找图等细节、降低学习门槛; 2. 各任务完全独立,由框架自动进行任务调度、寻找路径; 3. 使用工具函数直接得到多个像素点颜色,只需要开发者选项确定坐标即可,无需使用截图工具找点,大大提高找点效率; 4. 全局错误处理、多次判断大大增加脚本的可靠性,有效应对卡顿、网络波动、掉线等状况。 **作者能力和精力有限,代码比较垃圾,不过创意还是比较好的,欢迎各位改进和扩展此框架,如果使用此框架建议附带作者信息,如果有类似的框架也可介绍给我使用** **作者qq:1952511149 q群:1136399553** ### 框架结构简介 * 框架将游戏脚本抽象为一个有向图(Graph)和一个任务(Task)列表; * 有向图(Graph)包括:节点是游戏场景(Scene)、路(Route); * 场景(Scene)包括像素组(PixelGroup)和相连的路; * 像素组(PixelGroup)简单的说就是多个像素点颜色及其相对位置等信息,用于多点找色,此数据能通过框架的工具函数输出得到,不必一个点一个点的去用相关工具找颜色; * 路(Route)包括相连的场景和跳转函数; * 任务(Task)包括入口场景(在图内)、结束场景(可以和入口场景相同,也在图内)、任务主体(函数)以及任务数据(Data)(可选); * 任务数据(Data)包含任务的挑战次数、开放时间、挑战时间间隔、优先级等信息;(还不完善) * 全局错误处理能够处理掉线等突发情况,拦截突发情况并跳转对应错误处理函数,恢复正常后继续执行刚刚的程序; * 框架包含一个任务调度模块,能够自动根据任务优先级、当前时间、路径距离综合计算任务价值并执行最合适的任务;(不一定完善) * 框架能够根据图的相关算法寻路到任务入口场景从而节省时间;(还不完善) * 框架各部分都有许多成员函数来增加开发效率,许多部分包含循环等方式确保脚本的稳定,因此执行速度不一定快,但可靠程度增加了不少。 ### 开发流程 1. 获取脚本所需的数据 1. 全局配置 1. 程序名称,用于本地存储文件名; 2. 游戏重置时间,例如凌晨3点(3\*3600\*1000); 1. 像素组数据 1. 使用开发者选项或者其他工具找坐标; 2. 调用工具函数showColors传入坐标参数得到一系列像素组数据的代码(一般建议20个像素点,一横或者一竖排列即可); 3. 将得到的像素组数据的代码放到代码里或者资源文件里; 2. 场景、路对象 1. 根据像素组数据创建脚本会经过的场景的对象; 2. 创建路对象,编写两个场景间的跳转函数; 3. 在场景对象内添加相邻路对象的引用,在路对象内添加相邻场景对象的引用,保证图的完整; 3. 任务对象 1. 创建任务对象; 2. 根据任务的特点写对应Data对象数据,放到代码里或者资源文件里(可选); 3. 编写任务处理函数; 4. 添加入口场景、出口场景的引用; 4. 错误处理对象(可选) 1. 创建错误处理对象; 2. 添加错误场景的引用; 3. 编写错误处理函数; 2. 注册各部分内容 1. 注册场景 2. 注册任务 3. 注册错误处理对象 3. 调用application.main()即可 ### QA * 开发小型脚本、单任务,不想弄那么复杂怎么办 > 不要图、场景等部分,写一个任务对象或者和常规的函数就行,执行前调用init函数即可,此时跟常规开发脚本差不多,将此框架当成第三方库使用,不过框架的查找、点击等功能可以为脚本的可靠性提供一定的帮助。 * 基于控件的脚本开发怎么办 > 可以编写控件查找的适配器,适配像素组或者场景的成员函数,然后注册基于控件的场景。 * 如何查api > 框架的代码本身有充足的中文注释,而且使用region注释,方便在vscode里面折叠代码块