FreeGame插件详情
名称:FreeGame
导入:compile("FreeGame:1.0.3")
作者:游自在
简介:图色辅助框架
<p><strong>https://www.yuque.com/youzizai/cdjl/quick<br /> 详细文档地址</strong></p> <p> </p> <h2>FreeGame-X 引入:</h2> <h2>框架功能</h2> <h3>框架配置</h3> <p>2.【可选】设置框架运行速率</p> <p>运行速率是指,找色找字等方法运行的频率</p> <p> </p> <pre> FreeGame:s(1000);</pre> <p><strong>参数 </strong><strong>[可不填]</strong><strong>:</strong></p> <p>非必填</p> <p>解释</p> <p>任意数</p> <p>该参数影响框架 “找色”“找字” 的频率 ,单位Ms</p> <p>框架默认 1000ms </p> <p>如果需要框架运行频率快一些 建议值“100”</p> <p> </p> <p> </p> <p>3.【重要】运行任务</p> <p>让框架执行一组任务</p> <pre> FreeGame:run(jobs)</pre> <p> </p> <p>参数【必填】</p> <p>案例:</p> <pre> local jobs = { Action(...):click(); --该分部请看动作部分 }; Freegame:run(jobs);</pre> <p> </p> <p> </p> <h3>屏幕特征</h3> <p> </p> <p>框架采用的为 飞天助手着色器 “多找找色 ” 自动生成的代码。</p> <pre> t ={ 主界面 = {232,30,354,67,"CDC0A9-000000","44|-7|CEC6AD-000000,40|4|CEC6AE-000000,66|-6|CDCAB7-000000"}; 主线任务 = {49,169,80,200,"C16C0B-000000","0|5|C8840D-000000,-5|5|CD8912-000000"}; 对话界面 = {1251,584,1279,622,"D2C9B4-000000","0|6|C3B597-000000,-3|15|9C5D47-000000,-5|19|903321-000000",0.7}; }</pre> <p> </p> <p> </p> <h3>动作</h3> <p>【重要】创建一个任务</p> <p>在Freegmae-X 框架中, 一个Lua table 可代表一个任务。</p> <p>例如:</p> <pre> local jobs = {};</pre> <p> </p> <p> </p> <p>【重要】创建一个动作</p> <p> 实例1:</p> <pre> Action(主界面) --创建一个动作,参数必须为一个颜色,或多个颜色值</pre> <p>实例2:</p> <p> </p> <pre> Action(主界面,主线按钮) --创建一个动作填入了两个颜色特征</pre> <p> </p> <p>参数含义:</p> <p>Action(颜色特征,颜色特征) </p> <p>创建Action时,必须传入颜色特征,<strong>当所有颜色特征满足时,才会执行action中的 动作片段 </strong></p> <p> </p> <p> </p> <h3>动作片段</h3> <p>当创建一个动作后,可以给这个动作添加动作片段,来实现对目标设备的模拟操作!</p> <p>【重要】点击</p> <p> </p> <pre> Action(...):click(...);</pre> <p> </p> <p>案例1:</p> <p>点击找到的那个位置</p> <pre> local jobs = { Action(包裹按钮):click(); --解释:当找到 包裹按钮 颜色特征后,就去点击找到的这个点。 } FreeGame:run(jobs);</pre> <p> </p> <p>案例2:</p> <p>找到特征后,点击别的位置</p> <pre> local jobs = { Action(包裹按钮):click(Point(12,13)); --解释:当找到包裹按钮后,点击 12,13 这个坐标。在框架里用Point(12,13) 来表示一个点x=12,y=13 } FreeGame:run(jobs);</pre> <p> </p> <p>案例3:</p> <p>找到特征后,点击 (找到位置) 的偏移位置</p> <pre> local jobs ={ Action(包裹按钮):click(10,-10); --解释:当找到包裹按钮后,点击找到位置坐标 x+10,y-10 的位置 }</pre> <p> </p> <p> </p> <p> </p> <p>【重要】滑动</p> <p>在找到特征后,执行一系列滑动操作</p> <p>slid(...)参数可以传入多个Point() 点,依次滑动</p> <pre> Action(...):slid(...)</pre> <p> </p> <p>实例1:</p> <p>简单的滑动</p> <pre> local jobs = { Action(活动界面,翻页特征):slid(Point(12,13),Point(40,41)); --解释:当找到活动界面和翻页特征后,从点Point(12,13) 滑动到点Point(40,41); } FreeGame:run(jobs);</pre> <p> </p> <p>实例2:</p> <p>连续滑动:</p> <p> </p> <pre> local jobs ={ Action(画图界面):slid(Point(1,1),Point(1,10),Point(10,10)) --解释:当找到画图界面后,开始从点Point(1,1) 滑动到点Point(1,10),再滑动至Point(10,10) }</pre> <p> </p> <p> </p> <p>【重要】文本输入</p> <pre> Action(...):input("...");</pre> <p>实例1</p> <p>输入普通文本</p> <p><strong>注意:输入文本前,请控制框架“点击输入框,让输入框获取焦点</strong><strong>”</strong><strong>再进行文本输入。否则可能输入无效!</strong></p> <p> </p> <pre> local jobs ={ Action(聊天输入框):click():input("你好,我是游自在,来一套课程吗?-_-"); --解释:找到聊天输入框后,点击找到的位置,让输入框获取焦点,然后输入文本“你好....”; }</pre> <p> </p> <p>实例2</p> <p>输入普通文本,但输入前先清空输入框里的内容</p> <pre> local jobs ={ Action(聊天输入框):click():input("#CLEAR#你好,我是游自在,来一套课程吗?-_-"); --解释:找到聊天输入框后,点击找到的位置,让输入框获取焦点。先清空文本框内的文本,然后输入文本“你好....”; }</pre> <p> </p> <p> </p> <p>【重要】睡眠</p> <p>Action 执行睡眠,参数为睡眠的秒数</p> <pre> Action(...):sleep(1000)</pre> <p> </p> <p>实例1</p> <p>执行两次点击之间让程序睡眠1秒</p> <p> </p> <pre> local jobs ={ Action(包裹界面):click():sleep(1000):click(Point(12,13)); --解释:当找到包裹界面就点击找到的位置,然后程序睡眠1秒,再去点击 12,13 坐标。 }</pre> <p> </p> <p> </p> <p>【拓展】执行方法</p> <p>执行一个自定义方法</p> <p> </p> <pre> Action(...):fun()</pre> <p> </p> <p>实例1</p> <p> </p> <pre> function m(action,points) --参数解释 --action:为Action对象 --points:为此Action 找到的位置 lineprint("我是一个自定义方法") end local jobs = { Action(包裹界面):fun(m) --解释:当找到包裹界面 后运行方法 m } FreeGame:run(jobs);</pre> <p> </p> <p>【重要】 设置-动作执行频率</p> <p> 设置此Action的执行间隔,执行频率</p> <pre> Action(...):click():f(...);</pre> <p> </p> <p>实例1:</p> <p>让此Action 的动作片段 每3秒执行一次</p> <p> </p> <pre> local jobs = { Action(包裹按钮):click():f(3000); } FreeGame:run(jobs);</pre> <p> </p> <p>实例2:</p> <p>让此Action 的动作片段 点击频率在一个随机范围内</p> <p> </p> <pre> local jobs ={ Action(包裹按钮):click():f(2000,10000) --解释:当找到包裹按钮后点击找到的位置, 此Action的所有动作片段频率 为2秒-10秒 之间的一个随机值 } FreeGame:run(jobs)</pre> <p>【拓展】滑动寻找特征(适用于-手游中的活动界面 寻找任务)</p> <p>寻找特征,找不到后,滑动界面(如此重复n次)找不到后退出任务</p> <p> </p> <pre> Action(...):sfind(color,pointStart,pointEnd,times,isExitonNothing)</pre> <p>参数:</p> <p>color:多点找色颜色特征,同action中参数一致</p> <p>pointStart:Point()对象 ,滑动的起始点</p> <p>pointEnd:Point()对象,滑动的结束点</p> <p>times:滑动找色的次数</p> <p>isExitonNothing:只可填两个值(找到退出,找不到退出) 或不填写。</p> <p> </p> <p>场景:</p> <p>我要在活动界面中找到 “五环任务”,但五环任务不在当前页,需要往下滑动。</p> <p> </p> <p> </p> <p>示例代码:</p> <p> </p> <pre> local jobs = { Action(t.活动界面):sfind(t.五环任务,Point(897,508),Point(909,195),3,找不到退出); --找到活动界面,就去找无环任务,当前页找不到就从坐标(897,508)滑动到(909,195)往返重复3次。 --找到就点击找到的位置,找不到就退出当前任务~ }; FreeGame:run(jobs)</pre> <p> </p> <p>【拓展】重复动作片段</p> <p>重复执行某个动作片段 一定次数</p> <p> </p> <pre> Action(...):click():fo(3);</pre> <p> </p> <p>例子:</p> <p> </p> <pre> local jobs = { Action(t.活动界面):click():fo(3):after(退出); -- 找到 活动界面 点击找到的地方 (循环执行3次),然后退出任务 }; FreeGame:run(jobs)</pre> <p> </p> <h3>流程控制</h3> <p>流程控制,可以控制任务退出,任务跳转,Action跳过</p> <p>通过流程控制,可以让多个任务切换,辅助程序流程得到控制。</p> <p>【重要】before方法</p> <p>Action 执行动作之前 运行的控制方法</p> <p> </p> <pre> Action(...):before();</pre> <p> </p> <p>实例1:</p> <p>在运行动作片段之前运行一个函数</p> <p> </p> <pre> function m(action,points) lineprint("我会在所有动作片段运行前执行") end local jobs = { Action(包裹按钮):before(m):click(); --解释:找到包裹按钮,先运行before函数 ,再执行点击找到的位置 } FreeGame:run(jobs);</pre> <p> </p> <p>实例2:</p> <p>函数的返回值作用</p> <p> </p> <pre> function m(action,points) lineprint("我会在所有动作片段运行前 执行") return false,true; --解释 return 两个布尔类型 当前效果为,不退出任务,但跳过任务片段 -- 第一个参数, 代表是否退出当前任务 true=退出 false =不退出 -- 第二个参数, 代表是否跳过所有动作片段 true=跳过 false =不退出 end local jobs = { Action(包裹按钮):before(m):click(); --解释:找到包裹按钮,先运行before函数,再执行点击找到的位置 }</pre> <p> </p> <p>实例3:</p> <p>跳过 所有动作的简单写法</p> <pre> local jobs ={ Action(包裹按钮):before(跳过):click(); --解释:找到包裹按钮,发现存在before函数,跳过点击。什么都不执行 } FreeGame:run(jobs)</pre> <p> </p> <p>实例4:</p> <p>退出 当前任务的简单写法</p> <p> </p> <pre> local jobs ={ Action(包裹按钮):before(退出):click(); --解释:找到包裹按钮,就退出当前任务,点击不会执行。 } FreeGame:run(jobs)</pre> <p> </p> <p>【重要】after方法</p> <p>after 所有动作片段运行后执行的方法</p> <p>通过after ,可以拓展 在 特定的条件下退出当前任务</p> <pre> Action(...):after(...) --after 参数 为一个 function</pre> <p> </p> <p>实例1:</p> <p>特定的条件下,执行是否退出当前任务</p> <pre> function m(action,point) lineprint("我是所有动作片段 执行后 运行的 方法") return true; --解释 如果返回true 则退出当前任务,false 或 nil 则不退出当前任务 end local jobs ={ Action(包裹按钮):click():after(m) --解释:当找到包裹按钮后,先执行点击 最后再去运行 方法 m } FreeGame:run(jobs)</pre> <p> </p> <p>实例2:</p> <p>快速编辑,执行后退出当前任务</p> <p> </p> <pre> local jobs = { Action(包裹按钮):click():after(退出); --解释:当找到包裹按钮后,点击找到的位置,然后退出当前任务 } FreeGame:run(jobs);</pre> <p> </p> <p>【重要】uncheck 方法</p> <p>当找不到颜色特征后,执行一个方法</p> <p> </p> <pre> Action(...):uncheck(...);</pre> <p> </p> <p>实例1:</p> <p>通过uncheck 控制程序是否执行</p> <pre> function m(action) lineprint("当Action特征找不到的时候,执行该方法") return true; --当返回true =任务退出 false = 任务不退出 end local jobs ={ Action(包裹按钮):click():uncheck(m); --解释:当找不到 包裹按钮特征的时候 执行 m方法 }</pre> <p> </p> <p>实例2:</p> <p>当检测不到就 退出当前任务</p> <p> </p> <pre> local jobs = { Action(包裹按钮):click():uncheck(退出) --解释:当找不到包裹按钮的时候就退出当前任务 } FreeGame:run(jobs)</pre> <p> </p> <p>【重要】except 方法</p> <p>当Action 中的特征点存在, 但另外某个特征点不存在的时候执行。</p> <p>不运行两个特征点同时存在的时候运行</p> <p> </p> <pre> Action(...):except(...);</pre> <p> </p> <p>实例1</p> <pre> local jobs ={ Action(主线任务):click():except(自动打怪); --解析:当找到主线任务,并且界面上不存在 自动打怪特征的时候,就去点击主线任务的位置 } FreeGame:run(jobs)</pre>
版本更新时间轴
2020年04月05日
更新版本:1.0.3
2020年04月05日
更新版本:1.0.2
2020年04月05日
更新版本:1.0.1
2020年04月04日
更新版本:1.0.0