写在前面
- 本教程中的视频声音偏小,建议下载百度云资源使用 PotPlayer 观看,实测比优酷在线视频要声音大很多。
- 更多视频教程:https://www.touchsprite.com/video
- 建议学习的过程:Lua 基础 -> 零基础教程 -> 手册详解 -> 进阶教程。
- 学习脚本请务必多写多看手册,多多百度,不懂的就到交流群去问,注意科学的提问方法,清楚的表达自己的目的和需求,有报错的话请贴带行数的代码截图和报错截图。
- 学习之前和过程中遇到关于越狱和 Cydia 的问题可参考此文档:在学习脚本开发之前,首先要具备一些关于 iOS 越狱和安卓 root 的知识,以及触动精灵的常用信息,以上信息都整理并记录在文档:http://www.touchsprite.com/docs/5317
- 脚本开发取色技巧:http://www.touchsprite.com/docs/5026
- 微信公众号:丸子记事,不定期更新脚本开发教程和业内新闻,欢迎订阅~!
教程简介和下载
本教程主要包含以下内容:
- 开发必备常识
- Lua 语法基础
- 触动精灵开发工具的安装和使用
- 触动精灵常用函数
- 简单的脚本开发
- 实战开发:脚本优化和函数封装
百度云下载:http://pan.baidu.com/s/1mhAoGvmLua 语法基础
视频教程
哔哩哔哩:https://space.bilibili.com/391767488
01 - 说在前面的废话
本期主要介绍了毫无编程基础的小白学习触动精灵脚本开发的正确流程。
链接: https://pan.baidu.com/s/1dFKtgdj 密码: xmvf
02 - 注释和循环语句
本期主要讲解 Lua 基础语法中的注释和无线循环、for 循环等循环语句的用法。
链接: https://pan.baidu.com/s/1jIlCZqe 密码: iv93
03 - 运算和关键字
本期主要讲解 lua 语法基础中关于数值运算、逻辑运算、比较运算和关键字的内容。
链接: https://pan.baidu.com/s/1dEBp0n3 密码: gm33
04 - 变量类型和 require
本期主要讲解 lua 语法基础中的变量类型(数字型、文本型等)和 require 调用其他脚本文件或函数库的用法。
链接: https://pan.baidu.com/s/1nuPSsvn 密码: r92z
简单介绍
语法部分将结合代码示例来讲解,下面是代码实战部分深海水族馆的脚本源码。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
require "TSLib" gamebid = "com.idleif.abyssrium" function unlock()--防锁屏 flag = deviceIsLock() if flag ~= 0 then sysver = getOSVer() sysint = tonumber(string.sub(sysver, 1, 1)..string.sub(sysver, 2, 2))--转化为数字版本号 if sysint == 10 then pressHomeKey(0) end unlockDevice() end end |
require
很多新手经常问,我的脚本有两个文件,怎么用 1 个调用另外一个呢?就是用 require 了。
这里需要注意的是,如果你要调用的脚本名字是 abc.lua, 那么一定要记得,只写脚本名字,不要加扩展名!!!
而文件名是字符串类型(关于这个下面再讲),需要加引号,双引号单引号都可以。
另外就是 Lua 是大小写敏感的语言,如果你写 require "ABC" 是肯定会报错的。
字符串
在 Lua 里最常见到的类型,特点就是必须用引号引起来,我们可以这么理解,字符串就是一串字符,是固定不变的。
“ABC” 就是 “ABC”,永远不会变。并且字符串是不能用来做加减乘除运算的,也不能用来和数值进行比较,你可以说 2 比 1 大,但 “2只小鸡”和“1匹马”是无从比较的。
其他常用的类型还有数值,非常好理解,就是可以用来做运算的数字。
1 + 1 = 2
需要说明的是,被引号引起来的数字就是字符串了哦~
变量
顾名思义,能够变化的量。
你可以写 a = 1
a = a +1
b = a + b
a 和 b 是根据对它的赋值在变化的。
在 Lua 里,一个等号 = 就是用来赋值的,下面我们会说到两个等号,一定要区别开来。
在上面的代码里,gamebid = "com.idleif.abyssrium",gamebid 是我自定义的变量,可以随便改(只要不用到 Lua 已占用的关键字就可以),我也可以写 abc = "com.idleif.abyssrium",当然接下来用到的 gamebid 地方都要改成 abc 才行。
"com.idleif.abyssrium" 就是字符串了,是一款叫做《深海水族馆》的游戏的 Bundle ID。
变量可以赋值的类型:字符串、数值、函数等。
27 行中 flag 这个变量就被赋值了一个函数,那么这个变量就会等于函数的返回值。
而当一个函数有多个返回值时,就可以给多个变量进行赋值了。
封装函数
function abc() ... end 就是封装义了一个名为 abc 的函数,在接下来的脚本中可以任意调用这个函数所包含的代码。
定义函数的好处就是让脚本更加精简,避免撰写重复代码,使逻辑结构清晰,便于后期维护。
想象一下,如果整个脚本中多处用到点击,而点击是由按下、间隔时间、抬起,至少三行代码组成的,封装成函数之后,就变成了 1 行代码。是不是清晰多了?
这里需要注意的是,封装函数一定要记得末尾加 end,函数名可以用中文但不能重复,不能占用 Lua 本身的关键字。
注释
两条短横线就代表后面的内容不对代码产生任何影响,只是单纯的作为备注使用,一般是用来辅助记录代码用户和变更的。
一旦代码前面加了注释标记,那么这行代码就被注释掉了。
多行代码注释 --[[ 要注释掉的内容 --]],注意中括号的位置。
if 判断语句
Lua 中最最常用的逻辑就是“假如(某条件)成立那么就(执行命令)结束”,用代码表示就是
if...then...end,翻译成中文很好理解吧。
更复杂一点的就是层层嵌套判断语句,比如,根据年龄判断一个人是不是小学生,假定小学生年龄为 8 周岁到 14 周岁,用代码写是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
if 8 < 年龄<14 then 是小学生 else 不是小学生 end 注意,每一个 if 都要有一个 end 来对应表示判断结束。 在这里 else 就是不符合判断条件之外的所有情况,不再做任何判断,直接执行命令。 当然上面的语法比较简单,如果我们想判断不是小学生的人是不是中学生呢。这里就要用到 elseif 了。 ```lua if 8 <= 年龄<=14 then 是小学生 elseif 15 <= 年龄<=18 then 是中学生 else 既不是小学生也不是中学生 end |
比较运算
上面的<= 、>= 以及截图中的 ~=和== 都是比较运算,分别是小于等于、大于等于、不等于和等于。
两个数值可以互相进行大小比较,返回值是数值的函数或者变量也可以和数字进行大小比较,而变量和字符串只能有等于和不等于,字符串是不能进行大小比较的。
触动精灵常用函数
本系列视频提供了腾讯视频和爱奇艺在线资源,爱奇艺播单地址:http://www.iqiyi.com/playlist443635102.html
开发文档
触动精灵脚本开发手册是由触动精灵官方提供的函数,这些函数必须在触动精灵移动客户端内才能执行。
TSLib 函数库提供了不少实用的函数,非常适合不会自己封装函数又急需这些功能的新手开发者,在本期教程中我会讲解一些我自己经常用到的函数,这些只是函数库的一小部分,如果有需要大家可以去看。
05 - 点击、滑动、延时和坐标初始化
本期主要讲解触动精灵常用函数中的点击、滑动、延时和坐标初始化函数的常见问题和注意事项。
链接: https://pan.baidu.com/s/1i4Pu2St 密码: q5z7
06 - 如何写简单的点击脚本
本期内容教给大家如何用上一期的点击、延时、坐标初始化函数写一个简单的点击脚本。
链接: https://pan.baidu.com/s/1eSkzrKe 密码: 5kje
07 - 找色
本期主要讲解触动精灵常用函数中的找色函数,分别说明单点、多点找色,比色和区域找色的区别。
链接: https://pan.baidu.com/s/1hrLYITu 密码: gker
08 - 如何写更智能的找色点击脚本
本期主要讲解如何用前面学到的知识来编写一个更加智能的找色点击脚本。
链接: https://pan.baidu.com/s/1i5qyNrR 密码: n95p
09 - TSLib 常用函数:点击和比色
本期介绍了 TSLib 触动精灵基础函数库中的点击和多点比色的用法和注意事项。
链接: https://pan.baidu.com/s/1mi9p6So 密码: kkjn
10 - 弹窗检测和无限点击
本期用放置点击游戏《进击的哪吒》脚本讲解弹窗检测和无限点击脚本的写法,主要用到 TSLib 函数库的点击、多点比色等函数, lua 语法中的 os.time 和 break。
链接: https://pan.baidu.com/s/1skXR8TJ 密码: ypgi
11 - 如何滑动到界面底部
本期用放置点击游戏《点击英雄》脚本讲解如何实现游戏界面有目的的滑动、无限点击的同时如何进行画面检测等功能,用到了 TSLib 函数库的 moveTo 滑动函数。
链接: https://pan.baidu.com/s/1bpyI7Jx 密码: verp
12 - TSLib 常用函数:便携 UI
本期讲解了 showUI 的 6 种控件和返回值的调用,以及使用便携 UI 需要注意的问题。
链接: https://pan.baidu.com/s/1nuFIRcX 密码: ut7w
13 - 自动打开和关闭应用
本期介绍了4 种获取应用 bid 的方法,以及如何通过脚本代码实现自动打开和关闭应用,判断应用是否在前台运行。
链接: https://pan.baidu.com/s/1hsmxaOs 密码: g84e
14 - 脚本信息提示
本期介绍了两个用于脚本信息显示的函数:dialog 和 toast。
链接: https://pan.baidu.com/s/1i5qyNrB 密码: k5jk
15 - 逐行读取输入文本
本期讲解了如何使用 io.lines 函数实现对文本进行逐行读取的功能。
链接: https://pan.baidu.com/s/1qY5J71y 密码: vfyq
代码:
1 2 3 4 5 6 7 8 9 10 11 |
local file = userPath().."/res/密令.txt"--注意把文本名称改成你手机上有的文本 if file then for line in io.lines(file) do inputText(line) mSleep(2000) end dialog("密令输入完毕!脚本即将结束运行,请选择其他功能挂机!", 0) lua_exit() mSleep(0) mSleep(0) end |
16 - 防锁屏
本期讲解了如何实现脚本运行过程中防止设备锁屏的方法。
链接: https://pan.baidu.com/s/1mhI2MO4 密码: pcqm
Lua 数据类型转换:http://blog.csdn.net/mitu405687908/article/details/51137956
Lua String 库详解:http://blog.csdn.net/nmn0317/article/details/4933207
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function unlock()--防锁屏 flag = deviceIsLock() if flag ~= 0 then sysver = getOSVer() sysint = tonumber(string.sub(sysver, 1)..string.sub(sysver, 2))--转化为数字版本号 if sysint == 10 then toast("解锁!",1) pressHomeKey(0) pressHomeKey(1) mSleep(500) unlockDevice() mSleep(50) pressHomeKey(0) pressHomeKey(1) mSleep(500) else unlockDevice() end end end while true do unlock() end |
脚本实战
《深海水族馆》逐行讲解 Lua 语法基础和触动常用函数
视频源文件及脚本源码:http://pan.baidu.com/s/1c2xPFqw
《太鼓达人》自动连P - 简单的无限循环脚本
百度云链接: http://pan.baidu.com/s/1gfyq4x1 密码: fnia
为什么你的脚本那么难用之showUI不要太复杂
本视频由于优酷压缩后声音太小已删除。
百度云链接: http://pan.baidu.com/s/1qXX9K9Q 密码: tb4k