使用命令的 Lua 定时器。

抱歉,但这是一个开放式问题。

我试图创建一个命令,如果有人输入 !spectate,他们将进入观察模式,并在那里停留 30 秒。到目前为止,我一直没有成功,因此没有可用的错误代码:(

以下是一些可能有助于回答者的事情:

要将某人放入观察模式,请在某人说 !spectate(没有 30 秒限制)后执行以下操作:

if Message == "!spectate" then
  InputConsole("spectate %d", pID)
end

这个游戏将与《命令与征服:变节者》一起使用。

很抱歉我没有更多帮助,我完全超出了自己的能力范围!

点赞
用户1516484
用户1516484

不过如何执行这个方法具体取决于Renegade的Lua API。我自己从未使用过,但万能的谷歌看起来Renegades使用了LuaTT,其API文档说:

您只能将255个脚本附加到对象上。对于计时器,请根据OnThink和os.time制作您自己的api

文档并不是特别好,但是在这里找到的示例代码快速查看建议采取以下方式:

local timers = {
  { time = 1343910384, cb = function() doSomething() end }
}

function OnThink()  -- this is called every frame
  for i = 1, #timers do
    if os.time() > timers[i].time then
      timers[i].cb()
      table.remove(timers, i)
    end
  end
end

然后,您发布的代码将类似于:

if Message == "!spectate" then
  InputConsole("spectate %d", pID) -- 将玩家移至观察者
  table.insert(timers, {
    time = os.time() + 30,                                 -- 现在的30秒后,
    cb   = function() InputConsole("spectate %d", pID) end -- 将玩家从观察者中移除
  })
end
2012-08-02 12:36:25