It is by far the most useful for seed harvesting and for best efficiency, using 4 beds in 10 rows = 40 beds should be ideal. The maximum number of beds for harvesting flax should be somewhere between 30 and 40, but don't hold me to it. Client-side lag spikes will solidly mess this macro and its window organization up, so be prepared to babysit it a little if worse comes to worst. Usually, if you're harvesting seeds and the macro skips a beat you can simply pause, add one on the side, and rearrange the windows later to fit. The positioning has 1 pixel tolerance and only one window may be assigned to one bed or the macro will get stuck in the loop.
The macro is meant to be used at 1280x1024 resolution. You will have to adjust the pixel shiftings for other resolutions.
You also need the pictures that are attached to this page in the same directory as the macro. Controls:
If you're Sadeh or need a version to debug with, try the DebuggingVersion.
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 - 75
topy := cy - 70 ;65
bottomy := cy + 85 ;80
displaceloopy := cy + 52 ;redefined during use
; Window-positioning coordinates
neighbourx := cx + 20
neighboury := cy + 10
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 seed harvest runs to be done
FlaxBeds := 10
FlaxBedCheck := 0
TurnCornerCheck := false
TurnCounter := 0
return
; --- --- --- Subroutines --- --- ---
PlantFlax:
MouseClick, left, 60, 40
return
CheckFlaxrun:
FlaxBedCheck++
TurnCounter++
TurnCornerCheck := false
if (TurnCounter = BedNumber)
{
MouseClick, left, % (rightx + 3), 300
TurnCounter := 0
TurnCornerCheck := true
FlaxBedCheck := 0
return
}
if (FlaxBedCheck = FlaxBeds)
{
MouseClick, left, % (rightx + 3), %displaceloopy%
FlaxBedCheck := 0
TurnCornerCheck := true
}
return
PinDragWindow:
if (TurnCornerCheck = true)
MouseMove, %neighbourx2%, %neighboury2%
else
MouseMove, %neighbourx%, %neighboury%
sleep 100
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 150
ImageSearch, px1, py1, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *5 pinlooseflax2.bmp
if ErrorLevel = 0
MouseClick, left, %px1%, %py1%
else
Send fuckpin
sleep 75
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 ;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
ImageSearch, px3, py3, %searchx1%, %searchy1%, %searchx2%, %searchy2%, *2 tlcorner.bmp
if ErrorLevel = 0
MouseClickDrag, left, % (px3 + 1), % (py3 + 1), %gridx%, %gridy%,
sleep 75
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
}
MouseClick, left, 6, %cy%
loop 2 {
Send {WheelUp}
sleep 175
}
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
}
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
}
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
}
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
}
MouseClick, left, 6, %cy%
loop 2 {
Send {WheelUp}
sleep 175
}
}
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 5{
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 + 10
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 + 10
loop, %FlaxBeds%
{
Gosub, PlantFlax
MouseClick, left, %cx%, %topy%
MouseClick, left, %cx%, %topy%
Gosub, CheckFlaxrun
Gosub, PinDragWindow
}
neighboury := cy - 10
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 + 10
loop, %FlaxBeds%
{
Gosub, PlantFlax
MouseClick, left, %cx%, %topy%
MouseClick, left, %cx%, %topy%
Gosub, CheckFlaxrun
Gosub, PinDragWindow
}
neighboury := cy - 10
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 + 10
loop, %FlaxBeds%
{
Gosub, PlantFlax
MouseClick, left, %cx%, %topy%
MouseClick, left, %cx%, %topy%
Gosub, CheckFlaxrun
Gosub, PinDragWindow
}
neighboury := cy - 10
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 BALLS
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 + 10
loop, %FlaxBeds%
{
Gosub, PlantFlax
MouseClick, left, %cx%, %topy%
MouseClick, left, %cx%, %topy%
Gosub, CheckFlaxrun
Gosub, PinDragWindow
}
neighboury := cy - 10
loop, %FlaxBeds%
{
Gosub, PlantFlax
MouseClick, left, %cx%, %bottomy%
MouseClick, left, %cx%, %bottomy%
Gosub, CheckFlaxrun
Gosub, PinDragWindow
}
}
displaceloopy := cy + 52
GoSub, SeedHarvest
sleep 2000
}
return
}
| Name | Creator | Date | Size | Description |
|---|---|---|---|---|
| flaxpictures.rar | Spoiled | July 31, 2006 2:22 pm | 3786 | Unpack to the same directory as the macro for it to work. |