The Wiki for Tale 4 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

Difference between revisions of "User:Cegaiel/Macros/FlaxHammock/Code"

From A Tale in the Desert
Jump to navigationJump to search
Line 3: Line 3:
 
;The AHK icon in system tray will turn red while paused.
 
;The AHK icon in system tray will turn red while paused.
 
;Ctrl+R to reload script
 
;Ctrl+R to reload script
;Date: 10/27/2010
+
;Date 3/17/2010
;Last Update: 12/03/2010
+
;Last Update: 12/13/2010
 
;Author: Cegaiel
 
;Author: Cegaiel
  
;Info from Wiki:
 
;Alcyone - Topaz
 
;Celeano - Emerald
 
;Maia - Ruby
 
;Merope - Sapphire
 
;Sterope - Quartz
 
;Taygete - Opal
 
;Sinai - Diamond
 
  
  
;Make sure the OK.PNG file, included in the zip, is located in the same folder (directory) as the macro.
+
;Wheat is not supported due to the way it brings up a menu and makes you manually select which wheat you are drying
  
 +
;This is the times based on using 1 hammock. However, the more hammocks you have, the less seconds you will need
 +
;The reason is because the timer doesn't start until the last hammock is loaded.
 +
;If you have 20 hammocks, then it might take 10 seconds to load them all. In that case it would be 10 seconds less
  
 +
;Rotten flax = 2 Teppy Mins (2:13 real time / 133 seconds)
 +
;Grass = 10 Teppy Mins (11:06 real time / 666 seconds)
 +
;Papy = 4 Teppy Mins (4:26 real time / 266 seconds)
  
  
; // START CONFIGURATION AREA
+
;Time in seconds,
 +
sFlax = 133
 +
sGrass = 666
 +
sPapy = 266
  
;Set the speed in microseconds (100 = 1/10th second, 1000 = 1 second, etc)
 
;If you got a slower computer or lag, then try raising it 50 or 100 at a time, ie 200, 250, 300
 
  
;This is the speed that it selects/highlights your ore stones
 
;If you fail to see all the stones getting selected, or getting "Ore Busy" popup messages, etc
 
  
Delay = 125  ;Safe (lag) is 200+, Fast is 100 (fast computer, no lag) - I use 125 personally.
 
  
  
;If you have problems with it not closing the popup, then try adjusting this number higher.
+
// CONFIGURATION
  
PopUpDelay = 250  ;Safe (lag) is 250+, Fast is 150 (fast computer, no lag)
 
  
 +
;Set Delay to 100-150 for fast computer/not much lag. 250 for slower computer.
  
 +
Delay = 125
  
  
; // END CONFIGURATION AREA
 
  
 +
;Set PopupDelay to 150-200 for fast computer, about 250+ for slower computers (or lots of lag)
  
 +
PoupDelay = 200
  
IfWinExist eGenesis Client
 
{
 
  
WinActivate, eGenesis Client
+
// END CONFIGURATION
WinWait, eGenesis Client
 
WinGetActiveStats, win_Title, Xmax, Ymax, win_Xpos, win_Ypos
 
  
;Get coordinates, for your resolutions'  X,Y location of the popups (OK button) that will occur
 
  
later.
 
CenterX := Floor(Xmax/2)
 
CenterY := Floor(Ymax/2)+103
 
  
  
;Offsets the search coordinates for OK popup for the imagesearch in Popup sub.
 
;ImageSearch method (Popup sub)
 
ClickPopX1 := CenterX - 40
 
ClickPopY1 := CenterY - 30
 
  
ClickPopX2 := CenterX + 30
+
;Get coordinates, for your resolutions'  X,Y location of the popups (OK button) that will occur
ClickPopY2 := CenterY + 30
 
  
 +
later.
 +
CenterX := Floor(Xmax/2)
 +
CenterY := Floor(Ymax/2)+105
  
} else {
 
BlockInput, MouseMoveOff
 
MsgBox, eGenesis Client not running, aborting...
 
Exit
 
}
 
  
  
 +
IfWinExist eGenesis Client
 +
{
 +
WinActivate
 +
Gui, +AlwaysOnTop +ToolWindow
 +
Gui, Add, Text,, What are you drying?
 +
Gui, Add, DropDownList, vWord Choose1, Grass|Rotten Flax|Fertile Papyrus|Sterile Papyrus
 +
Gui, Add, Text,, Qty you have in inventory:
 +
Gui, Add, Edit, vQty wp number,
 +
Gui, Add, Text,, `nHammock Max capacity:
 +
Gui, Add, Text,, Grass: 200  (2 Teppy Min max)`nPapyrus: 20  (4 Teppy Min max)`nRotten Flax: 10  (2 Teppy Min
  
Start:
+
max)`n
MineNum := 0
+
Gui, Add, Button, gRecord, Next
BlockInput, MouseMoveOff
+
Gui, Show, x0 y25
 +
return
  
Start2:
 
  
BlockInput, MouseMoveOff
+
Record:
 +
Gui, Submit
 +
Gui, Destroy
 
Gui, +AlwaysOnTop +ToolWindow
 
Gui, +AlwaysOnTop +ToolWindow
 
Gui, Font, bold
 
Gui, Font, bold
Gui, Add, Text,, Choose Pattern:
+
Gui, Add, Text, vMineNumText, Record hammock locations
Gui, Font, norm
 
 
 
Gui, Add, DropDownList, vPattern Choose1,Select one|6 Color (1 Pair)|5 Color (2 Pair)|4 Color (3 Pair)|5 Color
 
 
 
(Triple)|4 Color (Triple + Pair)|4 Color (Quadruple)|3 Color (Quad + Pair)|3 Color (Quintuple)|7 Color
 
 
 
Gui, Font, bold
 
Gui, Add, Text, vMineNumText, `n%MineNum% of 7 ore stones captured
 
 
Gui, Font, norm
 
Gui, Font, norm
 
 
 
 
Gui, Add, Text,,
 
Gui, Add, Text,,
 
( LTrim
 
( LTrim
Hover and Middle Click (Mouse Wheel) over all your ore stones.
+
Hover and middle-click (Click mouse-wheel) on each hammock, one by one,
 +
until you've clicked on all the hammocks you want to use. Then click the OK button.
  
Choose highest number of matching colored ore stones First!
+
(Drag this box out of the way if any hammocks are hidden)
Click Help for a detailed explanation.
 
)
 
  
 +
Make sure you chat is minimized and that your screen is locked (Alt+L)
  
 +
AFTER setting hammock locations, Press OK...
  
 +
)
  
if (Pattern == "")
+
Gui, Add, Button, default gMineSetLoops, OK
{
+
Gui, Show, x0 y25
Gui, Add, Text,,Last Pattern: N/A`nTime: N/A  (Current Delay: %Delay%)`nSets: N/A`n
 
} else {
 
perSet := Round(seconds / sets ,2)
 
Seconds := Round(Seconds,2)
 
Gui, Add, Text,,Last Pattern: %Pattern%`nPattern Time: %seconds%s (%perSet%s per set)  @ %Delay% delay`nPattern
 
  
Sets: %Sets%`n
+
MineNum = 0
 +
PerCycle = 0
 +
Dried = 0
  
;The program might stop working after 15 or so pulls. Not sure what causes this. Has to be a problem with ahk.
+
SetDefaultMouseSpeed, 0
;When it does happen, the Pattern Time shows 0.00s, so in this case, we reload script
 
;You will know when this reload occurs, because the values of Last Pattern, Pattern Time and sets will show N/A
 
 
 
if (Seconds = 0)
 
{
 
Msgbox, Debug Mode: Program freeze detected, Reloading script...
 
RELOAD
 
}
 
 
 
}
 
 
 
Gui, Add, Button, default gMineSetLoops, START
 
 
 
Gui, Add, Button, gHelp, HELP
 
Gui, Add, Button, gOops, Oops
 
 
 
;GUI Upper Left Corner
 
;Gui, Show, x0 y25
 
;GUI Upper Right Corner at 1280x1024
 
Gui, Show, x952 y25
 
 
 
WinActivate, eGenesis Client
 
  
  
Line 151: Line 112:
 
KeyWait, MButton
 
KeyWait, MButton
 
MouseGetPos, TestX, TestY, WinHandle
 
MouseGetPos, TestX, TestY, WinHandle
 
 
if (WinHandle = GameWinHandle)
 
if (WinHandle = GameWinHandle)
 
{
 
{
Line 163: Line 123:
 
}
 
}
 
return
 
return
 
  
 
MineRecord:
 
MineRecord:
 
MineNum++
 
MineNum++
 
MouseGetPos, MineX%MineNum%, MineY%MineNum%
 
MouseGetPos, MineX%MineNum%, MineY%MineNum%
if MineNum > 7
+
GuiControl, Text, MineNumText, %MineNum% hammocks captured
{
+
TotalHammocks := MineNum
Gui, Destroy
 
BlockInput, MouseMoveOff
 
Msgbox, You have selected too many stones. 7 is the maximum.`n`nTo ensure you did not make a mistake, the script
 
 
 
will now be reloaded...`n`nYou must start over, click OK to reload script.
 
RELOAD
 
}
 
 
 
GuiControl, Text, MineNumText, `n%MineNum% of 7 ore stones captured
 
 
return
 
return
  
Line 184: Line 134:
  
  
Oops:
+
MineSetLoops:
 
+
Gui, Submit
Pattern := LastPattern
 
 
Gui, Destroy
 
Gui, Destroy
Gosub, Main
 
  
 +
Msgbox, Make sure your chat is MINIMIZED!`n`nAfter verifying chat is minimized, Click OK to proceed...
  
 +
Gui, +AlwaysOnTop +ToolWindow
 +
Gui, Font, bold
  
 +
Gui, Add, Text, vMineCycleText, 5 seconds countdown to drag this window out of way`n`n`n`n
 +
Gui, Show, x0 y25
 +
GuiControl, Text, MineCycleText, 5 seconds countdown to drag this window out of way`n`n`n`n
  
  
 
+
StartDelay = 5
MineSetLoops:
+
;You got 5 seconds to drag the status window out of the way
 
+
Loop, %StartDelay%
 
 
 
 
if (MineNum <> 7)
 
 
{
 
{
Gui, Destroy
+
GuiControl, Text, MineCycleText, %StartDelay%s countdown to drag this window out of way`n`n`n`n
BlockInput, MouseMoveOff
+
Delay --
Msgbox, Not enough ore stones. Sandmining requires 7 ore stones.`n`nTo ensure you did not make a mistake, the
+
Sleep 1000
 
 
script will now be reloaded...`n`nYou must start over, click OK to reload script.
 
RELOAD
 
} else {
 
Gui, Submit
 
Gui, Destroy
 
 
}
 
}
 
 
 
 
 
Main:
 
 
 
 
  
 
SetDefaultMouseSpeed, 0
 
SetDefaultMouseSpeed, 0
Line 225: Line 161:
  
  
LastPattern := Pattern
 
Seconds := 0
 
Counter := 0
 
  
SetTimer, Counter, 10
+
if (Word == "Rotten Flax") {
 +
Hammock := "F"
 +
Seconds := sFlax
 +
Cycles := Ceil(Qty / (10 * TotalHammocks))
 +
PerHammock := 10
 +
minutes_eta = 2
 +
seconds_eta = 13
  
 +
} else if (Word == "Grass") {
 +
Hammock := "S"
 +
Seconds := sGrass
 +
Cycles := Ceil(Qty / (200 * TotalHammocks))
 +
PerHammock := 200
 +
minutes_eta = 11
 +
seconds_eta = 6
  
Stone4 = 0
+
} else if (Word == "Fertile Papyrus") {
Stone5 = 0
+
Hammock := "P"
Stone6 = 0
+
Seconds := sPapy
Stone7 = 0
+
Cycles := Ceil(Qty / (20 * TotalHammocks))
 +
PerHammock := 20
 +
minutes_eta = 4
 +
seconds_eta = 26
  
  
 +
} else if (Word == "Sterile Papyrus") {
 +
Hammock := "N"
 +
Seconds := sPapy
 +
Cycles := Ceil(Qty / (20 * TotalHammocks))
 +
PerHammock := 20
 +
minutes_eta = 4
 +
seconds_eta = 26
 +
}
  
  
 +
PerCycle := PerHammock * MineNum
 +
Remaining := Cycles
  
BlockInput, MouseMove
+
loop, %Cycles%
 +
{
  
  
 +
WinActivate, eGenesis Client
 +
MineNum = 1
 +
MouseGetPos, OldMX, OldMY
  
;All of the if / else if statements of the 10 possible color combos...
 
  
 +
;Dry Hammock Loop
 +
loop, %TotalHammocks% {
  
if (pattern == "7 Color")
+
WinActivate, eGenesis Client
{
 
;KEY:
 
;A:1
 
;B:2
 
;C:3
 
;D:4
 
;E:5
 
;F:6
 
;G:7
 
  
 +
;BlockInput, MouseMove
 +
GuiControl, Text, MineCycleText, Drying %Word% -  Hammock: %MineNum%
 +
MinePosX := MineX%MineNum%
 +
MinePosY := MineY%MineNum%
 +
MouseMove, %MinePosX%, %MinePosY%, 0
 +
sleep %Delay%
 +
Send {%Hammock%}
 +
Sleep, %Delay%
 +
MineNum++
 +
GoSub, Popup
 +
}
  
Sets := 8
 
;Set1: A, B, C, D, E, F
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 4
 
Stone5 := 5
 
Stone6 := 6
 
GoSub, PatternSet
 
  
;Set2: A, B, C, D, E, G
+
MouseMove, %OldMX%, %OldMY%, 0
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 4
 
Stone5 := 5
 
Stone6 := 7
 
GoSub, PatternSet
 
  
;Set3: A, B, C, D, F, G
+
SecondsCountDown := Seconds
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 4
 
Stone5 := 6
 
Stone6 := 7
 
GoSub, PatternSet
 
  
;Set4: A, B, C, E, F, G
+
loop, %Seconds% {
Stone1 := 1
+
Gui, Font, bold
Stone2 := 2
+
GuiControl, Text, MineCycleText, %minutes_eta%m %seconds_eta%s drying time remaining
Stone3 := 3
 
Stone4 := 5
 
Stone5 := 6
 
Stone6 := 7
 
GoSub, PatternSet
 
  
;Set5: A, B, D, E, F, G
+
(%Word%)`n`n%Remaining% of %cycles% cycles remaining to process `n`nDried: %Dried% of %Qty%
Stone1 := 1
+
Gui, Font, norm
Stone2 := 2
+
Gui, Add, Text,,
Stone3 := 4
+
( LTrim
Stone4 := 5
+
Stone5 := 6
+
%Remaining% cycles remaining to process: %Word%`nDried: %Dried%
Stone6 := 7
+
)
GoSub, PatternSet
 
  
;Set6: A, C, D, E, F, G
+
;SecondsCountdown := SecondsCountdown - 1
Stone1 := 1
+
sleep 1000
Stone2 := 3
+
  Gosub, Timer
Stone3 := 4
+
}
Stone4 := 5
+
Stone5 := 6
+
MineNum = 1
Stone6 := 7
 
GoSub, PatternSet
 
  
;Set7: B, C, D, E, F, G
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 4
 
Stone4 := 5
 
Stone5 := 6
 
Stone6 := 7
 
GoSub, PatternSet
 
  
;Set8: A, B, C, D, E, F, G Breaks all 7 stones
+
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 4
 
Stone5 := 5
 
Stone6 := 6
 
Stone7 := 7
 
GoSub, PatternSet
 
}
 
  
  
 +
;Take Dried Items
  
else if (pattern == "6 Color (1 Pair)")
+
loop, %TotalHammocks% {
{
 
;KEY: Got 100%
 
;A-1 = 1
 
;A-2 = 2
 
;B = 3
 
;C = 4
 
;D = 5
 
;E = 6
 
;F = 7
 
  
Sets := 14
+
WinActivate, eGenesis Client
  
;Set1: A-1, B, C, F
+
GuiControl, Text, MineCycleText, Taking %Word% -  Hammock: %MineNum%
Stone1 := 1
+
MinePosX := MineX%MineNum%
Stone2 := 3
+
MinePosY := MineY%MineNum%
Stone3 := 4
+
MouseMove, %MinePosX%, %MinePosY%, 0
Stone4 := 7
+
Sleep, %Delay%
GoSub, PatternSet
+
Send {T}
 +
Sleep, %Delay%
 +
GoSub, Popup
 +
MineNum++
 +
}
  
;Set2: A-1, D, E
+
Remaining --
Stone1 := 1
+
Dried := Dried + PerCycle
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
  
;Set3: A-1, C, D, E
+
;Set the minutes/seconds countdown again, for next cycle
Stone1 := 1
+
if (Word == "Rotten Flax") {
Stone2 := 4
+
minutes_eta = 2
Stone3 := 5
+
seconds_eta = 13
Stone4 := 6
+
} else if (Word == "Grass") {
GoSub, PatternSet
+
minutes_eta = 11
 +
seconds_eta = 6
 +
} else if (Word == "Fertile Papyrus") {
 +
minutes_eta = 4
 +
seconds_eta = 26
 +
} else if (Word == "Sterile Papyrus") {
 +
minutes_eta = 4
 +
seconds_eta = 26
 +
}
  
;Set4: A-1, B, F
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
  
;Set5: A-1, D, E, F
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
  
;Set6: A-1, B, C
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
  
;Set7: A-1, B, E, F This workload will crumble stone A-1
+
GuiControl, Text, MineCycleText, 2s Pause, Hit Ctrl+P to STOP HAMMOCKS
Stone1 := 1
+
Sleep 2000
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
  
;Set8: A-2, C, D
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
  
;Set9: A-2, D, E
+
}
Stone1 := 2
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
  
;Set10: A-2, B, C, F
+
Gui, Destroy
Stone1 := 2
+
Gui, Add, Text,, Middle-click on this window to end the script.
Stone2 := 3
+
Gui, Show
Stone3 := 4
+
return
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set11: A-2, C, F
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set12: A-2, B, E, D
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 5
 
GoSub, PatternSet
 
 
 
;Set13: A-2, B, E This workload will crumble stone B & E
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set14: A-2, C, D, F This workload will crumble the remaining stones
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 7
 
GoSub, PatternSet
 
}
 
 
 
 
 
 
 
else if (pattern == "5 Color (2 Pair)")
 
{
 
;KEY: Hit 100%
 
;A-1: 1
 
;A-2: 2
 
;B-1: 3
 
;B-2: 4
 
;C: 5
 
;D: 6
 
;E: 7
 
 
 
Sets := 15
 
 
 
;Set1: C, D, E
 
Stone1 := 5
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set2: C, A-1, B-1
 
Stone1 := 5
 
Stone2 := 1
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set3: C, A-1, B-2
 
Stone1 := 5
 
Stone2 := 1
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set4: C, A-2, B-1
 
Stone1 := 5
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set5: C, A-2, B-2
 
Stone1 := 5
 
Stone2 := 2
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set6: D, A-1, B-1
 
Stone1 := 6
 
Stone2 := 1
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set7: D, A-1, B-2
 
Stone1 := 6
 
Stone2 := 1
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set8: D, A-2, B-1
 
Stone1 := 6
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set9: D, A-2, B-2
 
Stone1 := 6
 
Stone2 := 2
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set10: E, A-1, B-1
 
Stone1 := 7
 
Stone2 := 1
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set11: E, A-1, B-2
 
Stone1 := 7
 
Stone2 := 1
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set12: E, A-2, B-1
 
Stone1 := 7
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set13: E, A-2, B-2
 
Stone1 := 7
 
Stone2 := 2
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set14: A-1, B-1, C, D, E Breaks A-1 & B-1
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 5
 
Stone4 := 6
 
Stone5 := 7
 
GoSub, PatternSet
 
 
 
;Set15: A-2, B-2, C, D, E Breaks the remaining 5 stones
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 6
 
Stone5 := 7
 
GoSub, PatternSet
 
}
 
 
 
 
 
else if (pattern == "5 Color (Triple)")
 
{
 
;KEY:
 
;A-1: 1
 
;A-2: 2
 
;A-3: 3
 
;B: 4
 
;C: 5
 
;D: 6
 
;E: 7
 
 
 
Sets := 14
 
 
 
;Set1: A-1, B, C
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set2: A-1, B, D
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set3: A-1, B, E
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set4: A-1, C, D
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set5: A-1, C, E
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set6: A-1, D, E
 
Stone1 := 1
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set7: A-2, B, C
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set8: A-2, B, D
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set9: A-2, B, E
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set10: A-2, C, D
 
Stone1 := 2
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set11: A-2, C, E
 
Stone1 := 2
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set12: A-2, D, E
 
Stone1 := 2
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
 
 
;Set13: A-1, A-2, A-3 Breaks A-1 and A-2
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
Stone5 := 0
 
GoSub, PatternSet
 
 
 
;Set14: A-3, B, C, D, E Breaks B, C, D, and E
 
Stone1 := 3
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 6
 
Stone5 := 7
 
GoSub, PatternSet
 
}
 
 
 
 
 
else if (pattern == "4 Color (3 Pair)")
 
{
 
;KEY:
 
;A-1 = 1
 
;A-2 = 2
 
;B-1 = 3
 
;B-2 = 4
 
;C-1 = 5
 
;C-2 = 6
 
;D = 7
 
 
 
Sets := 15
 
 
 
;Set1: A-1, B-1, C-1
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set2: A-2, B-2, C-2, D
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set3: A-1, B-1, C-2
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set4: A-2, B-2, C-1, D
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set5: A-1, B-2, C-1
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set6: A-2, B-1, C-2, D
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set7: A-1, B-2, C-2
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
 
 
;Set8: A-2, B-1, C-1, D
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 5
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set9: A-2, B-1, C-1
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set10: A-1, B-2, C-2, D
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set11: A-2, B-1, C-2
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set12: A-1, B-2, C-1, D
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set13: A-2, B-2, C-1
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set14: A-1, B-1, C-2, D
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
 
 
 
 
;New (15th) pattern to break last 3 stones, wiki was partially incorrect. Thanks Setheri for discovering this :)
 
;Set15: A-1, B-2, C-2
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
}
 
 
 
 
 
 
 
 
 
else if (pattern == "4 Color (Triple + Pair)")
 
{
 
;KEY:
 
;A-1: 1
 
;A-2: 2
 
;A-3: 3
 
;B-1: 4
 
;B-2: 5
 
;C: 6
 
;D: 7
 
 
 
 
 
Sets := 12
 
 
 
;Set1: A-1, A-2, A-3
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set2: A-1, B-1, C
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set3: A-1, B-1, D
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set4: A-1, B-2, C
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set5: A-1, B-2, D
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set6: A-1, C, D
 
Stone1 := 1
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set7: A-2, B-1, C
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set8: A-2, B-1, D
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set9: A-3, B-1, C
 
Stone1 := 3
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set10: A-3, B-1, D
 
Stone1 := 3
 
Stone2 := 4
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set11: A-2, C, D
 
Stone1 := 2
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set12: A-1, B-1, C, D Breaks these 4 stones
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
}
 
 
 
 
 
else if (pattern == "4 Color (Quadruple)")
 
{
 
;KEY:
 
;A-1: 1
 
;A-2: 2
 
;A-3: 3
 
;A-4: 4
 
;B: 5
 
;C: 6
 
;D: 7
 
 
 
 
 
Sets := 15
 
 
 
;Set1: A-1, B, C
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set2: A-1, B, D
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set3: A-1, C, D
 
Stone1 := 1
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set4: A-2, B, C
 
Stone1 := 2
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set5: A-2, B, D
 
Stone1 := 2
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set6: A-2, C, D
 
Stone1 := 2
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set7: A-3, B, C
 
Stone1 := 3
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set8: A-3, B, D
 
Stone1 := 3
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set9: A-3, C, D
 
Stone1 := 3
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set10: A-4, B, C, D Breaks B, C, D
 
Stone1 := 4
 
Stone2 := 5
 
Stone3 := 6
 
Stone4 := 7
 
GoSub, PatternSet
 
 
 
;Set11: A-1, A-2, A-3
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set12: A-1, A-2, A-4
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set13: A-1, A-3, A-4
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set14: A-2, A-3, A-4
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set15: A-1, A-2, A-3, A-4 Breaks A-1, A-2, A-3
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 4
 
GoSub, PatternSet
 
}
 
 
 
 
 
else if (pattern == "*3 Color (Triple + 2 Pair)")
 
{
 
Sets := 0
 
BlockInput, MouseMoveOff
 
Msgbox, No single stone can be worked 7 times on this pattern.`n`nConcede and just get a new workload...
 
}
 
 
 
 
 
 
 
 
 
 
 
else if (pattern == "3 Color (Quad + Pair)")
 
{
 
;KEY
 
;A-1: 1
 
;A-2: 2
 
;A-3: 3
 
;A-4: 4
 
;B-1: 5
 
;B-2: 6
 
;C: 7
 
;D: 8
 
 
 
 
 
Sets := 7
 
 
 
;Set1: A-1, B-1, C
 
Stone1 := 1
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set2: A-1, B-2, C
 
Stone1 := 1
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set3: A-2, B-1, C
 
Stone1 := 2
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set4: A-2, B-2, C
 
Stone1 := 2
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set5: A-3, B-1, C
 
Stone1 := 3
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set6: A-3, B-2, C
 
Stone1 := 3
 
Stone2 := 6
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
 
;Set7: A-4, B-1, C
 
Stone1 := 4
 
Stone2 := 5
 
Stone3 := 7
 
Stone4 := 0
 
GoSub, PatternSet
 
 
}
 
}
 
 
 
else if (pattern == "3 Color (Quintuple)")
 
{
 
;5 of same color
 
 
;KEY:
 
;A-1: 1
 
;A-2: 2
 
;A-3: 3
 
;A-4: 4
 
;A-5: 5
 
;B: 6
 
;C: 7
 
 
Sets := 11
 
 
;Set1: A-1, A-2, A-3
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set2: A-1, A-2, A-4
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set3: A-1, A-2, A-5
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set4: A-1, A-3, A-4
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set5: A-1, A-3, A-5
 
Stone1 := 1
 
Stone2 := 3
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set6: A-1, A-4, A-5
 
Stone1 := 1
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set7: A-2, A-3, A-4
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 4
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set8: A-2, A-3, A-5
 
Stone1 := 2
 
Stone2 := 3
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set9: A-2, A-4, A-5
 
Stone1 := 2
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set10: A-3, A-4, A-5
 
Stone1 := 3
 
Stone2 := 4
 
Stone3 := 5
 
Stone4 := 0
 
GoSub, PatternSet
 
 
;Set11: A-1, A-2, A-3, A-4, A-5 Breaks A-1, A-2, A-3, A-4, A-5
 
Stone1 := 1
 
Stone2 := 2
 
Stone3 := 3
 
Stone4 := 4
 
Stone5 := 5
 
 
GoSub, PatternSet
 
}
 
 
 
else
 
{
 
BlockInput, MouseMoveOff
 
Msgbox, You did not choose a valid pattern, please try again...`n`nNote your selected stones are still in memory, simply
 
 
choose the pattern and immediately hit START
 
Gosub, Start2
 
}
 
 
 
 
;Bring up the Menu again (Force Restart)
 
Gosub, Start
 
return
 
 
 
 
 
 
PatternSet:
 
Sleep 100
 
GoSub, Popup  ;This one checks, if another popup, beside the one at the end of this sub, exists. Likely "Ore is busy"
 
 
popup
 
 
;if ErrorLevel = 0
 
;Msgbox, Another Popup`n`nConsider aborting the script here, this might suggest a "Ore stone busy message"?
 
 
MouseMove, MineX%Stone1%, MineY%Stone1%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
 
MouseMove, MineX%Stone2%, MineY%Stone2%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
 
MouseMove, MineX%Stone3%, MineY%Stone3%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
 
 
if Stone4 > 0
 
{
 
MouseMove, MineX%Stone4%, MineY%Stone4%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
}
 
 
if Stone5 > 0
 
{
 
MouseMove, MineX%Stone5%, MineY%Stone5%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
}
 
 
if Stone6 > 0
 
{
 
MouseMove, MineX%Stone6%, MineY%Stone6%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
}
 
 
if Stone7 > 0
 
{
 
MouseMove, MineX%Stone7%, MineY%Stone7%
 
Sleep %Delay%
 
Send {A}
 
Sleep %Delay%
 
}
 
 
 
 
Send {S}
 
Sleep %Delay%
 
 
GoSub, Popup
 
 
return
 
 
  
  
  
 
Popup:
 
Popup:
 
ImageSearch, PopX, PopY, ClickPopX1, ClickPopY1, ClickPopX2, ClickPopY2, *50 OK.PNG
 
if ErrorLevel = 0
 
{
 
NewX := PopX + 3
 
NewY := PopY + 3
 
 
MouseMove, %NewX%, %NewY%
 
Sleep %PopupDelay%
 
Click
 
Sleep %PopupDelay%
 
}
 
 
 
Sleep 300
 
 
;Run this twice to ensure a laggy popup didn't get closed.
 
ImageSearch, PopX, PopY, ClickPopX1, ClickPopY1, ClickPopX2, ClickPopY2, *50 OK.PNG
 
if ErrorLevel = 0
 
{
 
NewX := PopX + 3
 
NewY := PopY + 3
 
 
MouseMove, %NewX%, %NewY%
 
Sleep %PopupDelay%
 
Click
 
Sleep %PopupDelay%
 
}
 
 
return
 
 
 
 
 
PopupOld:
 
  
 
;Search for the RBG color of 0xECDFBD (Same as HTML code: #ECDFBD)
 
;Search for the RBG color of 0xECDFBD (Same as HTML code: #ECDFBD)
;Was having too much problems with Sterope public sand mine.
 
;The shade would work one day and not the next, always adjusting and something I still kept
 
 
walking randomly from misclick
 
;So this has been aborted and using imagesearch method
 
  
 
PixelSearch, Px, Py, %CenterX%, %CenterY%, %CenterX%, %CenterY%, 0xEBDDBB, %shade%, Fast|RGB
 
PixelSearch, Px, Py, %CenterX%, %CenterY%, %CenterX%, %CenterY%, 0xEBDDBB, %shade%, Fast|RGB
Line 1,353: Line 323:
  
  
 +
Timer:
 +
 +
if (seconds_eta = 0) and !(minutes_eta = 0)
 +
{
 +
seconds_eta := 60
 +
minutes_eta --
 +
}
 +
 +
if (minutes_eta < 0)
 +
minutes_eta := 0
  
 +
seconds_eta --
 +
return
  
Counter:
 
counter ++
 
seconds := counter/100
 
return
 
 
 
Help:
 
Gui, Destroy
 
 
BlockInput, MouseMoveOff
 
Msgbox, Ctrl + R = Reload`nCtrl + P to Pause, Ctrl + P again to Resume.`n`nNote: This script disables the mouse
 
 
while it is running!`nIf you pause the script, while it is runing, then your mouse may stop working.`nEither resume and
 
 
let it finish or Ctrl+R (Reload) the script and your mouse will be enabled.`n`nOops Button: If you forgot to minimize your
 
 
chat (all keys were sent into chat, instead of screen),`nthen this button will repeat the last pattern and ore stone
 
 
locations.`nJust ignore that it says 0 of 7 stones and ignore selecting a new pattern (Leave as "Select one" is ok).`nJust
 
 
press the Oops button and it will run the last pattern/ore stone locations.`n`n`nConsistently has all 7 stones crumble
 
 
(These are most desireable):`n`n7 Color`n6 Color (1 Pair)`n5 Color (2 Pair)`n4 Color (3 Pair)`n`n`nConsistent Unbroken
 
 
stones:`n`n3 color (Quintiple): 2 stones`n3 Color (Quad + Pair): 6 stones`n4 Color (Quadruple): 1 stone`n4 color (Triple +
 
 
Pair): 3 stones`n5 color (Triple): 1 stone`n`n`n(Triple + 2 Pair) and (Double Triple) has no single stone that can be
 
 
worked 7 times.`n(Quadruple + Triple) fails using Quadruple pattern.`n(2 Triples) fail using Triple pattern.`nThose have
 
 
been excluded from "Choose Pattern" pulldown menu.`n`n`n`nWhat order to click your ore stones:`n`nClick all Quintiple or
 
 
Quadruple, First if any,`nClick a triple color pattern next, if any`nClick all paired colors next, if any`nThen all the
 
 
single colored stones, LAST!
 
 
 
;Reload
 
GoSub, Start2
 
 
return
 
  
  

Revision as of 20:16, 13 December 2010

;Ctrl+P to pause script and Ctrl+P again to resume
;The AHK icon in system tray will turn red while paused.
;Ctrl+R to reload script
;Date 3/17/2010
;Last Update: 12/13/2010
;Author: Cegaiel



;Wheat is not supported due to the way it brings up a menu and makes you manually select which wheat you are drying

;This is the times based on using 1 hammock. However, the more hammocks you have, the less seconds you will need
;The reason is because the timer doesn't start until the last hammock is loaded.
;If you have 20 hammocks, then it might take 10 seconds to load them all. In that case it would be 10 seconds less

;Rotten flax = 2 Teppy Mins (2:13 real time / 133 seconds)
;Grass = 10 Teppy Mins (11:06 real time / 666 seconds)
;Papy = 4 Teppy Mins (4:26 real time / 266 seconds)


;Time in seconds, 
sFlax = 133
sGrass = 666
sPapy = 266





			// CONFIGURATION


			;Set Delay to 100-150 for fast computer/not much lag. 250 for slower computer.

			Delay = 125



			;Set PopupDelay to 150-200 for fast computer, about 250+ for slower computers (or lots of lag)

			PoupDelay = 200


			// END CONFIGURATION





			;Get coordinates, for your resolutions'  X,Y location of the popups (OK button) that will occur 

later.
			CenterX := Floor(Xmax/2)
			CenterY := Floor(Ymax/2)+105



IfWinExist eGenesis Client
{
	WinActivate
	Gui, +AlwaysOnTop +ToolWindow
	Gui, Add, Text,, What are you drying?
	Gui, Add, DropDownList, vWord Choose1, Grass|Rotten Flax|Fertile Papyrus|Sterile Papyrus
	Gui, Add, Text,, Qty you have in inventory:
	Gui, Add, Edit, vQty wp number, 
	Gui, Add, Text,, `nHammock Max capacity:
	Gui, Add, Text,, Grass: 200   (2 Teppy Min max)`nPapyrus: 20   (4 Teppy Min max)`nRotten Flax: 10   (2 Teppy Min 

max)`n
	Gui, Add, Button, gRecord, Next
	Gui, Show, x0 y25
	return


	Record:
	Gui, Submit
	Gui, Destroy
	Gui, +AlwaysOnTop +ToolWindow
	Gui, Font, bold
	Gui, Add, Text, vMineNumText, Record hammock locations
	Gui, Font, norm
	Gui, Add, Text,,
	( LTrim
	Hover and middle-click (Click mouse-wheel) on each hammock, one by one,
	until you've clicked on all the hammocks you want to use. Then click the OK button.

	(Drag this box out of the way if any hammocks are hidden)

	Make sure you chat is minimized and that your screen is locked (Alt+L)

	AFTER setting hammock locations, Press OK...

	)

	Gui, Add, Button, default gMineSetLoops, OK
	Gui, Show, x0 y25

	MineNum = 0
	PerCycle = 0
	Dried = 0

SetDefaultMouseSpeed, 0


	WinGet, GameWinHandle, ID, eGenesis Client
	loop
	{
		WinActivate
		CoordMode, Mouse, Relative
		KeyWait, MButton, D
		KeyWait, MButton
		MouseGetPos, TestX, TestY, WinHandle
		if (WinHandle = GameWinHandle)
		{
			Gosub, MineRecord
		}
		else
		{
			Gui, Destroy
			break
		}
	}
	return

	MineRecord:
	MineNum++
	MouseGetPos, MineX%MineNum%, MineY%MineNum%
	GuiControl, Text, MineNumText, %MineNum% hammocks captured
	TotalHammocks := MineNum
	return




	MineSetLoops:
	Gui, Submit
	Gui, Destroy

	Msgbox, Make sure your chat is MINIMIZED!`n`nAfter verifying chat is minimized, Click OK to proceed...

	Gui, +AlwaysOnTop +ToolWindow
	Gui, Font, bold

	Gui, Add, Text, vMineCycleText, 5 seconds countdown to drag this window out of way`n`n`n`n
	Gui, Show, x0 y25
	GuiControl, Text, MineCycleText, 5 seconds countdown to drag this window out of way`n`n`n`n


	StartDelay = 5
	;You got 5 seconds to drag the status window out of the way
	Loop, %StartDelay%
	{
	GuiControl, Text, MineCycleText, %StartDelay%s countdown to drag this window out of way`n`n`n`n
	Delay --
	Sleep 1000
	}

SetDefaultMouseSpeed, 0




	if (Word == "Rotten Flax") {
	Hammock := "F"
	Seconds := sFlax
	Cycles := Ceil(Qty / (10 * TotalHammocks))
	PerHammock := 10
	minutes_eta = 2
	seconds_eta = 13

	} else if (Word == "Grass") {
	Hammock := "S"
	Seconds := sGrass
	Cycles := Ceil(Qty / (200 * TotalHammocks))
	PerHammock := 200
	minutes_eta = 11
	seconds_eta = 6

	} else if (Word == "Fertile Papyrus") {
	Hammock := "P"
	Seconds := sPapy
	Cycles := Ceil(Qty / (20 * TotalHammocks))
	PerHammock := 20
	minutes_eta = 4
	seconds_eta = 26


	} else if (Word == "Sterile Papyrus") {
	Hammock := "N"
	Seconds := sPapy
	Cycles := Ceil(Qty / (20 * TotalHammocks))
	PerHammock := 20
	minutes_eta = 4
	seconds_eta = 26
	}


PerCycle := PerHammock * MineNum
Remaining := Cycles

	loop, %Cycles%
	{


			WinActivate, eGenesis Client
			MineNum = 1
			MouseGetPos, OldMX, OldMY


	;Dry Hammock Loop
	loop, %TotalHammocks% {

			WinActivate, eGenesis Client

			;BlockInput, MouseMove
			GuiControl, Text, MineCycleText, Drying %Word% -  Hammock: %MineNum% 
			MinePosX := MineX%MineNum%
			MinePosY := MineY%MineNum%
			MouseMove, %MinePosX%, %MinePosY%, 0
			sleep %Delay%
			Send {%Hammock%}
			Sleep, %Delay%	
			MineNum++
			GoSub, Popup
			}


			MouseMove, %OldMX%, %OldMY%, 0		

			SecondsCountDown := Seconds

			loop, %Seconds% {
			Gui, Font, bold
			GuiControl, Text, MineCycleText, %minutes_eta%m %seconds_eta%s drying time remaining 

(%Word%)`n`n%Remaining% of %cycles% cycles remaining to process `n`nDried: %Dried% of %Qty%
			Gui, Font, norm
			Gui, Add, Text,,
			( LTrim
	
			%Remaining% cycles remaining to process: %Word%`nDried: %Dried%
			)

			;SecondsCountdown := SecondsCountdown - 1
			sleep 1000
  			Gosub, Timer
			}
	
			MineNum = 1


			


			;Take Dried Items

			loop, %TotalHammocks% {

			WinActivate, eGenesis Client

			GuiControl, Text, MineCycleText, Taking %Word% -  Hammock: %MineNum% 
			MinePosX := MineX%MineNum%
			MinePosY := MineY%MineNum%
			MouseMove, %MinePosX%, %MinePosY%, 0
			Sleep, %Delay%	
			Send {T}
			Sleep, %Delay%	
			GoSub, Popup
			MineNum++
			}

			Remaining --
			Dried := Dried + PerCycle

			;Set the minutes/seconds countdown again, for next cycle
			if (Word == "Rotten Flax") {
			minutes_eta = 2
			seconds_eta = 13
			} else if (Word == "Grass") {
			minutes_eta = 11
			seconds_eta = 6
			} else if (Word == "Fertile Papyrus") {
			minutes_eta = 4
			seconds_eta = 26
			} else if (Word == "Sterile Papyrus") {
			minutes_eta = 4
			seconds_eta = 26
			}




			GuiControl, Text, MineCycleText, 2s Pause, Hit Ctrl+P to STOP HAMMOCKS 
			Sleep 2000


	} 

	Gui, Destroy
	Gui, Add, Text,, Middle-click on this window to end the script.
	Gui, Show
	return
}



			Popup:

			;Search for the RBG color of 0xECDFBD (Same as HTML code: #ECDFBD)

			PixelSearch, Px, Py, %CenterX%, %CenterY%, %CenterX%, %CenterY%, 0xEBDDBB, %shade%, Fast|RGB

			if ErrorLevel = 0
			{
			MouseMove, %CenterX%, %CenterY%
			Sleep %PopupDelay%
			Click
			Sleep %PopupDelay%
			}
			return



		Timer:
		
		if (seconds_eta = 0) and !(minutes_eta = 0)
		{
		seconds_eta := 60
		minutes_eta --
		}
		
		if (minutes_eta < 0)
		minutes_eta := 0

		seconds_eta --
		return



^r::reload
^p::Pause