再次请教mush 的遍历
这几天学习mush和lua。感觉还是很有兴趣。我现在的工作主要是作数值计算,搞fortran的。和lua差距相当大。所以又要麻烦各位高手了。
这个是mape大侠r的以前的回帖:
天龙寺的遍历
bianli["tls"]="enter shudong;say 天堂有路你不走呀\nd;8;se;s;sw;sw;s;w;ne;ne;ne;n;n;n;n;n;n;s;s;s;s;s;sw;nw;n;s;nu;nu;nu;sd;sd;sd;se;wu;nu;n;n;e;w;w;e;n;w;e;s;s;s;sd;ed;ne;ne;ne;ne;w;w;"
这样可以根据;分解成数组,然后就一个一个的发送,感觉还是很方便。
我的问题是怎么把这个遍历分解成数组,然后发送啊?lua 的数组是不是就是table 啊?感觉lua 的数据类型table很强大。也比较难掌握。 囧
local path = "a;b;c;d;e;fff"
local str = ""
for _, v in ipairs (utils.split (path, ";")) do
if string.len (v) == 1 then
str = str .. v .. " "
else
str = str .. "(" .. v .. ") "
end
end
Execute ("#" .. str)
7n5s型的格式没有处理 hzl hzl 我怎么觉得fortran和lua很象呢?fortran俺在学校里也学过,不过忘得就记住一点:Fortran是Basic之母。
Lua中的table是LUA的两大显著特点之一,掌握table是学习lua的必经之路。
MUSH对LUA的table做了一个小扩展,utils.split 函数,在单纯的lua环境中没有utils.split,split函数可以自己写以实现相应的功能(我刚开始用LUA的时候就不知道有utils.split,就自己写了split的function并结合table.getn和table.insert实现utils.split的功能,我挖金子的代码中的select语句就是这么实现的)
下面放上例子:-- -- -- -- -- -- -- --
function test_table()
require "tprint"
bianli_tls="enter shudong;say 天堂有路你不走呀\nd;8;se;s;sw;sw;s;w;ne;ne;ne;n;n;n;n;n;n;s;s;s;s;s;sw;nw;n;s;nu;nu;nu;sd;sd;sd;se;wu;nu;n;n;e;w;w;e;n;w;e;s;s;s;sd;ed;ne;ne;ne;ne;w;w;"
local t = utils.split(bianli_tls, ";")
print(bianli_tls)
tprint(t)
end -- test_table()
-- -- -- -- -- -- -- --正回复着呢,就发现duno又比我快一步 hzr
[ 本帖最后由 ddid 于 2009-8-25 05:10 PM 编辑 ] 关于发送,也可以用以下代码实现:
table.foreach(t, function(i, v)
local dir = "(" ..v ..")"
world.Execute("#" ..dir)
end)
多谢啊。感觉table 不太象fortran 的数组,
类似自定义类型,相当活。我还用的不好。
以后还要多多请教 原帖由 trace 于 2009-8-25 17:37 发表 http://pkuxkx.net/forum/images/common/back.gif
多谢啊。感觉table 不太象fortran 的数组,
类似自定义类型,相当活。我还用的不好。
以后还要多多请教
addoil
hz6 原帖由 duno 于 2009-8-25 16:45 发表 http://pkuxkx.net/forum/images/common/back.gif
囧
7n5s型的格式没有处理
请教duno大牛,怎么实现7n5s的格式哩? 先判断数字是指令的一部分还是下一指令的重复次数
指令的一部分: 加括号
下一指令的重复次数: do n x 或者 x x x x x ...(n次)
俺不属牛
囧 大侠。再次请教,如果遍历遇到npc想停止怎么办?
如果是坐船怎么处理啊?
[ 本帖最后由 trace 于 2009-8-25 06:44 PM 编辑 ]
页:
[1]
2