石器时代论坛

 找回密码
 立即注册
查看: 63201|回复: 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上面呢则可以更加精简你的脚本,容错率也大大的增加了。希望我这篇文章能对大家有用,谢谢大家的阅读。

16

主题

443

帖子

1080

石币

石器精英

Rank: 6Rank: 6

积分
1523

热心会员

推荐
 楼主| 发表于 2021-2-27 23:40:25 | 只看该作者
打开npc对话框后,输入say /getwnkey可获得key和flag,其中key是固定,flag随服务器。脚本里key可以写死(即常量),flag需要首次获取,如何取需要您去思考一下,

1

主题

32

帖子

34

石币

石器入门

Rank: 2

积分
66
61#
发表于 2024-5-26 15:35:14 | 只看该作者
a68624165 发表于 2021-2-27 23:40
打开npc对话框后,输入say /getwnkey可获得key和flag,其中key是固定,flag随服务器。脚本里key可以写死( ...

怎么没有后续了啊,这个功能超级实用啊

0

主题

175

帖子

39

石币

石器高手

Rank: 3Rank: 3

积分
214
60#
发表于 2023-4-9 16:28:19 | 只看该作者
石币石币~~

0

主题

73

帖子

45

石币

石器入门

Rank: 2

积分
118
59#
发表于 2023-1-11 22:46:00 | 只看该作者
有没有更详细的说明呀

0

主题

27

帖子

33

石币

石器入门

Rank: 2

积分
60
58#
发表于 2022-11-3 10:06:04 | 只看该作者
ddddddddddddddddddd

0

主题

16

帖子

7

石币

石器新生

Rank: 1

积分
23
56#
发表于 2021-2-22 08:35:37 | 只看该作者
xuexi1le~~~~~~~~~~~~

0

主题

16

帖子

24

石币

石器新生

Rank: 1

积分
40
55#
发表于 2020-10-21 20:00:08 | 只看该作者
支持支持 感谢楼主分享

0

主题

31

帖子

23

石币

石器入门

Rank: 2

积分
54
54#
发表于 2020-10-4 23:14:51 | 只看该作者
谢谢,超级有用

0

主题

6

帖子

8

石币

石器新生

Rank: 1

积分
14
53#
发表于 2020-6-29 23:49:03 | 只看该作者
学到了
444444444444444
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-24 02:32 , Processed in 0.091365 second(s), 37 queries .

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