我的循环工作方式如下:循环、脚本、循环。我希望是这样的:循环、循环、代码。The ForgottenServer 0.3.6

这是包含循环的代码:

            for _, pid in ipairs(getPlayersOnline()) do
                if getCreatureStorage(pid, tmp[i].storeDamage) > -1 then
                    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getPlayerName(pid)..': '..getCreatureStorage(pid, 11005))
                end
                doCreatureSetStorage(pid, tmp[i].storeDamage, -1)
            end

每个带有存储 11005 的玩家都会收到如下消息:

玩家名称:随机数 当前玩家是 CID,每个在线玩家都是 PID。 现在我想在消息显示给所有在线玩家后将随机数设置为 -1。 问题是循环的工作方式是这样的:先向 CID (第一个玩家)显示消息,然后将数字重置为 -1,然后显示消息给第二个玩家。这样是不行的,因为第一个玩家看到的消息是正确的,如下所示:

玩家名称1:玩家1的数字,玩家名称2:玩家2的数字

但是第二个玩家会看到

玩家名称1:-1(该玩家的数字),玩家名称2:-1(第二名玩家的数字)。

循环可能是这样做的:循环,设置存储,循环。 我需要这样做:循环、循环、设置存储。 我已经尝试使用"\n

如果下一个(getPlayersOnline(), _) == nil,则不起作用。

点赞
用户301729
用户301729

你可以将“set storage”移到第二个循环中,这是在进行任何“set storage”调用之前发送所有消息的唯一方法。

for _, pid in ipairs(getPlayersOnline()) do
  if getCreatureStorage(pid, tmp[i].storeDamage) > -1 then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getPlayerName(pid)..': '..getCreatureStorage(pid, 11005))
  end
end
for _, pid in ipairs(getPlayersOnline()) do
  doCreatureSetStorage(pid, tmp[i].storeDamage, -1)
end
2016-07-16 03:52:42