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

StackOverflow https://stackoverflow.com/questions/1024960

  •  06-07-2019
  •  | 
  •  

Вопрос

Как заставить работать комбинацию из двух эмоций в 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.Я использовал эту функцию, и в окне чата показывалось только движение сидя, а манить и луну.Танцевальная эмоция нигде не проявлялась.

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

Ваше здоровье,
Амит Рон

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top