Lua定时器延迟

时间:2011-02-28 19:32:07

标签: scripting timer lua add-on world-of-warcraft

我正在为魔兽世界编写一个非常简单的插件。我需要知道是否可以将功能延迟30秒或一分钟,然后调用不同的功能。

我尝试使用以下内容完成黑客工作:

SLASH_PORTS1 = '/ports';
function pretalk()
  if currentTime==currentTime+1 then 
    talk();
  else
    talkagain();
  end
end
function talk()
  SendChatMessage("selling PORTS 9g ea. 1g cheaper than the rest! PST." ,"CHANNEL" ,"COMMON" ,"2");
  pretalk();
end 
function SlashCmdList.PORTS()
  currentTime = GetGameTime();
  talk();
end
function talkagain()
  pretalk();
end

但它不起作用。它将发送第一条聊天消息,然后无法获得第二条聊天消息。

1 个答案:

答案 0 :(得分:4)

这不能以你看待它的方式完成。

GetGameTime()仅供参考。除了斜杠命令之外,您不会在代码中挂钩任何事件。 要始终通过游戏进行轮询,您必须实现某种不可见的窗口并挂钩Paint事件,并记录每次的时间,直到达到您的状态。或者,更好的是,找到一个为您完成工作的第三方计时器库。 (例如,尝试this one。)或者更好的是,使用Addon Kit提取标准的WoW界面代码,并检查内置闹钟和秒表功能的代码。

然而,我怀疑即使你让这个工作起来,你也会对你不断发送的聊天频道垃圾邮件感到愤怒。