Задержка таймера Lua - PullRequest
       34

Задержка таймера Lua

0 голосов
/ 28 февраля 2011

Я пытаюсь написать чрезвычайно простое дополнение для 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

Но это не работает.Он отправит первое сообщение в чат, а затем не сможет получить второе.

1 Ответ

4 голосов
/ 28 февраля 2011

Это невозможно сделать так, как вы на это смотрите.

GetGameTime() только для информации. Вы вообще не перехватываете какие-либо события в вашем коде, кроме слэша. Для того, чтобы игра последовательно опрашивалась игрой, вам нужно было бы создать какое-то невидимое окно, перехватить событие Paint и записывать время каждый раз, пока вы не достигнете своего состояния. Или, лучше, найдите стороннюю библиотеку таймеров, которая сделает всю работу за вас. (Попробуйте этот , например.) Или, что еще лучше, извлеките стандартный код интерфейса WoW с помощью Addon Kit и проверьте код для встроенного будильника и функции секундомера.

Однако, я подозреваю, что даже если вы заставите это работать, вы либо получите гнев игроков или гроссмейстеров, если будете постоянно рассылать спам по каналам чата в постоянном темпе.

...