New question #406532 on Sikuli: https://answers.launchpad.net/sikuli/+question/406532
Hi, I'm trying to automate a game on facebook by setting an observe region. The game is quite simple. eggs drop from the top of the screen and all you have to do is catch them at the bottom of the screen. The glove that catches them its move by the mouse. All the eggs have the same shape and size but they all have different design patterns so I can't do a search for a particular egg since all of them are different and the design appears randomly. Plus there must be thousands of designs. So here is what I did: I set up a rectangular region across the screen close to the glove. I then set up an regionX.onchage event. Once an egg crosses that region the glove is put underneath it. This is not a perfect solution because you can get multiple hits so the glove tends to jump around but, its good enough. The problem is that once you collect 100 eggs a button at the bottom of the screen shows up. You need to click that button and navigate through some menus to collect some of the eggs and ignore others. Here is where I'm having problems. It seems that the regionX.onchange keeps running so I can't navigate through this menu. I need for the program to stop searching for changes completely until I exit the egg collection menu. Below is part of the code. I'm omiting the searches for other buttons since they are commented out (not being used for now) anyways. #settings Settings.ObserveScanRate = 0.4 Settings.ObserveMinChangedPixels = 65 #globals runGame = True #define regions regionX = Region(261,453,813,26) #look for changes regionA = Region(585,629,165,62) #start game button region regionB = Region(589,538,166,79) #keep playing region regionC =Region(562,532,251,144) #bag full regionD =Region(478,298,503,384) #rare eggs #Set the observations regionX.onChange(FOREVER, onchangedFunction) #define pertinent functions #Move glove to collect the eggs def onchangedFunction(event): regionX.stopObserver() #<--- stop event temporarily for ch in event.getChanges(): hover(Location(ch.x+10, ch.y)) wait(0.4) regionX.onChange(onchangedFunction) #<-- restore egg search event regionX.observe(FOREVER, background=True) #get the rarest eggs def getRareEggs(): regionD.wait(Pattern("1467043168899.png").targetOffset(-320,3), 10) while regionD.exists(Pattern("1467043168899.png").targetOffset(-320,3), 0): click(regionD.getLastMatch()) # avoids another find() operation wheel(WHEEL_DOWN, 1) wait(0.8) regionD.click("1480910851742.png") wait(0.8) #-----RUN GAME------ while(runGame): #Check if 100 eggs have been collected if regionC.exists("1481068803504.png"): regionX.stopObserver() #<-- Does this stops observations??? regionC.click(regionC.getLastMatch()) # avoids another find() operation wait(3) getRareEggs() wait(1) regionX.onChange(onchangedFunction) #<-- restore observations regionX.observe(FOREVER, background=True) -- You received this question notification because your team Sikuli Drivers is an answer contact for Sikuli. _______________________________________________ Mailing list: https://launchpad.net/~sikuli-driver Post to : sikuli-driver@lists.launchpad.net Unsubscribe : https://launchpad.net/~sikuli-driver More help : https://help.launchpad.net/ListHelp