Question #255984 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/255984

den posted a new comment:
i think your code is godd and working but , i ve already the same probleme , in 
my code , it takes too much time to do the job .
i post here the entire code i ' ve done to optimize it and have a good result .
actually no errors but not  working as it should .

voili ^^

#Settings.DelayAfterDrag = 0.01
#Settings.DelayBeforeDrop = 0.01
Settings.MoveMouseDelay = 0.01
#Settings.ObserveScanRate = 0.1
#Settings.WaitScanRate = 0.05
#setThrowException(True)

def myHandler (event) :
        #if QueteValideeReg.exists("1413219985088.png"):
        nb_quetes_tours_faites += 1
        wait(1)
        QueteValideeReg.click() # clicks what the exists before found
        if exists(Pattern("1413716368262.png").similar(0.92)):
                click() # clicks what the exists before found
                if PrincipaleReg.exists("1413716480430.png"): # instance
                        PrincipaleReg.click("1413716513801.png")
        event.stopObserver() # we have to stop observing, since it is started 
newly in the outer loop

AsnaDetectReg =Region(1395,242,492,689)
PrincipaleReg = Region(264,246,1038,661)
QueteValideeReg = Region(704,582,518,292)
QueteAPrendreReg = Region(1252,261,289,306)
QueteTourAPrendreReg = Region(619,603,341,114)
RegionAIncrement = Region(1059,847,153,102)
RegionSkills = Region(693,866,606,152)
#######################################################
# test de quetes
#######################################################
#click(Region(1282,326,124,44)) # on declenche la quete
#wait(1)
#############################


                

                
#######################################################
# test de quetes
#######################################################
nb_quete_a_faire = 100 # nombre de quetes totales de 1 a 200
nb_quetes_tours_faites = 0
activer_grande_boucle = 1 # 1 pour activer la boucle generale , autre pour 
arreter et tester des quetes separées
while nb_quetes_tours_faites != nb_quete_a_faire and activer_grande_boucle == 1 
:
        if QueteAPrendreReg.exists(Pattern("1413220289146.png").similar(0.40)):
                try : 
QueteAPrendreReg.click(Pattern("1413220289146.png").similar(0.40))
                except FindFailed : pass
                while not QueteTourAPrendreReg.exists("1413220465870.png"):
                        wait(0.5) #on attend de prendre une nouvelle quete

        if QueteTourAPrendreReg.exists("1413220465870.png"):
                QueteTourAPrendreReg.click("1413220465870.png") # on prend la 
nouvelle quete
                wait(0.5)
                
        if QueteTourAPrendreReg.exists("1414411177236.png") :
                QueteTourAPrendreReg.click("1414411177236.png")
        else :
                click(Region(1282,326,124,44)) # on declenche la quete
                wait(1)
##########################################################################################################
# Quetes SANS delais d' attente
##########################################################################################################
        if AsnaDetectReg.exists("1413716914077.png") :
                # 1ere quete
                if PrincipaleReg.exists ("1413819051767.png") : # raid solo
                        RaidReg = Region(283,252,1007,612)
                        lettre = ""
                        while lettre != "r" and lettre != "m" : # on cree une 
boucle pour forcer a taper les bonnes lettres et sortir de la boucle .
                                lettre = input("Tapez 'r' pour raid , 'm' pour 
manuel : ")
                        if lettre == "r" : # si l' utilisateur a tapé "R" , on 
lance le raid .
                                RaidReg.click("1414165702675.png")
                                mini_raid_reg =  Region(463,378,631,461)
                                
mini_raid_reg.click(Pattern("1414166762775.png").targetOffset(-70,-22))# passes 
partout decoché ( cochés par defaut ) .
                                wait(0.5)
                                mini_raid_reg.click("1414166856506.png")# debut 
de raid
                                wait(305)
                                mini_raid_reg.click("1414167189873.png") # fin 
de raid
                                
                        elif lettre == "m" :
                                RaidReg.click("1413819186263.png")
                                if RaidReg.exists("1413819319813.png") : # si 
on a plus de vigueur on peut y aller les yeux fermés
                                        RaidReg.click("1413819385296.png")
                                        wait(2)
                                # passage en combat ou lancer le combat , MODE 
MANUEL FORCE ou PAS .
                                if 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                        print(" on continue et on passe a l ' 
attaque ")
                                        while 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                try :
                                                        
RegionSkills.click(Pattern("1413728053229.png").targetOffset(-20,-20))
                                                except FindFailed : pass
                                                wait(1)
                                else :
                                        click(Region(1282,326,124,44))
                                        wait(2)

                                #if exists("1413853219927.png") : 
click("1413853084288.png")
                                # si on arrive a la fin de l ' I S sans avoir 
validé , on sort et on voit si il faut recommencer l ' instance solo .
                                # if exist () : # ecran pour recommencer
                                        # click ()  # bouton sortir
                                        #voir si besoin de recommencer apres 
etre sorti
#########################################################################################################
               
                elif 
PrincipaleReg.exists(Pattern("1413562215209.png").similar(0.80)): # don de 
guilde
                        DonReg =Region(816,522,321,105)
                        i = 0
                        while not QueteValideeReg.exists("1413219985088.png") :
                                if i == 10 : break
                                wait(1)
                                
DonReg.paste(Pattern("1413681430900.png").similar(0.95), 
"NUM1"+"NUM0"+"NUM0"+"NUM0"+"NUM0")
                                wait(2)
                                
DonReg.click(Pattern("1413562624399.png").exact())
                                i += 1
#########################################################################################################
                elif 
PrincipaleReg.exists(Pattern("1413563111758.png").similar(0.80)): # theme astral
                        i = 0
                        astral_clic_reg = Region(323,675,423,114)
                        while not QueteValideeReg.exists("1413219985088.png") :
                                if i == 3 : break
                                astral_clic_reg.click("1413563144605.png")
                                i += 1
                        click("1413853627859.png")
                        click(Region(1282,326,124,44))
                        nb_quetes_tours_faites += 1
                        wait(0.5)
                        click(Region(1282,326,124,44))
#########################################################################################################
                elif PrincipaleReg.exists("1413563254918.png") : # frapper les 
souris
                        wait(3)
                        SourisReg =Region(559,440,491,289)
                        while not QueteValideeReg.exists("1413219985088.png"):
                                try : 
SourisReg.click(Pattern("1413565840146.png").similar(0.45).targetOffset(99,-24))
                                except FindFailed : pass                        
#########################################################################################################
                elif PrincipaleReg.exists("1413569098460.png"): # recrutement 
de soldats
                        S_TypeReg = Region(1281,345,86,20)
                        SoldatsType = S_TypeReg.text() # on esai de recup le 
type des soldats par OCR
                        print (SoldatsType)
#########################################################################################################
                elif PrincipaleReg.exists("1413718090188.png"): # incruster une 
gemme
                        pass
#########################################################################################################
                elif 
PrincipaleReg.exists(Pattern("1413626133525.png").similar(0.90)): # renforcer 
un equipement
                        # region de selection des items a renforcer
                        ItemsSelectReg = Region(795,415,321,356)
                        # item diffrent de equipés 
                        # item differents de pierre de chance
#########################################################################################################
                elif PrincipaleReg.exists 
(Pattern("1413636254168.png").similar(0.60)) : # QTE
                        wait(2) 
                        QTEReg =Region(451,492,607,71)
                        NewIcons = {}   # On crée un dictionnaire vide je dois 
y mettre le type de fleche a actionner 
                                                        # et la position de la 
fleche afin d' activer dans le bon ordre
                        def by_x(match):
                                return match.x
                        if 
QTEReg.exists(Pattern("1413631756825.png").similar(0.86)) :
                                iconsS = 
QTEReg.findAll(Pattern("1413631756825.png").similar(0.86))
                                Type = "s"
                                sorted_icons = sorted(iconsS, key=by_x)
                                for icon in sorted_icons:
                                        NewIcons[by_x(icon)] = Type   # On 
insère la position et le Type dans le dictionnaire
                        if 
QTEReg.exists(Pattern("1413631791575.png").similar(0.86)) :
                                iconsW = 
QTEReg.findAll(Pattern("1413631791575.png").similar(0.86))
                                Type = "w"
                                sorted_icons = sorted(iconsW, key=by_x)
                                for icon in sorted_icons:
                                        NewIcons[by_x(icon)] = Type   # On 
insère la position et le Type dans le dictionnaire

                        if 
QTEReg.exists(Pattern("1413631823938.png").similar(0.86)) :
                                iconsA = 
QTEReg.findAll(Pattern("1413631823938.png").similar(0.86))
                                Type = "a"
                                sorted_icons = sorted(iconsA, key=by_x)
                                for icon in sorted_icons:
                                        NewIcons[by_x(icon)] = Type   # On 
insère la position et le Type dans le dictionnaire
                        if 
QTEReg.exists(Pattern("1413631897921.png").similar(0.86)) :
                                iconsD = 
QTEReg.findAll(Pattern("1413631897921.png").similar(0.86))
                                Type = "d"
                                # sort the icons by their x coordinates and put 
them into a new variable sorted_icons
                                sorted_icons = sorted(iconsD, key=by_x)
                                for icon in sorted_icons:
                                        NewIcons[by_x(icon)] = Type   # On 
insère la position et le Type dans le dictionnaire
                                #for position , Type in NewIcons.items():
                                #print("La clé {} contient la valeur 
{}.".format(position, Type))
                                Liste = NewIcons.items()
                                ListeOrdonnee = sorted(Liste)
                                for elt , Type in ListeOrdonnee :
                                        #print(elt,Type)
                                        type(Type)
                                        wait(0.2)
                        if QTEReg.exists("1413809446550.png") :
                                try : QTEReg.click("1413809446550.png")
                                except FindFailed : pass
                        elif QueteValideeReg.exists("1413219985088.png"):
                                continue
##########################################################################################################
# Quetes AVEC delais d' attente
##########################################################################################################
        
        else :
                XiaoReg = Region(902,170,298,254)
                IrisSelectReg = Region(370,160,600,815)
                PanSelectReg = Region(429,444,680,550)
                AmaSelectReg = Region(370,160,600,815)
                EveSelectReg = Region(479,88,408,376)
                wait(3)
                if not AsnaDetectReg.exists("1413716914077.png") : # si on est 
plus a coté de asna , on se deplace donc jusqu' a trouver un repere visuel
##########################################################################################################
                      
                        # 1ere quete , multiple d' ailleurs
                        if exists ("1413625853554.png") or exists 
("1413719195483.png") or exists ("1413744665684.png") or exists 
("1413744829662.png") or XiaoReg.exists ("1413800649038.png") :
                        # cueillir des tulipes , cueillir des qumais , cueillir 
des saponaires , cueillir des bruyeres , cueillir des xiao
                                while not 
QueteValideeReg.exists("1413219985088.png"):
                                        wait(1)
##########################################################################################################
                        elif PrincipaleReg.exists("1413562376940.png") : # 
porter une lettre
                                PrincipaleReg.click("1413562376940.png")
                                wait(1)
                                if PrincipaleReg.exists("1413562460598.png"):
                                        PrincipaleReg.click("1413562460598.png")
##########################################################################################################
# Ames nivo 1 , 2 , 3 et 4
                        elif IrisSelectReg.exists ("1413628055144.png") : # ame 
nivo 1
                                click(Region(868,193,18,12)) # pour se depalcer 
au milieu des iris
                                wait(3)
                                print("iris : ame nivo 1 ")
                                combat = 0
                                while combat != 10 :
                                        print("test clic iris")
                                        try :
                                                click("1409738373876.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try :
                                                click("1413218116957.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try :
                                                click("1413218150104.png")
                                                wait(7)
                                        except FindFailed : pass
                                        # passage en combat du sylphe sur la map
                                        if 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                print(" on continue et on passe 
a l ' attaque ")
                                                combat += 1
                                                while 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                        try :
                                                                
RegionSkills.click(Pattern("1413728053229.png").targetOffset(-20,-20))
                                                                wait(1)
                                                        except FindFailed : pass
                                        else :
                                                wait(2)
                                #click("1414161394251.png")
                                #click(Region(1275,316,158,15))
##########################################################################################################
                        elif PanSelectReg.exists ("1414160629143.png") : # ame 
nivo 2
                                print("pan : ame nivo 2 ")
                                click(Region(1123,195,246,36)) # pour se 
depalcer au milieu des iris
                                combat = 0
                                while combat != 10 :
                                        print("test clic pan")
                                        try :
                                                click("1410261395349.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try :
                                                click("1410874678469.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try :
                                                click("1410875263953.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try : 
                                                click("1410875127288.png")
                                                wait(7)
                                        except FindFailed : pass
                                        # passage en combat du sylphe sur la map
                                        if 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                print(" on continue et on passe 
a l ' attaque ")
                                                combat += 1
                                                while 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                        try :
                                                                
RegionSkills.click(Pattern("1413728053229.png").targetOffset(-20,-20))
                                                        except FindFailed : pass
                                                        wait(1) 
                                        else :
                                                wait(2)
                                #click("1414161394251.png")
                                #click(Region(1275,316,158,15))
##########################################################################################################
                        elif AmaSelectReg.exists ("1413729884774.png") : # ame 
nivo 3
                                click(Region(884,187,50,18)) # pour se depalcer 
au milieu des ama
                                wait(3)
                                print("ama : ame nivo 3 ")
                                combat = 0
                                while combat != 10 :
                                        try :
                                                click("1410265059956.png")
                                                print("clic ama")
                                                wait(7)
                                        except FindFailed : pass
                                        # passage en combat du sylphe sur la map
                                        if 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                print(" on continue et on passe 
a l ' attaque ")
                                                combat += 1
                                                while 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                        try :
                                                                
RegionSkills.click(Pattern("1413728053229.png").targetOffset(-20,-20))
                                                                wait(1)
                                                        except FindFailed : pass
                                        else :
                                                wait(2)
                                #click("1414161394251.png")
                                #click(Region(1275,316,158,15))
##########################################################################################################
                        elif EveSelectReg.exists 
(Pattern("1413821772059.png").similar(0.58)) : # ame nivo 4
                                print("eve : ame nivo 4 ")
                                click(Region(868,193,18,12)) # pour se depalcer 
au milieu des eve
                                wait(3)
                                combat = 0
                                while combat != 10 :
                                        try :
                                                click("1409830797996-1.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try :
                                                click("1410896896116.png")
                                                wait(7)
                                        except FindFailed : pass
                                        try :
                                                click("1410897336804.png")
                                                wait(7)
                                        except FindFailed : pass
                                        # passage en combat du sylphe sur la map
                                        if 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                print(" on continue et on passe 
a l ' attaque ")
                                                combat += 1
                                                while 
RegionAIncrement.exists(Pattern("1410792368702-1.png").similar(0.61)) :
                                                        try :
                                                                
RegionSkills.click(Pattern("1413728053229.png").targetOffset(-20,-20))
                                                                wait(1)
                                                        except FindFailed : pass
                                        else :
                                                wait(2)
                                #click("1414161394251.png")
                                #click(Region(1275,316,158,15))
##########################################################################################################
# validation de la quete , ajout de un au compteur et on recommence au debut
        QueteValideeReg.onAppear("1413219985088-2.png", myHandler)
        observe(FOREVER) # here it waits for the image to appear
        # here it continues after the handler did his job
        print(nb_quetes_tours_faites)
        continue

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to