基于Lua语言的触动精灵脚本开发
工具下载
连接模拟器
studio连接
首先要先下载ADB模拟器连接IDE,注意,这里一定要用官网提供的ADB,安卓开发的adb不行!!!
下载好之后,打开studio,输入Access Key按照下面步骤执行
如果出现以下这种情况重复执行上面步骤
第一步,先进入到下载的目录下执行 adb connect 127.0.0.1:7555
运行完用adb devices查看是否连接,如果出现offline要断开重连,断开语句adb disconnect 127.0.0.1:7555
第二步,执行显示nLog日志.bat,然后执行执行连接编辑器.bat(相当于执行./adb.exe forward tcp:50005 tcp:50005)
第三步,安卓端运行触动精灵
上面的这些步骤可以用下面两行代码替换,如果取色器不能截图,换一个模拟器。
常用模拟器端口号
注意:mumu模拟器默认为横屏,可以通过设置屏幕为720*1080来实现竖屏
在设备一栏中新增127.0.0.1,然后右击连接
连接成功标示
这里注意把虚拟机时间设为网络同步。
拾色器
连接好Studio后,连接拾色器,输入127.0.0.1:50005,注意这里一定要为50005!!!连接成功后窗口消失。点击抓图即可。
拾色器快捷键
常用快捷键
- `(数字1左边那个键)
取一点颜色到剪贴板,取色后直接可以粘贴,默认情况下,该操作不会有可视化表现 - 数字键(1 2 3 4 5 6 7 8 9 0)
多点取色到剪贴板,以上十个数字键分别取 10 点色,取色之后直接 Ctrl + V 即可把取好的点色粘贴到脚本中 - Shift + (1 2 3 4 5 6 7 8 9 0)
清除相应位置的点色信息(会重置剪贴板中的内容) - 方向键(↑ ↓ ← →)
移动鼠标指针定位 1 个像素 - Shift + 光标键(↑ ↓ ← →)
移动鼠标指针定位 10 个像素 - Ctrl + 光标键(↑ ↓ ← →)
移动鼠标指针定位 100 个像素 - 回车键
取色到剪贴板的第一个空白位置(如果没有空白位置则不会取色) - Ctrl + 鼠标左键-点击
与上一条 回车键 功能一样 - -
缩小视图 - =
放大视图 - R
刷新列表中的已有坐标的颜色并使用简易标签于图像上标出相应的位置 - W
把取色列表重新写入剪贴板
模拟点击事件
用取色器获取某个点的坐标,模拟点击按钮,代码如下
init() --初始化(0,0)坐标
mSleep(*) --睡眠三秒,防止坐标没初始化好
--[[模拟点击事件]]--
touchDown(,) -- 点下某个像素点
mSleep() -- 睡眠20ms
touchUp(,) -- 从像素点上抬起抬起
智能找色脚本
用到findMultiColorInRegionFuzzy方法,即区域多点找色
游戏:萌犬变变变
首先用颜色拾取器将箱子的三个点取下来(相当于识别物体),然后按住shift框选识别区域。点击生成脚本,复制最后一栏。
代码如下
init() -- 启动初始坐标
mSleep(*) -- 睡眠三秒防止没有初始化成功
while (true) do -- 无限执行
--[[刚才颜色拾取器生成的脚本,返回的是第一个值的坐标]]--
x,y = findMultiColorInRegionFuzzy( 0xbd8c5a, "-29|-47|0xbd8c5a,-51|-2|0x000000", , , , , )
if(x~= - and y~= -) -- 根据多点颜色区域模糊查色返回的结果
then
touchDown(x, y) -- 点击事件
mSleep()
touchUp(x, y)
end
end
TSLib库
这个是触动精灵自己的,用法要看官方文档
首先在最上面加载TSLib库
require("TSLib")
封装一些通用函数
-- 根据坐标点击
function click(x,y)
if(x~= - and y~= -) -- 根据多点颜色区域模糊查色返回的结果
then
touchDown(x, y) -- 点击事件
mSleep()
touchUp(x, y)
end
mSleep(*)
end
-- 打印坐标,调试用
function showClick(x,y)
dialog('返回视屏坐标x'..x..','..y)
end
multiColor
多点比色,用来判断界面
require "TSLib"--使用本函数库必须在脚本开头引用并将文件放到设备 lua 目录下
--全部坐标点和颜色一致时返回 true,== true 可省略不写
--判断是否为某个界面
if multiColor({{, , 0x9b9b9b},{,,0x9b9b9b},{,,0xff3031},{,,0xfff6f6},{,,0x9b9b9b},{,,0x9b9b9b}},,false) == true then
x,y = findMultiColorInRegionFuzzy( 0x191f25, "1|0|0x191f25,2|0|0x191f25,3|0|0x191f25", , , , , ) -- 查找指定区域内黑色的文字
--showClick(x,y); 调用封装的函数,显示坐标轴
click(x,y) --点击进入视屏
mSleep(*) --观看3分钟
click(,); --点击返回
touch():on(,):move(,):off()
mSleep(*)
end
便捷UI
信息提示脚本
信息提示脚本主要用于调试用,注意手机要开启悬浮框权限
dialog
阻塞式信息,会阻塞脚本,慎用
toast
异步信息,建议用这个,toast显示几秒,后面要用mSleep等待几秒,不然下面取色取到toast可能会出问题
逐行获取文本文件数据
逐行读取文本代码如下
for line in io.lines("main.lua") do
print(line)
end
控制台输出指定文件的数据
--获取文件路径,serPath为触动精灵所在目录
local file = userPath().."/res/密令.txt"
if file then
for line in io.lines(file) do -- 遍历文件里的内容
inputText(line) -- 输出到控制台
mSleep()
end
dialog("输入完毕", )
lua_exit() -- 退出lua程序
end
防锁屏
判断屏幕是否为锁定状态
代码如下
flag = deviceIsLock(); --如果要在设备自启动时解锁屏幕直接使用 unlockDevice 函数即可
if flag == then
dialog("未锁定",);
else
unlockDevice(); --解锁屏幕
end
主屏幕按键
pressHomeKey(); --Android 系统不需要填参数,自动点击抬起
报错友善提示
function main(...)
error("这是一个错误演示!",) -- 手动抛出一个异常
return
end neo,errmsg = pcall(main) -- 保护模式调用,第一个参数为是否返回异常,第二个参数为返回的异常信息
if neo then -- 如果不返回异常
dialog(errmsg, time)
else
--返回异常时弹出友善提示框
user_Choosen = dialogRet('很抱歉辅助出现异常,是否将错误信息写入剪切板以回报开发者!',"积极回报","残忍拒绝" ,"",)
if user_Choosen == then -- 如果点击确定
writePasteboard(errmsg) -- 复制到粘贴板
dialog('错误信息已经写入剪切板!',) -- 提示用户
end
end
调用Http发送数据
local url = string.format("http://www.***com:9002/pubApi/uLogin?uName=%s&pWord=%s", account, password) -- 生成url
local code, header, body = http.get(url, ) --发送请求,10秒超时.code、header、body不解释
if code == then -- 如果返回为200时
if body == "False" then
return false
end
return true
end
基于Lua语言的触动精灵脚本开发的更多相关文章
- 基于go语言结合微信小程序开发的微商城系统
最近在慕课网上录制了一门<Golang微信小程序微商城系统原型>,这门免费课程特别适合在校大学生或者刚毕业的大学生,go语言初学者以及想要从事微商城开发项目入门的小伙伴们来学习.在课程当中 ...
- 基于Django的独立运行python脚本开发
Django框架很方便,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path ...
- 接触手机脚本编程------基于触动精灵的lua编程
Auto.js好用多了,还不用root直接能用,我为什么学这个呢..... 最近因为学习需要开始接触一门新的脚本语言,我更深刻的发现了,语言只是一种工具,重要的是解决问题的思维,由于这次是需要我快速掌 ...
- 基于VB语言对SolidWorks参数化设计的二次开发
0 引言 随着数字信息化进程的快速推进,如今三维CAD技术在越来越多的企业当中得到运用.为了降低在设计生产中的成本,缩短设计周期,增强企业竞争力,三维参数化技术随之应声,它凭借更贴近现代概念的设计以及 ...
- 基于lua的网页脚本开发语言cgilua(转)
这里为大家介绍基于lua脚本实现的网页开发语言,cgilua 介绍 cgilua使用Lua是一个用于创建动态网页的服务器端脚本语言.纯LUA脚本和LUA页(LP)的支持,cgilua.Lua脚本是一个 ...
- ESP8266使用详解--基于Lua脚本语言
这些天,,,,今天终于看到了希望,,,天道酬勤 先说实现的功能...让ESP8266连接无线网,然后让它建立服务器,,我的客户端连接上以后,发给客户端发数据模块打印到串口,,往ESP8266串口里发数 ...
- 五,ESP8266 TCP服务器多连接(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7524326.html 一些时间去准备朋友的元器件了... 接着写,,争取今天写完所有的文章,,因为答应了朋友下周5之前要做 ...
- 八,ESP8266 文件保存数据(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7533845.html 应该是LUA介绍8266的最后一篇,,,,,,下回是直接用SDK,,然后再列个12345...... ...
- 一、ESP8266入门(基于LUA开发)
序 一入坑便停不下来... 还挺有意思的哈,233,,,, 资料杂,自己一个一个去找确实浪费了不少时间,而且大多还都是英文的,需要硬着头皮看. 这次实践入门,更是对英语的重要确信无疑.Github必须 ...
随机推荐
- memalign的作用【转】
本文转载自:https://blog.csdn.net/lvwx369/article/details/41726415 转自:http://hi.baidu.com/narshben/item/ca ...
- javascript中的高阶函数, 和 类定义Function, 和apply的使用
参考: http://www.cnblogs.com/delin/archive/2010/06/17/1759695.html js中的类, 也是用function关键字来定义的: function ...
- LuoguP5221 Product
题目地址 题目链接 题解 注,下方\((i,j)\)均指\(gcd(i,j)\),以及证明过程有一定的跳步,请确保自己会莫比乌斯反演的基本套路. 介绍本题的\(O(n)\)和\(O(n\sqrt{n} ...
- Hierarchical Question-Image Co-Attention for Visual Question Answering
Hierarchical Question-Image Co-Attention for Visual Question Answering NIPS 2016 Paper: https://arxi ...
- 第五个神奇的电梯(代码抢先看<1>)
关于一些自认为比较独特的设计思路,也不知道是好还是坏,放在这里让大家一起看一下. 关于mian函数:因为采用了注册机制所以主函数比较简单. #include "stdafx.h" ...
- Shell脚本(三)
摘自:菜鸟教程 http://www.runoob.com/linux/linux-shell-echo.html Shell命令 1. echo命令 字符串输出 echo "OK! \c& ...
- 《机器学习实战》之k-近邻算法(示例)
看了这本书的第一个算法—k-近邻算法,这个算法总体构造思想是比较简单的,在ACM当中的话就对应了kd树这种结构.首先需要给定训练集,然后给出测试数据,求出训练集中与测试数据最相近的k个数据,根据这k个 ...
- 阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- cp命令覆盖文件时不用按Y来确认的方法
我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖.文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结 ...
- MongoDB 对象操作
对象插入 >db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: 'xxx', url: ' ...