Как сделать комбо из двух эмоций в lua в World of Warcraft? - PullRequest
7 голосов
/ 22 июня 2009

Как создать комбо из двух эмоций в lua в World of Warcraft?

function Button2_OnClick()
    PlaySoundFile("Interface\\Addons\\Fart\\common_fart[1].wav");
    DoEmote("moon");
    DoEmote("sit");
    DoEmote("dance");
    DoEmote("beckon");
end

Я использую Wow Addon Studio, чтобы сделать пердеть приложение на Wow. Я использовал эту функцию, и показывалось только сидячее движение, а маяк и луна показывались только в окне чата. Эмоция танца нигде не появлялась.

Ответы [ 6 ]

5 голосов
/ 30 июня 2009

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

Нет собственного (то есть только lua) способа заставить lua ждать без использования всего процессора. Вне клиента WOW вы бы использовали win.sleep или какой-либо другой вызов API стороннего производителя, который вызывает функции потоков приложения хоста или операционной системы.

Может быть возможно смоделировать ожидание, выполнив код, выполняемый для частого события (например, текста, поступающего в окно чата), а затем в обработчике событий, проверяющем, прошло ли достаточно времени для выполнения следующей команды последовательность. Вероятно, это не был бы очень точный таймер, и он был бы довольно сложным, поскольку вам нужно было бы создать структуру данных для хранения последовательности команд, временных интервалов между ними, текущей команды и т. Д. И т. Д.

3 голосов
/ 04 января 2010

Что мне помогло, так это наличие глобальной переменной, которая увеличивается с помощью цикла. Такие как

Integer count = 0;
function Button2_OnClick()
    i++
    switch
    case(1)
        PlaySoundFile("Interface\\Addons\\Fart\\common_fart[1].wav");
    case(2)
         DoEmote("moon");
    case(3)
         DoEmote("sit");
    case(4)
         DoEmote("dance");
    case(5)
         DoEmote("beckon");
    default
         i=0;
    end
end

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

3 голосов
/ 23 июня 2009

Это может быть преднамеренное ограничение API для предотвращения в автоматизации игр (ботов).

2 голосов
/ 23 июня 2009

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

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

Ура,
Амит Рон

1 голос
/ 27 января 2010

infact, integer i = 0, потому что определение целого числа 'count' и затем использование i неверно. :)

1 голос
/ 03 сентября 2009

Может ли быть так, что последние два нельзя сделать сидя?

...