[关闭]
@lisaisacat 2019-05-29T10:25:03.000000Z 字数 9260 阅读 65074

触动精灵脚本开发百科

脚本开发


目录

如何入门

经常看到有人在群里感慨说想学脚本开发却不知道如何下手,虽然很多人都强调要先学 Lua 基础,但是仍然有很多人相信直接看别人的源码更高效。
然而当你连字母都不会的时候,再好看的英文小说也是看不懂的吧?
写脚本就像写作文,必要的基础还是要学的,下面是根据我自己的体会和观察写的学习脚本的流程,给大家参考。

image_1aoq90mp61qjfqqk17851stcbc89.png-37.7kB

新手学习指南

触动精灵脚本开发指南https://www.zybuluo.com/miniknife/note/509515

该文档提供了学习脚本编写的 “正确” 流程和相关文档,遇到问题多看文档,自己搜索寻找答案,所有人都是这么熬过来的,不要抱怨问问题别人不回答或者只给只言片语,别人拿着英语课本来问你 A 怎么写你也不会有耐心一遍一遍的回答的。
尤其是当别人给了提示之后,不懂请谦虚的询问而不是嫌弃人家没丢给你源码,大家都是社会人,伸手党在编程领域是会被鄙视的。
微信公众号:脚本开发小百科,不定期更新越狱和脚本相关知识,欢迎订阅
qrcode_for_gh_8b2999aba8cd_258.jpg-26.9kB

越狱知识大全

丸子 iOS 越狱知识大全:https://www.zybuluo.com/lisaisacat/note/867274

该文档记录了丸子两年半以来遇到过的越狱相关问题,从完全不知道越狱是啥到可以解决各种 Cydia 问题所需要掌握的越狱知识。

安卓篇

安卓手机要想做脚本开发,必须要 root,跟苹果系统需要越狱一样,首先要确保触动精灵能获取到最高系统权限,才能去模拟点击。
当然因为安卓模拟器本身自带 root 权限,即使没有安卓手机,也一样可以开发脚本。
当然编辑器和抓色器连接模拟器会比较麻烦,接下来会做介绍。

安卓手机

如何 root

因为国产手机的安卓系统大多是定制或者修改过而不是原生系统,也就造成获取 root 权限的方法并不统一。比如小米手机需要刷开发版系统,华为需要到官网去获取权限,而有的手机呢,也许就没法成功 root。
所以只能多多尝试了,实在不行还是乖乖用模拟器吧。
常用的 root 工具有 Kingroot、奇兔、360等,总的来说,root 还是比越狱要简单很多的,基本都是一键 root。

开启悬浮窗权限

不管是触动的悬浮窗还是脚本里的 showUI,都需要手机给触动精灵悬浮窗权限才能够显示。
当你写了一个有 showUI 的脚本,一运行发现脚本配置界面并没有弹出,就要看看是不是手机没给触动精灵悬浮窗权限了。
和 root 一样,不同的安卓手机开启悬浮窗权限的方法都不一样,有的手机不需要给权限也一样可以显示。
一般悬浮窗设置都在系统设置 - 应用中,如果找不到可以在其他地方翻一翻或者百度。
下面给出两个手机的教程供参考。

【图文教程】小米4如何获取触动精灵悬浮窗权限
【图文教程】华为荣耀6P 如何获取触动精灵悬浮窗权限

安卓模拟器

导入脚本的方法大同小异,都是通过模拟器的共享文件夹导入文件,然后用文件管理器选中文件,找到触动安卓的脚本路径 /sdcard/TouchSprite/lua,打开菜单栏,选择复制选择项。
海马玩、猩猩、夜神、逍遥模拟器导入和使用脚本教程

作为脚本开发者,频繁的修改调试的话,使用手动导入脚本的方法还是很麻烦的,这个时候就需要把一种能够将抓色器和编辑器连接模拟器调试脚本的方法了。
编辑器、抓色器连接模拟器教程

脚本开发软件

编辑器

下载链接见 http://www.touchsprite.com/tools
使用手册:https://www.zybuluo.com/miniknife/note/123055
常用功能:创建工程、脚本打包、连接设备、发送脚本到设备并运行、暂停运行、停止运行、查看脚本调试日志 nLog。

创建工程

会在工程目录创建一个工程文件夹,里面包含脚本主文件main.lua、音频图片资源、其他工程文件等。

QQ截图20160525120015.png-26.3kB

脚本调试

  1. 在设备面板中右键,搜索设备或使用IP添加设备(设备和电脑需要在同一个WiFi下)
    QQ截图20160310152926.png-7.7kB
  2. 连接到设备,查看输出面板中是否提示设备连接成功
  3. 在工程面板中右键发送工程到设备或者打开脚本文件,点击菜单栏中的 开始/继续远程运行该文件(Alt + R)
    QQ截图20160310153239.png-8.8kB
  4. 脚本中的nLog 左下方日志输出面板中
    QQ截图20160525121419.png-8.5kB

注意事项

  1. 很多人使用绿色三角按钮的调试功能会提示需要触动精灵授权,在此提示,不建议大家使用这个功能,请使用后面带电脑标志的调试(需要先连接设备)。
  2. 如果设备和编辑器连接不成功,请尝试切换触动精灵服务开关状态、重启编辑器、重启路由,但是最重要的是,确保你的手机和电脑在同一个无线网下。
  3. 如果本地打开了VPN或其他代理工具,请关闭后再使用编辑器的脚本调试功能。
  4. 触动精灵iOS脚本路径为/var/mobile/Media/TouchSprite/lua
  5. 安卓脚本路径为/sdcard/TouchSprite/lua

脚本打包

上传到开发者平台(脚本分发、触动小精灵、企业版)的文件格式必须是zip,并且包含一个main.lua 文件。
脚本要用到的图片、音频、文本等文件和main.lua 一起打包即可,在运行时会自动释放到文件目录的res 文件夹下。

由于工程文件夹中包含一个TSProject.lua 文件,在使用压缩工具打包时注意不要将此文件打包进去。

QQ截图20160525120344.png-19.6kB

脚本加密和分发

  • 目前最安全的方式就是上传到触动精灵开发者平台,自动生成 tsp 格式的脚本文件。
  • 触动开发者平台分为 3 个子平台,分别是:触动脚本分发、小精灵和企业版。
  • 脚本分发平台提供了脚本在线加密、二维码分发、授权码生成等功能,目前完全免费。
  • 营销类脚本可以上传到小精灵平台,生成自己的软件安装包进行分发。小精灵可以自定义图标、启动图,相当于定制版触动,无需用户再安装触动精灵就可以独立运行。

相关文档

开发者实名认证

要想把脚本上传到开发者平台,首先需要申请一个实名认证的开发者账号。
1. 访问https://www.touchsprite.net,注册一个账号
2. 提供真实姓名、身份证号和支付宝账号申请实名认证,等待审核通过(大约需要1~2个工作日)

上传脚本

  • 将脚本文件压缩成zip 格式
  • 登录开发者平台,新建脚本,填写脚本名称和其他信息
  • 上传脚本zip 文件

注意事项

  • 脚本压缩包内的脚本主文件必须命名为 main.lua
  • 脚本分发平台的脚本一旦创建成功不可更改脚本名称
  • 脚本分发平台上传的脚本可以编译但不能进行本地加密
  • 为了方便用户反馈问题或联系开发者进行购买,请填写真实有效的联系方式
  • 触动开发者平台支持远程调用,开发者可以将部分代码加入远程调用,不更新版本也能随时更新脚本

下载安装脚本

在脚本列表点击生成二维码并使用触动精灵客户端扫描二维码下载,或者直接在网页上下载tsp 格式文件

image_1amarub3d7dlunl8f01s0j1af99.png-75.1kB

image_1amarvkj1ov6cjl1hu11rps1c99m.png-55.5kB

注意事项

  • 触动精灵iOS脚本路径为/var/mobile/Media/TouchSprite/lua
  • 安卓脚本路径为/sdcard/TouchSprite/lua
    image_1astjsov67hm1rl11nfa1nkv19ed9.png-18kB

脚本授权码

在授权管理页面生成脚本授权码,将授权码二维码发给用户,使用客户端扫描即可。

image_1amas8ip47st1anci4712bmq5813.png-50.1kB

生成授权码

image_1amasabe0180p9tnhle1vdgurv1g.png-62.7kB

抓色器

下载链接见开发者平台 https://www.touchsprite.net
使用手册:https://www.zybuluo.com/miniknife/note/629913
主要功能:远程连接设备并截图、抓取坐标和颜色值、生成常用找色代码

QQ截图20160525122840.png-25.8kB

连接设备

  • 点击菜单栏中的截图及联机设置
    QQ截图20160525123016.png-12.4kB
  • 在下拉菜单中选择设备,或输入手机IP地址
    QQ截图20160525123044.png-12.1kB
  • 选择截图默认旋转方向,是否保存截图到本地,点击确定
  • 如果没有弹出报错窗口,那么就是连接成功了,如果弹出下面的报错窗口,请点击确定多试几遍
    QQ截图20160525123255.png-16.5kB

从设备截图

点击菜单栏中的最后一个按钮:于设备截图。

QQ截图20160525123427.png-26.2kB

注意事项

  • 不要在脚本运行时截图,否则截图中会出现不规则黑色线条
  • 大分辨率设备截图传输的时间稍长,请耐心等待

抓点取色

QQ截图20160525123445.png-83.1kB

  • 打开取色面板
  • 在取色面板中查看当前取色位置的坐标和颜色值
  • 将鼠标移动到要取色的位置,只单击鼠标左键,再使用方向键可以对取色位置进行微调
  • 按下CTRL键的同时单击鼠标左键进行取色
  • 在英文输入状态下敲R键可以看到取色位置标记
  • 在取色面板最上方可以设置生成代码的格式
  • 点击生成脚本,可以生成包含取色信息的代码

学习资源

触动精灵函数扩展库

为了进一步降低脚本开发者门槛,触动精灵提供了丰富的扩展库,包含一系列实用函数和实例代码供开发者使用。
函数库下载地址及使用说明:https://www.zybuluo.com/miniknife/note/293935
对于小白来说,自己封装点击、找色函数不太现实,尤其是滑动,很多人都搞不明白,不如直接用封装好的函数更有效率。

教学视频

本教程适合入门新手学习,所有视频教学课程由 五毛君和 菲佣编写及制作,在此感谢 五毛君和 菲佣 为触动精灵及广大开发者做出的贡献。
建议大家先学习Lua语言基础教程,再配合手册详解视频学习开发手册,否则在看手册的时候会有很多不能理解的地方哦~
在能够写出简单的脚本后,再学习菲佣的脚本进阶教程。
教程地址:https://www.zybuluo.com/miniknife/note/307651

实用技巧

新手在学习使用触动精灵开发脚本的时候,总会进入一些误区,或者会有一些迷惑的点,觉得无从下手,本人总结了一些自己在学习过程中遇到的问题和经验技巧,欢迎大家一起交流分享。
文档地址:https://www.zybuluo.com/lisaisacat/note/508345

常见问题

在脚本开发过程中,会遇到很多杂七杂八奇奇怪怪的问题,尤其是写了好长的代码,自己觉得万无一失,一运行也不报错,但是就是没有预想中的效果时。
然而这种问题,最后都会发现是不够严谨的敲代码习惯或者一时粗心犯的超低级错误。
每当这个时候,不管是硬着头皮看代码还是立马跑到开发群教学群问别人都不是明智的选择。
头已经大了,再看也看不出花来;自己都描述不清楚的问题,别人更不明白了,即使贴出代码,相信大家也都体会过看别人的代码是多么痛苦的一件事,尤其是这个代码写的还不够“标准”。
那该怎么办呢?
除了积累经验尽量避免错误,似乎也没有什么好的办法了。
脚本效果不理想时,不妨做一点自己喜欢的事情放松下心情,听听音乐喝杯茶,或者去厨房转一圈给自己做一顿饭呢~
等心情愉悦了再来看,低级错误还是低级错误,但是会更容易被揪出来吧~
下面列举了一些我学写代码过程中遇到的问题,仅供大家参考。

学习脚本的正确方法

相信很多新人都会有这个疑问,虽然我自己也还是个渣渣,但是在群里观察了一年大概总结了点心得。
有的人先去研究别人的源码,有的人先去买了本Lua 基础,有的人在认真看五毛或者菲佣的视频,有的人呢,写几行代码就跑来群里问。
俗话说,条条大路通罗马,其实没有什么正确的方法,适合自己的才是最好的。
如果你有编程基础,先看一下Lua 基本概念,再把开发手册看一下,当然那么多字很少有人会从头看到尾,于是就经常出现明明手册里写的清清楚楚的内容还是有人一遍一遍的去群里问。
问得多了也就没人愿意回答了,其实看手册有个技巧,你可以只看目录,大概知道有什么函数都是什么作用,等你需要的时候再去看具体用法尤其是注意事项。
触动精灵的开发手册分为iOS安卓,绝大部分函数都是通用的,但是有些函数的细微差别如果写错了也是不行的,比如init 函数,在安卓上只需要填写一个参数即可。
作为一个新人,参考别人的源码,有利有弊。
如果你有幸看到大神写的源码,结构清晰,便于维护,有些思路确实很有启发。
但是初期不要过分纠结于写法,只要学会思路和使用方法即可。
随时总结调整,形成适用于自己的风格才是最终目的。
触动精灵提供了函数库和UI库,对于不会自己封装高效函数的新手来说,能极大的提高学习进度和写脚本的效率。

运行脚本无反应

首先,需要确认脚本代码没有问题,经常发生的超低级错误就是

  1. 写了按下 touchDown 没有写对应的抬起 touchUp
  2. 按下 touchDown 和抬起 TouchUp 之间没有写延迟 mSleep
  3. 在执行点击动作前没有加 mSleep
  4. 滑动 touchMove 之间的坐标离得太远,不能实现连续滑动
    如果你的错误是上面的一条或多条,没别的了,继续看Lua 手册和开发手册吧~

代码没有问题还是不能实现点击和滑动的话,需要检查是否有下面的问题

  • 设备上装了和触动精灵冲突的插件导致服务无法启动或者点击失效了
  • 安装了触动精灵之后没有重启设备
  • 安装触动精灵的正式版和测试版之前没有彻底卸载已安装版本或卸载后没有重启设备
  • Cydia 里有一些依赖插件需要更新了
  • Cydia Substrate 插件需要卸载重新安装

适配不同手机分辨率> 虽然有缩放函数,但实际效果并不理想,最实际的适配方案就是将不同分辨率分别截图取色替换坐标。

关于这点在视频教程那篇文档中有一些介绍可以看看,点击查看
先适配好一个主流分辨率,比如 iPhone 5 或者 6,再将主要逻辑复制粘贴几份分别用其他分辨率的取色坐标代替即可。

不同系统版本之间的差异

其实要不要考虑适配完全看游戏,有的游戏就是不同系统版本的字体不一样你不适配也不行。尤其是 iOS 9,系统字体的变化导致很多游戏脚本都不通用了。
首先在脚本开发过程中尽量不要在字上取色,如果实在没办法,当遇到同样的分辨率结果脚本在部分设备上运行正常部分设备不行的问题的时候,就要考虑下是不是系统版本的影响了。

判断卡屏

在一个画面上取10个点的颜色值。
间隔检查,颜色是否和之前取的值一样,如果颜色一直没变,超过多久时间即判断为脚本卡住了。

showUI 返回值调用

相信很多新手都和我一样,在刚开始接触showUI 的时候会被抽象的返回值弄的焦头烂额,好不容易弄明白什么是返回值,又发现没法和自己写的脚本连接起来。
要怎么做到选择了一个选项就执行某一段代码呢?
下面丸子就来说一说我当初是怎么理解才学会简单的使用showUI 返回值的。
其实showUI 的返回值和你在脚本其他地方的找色、赋值原理是一样的,只不过抽象了点儿容易把人绕进去。

下面是我写的一段简单的代码:

  1. local sz = require("sz")
  2. local json = sz.json
  3. init(0)
  4. w,h = getScreenSize();
  5. MyTable = {
  6. ["style"] = "default",
  7. ["width"] = w*0.9,
  8. ["height"] = h*0.9,
  9. ["config"] = "wanzi.dat",
  10. ["timer"] = 15,
  11. views = {
  12. {
  13. ["type"] = "Label",
  14. ["text"] = "触动小精灵脚本演示",
  15. ["size"] = 25,
  16. ["align"] = "center",
  17. ["color"] = "118,198,38",
  18. },
  19. {
  20. ["type"] = "Label",
  21. ["text"] = "触动小精灵目前仅支持iOS平台,使用过程中有任何问题请加群:298722759",
  22. ["size"] = 18,
  23. ["align"] = "center",
  24. ["color"] = "255,36,101",
  25. },
  26. {
  27. ["type"] = "Label",
  28. ["text"] = "小精灵平台",
  29. ["size"] = 20,
  30. ["align"] = "center",
  31. ["color"] = "74,169,170",
  32. },
  33. {
  34. ["type"] = "RadioGroup",
  35. ["list"] = "iOS,安卓,WP",--单选,input1,第一个选项iOS编号为0,安卓编号为1,依此类推
  36. ["select"] = "0",--默认选项为编号0iOS
  37. },
  38. {
  39. ["type"] = "Label",
  40. ["text"] = "小精灵类型",
  41. ["size"] = 20,
  42. ["align"] = "center",
  43. ["color"] = "74,169,170",
  44. },
  45. {
  46. ["type"] = "CheckBoxGroup",--多选,input2
  47. ["list"] = "基础版(无网络模块无打码),云打码,网络插件,自定义插件",
  48. ["select"] = "0",--默认选项为编号0:基础版
  49. },
  50. {
  51. ["type"] = "Label",
  52. ["text"] = "友情提示:不同类型的小精灵生成授权码的价格不同,勾选类型越多价格越高,基础版月卡为11元,永久卡99元",
  53. ["size"] = 20,
  54. ["align"] = "center",
  55. ["color"] = "74,169,170",
  56. }
  57. }
  58. }
  59. local MyJsonString = json.encode(MyTable);
  60. ret, input1, input2 = showUI(MyJsonString);
  61. if ret == 0 then--如果选择【取消】,脚本退出
  62. lua_exit()
  63. mSleep(0)
  64. mSleep(0)
  65. end
  66. if input1 == "0" then--小精灵支持平台
  67. toast("你选择了iOS哟")
  68. mSleep(3000)
  69. elseif input1 == "1" then
  70. toast("你选择了安卓哟")
  71. mSleep(3000)
  72. elseif input1 == "2" then
  73. toast("触动小精灵不支持WP系统哟")
  74. mSleep(3000)
  75. end
  76. str = input2
  77. if string.find(str, "0") then--小精灵类型选了基础版
  78. jcb = 11
  79. else
  80. jcb = 0
  81. end
  82. if string.find(str, "1") then--小精灵类型选了云打码
  83. ydm = 1
  84. else
  85. ydm = 0
  86. end
  87. if string.find(str, "2") then--小精灵类型选了网络查件
  88. wlcj = 3
  89. else
  90. wlcj = 0
  91. end
  92. if string.find(str, "3") then--小精灵类型选了自定义插件
  93. zdycj = 10
  94. else
  95. zdycj = 0
  96. end
  97. dialog("您生成小精灵月卡的价格为:"..jcb.."+"..ydm.."+"..wlcj.."+"..zdycj.."=?软妹币")

友情提示:

本实例代码为完整的可执行代码,适合新手理解返回值之用。在实际使用中,还是建议使用官方提供的UI库,更加简洁和高效。

丸子笔记:

  1. 单选的返回值比较容易理解,当input1 == "0" 即小精灵平台选择了默认项iOS时,就弹出提示,当然这个地方也可以执行某一段代码或者对某个变量进行赋值。
  2. 多选的返回值稍微复杂一点,因为当你提供的选项较多时,排列组合下来会有很多种结果。
    比如选择了基础版的同时选了自定义插件,也有可能选了基础版的同时选了云打码和网络插件,或者单单只选择基础版,这个逻辑要是还按照单选的情况来写就太复杂了。
    所以这个地方我们要用到 lua 中的一个函数 string.find,顾名思义,string 字符串,find 寻找。
    格式为 string.find(字符串变量,“字符串”),即当这个字符串变量的返回值中包含某个字符串时,就执行某一段代码或者对某个变量进行赋值。
  3. 需要注意的是,showUI 的单选和多选的返回值都是字符串,阿拉伯数字0/1/2/3/4 只是编号而已,实际还是字符串,所以最后面那一行代码用两个句点来连接字符串而不能直接把它们相加。
  4. 最上面的苏泽库调用 require 不可省略或删除,苏泽库已集成进触动精灵,无需下载文件。

安卓手机使用触动输入法,不显示键盘,解锁屏幕无法输入密码,怎么办?

  1. 将您的手机连接电脑 下载 adb 工具
  2. 执行命令 ime list -s 列出设备上的输入法(如下图中的画红线部分是两种输入法)
  3. 执行命令 ime set com.android.inputmethod.latin/.LatinIME 切换设备的输入法为列表中带有 android 关键字的默认输入法(建议使用复制粘贴功能)

image.png-156.3kB

附录

触动精灵Lua脚本开发常用英文词汇大全

触动精灵开发手册单词
showUI 单词
触动精灵客户端报错单词
https://www.zybuluo.com/lisaisacat/note/277023

SSH 设备管理工具 Putty

百度云下载: http://pan.baidu.com/s/1mgslwX6

Cydia deb 安装包列表

链接:http://apt.saurik.com/cydia/debs/

触动精灵脚本编辑器

远程调试、运行脚本
下载地址:https://www.touchsprite.net

抓色器

远程截图、取色、生成代码
下载地址:https://www.touchsprite.net

触动精灵 iOS 脚本开发手册

https://www.zybuluo.com/miniknife/note/212706

触动精灵安卓 Android 脚本开发手册

https://www.zybuluo.com/miniknife/note/148136

触动精灵脚本开发函数扩展库

https://www.zybuluo.com/miniknife/note/293935

触动精灵脚本开发视频教程

https://www.zybuluo.com/miniknife/note/307651

已知与触动精灵冲突的插件列表

showUI 不能弹出、点击没反应、滑动失效等问题有可能是由于安装了冲突插件引起的
https://www.zybuluo.com/miniknife/note/307651#已知与触动精灵冲突的插件列表

触动精灵脚本开发实例代码

https://www.zybuluo.com/miniknife/note/323513

触动精灵官方源

下载、安装触动精灵iOS,欢迎添加官方推荐软件源
触动精灵官方源:http://apt.touchsprite.com
触动精灵测试源:http://apt-test.touchsprite.com

触动精灵 iOS 使用教程

https://www.zybuluo.com/miniknife/note/307627

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注