石器时代论坛

 找回密码
 立即注册

QQ登录

查看: 61699|回复: 60
打印 上一主题 下一主题

[脚本教学] [转载]Assa脚本“button”指令的一些技巧

  [复制链接]

16

主题

443

帖子

1080

石币

石器精英

Rank: 6Rank: 6

积分
1523

热心会员

跳转到指定楼层
楼主
发表于 2015-2-12 16:10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
button——这个指令相信大家都不陌生,简单来说就是当窗口出现对话框时,发送封包点击对话框内的按钮。与"lclick"指令对比起来优点是准确率大大的提高了,Assa也是因为这个指令而更加方便。
       现在讲述一下这个指令后面的key,flag怎么获取。
本帖隐藏的内容

       首先key是对话框的一个ID,同一个NPC的对话框ID是相连的,此值是不会因为服务器的重启而改变。那么key能给我们带来什么样的方便呢?相信大家都用过我的脚本,也都感受过和NPC交互的时候都是瞬间完成的,这就是知道key后的好处。
以抓宠NPC传送为例子:say hi
                                     waitdlg ,1,5,-1                     等待任意对话框出现,等待时间5秒
                                     button 3,66,64,3                 按对话框ID为“3”的第三个按钮,即第三页漆黑18楼
                                     waitmap 32018,5,-3            等待地图5秒
       从上面可以看出如果不使用key这个指令,那么得先按两次下一页,才能到达自己想要的对话框页面,这其中还会因为网络的延迟导致对话框的显示过慢出错,这又是使用key的好处,因为只要成功的弹出第一个对话框,那就证明和NPC交互成功,那么就可以向当前NPC发送他允许范围内的任何操作,而且此操作准确率非常高,不用去担心图形没反应过来或者黑屏等等一切干扰。那么怎么获取key呢?方法很多,各种工具只要你会就行。在这里我教的方法是通过Assa本身自带的脚本功能来找寻出key值。
以抓宠NPC传送为例子:dim @a                                    定义变量a
                                      let @a,=,0                              赋值变量a值为0
                                      label 开始                               )
                                      log 1                                       }由于是传送NPC为例子,所以在此加入一个循环执行的路径
                                      waitmap 2000,3,开始             )
                                      delay 200                               )
                                      walkpos 64,58                        )
                                      walkpos 62,58                        )
                                      walkpos 62,64                        )
                                      walkpos 66,64                        )
                                      w 66,64,H                               )
                                      say hi                                     开始和NPC交互
                                      waitdlg ,1,3,开始                    等待任意对话框出现,等待时间3秒
                                      let @a,+,1                               赋值变量a加1,循环测试递增
                                      print @a                                  显示变量a值
                                      button 3,66,64,@a                  开始尝试发送封包按钮是否成功
                                      waitmap 32018,1,开始            此处是检测是否成功,如果不成功则返回开始继续
                                      msg @a                                    成功后则弹出key值
                                      end                                          结束
       上例中可以简单的阐述为预先设定一个结果,然后反复的去推敲而得到结果后返回key值。button还可以用来购买物品,下面举个购买物品的例子如何获取key。
以购买物品为例子:dim @a                                                             定义变量a
                                let @a,=,0                                                       赋值变量a值为0
                                label 开始
                                say buy.
                                waitdlg 想买什么吗?,2,5,-1
                                let @a,+,1                                                       赋值变量a加1,循环测试递增
                                print @a
                                button *10|1,12,4,@a                                    购买第10件物品1件。假如为“弗烈顿的斧1”
                                if @[寻找道具.弗烈顿的斧1],=,-1,开始
                                msg @a                                                           成功后则弹出key值
                                end                                                                 结束
       总之要查找一个对话框ID的时候就是要预先设定好这个结果,然后判断这个结果是否正确,不正确就循环检测,这其中要加入一个变量去循环递增。
       flag,其实是NPC的编号,这个是随着服务端的重启而发生变化的,所以存在的意义不是很大。那他的用处是什么呢?用一段代码来说吧“button 3|1,9,8,242,953”,这意思呢就是直接向编号为953的NPC发送封包按键指令,期间过程不需要对话,只需要站在NPC面前即可,速度是相当的快。那么怎么样去查找这个值呢?前提是必须先找到key,那么找起flag来就相当的容易了,只需要在站你需要获取值的NPC面前,写一段代码重复的去检测即可,成功则返回变量值,失败则循环。
       总结,懂得怎么去获取key和flag后那么运用于stw脱机上面那也是无往不利的,然而在Assa上面呢则可以更加精简你的脚本,容错率也大大的增加了。希望我这篇文章能对大家有用,谢谢大家的阅读。

0

主题

89

帖子

7

石币

石器入门

Rank: 2

积分
96
沙发
发表于 2015-2-12 16:44:04 | 只看该作者
学习了~~~~~~~~~~~~~~~~~~~~~~

1

主题

300

帖子

143

石币

石器高手

Rank: 3Rank: 3

积分
443
板凳
发表于 2015-2-12 18:18:31 | 只看该作者
dfafasdfsdf

1

主题

300

帖子

143

石币

石器高手

Rank: 3Rank: 3

积分
443
地板
发表于 2015-2-12 18:19:04 | 只看该作者
谢谢,超级有用

4

主题

361

帖子

10

石币

石器高手

Rank: 3Rank: 3

积分
372
5#
发表于 2015-4-10 07:07:33 | 只看该作者
多多透露啊、兄弟新人、请多多教导!

0

主题

57

帖子

9

石币

石器入门

Rank: 2

积分
66
6#
发表于 2015-4-10 23:54:43 | 只看该作者
学习了!!

11

主题

578

帖子

977

石币

石器精英

Rank: 6Rank: 6

积分
1555

热心会员脚本达人

7#
发表于 2015-7-11 17:46:04 | 只看该作者
谢谢分享,很有帮助。

0

主题

83

帖子

0

石币

石器入门

Rank: 2

积分
83
8#
发表于 2015-7-31 14:38:10 | 只看该作者
刚刚发的鬼地方个梵蒂冈发对

0

主题

49

帖子

5

石币

石器入门

Rank: 2

积分
54
9#
发表于 2015-7-31 15:31:47 | 只看该作者
333333333333333333222222222222224444444444

0

主题

83

帖子

23

石币

石器入门

Rank: 2

积分
106
10#
发表于 2015-8-1 22:43:28 | 只看该作者
444444444444444
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|石器时代论坛

GMT+8, 2024-6-2 09:17 , Processed in 0.079905 second(s), 35 queries .

快速回复 返回顶部 返回列表