1 脚本精灵控制条

  为方便使用,脚本精灵所有的功能都集中在控制条上,控制条可任意拖动,缩小,吸附。并且不与其他应用或者游戏冲突,使用起来就像游戏自带的工具一样方便。
可随时切换脚本、测试脚本、导入脚本、播放脚本、录制脚本、截图等,不需要退出游戏。
	

1.1 改变控制条状态

  控制条分为三种状态:展开态、缩小态、吸附态。在展开的状态下,10秒后自动变为收缩态,在收缩态下移动到屏幕边缘会转变为吸附态。
	
1.1.1 展开态
       
  1. 展开态下可以使用脚本精灵的各种功能,打开脚本精灵默认为展开态。
  2. 展开态下可以使用脚本精灵的各种功能,打开脚本精灵默认为展开态。
  3. 当前状态为吸附态或者收缩态时,只需要点击第一个按钮即可展开控制条
  4. 展开态下,10秒后自动变为缩放态

1.1.2 缩放态
       
  1. 缩放态下,控制条缩小到只有一个图标大小,主要目的是不影响下面的游戏或者应用的界面
  2. 缩放态下,控制条可以任意移动,移动到屏幕边缘,控制条将成为吸附态。

1.1.3 吸附态
       
  1. 在缩放态下,将控制条拖动到屏幕边缘,控制条自动吸附在屏幕边缘上
  2. 吸附态缩小到三分之一个图标的大小,完全可以忽略它的存在。
  3. 吸附态下,点击图标即可展开控制条,使用各种功能。

1.2 脚本管理




  点击控制条的第二个按钮即可进入脚本管理面板,脚本分为二进制脚本和明文脚本,明文脚本一般为录制的脚本。二进制脚本是

经过脚本精灵开发工具加密和压缩的脚本。脚本管理提供设置当前脚本、删除脚本、导入脚本、切换脚本等功能。
	
1.2.1 二进制脚本
       
  1. 二进制脚本是使用脚本精灵开发工具编译加密压缩后的脚本
  2. 点击脚本管理面板的第二个按钮即可列出当前系统里面的所有二进制脚本
  3. 点击一个脚本可打开管理选项,可以将其设置为当前脚本或者删除该脚本

1.2.1 明文脚本
       
  1. 明文脚本是直接可以看见源代码的脚本,录制的脚本就是明文的
  2. 明文脚本保存在/sdcard/scriptelf/script下,导入脚本实际上就是复制脚本到该目录
  3. 点击脚本管理面板的第一个按钮即可列出当前系统里面的所有明文脚本
  4. 点击一个脚本可打开管理选项,可以将其设置为当前脚本或者删除该脚本

1.2.3 导入脚本
       
  1. 点击脚本管理面板的导入脚本按钮即可打开文件选择面板,你可以选择一个文件进行导入
  2. 导入时,脚本精灵自动判断是否为二进制脚本,如果是则导入二进制脚本列表,否则导入到明文脚本列表
  3. 如果有wifi,建议使用脚本精灵开发工具进行远程管理和远程导入,比较方便

1.2.3 退出脚本管理面板
  1. 点击脚本管理面板上的退出面板即可退出管理面板

1.3 播放脚本

  控制条的第三个按钮为控制脚本播放的按钮,在播放前,先要设置一个当前脚本,明文脚本和二进制脚本都可以。
点击播放后,可以选择播放一次或者循环播放。播放开始后播放按钮变为停止按钮。播放结束后,重新变为播放按钮。

	
1.3.1 开始播放
  1. 选择一个明文脚本或者二进制脚本加载为当前脚本
  2. 点击控制条的第三个按钮,根据需要选择播放一次或者循环播放,确定即可播放
  3. 目前二进制脚本需要自己在脚本内控制循环

1.3.2 播放一次
  1. 选择播放一次,脚本从头到尾执行一次,执行完后即停止播放

1.3.3 循环播放
  1. 选择循环播放,脚本从头到尾执行完后,又从头开始播放,直到用户点击停止播放按钮
  2. 这个选项主要针对录制的明文脚本
  3. 二进制脚本只能播放一次,循环播放需要自己在脚本中设置,由于二进制脚本都是自己编写,所有自己控制循环比较灵活

1.3.4 停止播放
  1. 脚本播放后,播放按钮会变为停止按钮,点击停止按钮,即可停止当前的脚本

1.4 录制脚本

  1. 脚本精灵可将用户的操作记录下来,保存为脚本文件
  2. 用户可播放此脚本,以完成动作回放
  3. 可循环播放
  4. 用于做简单的重复的动作有很好的效果
1.4.1 开始录制
  1. 点击控制条的第四个按钮即可开始录制脚本
  2. 开始录制后,将会隐藏控制条
  3. 此过程用户的动作都将会被记录下来,包括延迟操作

1.4.1 停止录制
  1. 在已经开始录制的状态下,按下音量下键即可停止录制
  2. 停止录制后,控制条将重新显示出来

1.4.1 保存脚本
  1. 停止录制后,输入脚本名称,点击保存即可将录制好的脚本保存在明文脚本列表

1.5 取素材

  1. 脚本精灵提供快捷的方式获取编写脚本需要的素材
1.5.1 全屏截图
  1. 点击控制条的第五个按钮即可进行全屏截图
  2. 截图保存在/sdcard/scriptelf/image下
  3. 截图是完整无损的按系统自己的坐标截取的

1.5.2 区域截图
  1. 先进行全屏截图
  2. 将图片传输保存到电脑,用电脑打开后,使用脚本精灵开发工具的截图功能进行截图
  3. 脚本精灵开发工工具的截图功能可以自己选择区域
  4. 强烈建议直接使用脚本精灵开发工具的远程截图功能(需要wifi)

1.5.3 取色
  1. 先进行全屏截图
  2. 将图片传输保存到电脑,用电脑打开后,使用脚本精灵开发工具的取色功能进行取色
  3. 强烈建议直接使用脚本精灵开发工具的远程取色功能(需要wifi)

1.5.3 取坐标
  1. 先进行全屏截图
  2. 用windows画板打开图片,鼠标放在图片的指定的位置上,windows画板右下角会显示该位置的坐标
  3. 强烈建议直接使用脚本精灵开发工具的远程取坐标功能(需要wifi)

1.6 退出脚本精灵

  1. 点击控制条的最后一个按钮,即可退出脚本精灵。

2 脚本精灵开发工具

  脚本精灵提供一个电脑端的开发工具,提供一个脚本编辑器,具有工程管理、关键字高亮、函数库高亮、脚本检错、编译加密脚本、
远程屏幕、远程截屏、远程取色、远程取坐标、远程导入等功能。如果有wifi支持,完全不需要用数据线。
		
	

2.1 基本介绍

2.1.1 开发工具介绍

2.1.2 各组成部分介绍

2.1.3 二进制脚本结构
  1. 二进制脚本格式是脚本精灵独有的脚本格式,只有脚本精灵能够识别
  2. 用脚本精灵开发工具编译后的脚本即为二进制脚本
  3. 二进制脚本为一个单独的文件,里面包含了脚本本身的代码、脚本所需要的图片和配置、脚本描述、脚本名称等信息
  4. 编译后的二进制脚本为加密压缩的脚本格式,无法查看和修改脚本内容和相关图片。只有拥有源代码的作者本人才能修改和重新编译脚本

2.1.3 明文格式脚本
  1. 明文脚本是文本格式的,直接用文本编辑器打开即可查看和编辑
  2. 录制的脚本为明文脚本
  3. 明文脚本可以用脚本精灵开发工具编译成二进制脚本

2.2 工程管理

2.2.3 新建工程
2.2.2 删除工程
2.2.3 脚本编辑
2.2.4 图片路径

2.3 远程设备管理

2.3.1 远程导入脚本

2.3.2 远程屏幕

2.3.3 远程截图

2.3.4 远程取色

2.3.5 远程取坐标

2.4 脚本编辑器

2.4.1 关键字高亮

2.4.2 脚本检错

2.4.3 编译脚本

3 脚本语言

脚本精灵的的脚本引擎基于Lua 5.2.2,并对其进行了一些修改,将编译器也集成在一起,并支持中文函数名、中文变量名。 保留了Lua 5.2.2所有的语法规范和内置库函数。


3.1 Lua中文教程


3.2 Lua在线解释器


3.3 Lua中文教程中的例子运行

3.4 Lua简明教程


4 脚本精灵库函数

4.1 基本函数

4.1.1 触摸点击

模拟点击屏幕


4.1.2 触摸按下

模拟按下手指


4.1.3 触摸弹起

模拟弹起手指


4.1.4 触摸滑动

模拟手指在屏幕上滑动,滑动前需要先调用触摸按下函数


4.1.5 输入文本

在当前屏幕上获得焦点的文本框中输入一个文本字符串,目前只支持字母、数字和空格


4.1.6 模拟按键

模拟点击设备上的按键,如0-9的数字,a-z的字母,返回键,确认键、HOME键等


4.1.7 获取颜色

获取屏幕上指定坐标的颜色值


4.1.8 普通寻色

在一个范围内寻找指定颜色,如果没有填写范围参数,则全屏找色


4.1.9 模糊寻色

在一个范围内寻找指定颜色,如果没有填写范围参数,则全屏找色,另外加一个相似值,表示相近的颜色也匹配,建议使用80


4.1.10 RGB颜色合成

使用指定的红绿蓝三种颜色合成一个颜色值


4.1.11 获取颜色RGB

获取屏幕上指定坐标的颜色的RGB值


4.1.12 判断颜色

判断指定坐标的颜色。PS:使用该函数(多点确定一个图或多个图)代替寻图函数可以大大的提高脚本的执行速度和性能。


4.1.13 精确寻图

在屏幕中寻找指定的图片,精确度为100%,即不能有一个字节的不匹配才算找到图片。 图片路径必须是相对脚本工程的路径,图片路径参考图片路径


4.1.14 点击图片

在屏幕中用精确寻图的方式寻找指定的图片,如果找到则自动计算该图片的中心坐标并点击


4.1.15 范围寻图

在屏幕中指定矩形范围内精确寻图,其他信息参见精确寻图


4.1.16 模糊寻图

在屏幕中模糊寻找指定图片,允许一定程度的不匹配


4.1.17 范围模糊寻图

在屏幕中指定矩形范围内模糊寻图,更多信息请参见模糊寻图


4.1.18 不规则寻图

在屏幕中寻找指定图片,可以忽略一个颜色值。也称为透明寻图、背景寻图。


4.1.19 范围不规则寻图

在屏幕中指定范围内不规则寻图。更多信息请参见不规则寻图。


4.1.20 模糊不规则寻图

在屏幕中指定范围内不规则寻图。更多信息请参见 模糊寻图 和 不规则寻图。


4.1.21 范围模糊不规则寻图

在屏幕中指定范围内模糊不规则寻图。更多信息请参见 模糊不规则寻图。


4.1.22 休眠

脚本休眠指定毫秒数。


4.1.23 获取屏幕分辨率

获取屏幕分辨率。


4.1.24 获取屏幕色位

获取屏幕色位,即获取当前屏幕设备一个颜色值占多少位。16/24/32


4.1.25 弹出文本提示

在屏幕中弹出文本提示,2.5秒后消失


4.1.26 震动

设备震动提示,只对支持震动的设备有效,一般对手机都有效,对平板无效。


4.1.27 记录日志

记录脚本中自定义的日志,日志自动保存在[/SD卡/ScriptElf/logs/[当天日期].log]下。日志会自动加上输出时间。该函数可支持开发平台的远程调试,在远程调试窗口中显示的文字为绿色。


4.1.28 记录错误日志

log()函数类似,区别是loge()函数在日志记录时间后面会加上“错误”两个字,在开发平台远程调试窗口中显示的文字为红色


4.1.29 查找某应用是否安装

查找一个应用是否已经在手机中安装


4.1.30 判断某应用是否正在运行

判断某应用是否正在运行


4.1.31 启动指定应用

启动指定应用


4.1.32 结束一个应用

结束一个正在运行的应用


4.1.33 退出当前脚本

停止当前脚本的运行


4.2.34 获取SD卡路径

获取设备上SD卡的绝对路径。


4.2.35 截图到文件

截取屏幕内容到图片文件,可指定范围截图。不指定范围则表示全屏截图。


4.1.36 拷贝文本到剪切板

拷贝文本到剪切板,可以配合输入法粘贴出来,支持中文。


4.1.37 暂停指定应用

暂停指定应用的运行,执行后,应用将处于暂停状态,适合用在一些屏幕变化比较快的应用上。暂停时间不宜太长,使用resumeApp()函数可以恢复应用。


4.1.38 恢复指定应用的运行

恢复指定应用的运行,一般用在被pauseApp()函数暂停的应用。


4.2 高级函数

4.2.1 获取设备UDID唯一串

获取设备综合唯一串,该串由脚本精灵根据当前设备硬件信息、操作系统信息、品牌数据综合计算而来,不同的两台设备得到的值必然不同


4.2.2 获取网卡MAC

获取设备网卡物理地址(MAC)


4.2.3 获取蓝牙设备MAC

获取蓝牙设备物理地址(MAC)


4.2.4 获取IMEI

获取设备IMEI串


4.2.5 获取设备信息串

获取脚本精灵根据设备信息计算而来的串


4.2.6 获取AndroidID

获取当前设备的AndroidID


4.2.7 启动线程

启动一个线程,相当于同时运行多个脚本


4.2.7 随机触摸点击

触摸点击的扩展函数,点击的坐标在一个范围内随机,可以防止某些游戏对重复有规律的动作检测


4.2.8 随机触摸按下

触摸按下的扩展函数,按下的坐标在一个范围内随机,可以防止某些游戏对重复有规律的动作检测


4.2.9 随机触摸滑动

触摸滑动的扩展函数,滑动的坐标在一个范围内随机,可以防止某些游戏对重复有规律的动作检测


4.2.10 http访问

可以访问一个网址,抓取网页内容,获取远程服务器数据,提交本地数据等。可用于服务器验证,用户授权,远程代码等。


4.3 兼容模式相关函数

4.3.1 强制设置兼容模式

强制将当前脚本指定为兼容模式,只对当前脚本有效。


4.3.2 判断当前模式

判断当前是否为兼容模式。(包括用户设置的或者脚本通过setCompatMode()函数强制设置的)


4.3.3 设置自定义截屏

即设置是否自动获取屏幕比对数据,值在兼容模式下有效。在兼容模式下,寻图找色时需要大量拷贝内存,这样速度会很慢。实际情况下,比对图片或者找色不需要每次都重新截取屏幕数据,该函数设置为false后,所有的寻图找色函数都不再自动截屏,需要更新屏幕比对数据,调用screencap()函数即可


4.3.4 截取屏幕

截取当前屏幕更新到比对缓冲区。该函数只有在兼容模式下,setAutoScreencap(false)时才有效。


5 使用技巧

5.1 如何模拟触摸操作


5.2 如何寻图


5.3 如何找色


5.4 如何记录日志

使用log()函数可以记录脚本普通日志。使用loge()函数可以记录脚本错误日志。


5.5 开发平台如何与手机建立连接


5.6 如何进行远程调试


5.7 如何输入中文文本


5.8 脚本优化原则


5.9 处理意外逻辑

意外逻辑是指在脚本正常流程之外的不一定经常发生但是必须处理的的逻辑,比如网络掉线、不定时弹窗、游戏进程意外结束等。对于这种情况很多人想到多线程。实际上多线程是很好的解决方法,但是在android平台下,脚本多线程会带来很多更麻烦的问题。目前脚本精灵暂不提供多线程,以后会陆续以更好的方式提供更简单易用的多线程。使用lua的协程,可以解决该问题,但没相应基础概念的人难学懂,代码也相对复杂。这里介绍一个比较简单的可以解决意外逻辑的方案,实际效果跟lua的协程一样。

示例

--该函数专门处理意外情况。
function fortuitousHandler()
  if [网络掉线] then
    ...
  elseif [游戏没有运行] then
    ...
  elseif [有人找你PK] then
    ...
  elseif [临时弹窗] then
    ...
  elseif [死亡] then
    ...
  end
end

--假设这里是循环战斗。
while true do
  fortuitousHandler();
  [找怪]
  [选怪]
  [接任务]
  [交任务]
end

--如果有操作是操作没完毕就不返回的死循环,因为出现意外情况可能导致该操作不返回,所以在这样的死循环里面也调用一下fortuitousHandler()来处理意外情况



6 附录

6.1 虚拟键对照表

虚拟码常量说明
0VK_UNKNOWN
1VK_MENU菜单键
2VK_SOFT_RIGHT
3VK_HOMEHOME键
4VK_BACK返回键
5VK_ENDCALL挂电话键
6VK_0数字0
7-16VK_0 - VK_9数字0-9
17VK_STAR
18VK_POUND
19VK_DPAD_UP
20VK_DPAD_DOWN
21VK_DPAD_LEFT
22VK_DPAD_RIGHT
23VK_DPAD_CENTER
24VK_VOLUME_UP音量+
25VK_VOLUME_DOWN音量-
26VK_POWER电源键
27VK_CAMERA照相键
28VK_CLEAR清除键
29-54VK_A - VK_Z字母A-Z
66VK_ENTER确认键
84VK_SEARCH搜索键