Lua计时器延迟

我正在尝试编写一个极其简单的WoW插件。我需要知道是否有可能将一个函数延迟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

但它不起作用。它会发送第一条聊天信息,但无法获取第二条。

原文链接 https://stackoverflow.com/questions/5146650

点赞
stackoverflow用户223942
stackoverflow用户223942

这种方式是行不通的。

GetGameTime() 仅仅提供一些信息而已。您的代码没有挂接任何事件,除非是斜杠命令。 要让游戏持续轮询您的代码,您需要实现一种类似“隐形窗口”的机制,并挂接 Paint 事件,在达到特定条件时记录时间。或者更好的做法是,找一个第三方计时库,它已经为您做好了这些工作。(例如这个:this one)或者从Addon Kit中提取标准的WoW界面代码,并查看内置的闹钟和秒表函数的代码。

不过我怀疑,即使您让这个工作起来了,您也会引起玩家或GM对您不断刷屏的不满,因为这会持续一致的发送信息到聊天频道。

2011-02-28 20:21:48