|
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上面呢则可以更加精简你的脚本,容错率也大大的增加了。希望我这篇文章能对大家有用,谢谢大家的阅读。 |
|