【问题标题】:My loop works like this: loop, script, loop. I want this: loop, loop, code. The ForgottenServer 0.3.6我的循环是这样工作的:循环、脚本、循环。我想要这个:循环,循环,代码。被遗忘的服务器 0.3.6
【发布时间】:2016-07-16 11:52:42
【问题描述】:

这是带有循环的代码:

            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(第二位玩家的编号)。

Loop 大概是这样完成的:loop、setStorage、loop。 我需要这样:循环,循环,设置存储。 我尝试使用 "

检查最后一个循环

如果 next(getPlayersOnline(), _) == nil 那么

,但不起作用。

【问题讨论】:

    标签: loops for-loop lua


    【解决方案1】:

    您可以将“设置存储”移动到第一个循环之后的第二个循环吗?这是您在执行任何 set 存储调用之前能够发送所有消息的唯一方法。

    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
    

    【讨论】:

      猜你喜欢
      • 2022-12-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多