Pregunta

¿Cómo haces un combo de dos emoticones en lua en World of Warcraft?

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

Estoy usando Wow Addon Studio para hacer una aplicación de pedo en Wow. Usé esta función, y solo se mostraba el movimiento de sentarse, y solo se mostraban las señas y la luna en la ventana de chat. El gesto de baile no apareció en ningún lado.

¿Fue útil?

Solución

Blizzard ha prohibido explícitamente cualquier cosa que pueda usarse para hacer que lua espere o haga una pausa porque es un ingrediente esencial para hacer un bot de extracción o molienda de oro.

No hay una forma nativa (es decir, solo lua) de hacer que lua espere sin usar toda la CPU. Fuera del cliente WOW, usaría win.sleep o alguna otra llamada de API de terceros que llama a la aplicación host o las funciones de subprocesamiento de los sistemas operativos.

Es posible simular una espera haciendo que el código se ejecute en un evento frecuente (como el texto que llega a la ventana de chat) y luego en el controlador de eventos verificando si ha pasado suficiente tiempo para permitir la ejecución del siguiente comando en la secuencia. Probablemente este no sea un temporizador muy preciso y sería bastante complejo, ya que tendría que crear una estructura de datos para mantener la secuencia de comandos, los tiempos entre cada uno, el comando actual, etc., etc. p>

Otros consejos

Esto puede ser una limitación intencional de la API para evitar la automatización del juego (botting).

Lo que funcionó para mí es tener una variable global que se incremente a través del ciclo. Tales como

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

Lo que tendrías que hacer entonces es hacer clic en el botón varias veces, pero obtendrás el efecto que estás buscando.

Te sugiero que esperes un poco antes de hacer el próximo emote. Hasta donde yo sé, el servidor lo desconecta si envía demasiado correo no deseado. Este podría simplemente desencadenarlo a veces.

¿Además de eso, supongo que quizás el cliente tiene una manera de prevenirlo? En cualquier caso, sugeriría que agregue algún tipo de retraso de fracción de segundo entre los gestos.

Saludos,
Amit Ron

¿Podría ser que los dos últimos no se pueden hacer mientras está sentado?

de hecho, entero i = 0 , porque definir entero 'contar' y luego usar i es incorrecto. :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top