我的循环是这样的:循环,脚本,循环。我想要这个:循环,循环,代码。遗忘服务器0.3.6

时间:2016-07-14 05:31:34

标签: loops for-loop lua

这是带循环的代码:

            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(第二名玩家的nr)。

Loop可能就是这样做的:loop,setStorage,loop。 我需要这样的方式:循环,循环,设置存储。 我尝试使用"

检查最后一个循环
  

如果是next(getPlayersOnline(),_)== nil则

,但不起作用。

1 个答案:

答案 0 :(得分:0)

你可以在第一次之后将“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