|
楼主 |
发表于 2014-8-2 18:48:11
|
显示全部楼层
经验教训(经常把机器人完善一点,日积月累会很好用。)
本帖最后由 robotone 于 2014-9-3 12:35 PM 编辑
每天把自己的机器人完善一点,日积月累会很好用。
1.0 .. 1 结果是 "01",当在一个数字后面写..时,必须加上空格以防止被解释错。
2.state和status的区别:state所指的状态,一般都是有限的、可列举的,status则是不可确定的。
3.#长度操作符。
-
- record = { "one", "two", ["x"]=10, ["y"]=14,}
- print (#record) --#是长度操作符。
- print (record["x"])
- local i=1
- while record[i] do
- print (record[i])
- i=i+1
- end
- local i = "123一二三"
- print (#i)
复制代码
4.[一二三]?是不能用的,汉字双字节,?是0或者1次。用[一二三]+或者[一二三]{0,2}。
在输出窗口选择文字的时候,可以半个半个选,这时候会是乱码。对中文支持不好。
5.- a = {"windows","macos","linux",n=3}
- for k,v in pairs(a) do print(k,v) end
复制代码
k的意思是key,索引。v的意思是value,值。in pairs(a)意思是k,v成双成对在数组a里。
Lua的逻辑和逻辑运算很奇怪,有就是真,and和or不是返回逻辑真假,是返回值,值不是nil和false都为真。
所以for k,v in pairs(a)的意思是,直到表的尽头。
6.SetOption ("enable_triggers", 1)启用触发器。Mush没有像Zmud开启关闭触发器那样的按钮,可以自己做别名。
还能启用或者关闭 别名、脚本、快速行走、定时器。
enable_aliases
enable_scripts
enable_speed_walk
enable_timers
enable_triggers
可以把这些做成别名,放在快捷键F2-F12里用。
7.手动走了 {n;w;n;n;e.....}等步骤,怎么逆转回到我的出发地
利用数组来解决
将来做个自动往回走的功能,在一个地方输入:mark,然后不管手动还是自动走,输入:back,都能走回去。
多次mark以后,每次back能走到上一个mark的地点。
8.找到个遍历的代码,参考学习。
-
- lj={"s","w","w","e","e","n"}
- bianli=function()
- Note("开始走路遍历")
- local i=tonumber(GetVariable("bianli_i"))
- while lj[i] do
- Execute(lj[i])
- local l=wait.regexp("^\\s*这里.*出口(.*)$",5)
- while l==nil do
- Note("刚才没过去,重新走")
- Execute(lj[i])
- l=wait.regexp("^\\s*这里.*出口(.*)$",5)
- end
- Note("0.3s后执行下一步")
- i=i+1
- SetVariable("bianli_i",i)
- wait.time(0.3)
- end
- if lj[i]==nil then Note("走完了") SetVariable("bianli_i",1) return end
- end
- end)
复制代码
9.lua中pairs()和ipairs()的区别。
tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"}
for key, value in ipairs(tbl) do
print(key, value)
end
--pairs()
--pairs()函数基本和ipairs()函数用法相同, 区别在于pairs()可以遍历整个table, 即包括数组及非数组部分.
-->如有pairs迭代输出如下:
-->1 alpha
-->2 beta
-->one uno
-->two dos
-->如有ipairs迭代输出如下:
--ipairs()
--ipairs()函数用于遍历table中的数组部分.
-->1 alpha
-->2 beta
10.You require a special briefing.
你需要一份特别情况的简报。
table.concat(table, sep, start, end)
table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。
除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长.
sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数, 但如果要指定靠后的参数, 必须同时指定前面的参数.
a = {"windows","macos","linux",n=3}
require "tprint"
tprint (a)
print(table.concat(a, ","))
输出:
1="windows"
2="macos"
3="linux"
"n"=3
windows,macos,linux
11.做好的触发器,内容是发送给脚本,没有执行的命令,不知道有没有触发,可以改变颜色和样式,或者勾选下划线,能触发的话就很容易识别。
12.用EnableTriggerGroup()开关触发器组的时候,如果触发器组不存在,不会报错。
13.登录游戏前,把临时触发器,别名,定时器删除掉。
DeleteTemporaryAliases() 删除所有的临时别名。
DeleteTemporaryTimers () 删除所有的临时定时器。
DeleteTemporaryTriggers() 删除所有的临时触发器。
14.skbrief XXX可以查询武功等级。verify XXX可以查询武功的用法。
skbrief force
#33/986
verify hunyuan-yiqi
┌【混元一气功功能表】───────────────────────┐
│等级: 初窥门径 47/ 0 类别: martial │
│ │
│特殊技能: │
│ 内功(force) │
├─────────────────────────────────┤
│内功方面(exert + ): │
│ heal lifeheal roar │
└─────────────────────────────────┘
15.Wiki过时了,查东西在论坛搜索更实用。
16.发送到游戏立即执行,会打断文字,造成不能触发。
ask daoguo about 失败
你向道果禅师打听有关
save
『失败』的消息。
道果禅师说道:「已经帮你取消了诵经任务。」
17.游戏-立即执行,可以在窗口里写脚本命令。游戏-跟踪,可以看到客户端执行了什么操作,比如执行了哪个触发器,定时器。 |
|