The macro should be doing these clicks, step by step:
1. Click on the plant window in the top left corner.
2. Click north or south of your position to move. This should not be on the flax bed and if a window opens up here, you need to zoom out more.
3. Click on the flax bed you just planted to bring up the menu.
4. Pin it by looking for the pin.
5. Look for the top left corner of the window and drag it away.
If you want to get deeper into the troubleshooting talk to me or use the AutoHotkey help.
SendMode Input SetDefaultMouseSpeed, 0 WinActivate, eGenesis Client WinGetPos,,, winWidth, winHeight, A ; Flax-planting coordinates cx := (winWidth / 2) - 5 cy := (winHeight / 2) + 5 rightx := cx + 80 ;75 leftx := cx - 70 topy := cy - 70 ;65 bottomy := cy + 85 ;80 displaceloopy := cy + 52 ;redefined during use ; Window-positioning coordinates neighbourx := cx - 20 neighboury := cy + 70 neighbourx2 := (cx - (neighbourx - cx)) neighboury2 := (cy - (neighboury - cy)) ;gridx := 4 (reference only) ;gridy := 23 + 829 (852) (reference only) BedNumber := 0 BedRun := 1 Bedx := 4 Bedy := 23 GoClear := false GoHarvest := false ;HarvestRun := 0 (reference) RunLimit := 4 ;Times of HarvestRuns to be done(check with lag) FlaxBeds := 10 FlaxBedCheck := 0 TurnCornerCheck := false TurnCounter := 0 DelayFactorA := 1 ;Debugging DelayFactorB := 1 ;Debugging ZoomNumber := 5 ;Number of Mousewheel turns to zoom out with. 5 standard. return ; --- --- --- Subroutines --- --- --- PlantFlax: MouseClick, left, 60, 40 return CheckFlaxrun: FlaxBedCheck++ TurnCounter++ TurnCornerCheck := false if (TurnCounter = BedNumber) { MouseClick, left, % (rightx + 18), %displaceloopy% TurnCounter := 0 TurnCornerCheck := true FlaxBedCheck := 0 return } if (FlaxBedCheck = FlaxBeds) { MouseClick, left, % (rightx + 18), %displaceloopy% FlaxBedCheck := 0 TurnCornerCheck := true } return PinDragWindow: if (TurnCornerCheck = true) { neighboury2 := cy - 10 neighbourx2 := leftx MouseMove, %neighbourx2%, %neighboury2% } else{ MouseMove, %neighbourx%, %neighboury% } sleep (300 * %DelayFactorA%) gridx := 12 + ((BedRun - 1) * 4) gridy := 852 - ((BedRun - 1) * 3) Bedx%BedRun% := gridx Bedy%BedRun% := gridy if (TurnCornerCheck = true) { MouseClick, left, %neighbourx2%, %neighboury2% searchx1 := neighbourx2 - 5 searchx2 := neighbourx2 + 340 ;280 searchy1 := neighboury2 - 100 ;75 searchy2 := neighboury2 + 50 ;20 } else { MouseClick, left, %neighbourx%, %neighboury% searchx1 := neighbourx - 5 searchx2 := neighbourx + 340 ;280 searchy1 := neighboury - 100 ;75 searchy2 := neighboury + 50 ;20 } sleep (250 * %DelayFactorA%) ImageSearch, px1, py1, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *5 pinlooseflax2.bmp if ErrorLevel = 0 MouseClick, left, %px1%, %py1% sleep (100 * %DelayFactorA%) ImageSearch, px2, py2, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *2 tlcorner.bmp MouseMove, %px2%, %py2% if ErrorLevel = 0 MouseClickDrag, left, % (px2 + 1), % (py2 + 1), %gridx%, %gridy%, 1 sleep (75 * %DelayFactorA%) ;Check for STUPID CLICKS ImageSearch, px3, py3, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *2 tlcorner.bmp if ErrorLevel = 0 MouseClickDrag, left, % (px3 + 1), % (py3 + 1), %gridx%, %gridy%, sleep (75 * %DelayFactorA%) ImageSearch, px3, py3, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *2 tlcorner.bmp if ErrorLevel = 0 MouseClickDrag, left, % (px3 + 1), % (py3 + 1), %gridx%, %gridy%, sleep (75 * %DelayFactorA%) ImageSearch, px3, py3, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *2 tlcorner.bmp if ErrorLevel = 0 MouseClickDrag, left, % (px3 + 1), % (py3 + 1), %gridx%, %gridy%, BedRun++ if (BedRun = (BedNumber + 1)) BedRun := 1 return SeedHarvest: BedRun := 1 searchx2 := Bedx1 + 280 searchy2 := Bedy1 + 120 loop 2 { ;Scroll out, click to the left to move some. Send {WheelDown} sleep (175 * %DelayFactorB%) } MouseClick, left, 6, %cy% loop 2 { Send {WheelUp} sleep (175 * %DelayFactorB%) } loop{ ;Delay until the SeedHarvest can begin MouseGetPos, mosx, mosy MouseClick, left, %Bedx1%, %Bedy1% MouseMove %mosx%, %mosy% sleep (200 ImageSearch,,, %Bedx1%, %Bedy1%, %searchx2%, %searchy2%, *2 HarvestFlaxSeeds3.bmp if ErrorLevel = 0 break ;Break out to start harvest else sleep (1000 * %DelayFactorB%) } HarvestRun := 0 if (BedNumber = FlaxBeds * 10) ;Get to the left in case of 10 rows MouseClick, left, 6, %cy% BlockInput, MouseMove loop ;Harvest the Seeds X times { gridx := Bedx%BedRun% gridy := Bedy%BedRun% clickx := gridx + 25 clicky := gridy + 63 closex := gridx + 150 closey := gridy + 20 searchx2 := Bedx%BedRun% + 280 searchy2 := Bedy%BedRun% + 120 loop{ ;Wait for Weed option to appear, refreshing MouseClick, left, %gridx%, %gridy% sleep (150 ImageSearch,,, % Bedx%BedRun%, % Bedy%BedRun%, %searchx2%, %searchy2%, *2 HarvestFlaxSeeds3.bmp if ErrorLevel = 0 break else sleep (1250 * %DelayFactorB%) } MouseClick, left, %clickx% , %clicky% ;Click on HarvestSeeds loop{ ;Wait for flaxbed to stop displaying weed action MouseClick, left, %gridx%, %gridy% sleep (100 ImageSearch,,, % Bedx%BedRun%, % Bedy%BedRun%, %searchx2%, %searchy2%, *2 HarvestFlaxSeeds3.bmp if ErrorLevel = 1 break else sleep (150 * %DelayFactorB%) } if (HarvestRun = (RunLimit - 1)) { MouseClick, left, %clickx%, % (clicky + 16) ;Click on RIP OUT BEDS for last run MouseClick, left, %closex%, %closey% ;Close the window after } BedRun++ if (BedRun = (BedNumber + 1)) ;Start the loop again { BedRun := 1 HarvestRun++ loop 2 { ;Scroll out, click to the left to move some. Send {WheelDown} sleep (175 * %DelayFactorB%) } MouseClick, left, 6, %cy% loop 2 { Send {WheelUp} sleep (175 * %DelayFactorB%) } } if (HarvestRun = RunLimit) break } BedRun := 1 BlockInput, MouseMoveOff return FlaxHarvest: BedRun := 1 ;Delay Weeding to until the 12th bed is ready to avoid lag problems searchx2 := Bedx15 + 280 searchy2 := Bedy15 + 150 loop{ MouseGetPos, mosx, mosy MouseClick, left, %Bedx15%, %Bedy15% MouseMove %mosx%, %mosy% sleep 200 ImageSearch,,, %Bedx15%, %Bedy15%, %searchx2%, %searchy2%, WeedShrunkFlax.bmp if ErrorLevel = 0 break ;Break out to start weeding loop else sleep 750 } BlockInput, MouseMove loop ;Weeding loop { gridx := Bedx%BedRun% gridy := Bedy%BedRun% clickx := gridx + 25 clicky := gridy + 63 searchx2 := Bedx%BedRun% + 280 searchy2 := Bedy%BedRun% + 120 loop{ ;Wait for Weed option to appear, refreshing MouseClick, left, %gridx%, %gridy% sleep 100 ImageSearch,,, % Bedx%BedRun%, % Bedy%BedRun%, %searchx2%, %searchy2%, WeedShrunkFlax.bmp if ErrorLevel = 0 break else sleep 100 ImageSearch,,, % Bedx%BedRun%, % Bedy%BedRun%, %searchx2%, %searchy2%, HarvestFlax.bmp ;Check for Harvest if ErrorLevel = 0 { GoHarvest := true break } } if (GoHarvest = true) break MouseClick, left, %clickx% , %clicky% ;Click on Weed/Water loop{ ;Wait for flaxbed to stop displaying weed action MouseClick, left, %gridx%, %gridy% sleep 100 ImageSearch,,, % Bedx%BedRun%, % Bedy%BedRun%, %searchx2%, %searchy2%, WeedShrunkFlax.bmp if ErrorLevel = 1 break else sleep 100 } BedRun++ if (BedRun = (BedNumber + 1)) BedRun := 1 } ;Commence the Flax Harvesting BedRun := 1 loop{ loop{ gridx := Bedx%BedRun% gridy := Bedy%BedRun% clickx := gridx + 25 clicky := gridy + 63 closex := gridx + 150 closey := gridy + 20 searchx2 := Bedx%BedRun% + 280 searchy2 := Bedy%BedRun% + 120 MouseClick, left, %gridx%, %gridy% sleep 100 ImageSearch,,, % Bedx%BedRun%, % Bedy%BedRun%, %searchx2%, %searchy2%, HarvestFlax.bmp if ErrorLevel = 0 break else sleep 100 } MouseClick, left, %clickx% , %clicky% sleep 100 MouseClick, left, %closex% , %closey% BedRun++ if (BedRun = (BedNumber + 1)) break } BlockInput, MouseMoveOff BedRun := 1 GoClear := false GoHarvest := false return ;--- --- --- --- --- --- --- --- --- ^+r::Reload ^+p:: Pause BlockInput, MouseMoveOff return #IfWinActive, eGenesis Client NumPad5:: ;Zoom out camera loop %ZoomNumber%{ Send {WheelDown} sleep 150 } return ^NumPad5::GoSub, SeedHarvest ;Automatizing SEED HARVESTING !NumPad5::GoSub, FlaxHarvest ;Automatizing the FLAX GROWING AND HARVESTING ^NumPad8:: ;Going North IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(northwards) Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitN, OK Gui, Show return flaxCommitN: Gui, Submit Gui, Destroy WinActivate, eGenesis Client BedNumber := FlaxBeds loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% Gosub, PinDragWindow Gosub, CheckFlaxrun } return } ^NumPad2:: ;Going South IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(southwards) Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitS, OK Gui, Show return flaxCommitS: Gui, Submit Gui, Destroy WinActivate, eGenesis Client BedNumber := FlaxBeds neighboury := cy + 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% Gosub, CheckFlaxrun Gosub, PinDragWindow } return } ^NumPad9:: ;Going N-S once IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(North x1, then south x1(2 rows total)) Harvesting flax after Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitNS, OK Gui, Show return flaxCommitNS: Gui, Submit Gui, Destroy WinActivate, eGenesis Client BedNumber := FlaxBeds * 2 neighboury := cy + 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% MouseClick, left, %cx%, %topy% Gosub, CheckFlaxrun Gosub, PinDragWindow } neighboury := cy - 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %bottomy% MouseClick, left, %cx%, %bottomy% Gosub, CheckFlaxrun Gosub, PinDragWindow } GoSub, FlaxHarvest return } ^NumPad3:: ;Going N-S twice IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(Going N-S-N-S(4 rows total)) Harvesting flax after. Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitNSNS, OK Gui, Show return flaxCommitNSNS: Gui, Submit Gui, Destroy WinActivate, eGenesis Client BedNumber := FlaxBeds * 4 loop, 2 { neighboury := cy + 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% MouseClick, left, %cx%, %topy% Gosub, CheckFlaxrun Gosub, PinDragWindow } neighboury := cy - 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %bottomy% MouseClick, left, %cx%, %bottomy% Gosub, CheckFlaxrun Gosub, PinDragWindow } } GoSub, FlaxHarvest return } ^NumPad6:: ;Going N-S 8 times IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(Going N-S-N-S... for a total of 8 rows) Harvesting seeds after. Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitNS5, OK Gui, Show return flaxCommitNS5: Gui, Submit Gui, Destroy WinActivate, eGenesis Client BedNumber := FlaxBeds * 8 displaceloopy := cy + 30 loop, 4 { neighboury := cy + 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% MouseClick, left, %cx%, %topy% Gosub, CheckFlaxrun Gosub, PinDragWindow } neighboury := cy - 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %bottomy% MouseClick, left, %cx%, %bottomy% Gosub, CheckFlaxrun Gosub, PinDragWindow } } displaceloopy := cy + 52 GoSub, SeedHarvest return } ^NumPad4:: ;Going N-S 8 times UNATTENDED HOLY SHIT IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(Going N-S-N-S... for a total of 8 rows) Harvesting seeds after AND LOOPING UNTIL RELOAD. Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitNS4, OK Gui, Show return flaxCommitNS4: Gui, Submit Gui, Destroy WinActivate, eGenesis Client loop{ BedNumber := FlaxBeds * 8 displaceloopy := cy + 30 loop, 4 { neighboury := cy + 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% MouseClick, left, %cx%, %topy% Gosub, CheckFlaxrun Gosub, PinDragWindow } neighboury := cy - 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %bottomy% MouseClick, left, %cx%, %bottomy% Gosub, CheckFlaxrun Gosub, PinDragWindow } } displaceloopy := cy + 52 GoSub, SeedHarvest sleep 3000 } return } ^NumPad1:: ;Going N-S 10 times UNATTENDED HOLY SHIT IfWinExist eGenesis Client { WinActivate Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How many flax beds in a row?(Going N-S-N-S... for a total of 10 rows) Harvesting seeds after AND LOOPING UNTIL RELOAD. Gui, Add, Edit, Number vFlaxBeds, %FlaxBeds% Gui, Add, Button, default gflaxCommitNS1, OK Gui, Show return flaxCommitNS1: Gui, Submit Gui, Destroy WinActivate, eGenesis Client loop{ BedNumber := FlaxBeds * 10 displaceloopy := cy + 30 loop, 5 { neighboury := cy + 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %topy% MouseClick, left, %cx%, %topy% Gosub, CheckFlaxrun Gosub, PinDragWindow } neighboury := cy - 70 loop, %FlaxBeds% { Gosub, PlantFlax MouseClick, left, %cx%, %bottomy% MouseClick, left, %cx%, %bottomy% Gosub, CheckFlaxrun Gosub, PinDragWindow } } displaceloopy := cy + 52 GoSub, SeedHarvest sleep 3000 } return }