1. 字符串

上一节我们讲了数据类型,知道了比较大小时将字符串转换成整数比较适合,但是也有一些不需要转换反而更好的情况,例如时间字符串的比较,我们先来获取一下网络时间:

  1. Dim 网络时间
  2. 网络时间=GetNetworkTime()
  3. Traceprint 网络时间

复制代码

我们可以得到这样的一个运行结果:

 

毋庸置疑,这是一个字符串,如果我们需要用来比较时间,那么需要使用字符串命令将字符串处理函数,提取年月日时分秒,并跟自己设置的时间进行逐一比较,需要判定6次,但是如果直接使用字符串比较,那么只需要一次判定,我们根据获取的网络时间的格式,写上同样格式的日期来进行比较:

  1. Dim 网络时间
  2. 网络时间=GetNetworkTime()
  3. TracePrint 网络时间
  4. Dim 自定义时间 = “2015-10-10 14:00:00”
  5. If 自定义时间 > 网络时间 Then
  6. TracePrint “还没到自定义时间”
  7. Else
  8. TracePrint “已经到了自定义时间”
  9. End If

复制代码

运行一遍得出:

可以发现,能够正常的判断出还未到自定义时间,我们将自定义时间设置的早一天试试:

  1. Dim 网络时间
  2. 网络时间=GetNetworkTime()
  3. TracePrint 网络时间
  4. Dim 自定义时间 = “2015-10-09 14:00:00”
  5. If 自定义时间 > 网络时间 Then
  6. TracePrint “还没到自定义时间”
  7. Else
  8. TracePrint “已经到了自定义时间”
  9. End If

复制代码

这回的结果是:

经过尝试,我们发现字符串也是可以比较的,并且有时候确实更加方便,但是什么时候才能用字符串比较呢?可能有很多地方,不可能全部去记住,那么我们就应该了解字符串比较能够进行的原因,字符串比较采用的是逐位比较的方式,将比较的两个字符串的每一位都进行比较,比如“2015”和“2016”两个字符串比较,会先比较第一位的字符,两个都是“2”,那么继续比较下一位,直到“5”和“6”这两个字符,得出“6”大于“5”的结果,那么字符串“2016”就大于“2015”。当然,逐位的比较并不是直接进行比较,而是都转换成ANSI码进行比较,我们可以轻松的在网上找到基本上所有字符的ANSI码。
2. 文本
通过之前的字符串学习,我们懂得了如何分割字符串,于是可以在UI界面去写上所有的账号,然后脚本中获取并分割,然而当账号多的时候,你就明白手机上的输入是多么的蛋疼,这时候,我们可以使用文件的读取来解决这个问题,有的童鞋会说文件并不单单指文本,这没错,但是大部分的文件操作其实都是文本操作,或者说,都当成文本来操作,因此。。。不要在意这种细节~ 咳咳,继续,我们可以在电脑上写好所有的账号,保存在文本文档里,传输到手机内,而脚本直接读取此文件来获取账号。我们来看看有关于文件的操作:

归纳起来也就两种:读与写。我们来尝试一番,我们在桌面上新建一个text.txt文档,打开后写入test并保存退出,将模拟器的共享文件夹设置到桌面,然后在脚本中写入:

  1. Dim 返回值
  2. 返回值 = File.Read(“XXXX”) //XXXX为共享目录的路径,手机和模拟器不同,多种模拟器也不同
  3. TracePrint 返回值

复制代码

运行一下,我们就可以获取到文本内的内容了:

3. 命令库
为了功能的重复使用,我们前面断断续续有写了一些函数,比如比大小的那个函数,可以在每个脚本都加入这些,因为他们并不依赖其他部分,不是专属于某一个游戏或应用,随着自己写的这些函数越来越多,每个脚本都加入这些好累啊(代码一长眼睛都花了,效率直线下降啊有木有),有什么办法可以一劳永逸呢?每当我这么提问的时候那肯定是有办法的啦,我们可以将自己写的这些函数做成命令库插件,自己的专属哦!
先来回顾一下最前面的环境搭建的内容,我们有提到的几个文件夹,其中有一个commandLib文件夹,没错,自定义的命令库就应该写在这儿,我们打开这个文件夹:

恩,完全不知道什么意思。。。咳咳,我们发现同一个文件名有3种后缀,都打开看看很快就能知道.mql后缀的才是需要我们写的(其他两种有乱码啊有木有,不用管他们,这是自动生成的)。我们使用文本文档打开CmdLibUtil.mql后得到:

相信详细看过之前教程的很容易就知道这就是一个相加的函数。我们来看看在脚本中怎么用到这个:

没错,只需要在文件最上面加入完整(包括后缀)命令库的名称,使用里面的命令加上命令库名称(不包括后缀)与函数名就可以使用命令库里的函数,跟使用按键自带的命令并没有多大的区别。
如果想偷懒,我们可以直接在默认存在的几个命令库插件里增加函数,但是如果自己新建一个命令库,要记得将命令库同步到手机上的按键精灵,连接手机,commandLib文件夹中的同步命令库.bat文件双击一下就好了(或者手动将文件拷贝到手机中按键精灵的commandLib文件夹中)。
4. 插件
我们说了制作自己的命令库,但是本质上命令库并没有脱离按键的那些命令,只是进行了一些封装,那么我们怎么来实现目前按键没有的命令呢?比如我们写了一个数组,需要为得出数组长度并对数组排序(比如从大到小),首先,我们需要知道他的长度,手快的童鞋立马啪啪啪写出了一个函数:

  1. Function 获取数组长度(arr)
  2. Dim 长度 = 0
  3. For Each i In arr
  4. 长度 = 长度 + 1
  5. Next
  6. 获取数组长度 = 长度
  7. End Function
  8. Dim 数组 = Array(1,2,4,3)
  9. TracePrint 获取数组长度(数组)

复制代码

运行得到:

 

恩,并没有问题,然后排序的时候,傻眼了,按键并没有排序的功能,自己写的话感觉好复杂啊,需要用到算法(可以百度一下排序算法)那么我们来使用lua插件完成这个操作吧,lua自带了一些排序命令(使用的冒泡算法),我们可以直接使用。

糟糕,没有lua基础怎么办!也不要紧,我们直接现学,百度一下 lua 排序:

 

就决定是你了—-第一个!很容易就找出排序在lua中的命令是table.sort(arr):

命令也找到了,是时候做成插件放到按键中使用了。按键的插件需要一点点的改变,我们先来看看官方的插件是怎么做的,依旧是找到按键的目录,之前说过的3个文件夹中的plugin文件夹,我们随便打开一个lua插件看看,就DateTime.lua吧,英语好的童鞋可以立马知道这是时间插件,那么对应的肯定是年月日的获取,我们挑一个看看就好了:

发现就语法格式不一样,我们依样画葫芦写上:

这样一个简单的插件就完成了,使用插件的方式和自定义命令库是一样一样的!赶紧去试试吧!(lua插件适合想深入研究的人去做,实际上按键的功能基本上能够满足我们的需求)

声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。