0
positions = {
--table 1
[1] = {pos = {fromPosition = {x=1809, y=317, z=8},toPosition = {x=1818, y=331, z=8}}, m = {"100 monster"}},
--table 2
[2] = {pos = {fromPosition = {x=1809, y=317, z=8},toPosition = {x=1818, y=331, z=8}}, m = {"100 monster"}},
-- table3
[3] = {pos = {fromPosition = {x=1809, y=317, z=8},toPosition = {x=1818, y=331, z=8}}, m = {"100 monster"}}
}

    tb = positions[?]--what need place here?

for _,x in pairs(tb.m) do --function
    for s = 1, tonumber(x:match("%d+")) do
    pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb1.pos.toPosition.y), z = tb.pos.fromPosition.z}
    doCreateMonster(x:match("%s(.+)"), pos)
    end
    end

这里的问题是,我使用 tb = position[1],它只用于“位置”表中的一个表。但是如何将此函数应用于此表中的所有表?

4

3 回答 3

2

positions您需要使用数字进行迭代for

请注意,与 Antoine Lassauzay 的回答不同,循环从1而不是0开始,并使用#运算符而不是table.getn(Lua 5.1 中不推荐使用的函数,在 Lua 5.2 中删除)。

for i=1,#positions do
  tb = positions[i]
  ...
end
于 2012-12-08T13:38:13.020 回答
2

我不太了解 Lua,但您可以遍历表格:

for i = 0, table.getn(positions), 1 do
     tb = positions[i]
     ...
end

资料来源: http: //lua.gts-stolberg.de/en/schleifen.phphttp://www.lua.org/pil/19.1.html

于 2012-12-08T12:52:15.180 回答
0

使用内置的pairs()。没有任何理由在这里进行数字 for 循环。

for index, position in pairs(positions) do
    tb = positions[index]
    -- tb is now exactly the same value as variable 'position'
end
于 2012-12-09T15:14:21.497 回答