Ayuda con ImageSearch

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

Snopeyy
Posts: 5
Joined: 12 Apr 2022, 05:33

Ayuda con ImageSearch

12 Apr 2022, 11:01

Hola, queria consultar si alguien me puede ayudar con mi script, básicamente lo que hace es Buscar una imagen, Si cuando activo el script encuentra la imagen toma la coordenada X e Y
hace click en esa coordenada y procede a hacer una combinación de teclas, hasta ahí funciona el problema es que luego de esa combinación de teclas necesito que vuelva a buscar esa imagen vuelva a clickear en las nuevas coordenadas de la imagen y haga otra convinacion de teclaso, Aca les dejo el codigo

Code: Select all

#IfWinActive, ahk_class RiotWindowClass
vida 	:= "health.png"
3::
ImageSearch, X, Y, 0, 0, 1920, 1080, %vida%
if ErrorLevel = 0
{
xa := x+42
ya := y+100
Click, %xa%, %ya%, 0
send, {w down}
send, {e down}
sleep, 15
send, {w up}
send, {e up}
sleep, 20
ImageSearch, X, Y, 0, 0, 1920, 1080, %vida%
if ErrorLevel = 0{
xa := x+42
ya := y+100
mousemove, %xa%, %ya%, 0
send, {q down}
sleep 10
send, {q up}
}
Return
Si alguien puede ayudarme realmente se los agradeceria, estoy con este problema hace horas :D
User avatar
ositoMalvado
Posts: 183
Joined: 24 Dec 2019, 12:02
Contact:

Re: Ayuda con ImageSearch

18 Aug 2022, 17:23

Hola amigo, escribí un código para poder ayudar con tu consulta. He explicado bien cada línea para que puedas entender al máximo y modificarlo. Cualquier consulta me preguntas. Saludos :wave:

Code: Select all

;=============================
;==========================
;   Este programa hace que al presionar
;   la tecla 3, se active la búsqueda de
;   una imagen que usted desee en la
;   pantalla de manera indefinida, y al
;   encontrarla, el ratón se movera hacia
;   el punto de la imagen encontrada.
;
;   Donde usted puede modificar el script es donde hay (*****)
;==========================
;=============================

;==========================
;DEFINICIÓN - INICIO
;==========================
    ;(*****)MODIFICABLE
        global imagen := "health.png"
        ;IMAGEN A BUSCAR
        global DELAY_TIMER := 50
        ;CADA CUANTOS MILISEGUNDOS SE EJECUTARÁ TIMER DE BÚSQUEDA DE IMAGEN
        
    ;NO MODIFICABLE
        global encendido := false
        ;ESTADO DEL SCRIPT

    ;OPTIMIZACIÓN AVANZADA, """IGNORAR""", NO AFECTA EL FIN EL PROGRAMA - INICIA
        #NoEnv
        #MaxHotkeysPerInterval 99000000
        #HotkeyInterval 99000000
        #KeyHistory 0
        #SingleInstance, Force
        ListLines Off
        Process, Priority, , A
        SetBatchLines, -1
        SetKeyDelay, -1, -1
        SetMouseDelay, -1
        SetDefaultMouseSpeed, 0
        SetWinDelay, -1
        SetControlDelay, -1
        SendMode Input
        CoordMode, mouse, screen
    ;OPTIMIZACIÓN AVANZADA, """IGNORAR""", NO AFECTA EL FIN EL PROGRAMA - FIN

    Return
;==========================
;DEFINICIÓN - FIN
;==========================

#IfWinActive, ahk_class RiotWindowClass
;SI PROGRAMA SE ENCUENTRA ACTIVO

timerBuscar:
;(*****)TIMER PARA BUSCAR IMAGEN CONSTANTEMENTE
    punto:=buscarImagenHasta(imagen,0)
    ;DECIMOS QUE "punto" ES IGUAL EL PUNTO DE LA IMAGEN A BUSCAR
    MouseMove, % punto.x, % punto.y, 0
    ;MOVER EL MOUSE AL PUNTO ENCONTRADO

;IMPORTANTE!!! AQUÍ ARRIBA DEBES PONER TODO LO QUE QUIERES QUE SUCEDA CADA VEZ QUE SE ENCUNTRA LA IMAGEN, EN ESTE CASO YO PUSE QUE SE MUEVA A LA POSICIÓN DE LA IMAGEN ENCONTRADA
Return
;FINALIZA TIMER

3::
;AL PRESIONAR TECLA 3
    if encendido
    ;SI ESTÁ ENCENDIDO
        SetTimer, timerBuscar, off
        ;APAGAMOS TIMER
    Else
    ;SI ESTÁ APAGADO
        SetTimer, timerBuscar, % DELAY_TIMER
        ;ENCENDEMOS TIMER
    encendido:=!encendido
    ;CAMBIAMOS LA POSICIÓN DEL "INTERRUPTOR" encendido
Return
;TECLA 3 FINALIZA

buscarImagen(img,x,y:=0,x2:=0,y2:=0){
;FUNCIÓN QUE BUSCA LA IMAGEN "img" DESDE EL PUNTO (x,y) HASTA (x2,y2), SI x ES MENOR O IGUAL A CERO, BUSCARÁ EN PANTALLA COMPLETA, DEVUELVE UN OBJETO CON PROPIEDADES "x" E "y", SIENDO ESTOS LOS PUNTOS DE LA IMAGEN ENCONTRADA, SI NO ENCUENTRA DEVUELVE VACIÓ ""
    if x<=0
        ImageSearch, ox, oy, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %img%
    else
        ImageSearch, ox, oy, %x%, %y%, %x2%, %y2%, %img%
    p:={}
    p.x:=ox
    p.y:=oy
    if p.x>=0
        return p
    Else
        return ""
}

buscarImagenHasta(img,x,y:=0,x2:=0,y2:=0){
;FUNCIÓN QUE BUSCA HASTA ENCONTRAR LA IMAGEN "img" DESDE EL PUNTO (x,y) HASTA (x2,y2), SI x ES MENOR O IGUAL A CERO, BUSCARÁ EN PANTALLA COMPLETA, DEVUELVE UN OBJETO CON PROPIEDADES "x" E "y"
    punto:=buscarImagen(img,x,y,x2,y2)
    while(punto==""){
        punto:=buscarImagen(img,x,y,x2,y2)
        sleep, 50
    }
    return punto
}

My WEB some useful stuff

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 5 guests