miércoles, 17 de septiembre de 2008

Algunas macros utiles en Sindarin

Macro para separar ores y quemarlos sobre la marcha:

Location vetas_minerales = [775, 440];
Location veta_mineral = [709, 476];
Location veta_mineral_para_quemar = veta_mineral - [0, 5] + [4,0];
number cant_minerales = 196;

repeat (cant_minerales - 3)
{
drag 1 vetas_minerales veta_mineral
}

repeat (cant_minerales - 3)
{
dclick left veta_mineral_para_quemar
wait 1
wait 400 msec
}

Y ahora con muchos comentarios que explican el funcionamiento:

# En esta localizacion tenemos los ores agrupados
Location vetas_minerales = [775, 440];

# En esta localizacion tenemos el sitio donde se pondran los minerales de 1 en 1
Location veta_mineral = [709, 476];

# Esta localizacion apunta a los minerales sueltos para ir quemando
# se calcula en las proximidades a la veta de mineral
Location veta_mineral_para_quemar = veta_mineral - [0, 5] + [4,0];

# El numero de minerales que vamos a separar quemar
number cant_minerales = 196;

# Aqui comprobamos que las localizaciones estan bien puestas
# descomentando el exit que esta mas abajo, tambien podemos mover un mineral para asegurarnos
mousemove vetas_minerales
wait 1
mousemove veta_mineral
wait 1
mousemove veta_mineral_para_quemar
#drag 1 vetas_minerales veta_mineral
#exit

# Separar la cantidad de ores menos 3, ya q cuando hay - de 3 vetas el objeto
# cambia de forma y se puede perder la localizacion
repeat (cant_minerales - 3)
{
drag 1 vetas_minerales veta_mineral
}

# Se queman tantos minerales como se han separado
repeat (cant_minerales - 3)
{
dclick left veta_mineral_para_quemar
wait 1 # espera un segundo
wait 400 msec # y 400 milisegundos
}

Todos los comentarios son explicativos y las pruebas no son necesarias, pero si utiles.


La típica macro de repetir constantemente la tecla F1:

wait 1 # Esperamos 1 segundo por si acaso
while true # Repetimos para esto para siempre
{
pkey 'f1' # Pulsa f1
wait 8 # esperamos 8 segundos hasta volver a pulsar
}



Tipica macro de construccion de dagas (o cualquier otro objeto):

Location armas = [250, 100];
Location flecha = [267, 92];
Location lejos = [500, 500];
Location arma = [90, 87]
Location tipo = [80, 87];

wait 1

repeat (40/3)
{
pkey 'F1'
wait 1

repeat 2
{
click left flecha
wait 1
mousemove lejos
}

dclick left armas
wait 1
dclick left tipo
wait 1
dclick left arma
wait 4
}


La misma con comentarios que explican el funcionamiento:

Location armas = [250, 100];
Location flecha = [267, 92];
Location lejos = [500, 500];
Location arma = [90, 87] # dagas
Location tipo = [80, 87]; # dagas

wait 1

# Intenta construir tantas dagas como pueda con 40 lingotes, suponiendo que
# se necesitan 3 lingotes por daga
repeat (40/3)
{
pkey 'F1' # Macro en ultima de lastobject, lasttarget
wait 1

# En el menu de herreria, hay que pulsar 2 veces(esto varia segun el server) sobre
# la flecha de la derecha para llegar a las armas de swordmanship
repeat 2
{
click left flecha
wait 1
mousemove lejos # x si sale el cuadrado negro explicativo
}

dclick left armas # Doble click sobre el menu de construccion de armas
wait 1
dclick left tipo # Doble click sobre armas de sword
wait 1
dclick left arma # Doble click sobre menu de las dagas
wait 4 # Esperamos 4 segundos, que acumulados a los que esperamos
# que al sumarse con los segundos que se espera para navegar
# de menu en menu son 9 segundos entre daga y daga
}



Macro para aplicar vendas de vez en cuando, que ademas comprueba que hora es y si son mas de las 11:30 de la mañana apaga el Uo y detiene el script:

number hora,minutos,segundos;
wait 1 sec
while true
{
time (hora,minutos,segundos);
if ((a >= 11) && (b >= 30))
{
wait 4
pkey 'alt'+'f4'
wait 1
exit
}
pkey 'f5'
wait 20
}


Y ahora con extras y explicaciones añadidas:


number hora,minutos,segundos; # Para guardar la hora
wait 1 sec
while true # Repetimos para siempre(o hasta q paremos el script)
{
time (hora,minutos,segundos); # Almacenamos la hora en las variables

# Mostramos la hora en la consola de mensajes
print "Son las " + hora+":"+minutos+":"+segundos

# Si son las 11:30 o mas tarde
if ((a >= 11) && (b >= 30))
{
beep # Hacemos sonar un beep
wait 4
pkey 'alt'+'f4' # Pulsamos Alt+F4 lo que cerrara el UO a lo bestia
wait 1
exit # Terminamos de ejecutar el script
}
pkey 'f5' # F5 es una macro lastobject-targetself
# que nos abremos acordado de aplicar vendas
# antes de empezar
wait 20 # Esperamos 20 segundos antes de volver a aplicar
}