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/Potash/Code"
From A Tale in the Desert
< User:Cegaiel | Macros | Potash
Jump to navigationJump to searchLine 2: | Line 2: | ||
<pre> | <pre> | ||
− | ;Make Potash with 6 kettles | + | 0;Make Potash/Acid/Salt with 6 kettles |
− | |||
− | |||
− | |||
− | |||
− | ;Pin 6 kettle menus from left to right | + | ;Pin 6 kettle menus from left to right, starting at upper left corner |
;Ctrl+Alt+W to start script | ;Ctrl+Alt+W to start script | ||
Line 24: | Line 20: | ||
^p::Pause | ^p::Pause | ||
^!w:: | ^!w:: | ||
+ | |||
+ | ;Date: May 19, 2010 | ||
+ | ;Author: Cegaiel | ||
Line 34: | Line 33: | ||
Exit | Exit | ||
} | } | ||
+ | |||
Line 42: | Line 42: | ||
;You may remove this entire routine, if you wish. | ;You may remove this entire routine, if you wish. | ||
− | if (Xmax = 1032) && (Ymax = 746) | + | if !(Xmax = 1032) && (Ymax = 746) |
{ | { | ||
− | |||
− | |||
Msgbox, You are not in 1024x768 resolution`n`nExiting... | Msgbox, You are not in 1024x768 resolution`n`nExiting... | ||
EXIT | EXIT | ||
Line 55: | Line 53: | ||
Gui, +AlwaysOnTop +ToolWindow | Gui, +AlwaysOnTop +ToolWindow | ||
Gui, Add, Text,, Type of Kettles? | Gui, Add, Text,, Type of Kettles? | ||
− | Gui, Add, DropDownList, vKettle | + | Gui, Add, DropDownList, vKettle Choose2, Private|Public |
− | Gui, Add, Button, Default gStart, | + | Gui, Add, Text,, What are we making? |
+ | Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt | ||
+ | Gui, Add, Text,, How many runs? | ||
+ | Gui, Add, Edit, vRuns wp number, 1 | ||
+ | Gui, Add, Button, Default gStart, BEGIN | ||
Gui, Show | Gui, Show | ||
return | return | ||
Line 62: | Line 64: | ||
Start: | Start: | ||
− | |||
Gui, Submit | Gui, Submit | ||
Gui, Destroy | Gui, Destroy | ||
− | Msgbox, Ingredients needed to run 6 kettles:`n` | + | |
− | + | Counter = 0 | |
− | + | Wood := (168 * runs) | |
− | + | Water := (150 * runs) | |
− | + | Salt := (6 * runs) | |
− | + | Ash := (30 * runs) | |
− | + | ||
+ | if (Make == "Acid") { | ||
+ | OutputTotal := (3 * 6 * runs) | ||
+ | Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... | ||
+ | |||
+ | |||
+ | ;Position of the Acid button | ||
+ | PotashX1 = 125 | ||
+ | PotashX2 = 295 | ||
+ | PotashX3 = 465 | ||
+ | PotashX4 = 635 | ||
+ | PotashX5 = 805 | ||
+ | PotashX6 = 975 | ||
+ | |||
+ | PotashY = 265 | ||
+ | |||
+ | } else if (Make == "Potash") { | ||
+ | OutputTotal := (5 * 6 * runs) | ||
+ | Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... | ||
+ | |||
+ | |||
+ | ;Position of the Potash button | ||
+ | PotashX1 = 45 | ||
+ | PotashX2 = 220 | ||
+ | PotashX3 = 385 | ||
+ | PotashX4 = 555 | ||
+ | PotashX5 = 725 | ||
+ | PotashX6 = 890 | ||
+ | |||
+ | PotashY = 170 | ||
+ | |||
+ | } else if (Make == "Salt") { | ||
+ | OutputTotal := (3 * 6 * runs) | ||
+ | Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... | ||
+ | |||
+ | |||
+ | ;Position of the Salt button | ||
+ | PotashX1 = 125 | ||
+ | PotashX2 = 295 | ||
+ | PotashX3 = 465 | ||
+ | PotashX4 = 635 | ||
+ | PotashX5 = 805 | ||
+ | PotashX6 = 975 | ||
+ | |||
+ | PotashY = 240 | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | ;This is where the Stoke Max option appears on the menu | ||
+ | StokeMaxX1 = 70 | ||
+ | StokeMaxX2 = 250 | ||
+ | StokeMaxX3 = 420 | ||
+ | StokeMaxX4 = 590 | ||
+ | StokeMaxX5 = 750 | ||
+ | StokeMaxX6 = 910 | ||
+ | |||
+ | StokeMaxY = 75 | ||
+ | |||
+ | |||
+ | ;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number | ||
+ | MaxButtonX = 515 | ||
+ | MaxButtonY = 420 | ||
+ | |||
+ | |||
+ | ;The Begin, Ignite and Take button appear in the same place, so these apply to all three. | ||
+ | BeginIgniteTakeX1 = 45 | ||
+ | BeginIgniteTakeX2 = 220 | ||
+ | BeginIgniteTakeX3 = 390 | ||
+ | BeginIgniteTakeX4 = 555 | ||
+ | BeginIgniteTakeX5 = 725 | ||
+ | BeginIgniteTakeX6 = 895 | ||
+ | |||
+ | BeginIgniteTakeY = 240 | ||
+ | |||
+ | |||
+ | |||
+ | ;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting. | ||
+ | ;If this is a public kettle AND you are trying to change numbers for another resolution, then note: | ||
+ | ;The coords are adjusted for public below, take that into consideration. | ||
+ | ;If you dont have any of your own kettles and will change numbers for a different resolution, then | ||
+ | ;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public" | ||
+ | |||
+ | if (Kettle == "Public") | ||
+ | { | ||
+ | ;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions) | ||
+ | PotashY := PotashY + 15 | ||
+ | BeginIgniteTakeY := BeginIgniteTakeY + 15 | ||
+ | StokeMaxY := StokeMaxY + 15 | ||
+ | } | ||
+ | |||
+ | ;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line | ||
+ | ;This is the Y button of when it clicks the top of the menu to refresh the menu | ||
+ | |||
+ | |||
+ | RefreshY := (StokeMaxY - 25) | ||
+ | |||
+ | Gui, +AlwaysOnTop +ToolWindow | ||
+ | Gui, Font, normal | ||
+ | Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n | ||
+ | Gui, Show | ||
− | Loop, % | + | delay = 6 |
+ | Loop, %delay% | ||
{ | { | ||
− | GuiControl, Text, MineCycleText, % | + | GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way! |
− | + | delay -- | |
Sleep 1000 | Sleep 1000 | ||
} | } | ||
Line 92: | Line 194: | ||
WinActivate, eGenesis Client | WinActivate, eGenesis Client | ||
+ | Sleep 500 | ||
+ | |||
− | |||
− | + | Loop, %Runs% | |
− | + | { | |
− | + | counter ++ | |
+ | stoke = 0 | ||
+ | waterlevel = - | ||
+ | countdown = 0 | ||
+ | seconds = 0 | ||
+ | minutes = 0 | ||
+ | seconds_eta = 30 | ||
+ | minutes_eta = 15 | ||
+ | cseconds = 0 | ||
+ | cminutes = 0 | ||
+ | sSeconds = 0 | ||
+ | sMinutes = 0 | ||
+ | |||
+ | ;Click Potash/Acid/Salt Button | ||
+ | |||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
− | + | Click, %PotashX1%, %PotashY% ;Pot 1 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %PotashX2%, %PotashY% ;Pot 2 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %PotashX3%, %PotashY% ;Pot 3 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %PotashX4%, %PotashY% ;Pot 4 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %PotashX5%, %PotashY% ;Pot 5 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %PotashX6%, %PotashY% ;Pot 6 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Line 122: | Line 234: | ||
;Click Begin button | ;Click Begin button | ||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | |||
− | |||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 | |
− | |||
sleep 200 | sleep 200 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 | |
− | |||
sleep 200 | sleep 200 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 | |
− | |||
sleep 200 | sleep 200 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 | |
− | |||
sleep 200 | sleep 200 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 | |
− | |||
sleep 200 | sleep 200 | ||
− | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 | |
− | |||
sleep 200 | sleep 200 | ||
+ | ;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option) | ||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | |||
− | |||
;Pot 1 | ;Pot 1 | ||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
sleep 200 | sleep 200 | ||
− | Click, | + | Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh |
sleep 200 | sleep 200 | ||
;Pot 2 | ;Pot 2 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
sleep 200 | sleep 200 | ||
− | Click, | + | Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh |
sleep 200 | sleep 200 | ||
;Pot 3 | ;Pot 3 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
sleep 200 | sleep 200 | ||
− | Click, | + | Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh |
sleep 200 | sleep 200 | ||
;Pot 4 | ;Pot 4 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
sleep 200 | sleep 200 | ||
− | Click, | + | Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh |
sleep 200 | sleep 200 | ||
;Pot 5 | ;Pot 5 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
sleep 200 | sleep 200 | ||
− | Click, | + | Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh |
sleep 200 | sleep 200 | ||
;Pot 6 | ;Pot 6 | ||
− | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | ||
sleep 200 | sleep 200 | ||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
sleep 200 | sleep 200 | ||
− | Click, | + | Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh |
sleep 200 | sleep 200 | ||
+ | ;This begins the Elapsed and ETA timers | ||
+ | #Persistent | ||
+ | SetTimer, Timer, 1000 | ||
− | |||
− | + | ;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle | |
− | Loop, % | + | |
+ | waterlevel = 24 | ||
+ | cminutes = 2 | ||
+ | cseconds = 12 | ||
+ | ;countdown = 132 | ||
+ | GoSub, SetCountdown | ||
+ | |||
+ | Loop, %countdown% | ||
{ | { | ||
− | |||
− | |||
− | |||
− | GetKeyState, state, F2 | + | Gosub, StokeTimer |
− | if state = D | + | |
− | break | + | GetKeyState, state, F2 |
− | + | if state = D | |
+ | break | ||
+ | } | ||
+ | |||
+ | waterlevel = 19 | ||
+ | Gosub, StokeMax | ||
− | |||
+ | ;Stoke 2 (@ 19 water) countdown | ||
− | ; | + | cminutes = 2 |
+ | cseconds = 43 | ||
+ | ;countdown = 163 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | + | Gosub, StokeTimer | |
− | |||
− | |||
− | |||
− | |||
+ | GetKeyState, state, F2 | ||
+ | if state = D | ||
+ | { | ||
+ | break | ||
+ | } | ||
} | } | ||
− | Gosub, StokeMax | + | waterlevel = 14 |
+ | Gosub, StokeMax | ||
+ | |||
+ | ;Stoke 3 (@ 14 water) countdown | ||
− | ; | + | cminutes = 2 |
+ | cseconds = 43 | ||
+ | ;countdown = 163 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | + | Gosub, StokeTimer | |
− | |||
− | |||
+ | GetKeyState, state, F2 | ||
+ | if state = D | ||
+ | { | ||
+ | break | ||
+ | } | ||
} | } | ||
− | Gosub, StokeMax | + | waterlevel = 9 |
+ | Gosub, StokeMax | ||
+ | |||
+ | ;Stoke 4 (@ 9 water) countdown | ||
− | ; | + | cminutes = 2 |
+ | cseconds = 43 | ||
+ | ;countdown = 163 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | GetKeyState, state, F2 | + | Gosub, StokeTimer |
− | if state = D | + | |
− | break | + | GetKeyState, state, F2 |
+ | if state = D | ||
+ | { | ||
+ | break | ||
+ | } | ||
} | } | ||
+ | waterlevel = 6 | ||
Gosub, StokeMax | Gosub, StokeMax | ||
− | ;Stoke 5 (6 water) countdown | + | ;Stoke 5 (@ 6 water) countdown |
+ | |||
+ | cminutes = 1 | ||
+ | cseconds = 36 | ||
+ | ;countdown = 96 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | + | ||
− | + | Gosub, StokeTimer | |
− | + | ||
− | GetKeyState, state, F2 | + | GetKeyState, state, F2 |
− | if state = D | + | if state = D |
− | break | + | { |
+ | break | ||
+ | } | ||
} | } | ||
+ | waterlevel = N/A | ||
Gosub, StokeMax | Gosub, StokeMax | ||
;Countdown until complete | ;Countdown until complete | ||
− | + | cminutes = 3 | |
− | Loop, % | + | cseconds = 6 |
+ | ;countdown = 186 | ||
+ | GoSub, SetCountdown | ||
+ | |||
+ | Loop, %countdown% | ||
{ | { | ||
− | + | ||
− | + | Gosub, StokeTimer | |
− | |||
} | } | ||
+ | |||
+ | |||
+ | cminutes = 0 | ||
+ | cseconds = 0 | ||
+ | } ; End Runs Loop | ||
+ | |||
+ | |||
Line 316: | Line 453: | ||
WinActivate, eGenesis Client | WinActivate, eGenesis Client | ||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | Click, | + | |
+ | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 | ||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 | |
− | Click, | ||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 | |
− | Click | ||
− | |||
− | |||
− | |||
Sleep 200 | Sleep 200 | ||
+ | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 | ||
− | + | ;ALL DONE! | |
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done! Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | + | return | |
− | |||
− | |||
Line 349: | Line 479: | ||
WinActivate, eGenesis Client | WinActivate, eGenesis Client | ||
− | |||
− | |||
− | |||
+ | ;Click Stoke Max | ||
+ | |||
+ | stoke ++ | ||
+ | |||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
− | |||
MouseGetPos, OldMX, OldMY | MouseGetPos, OldMX, OldMY | ||
− | + | Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
− | + | Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6 | |
− | Click, | ||
sleep 200 | sleep 200 | ||
MouseMove, %OldMX%, %OldMY%, 0 | MouseMove, %OldMX%, %OldMY%, 0 | ||
return | return | ||
− | </pre> | + | |
+ | |||
+ | Timer: | ||
+ | |||
+ | seconds ++ | ||
+ | |||
+ | if (seconds = 60) | ||
+ | { | ||
+ | seconds := 0 | ||
+ | minutes ++ | ||
+ | } | ||
+ | |||
+ | if (seconds_eta = 0) | ||
+ | { | ||
+ | seconds_eta := 60 | ||
+ | minutes_eta -- | ||
+ | } | ||
+ | |||
+ | if (minutes_eta < 0) | ||
+ | minutes_eta := 0 | ||
+ | |||
+ | seconds_eta -- | ||
+ | return | ||
+ | |||
+ | |||
+ | SetCountdown: | ||
+ | |||
+ | countdown := (cminutes * 60 + cseconds) | ||
+ | sSeconds := cseconds | ||
+ | sMinutes := cminutes | ||
+ | return | ||
+ | |||
+ | |||
+ | StokeTimer: | ||
+ | if (stoke = 5) | ||
+ | { | ||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
+ | |||
+ | } else { | ||
+ | |||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
+ | } | ||
+ | |||
+ | countdown -- | ||
+ | if (sSeconds = 0) | ||
+ | { | ||
+ | sSeconds := 60 | ||
+ | sMinutes -- | ||
+ | } | ||
+ | |||
+ | if (sMinutes < 0) | ||
+ | sMinutes := 0 | ||
+ | |||
+ | sSeconds -- | ||
+ | Sleep 1000 | ||
+ | return</pre> | ||
Line 392: | Line 572: | ||
<pre> | <pre> | ||
− | ;Make Potash | + | ;Make Potash/Acid/Salt with 12 kettles |
− | |||
− | |||
− | |||
− | |||
− | ;Pin | + | ;Pin 12 kettle menus from left to right, starting at upper left corner |
;Ctrl+Alt+W to start script | ;Ctrl+Alt+W to start script | ||
Line 410: | Line 586: | ||
;When it hits zero wood, its still a full 32 seconds before the kettle goes out | ;When it hits zero wood, its still a full 32 seconds before the kettle goes out | ||
;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up. | ;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up. | ||
− | |||
− | |||
^r::reload | ^r::reload | ||
^p::Pause | ^p::Pause | ||
^!w:: | ^!w:: | ||
+ | |||
+ | ;Date: May 19, 2010 | ||
+ | ;Author: Cegaiel | ||
Line 426: | Line 603: | ||
Exit | Exit | ||
} | } | ||
+ | |||
Line 434: | Line 612: | ||
;You may remove this entire routine, if you wish. | ;You may remove this entire routine, if you wish. | ||
− | if (Xmax = 1032) && (Ymax = 746) | + | if !(Xmax = 1032) && (Ymax = 746) |
{ | { | ||
− | |||
− | |||
Msgbox, You are not in 1024x768 resolution`n`nExiting... | Msgbox, You are not in 1024x768 resolution`n`nExiting... | ||
EXIT | EXIT | ||
Line 448: | Line 624: | ||
Gui, Add, Text,, Type of Kettles? | Gui, Add, Text,, Type of Kettles? | ||
Gui, Add, DropDownList, vKettle Choose2, Private|Public | Gui, Add, DropDownList, vKettle Choose2, Private|Public | ||
− | Gui, Add, Text,, What are | + | Gui, Add, Text,, What are we making? |
− | Gui, Add, DropDownList, | + | Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt |
− | Gui, Add, Text,, How | + | Gui, Add, Text,, How many runs? |
− | Gui, Add, Edit, | + | Gui, Add, Edit, vRuns wp number, 1 |
− | + | Gui, Add, Button, Default gStart, BEGIN | |
− | Gui, Add, Button, Default gStart, | ||
Gui, Show | Gui, Show | ||
return | return | ||
Line 459: | Line 634: | ||
Start: | Start: | ||
− | |||
Gui, Submit | Gui, Submit | ||
Gui, Destroy | Gui, Destroy | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Counter = 0 | ||
+ | Wood := (336 * runs) | ||
+ | Water := (300 * runs) | ||
+ | Salt := (12 * runs) | ||
+ | Ash := (60 * runs) | ||
+ | |||
+ | if (Make == "Acid") { | ||
+ | OutputTotal := (3 * 12 * runs) | ||
+ | Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... | ||
+ | |||
+ | |||
+ | ;Position of the Acid button | ||
+ | PotashX1 = 125 | ||
+ | PotashX2 = 295 | ||
+ | PotashX3 = 465 | ||
+ | PotashX4 = 635 | ||
+ | PotashX5 = 805 | ||
+ | PotashX6 = 975 | ||
+ | |||
+ | PotashY = 265 | ||
+ | PotashY2 = 525 | ||
+ | |||
+ | } else if (Make == "Potash") { | ||
+ | OutputTotal := (5 * 12 * runs) | ||
+ | Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... | ||
+ | |||
+ | |||
+ | ;Position of the Potash button | ||
+ | PotashX1 = 45 | ||
+ | PotashX2 = 220 | ||
+ | PotashX3 = 385 | ||
+ | PotashX4 = 555 | ||
+ | PotashX5 = 725 | ||
+ | PotashX6 = 890 | ||
+ | PotashY = 170 | ||
+ | PotashY2 = 428 | ||
+ | } else if (Make == "Salt") { | ||
+ | OutputTotal := (3 * 12 * runs) | ||
+ | Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... | ||
+ | ;Position of the Salt button | ||
+ | PotashX1 = 125 | ||
+ | PotashX2 = 295 | ||
+ | PotashX3 = 465 | ||
+ | PotashX4 = 635 | ||
+ | PotashX5 = 805 | ||
+ | PotashX6 = 975 | ||
− | + | PotashY = 240 | |
− | + | PotashY2 = 500 | |
− | |||
− | |||
− | |||
} | } | ||
− | |||
− | + | ;This is where the Stoke Max option appears on the menu | |
+ | StokeMaxX1 = 70 | ||
+ | StokeMaxX2 = 250 | ||
+ | StokeMaxX3 = 420 | ||
+ | StokeMaxX4 = 590 | ||
+ | StokeMaxX5 = 750 | ||
+ | StokeMaxX6 = 910 | ||
+ | |||
+ | StokeMaxY = 75 | ||
+ | StokeMaxY2 = 335 | ||
− | |||
− | ; | + | ;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number |
− | + | MaxButtonX = 515 | |
+ | MaxButtonY = 420 | ||
− | + | ;The Begin, Ignite and Take button appear in the same place, so these apply to all three. | |
− | + | BeginIgniteTakeX1 = 45 | |
− | + | BeginIgniteTakeX2 = 220 | |
− | + | BeginIgniteTakeX3 = 390 | |
− | + | BeginIgniteTakeX4 = 555 | |
− | + | BeginIgniteTakeX5 = 725 | |
− | + | BeginIgniteTakeX6 = 895 | |
− | |||
− | + | BeginIgniteTakeY = 240 | |
− | + | BeginIgniteTakeY2 = 500 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting. | |
− | + | ;If this is a public kettle AND you are trying to change numbers for another resolution, then note: | |
+ | ;The coords are adjusted for public below, take that into consideration. | ||
+ | ;If you dont have any of your own kettles and will change numbers for a different resolution, then | ||
+ | ;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public" | ||
− | + | if (Kettle == "Public") | |
+ | { | ||
+ | ;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions) | ||
+ | PotashY := PotashY + 15 | ||
+ | BeginIgniteTakeY := BeginIgniteTakeY + 15 | ||
+ | StokeMaxY := StokeMaxY + 15 | ||
− | + | PotashY2 := PotashY2 + 30 | |
− | + | BeginIgniteTakeY2 := BeginIgniteTakeY2 + 30 | |
− | + | StokeMaxY2 := StokeMaxY2 + 30 | |
− | + | } | |
− | |||
− | |||
− | + | ;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line | |
− | + | ;This is the Y button of when it clicks the top of the menu to refresh the menu | |
− | |||
− | + | RefreshY := (StokeMaxY - 25) | |
− | + | RefreshY2 := (StokeMaxY2 - 25) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Gui, +AlwaysOnTop +ToolWindow | ||
+ | Gui, Font, normal | ||
+ | Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n | ||
+ | Gui, Show | ||
− | + | delay = 6 | |
+ | Loop, %delay% | ||
{ | { | ||
− | + | GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way! | |
− | + | delay -- | |
+ | Sleep 1000 | ||
} | } | ||
− | + | SetDefaultMouseSpeed, 0 | |
− | + | ||
+ | GuiControl, Text, MineCycleText, Focusing to eGenesis client ... | ||
− | + | WinActivate, eGenesis Client | |
+ | Sleep 500 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Loop, %Runs% | ||
+ | { | ||
+ | counter ++ | ||
+ | stoke = 0 | ||
+ | waterlevel = - | ||
+ | countdown = 0 | ||
+ | seconds = 0 | ||
+ | minutes = 0 | ||
+ | seconds_eta = 30 | ||
+ | minutes_eta = 15 | ||
+ | cseconds = 0 | ||
+ | cminutes = 0 | ||
+ | sSeconds = 0 | ||
+ | sMinutes = 0 | ||
+ | |||
+ | ;Click Potash/Acid/Salt Button | ||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
+ | Click, %PotashX1%, %PotashY% ;Pot 1 | ||
+ | sleep 200 | ||
+ | Click, %PotashX2%, %PotashY% ;Pot 2 | ||
+ | sleep 200 | ||
+ | Click, %PotashX3%, %PotashY% ;Pot 3 | ||
+ | sleep 200 | ||
+ | Click, %PotashX4%, %PotashY% ;Pot 4 | ||
+ | sleep 200 | ||
+ | Click, %PotashX5%, %PotashY% ;Pot 5 | ||
+ | sleep 200 | ||
+ | Click, %PotashX6%, %PotashY% ;Pot 6 | ||
+ | sleep 200 | ||
+ | Click, %PotashX1%, %PotashY2% ;Pot 7 | ||
+ | sleep 200 | ||
+ | Click, %PotashX2%, %PotashY2% ;Pot 8 | ||
+ | sleep 200 | ||
+ | Click, %PotashX3%, %PotashY2% ;Pot 9 | ||
+ | sleep 200 | ||
+ | Click, %PotashX4%, %PotashY2% ;Pot 10 | ||
+ | sleep 200 | ||
+ | Click, %PotashX5%, %PotashY2% ;Pot 11 | ||
+ | sleep 200 | ||
+ | Click, %PotashX6%, %PotashY2% ;Pot 12 | ||
+ | sleep 200 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
;Click Begin button | ;Click Begin button | ||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | Click, | + | |
− | + | ||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 | |
− | + | sleep 200 | |
− | Click, | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 |
− | + | sleep 200 | |
− | |||
− | |||
− | |||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10 | |
− | + | sleep 200 | |
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11 | |
− | + | sleep 200 | |
− | Click, | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12 |
− | + | sleep 200 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Line 654: | Line 859: | ||
;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option) | ;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option) | ||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | + | ||
;Pot 1 | ;Pot 1 | ||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 2 | ;Pot 2 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 3 | ;Pot 3 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 4 | ;Pot 4 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 5 | ;Pot 5 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 6 | ;Pot 6 | ||
− | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 7 | ;Pot 7 | ||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX1%, %RefreshY2% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 8 | ;Pot 8 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX2%, %RefreshY2% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 9 | ;Pot 9 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX3%, %RefreshY2% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 10 | ;Pot 10 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX4%, %RefreshY2% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 11 | ;Pot 11 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX5%, %RefreshY2% ;Click Menu to refresh |
− | + | sleep 200 | |
;Pot 12 | ;Pot 12 | ||
− | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Ignite | |
− | Click, | + | sleep 200 |
− | |||
Click, %MaxButtonX%, %MaxButtonY% ;Max button | Click, %MaxButtonX%, %MaxButtonY% ;Max button | ||
− | + | sleep 200 | |
− | Click, | + | Click, %StokeMaxX6%, %RefreshY2% ;Click Menu to refresh |
− | + | sleep 200 | |
+ | |||
+ | |||
+ | ;This begins the Elapsed and ETA timers | ||
+ | #Persistent | ||
+ | SetTimer, Timer, 1000 | ||
+ | ;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle | ||
− | ; | + | waterlevel = 24 |
+ | cminutes = 2 | ||
+ | cseconds = 12 | ||
+ | ;countdown = 132 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | GetKeyState, state, F2 | + | Gosub, StokeTimer |
− | if state = D | + | |
− | break | + | GetKeyState, state, F2 |
− | + | if state = D | |
+ | break | ||
+ | } | ||
+ | |||
+ | waterlevel = 19 | ||
+ | Gosub, StokeMax | ||
− | |||
+ | ;Stoke 2 (@ 19 water) countdown | ||
− | ; | + | cminutes = 2 |
+ | cseconds = 43 | ||
+ | ;countdown = 163 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | + | Gosub, StokeTimer | |
− | |||
− | |||
− | |||
− | |||
+ | GetKeyState, state, F2 | ||
+ | if state = D | ||
+ | { | ||
+ | break | ||
+ | } | ||
} | } | ||
− | Gosub, StokeMax | + | waterlevel = 14 |
+ | Gosub, StokeMax | ||
+ | |||
+ | ;Stoke 3 (@ 14 water) countdown | ||
− | ; | + | cminutes = 2 |
+ | cseconds = 43 | ||
+ | ;countdown = 163 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | + | Gosub, StokeTimer | |
− | |||
− | |||
+ | GetKeyState, state, F2 | ||
+ | if state = D | ||
+ | { | ||
+ | break | ||
+ | } | ||
} | } | ||
− | Gosub, StokeMax | + | waterlevel = 9 |
+ | Gosub, StokeMax | ||
+ | |||
+ | ;Stoke 4 (@ 9 water) countdown | ||
− | ; | + | cminutes = 2 |
+ | cseconds = 43 | ||
+ | ;countdown = 163 | ||
+ | GoSub, SetCountdown | ||
− | + | Loop, %countdown% | |
− | Loop, % | ||
{ | { | ||
− | |||
− | |||
− | |||
− | GetKeyState, state, F2 | + | Gosub, StokeTimer |
− | if state = D | + | |
− | break | + | GetKeyState, state, F2 |
+ | if state = D | ||
+ | { | ||
+ | break | ||
+ | } | ||
} | } | ||
+ | waterlevel = 6 | ||
Gosub, StokeMax | Gosub, StokeMax | ||
− | ;Stoke 5 (6 water) countdown | + | ;Stoke 5 (@ 6 water) countdown |
− | + | cminutes = 1 | |
− | Loop, % | + | cseconds = 36 |
+ | ;countdown = 96 | ||
+ | GoSub, SetCountdown | ||
+ | |||
+ | Loop, %countdown% | ||
{ | { | ||
− | + | ||
− | + | Gosub, StokeTimer | |
− | + | ||
− | GetKeyState, state, F2 | + | GetKeyState, state, F2 |
− | if state = D | + | if state = D |
− | break | + | { |
+ | break | ||
+ | } | ||
} | } | ||
+ | waterlevel = N/A | ||
Gosub, StokeMax | Gosub, StokeMax | ||
;Countdown until complete | ;Countdown until complete | ||
− | + | cminutes = 3 | |
− | Loop, % | + | cseconds = 6 |
+ | ;countdown = 186 | ||
+ | GoSub, SetCountdown | ||
+ | |||
+ | Loop, %countdown% | ||
{ | { | ||
− | + | ||
− | + | Gosub, StokeTimer | |
− | |||
} | } | ||
− | + | cminutes = 0 | |
+ | cseconds = 0 | ||
+ | } ; End Runs Loop | ||
+ | |||
+ | |||
+ | |||
;Click Take button | ;Click Take button | ||
WinActivate, eGenesis Client | WinActivate, eGenesis Client | ||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | Click, | + | |
+ | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 | ||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 | |
− | Click, | ||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10 | |
− | |||
Sleep 200 | Sleep 200 | ||
− | + | Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11 | |
− | |||
− | |||
− | |||
− | |||
Sleep 200 | Sleep 200 | ||
+ | Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12 | ||
+ | |||
+ | |||
+ | ;ALL DONE! | ||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done! Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
+ | return | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | StokeMax: | ||
+ | |||
+ | WinActivate, eGenesis Client | ||
+ | |||
+ | ;Click Stoke Max | ||
+ | |||
+ | stoke ++ | ||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
− | + | MouseGetPos, OldMX, OldMY | |
+ | Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX1%, %StokeMaxY2% ; Pot 7 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX2%, %StokeMaxY2% ; Pot 8 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX3%, %StokeMaxY2% ; Pot 9 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX4%, %StokeMaxY2% ; Pot 10 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX5%, %StokeMaxY2% ; Pot 11 | ||
+ | sleep 200 | ||
+ | Click, %StokeMaxX6%, %StokeMaxY2% ; Pot 12 | ||
+ | sleep 200 | ||
− | + | MouseMove, %OldMX%, %OldMY%, 0 | |
− | |||
− | |||
return | return | ||
+ | Timer: | ||
+ | seconds ++ | ||
+ | |||
+ | if (seconds = 60) | ||
+ | { | ||
+ | seconds := 0 | ||
+ | minutes ++ | ||
+ | } | ||
+ | |||
+ | if (seconds_eta = 0) | ||
+ | { | ||
+ | seconds_eta := 60 | ||
+ | minutes_eta -- | ||
+ | } | ||
+ | |||
+ | if (minutes_eta < 0) | ||
+ | minutes_eta := 0 | ||
+ | |||
+ | seconds_eta -- | ||
+ | return | ||
− | |||
− | + | SetCountdown: | |
− | + | countdown := (cminutes * 60 + cseconds) | |
− | + | sSeconds := cseconds | |
+ | sMinutes := cminutes | ||
+ | return | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | StokeTimer: | |
− | + | if (stoke = 5) | |
+ | { | ||
+ | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | ||
− | + | } else { | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | countdown -- | ||
+ | if (sSeconds = 0) | ||
+ | { | ||
+ | sSeconds := 60 | ||
+ | sMinutes -- | ||
+ | } | ||
+ | |||
+ | if (sMinutes < 0) | ||
+ | sMinutes := 0 | ||
− | + | sSeconds -- | |
− | + | Sleep 1000 | |
− | </pre> | + | return</pre> |
Revision as of 06:38, 19 May 2010
6 Kettles: (12 Kettles at bottom)
0;Make Potash/Acid/Salt with 6 kettles ;Pin 6 kettle menus from left to right, starting at upper left corner ;Ctrl+Alt+W to start script ;Ctrl+R to reload ;Ctrl+P to pause ;Emergency: Hold F2 button down 2 seconds to Abort current countdown and hit Stoke Max immediately on all pots ;Only the current countdown will abort. It will move on to the next countdown and continue normally. ;Trust the script, only use Emergency F2 when you have more than 32s when the Wood count turns to zero ;As long as there is less than 32s, when the wood hits zero, then dont interupt the script ;When it hits zero wood, its still a full 32 seconds before the kettle goes out ;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up. ^r::reload ^p::Pause ^!w:: ;Date: May 19, 2010 ;Author: Cegaiel IfWinExist eGenesis Client { WinGet, GameWinHandle, ID, eGenesis Client } else { Msgbox, eGenesis client not running, exiting... Exit } WinGetActiveStats, win_Title, Xmax, Ymax, win_Xpos, win_Ypos ;====================================================================== ;Check to see if we are in the correct resolution, or else exit script. ;You may remove this entire routine, if you wish. if !(Xmax = 1032) && (Ymax = 746) { Msgbox, You are not in 1024x768 resolution`n`nExiting... EXIT } ;====================================================================== Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, Type of Kettles? Gui, Add, DropDownList, vKettle Choose2, Private|Public Gui, Add, Text,, What are we making? Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt Gui, Add, Text,, How many runs? Gui, Add, Edit, vRuns wp number, 1 Gui, Add, Button, Default gStart, BEGIN Gui, Show return Start: Gui, Submit Gui, Destroy Counter = 0 Wood := (168 * runs) Water := (150 * runs) Salt := (6 * runs) Ash := (30 * runs) if (Make == "Acid") { OutputTotal := (3 * 6 * runs) Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... ;Position of the Acid button PotashX1 = 125 PotashX2 = 295 PotashX3 = 465 PotashX4 = 635 PotashX5 = 805 PotashX6 = 975 PotashY = 265 } else if (Make == "Potash") { OutputTotal := (5 * 6 * runs) Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... ;Position of the Potash button PotashX1 = 45 PotashX2 = 220 PotashX3 = 385 PotashX4 = 555 PotashX5 = 725 PotashX6 = 890 PotashY = 170 } else if (Make == "Salt") { OutputTotal := (3 * 6 * runs) Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... ;Position of the Salt button PotashX1 = 125 PotashX2 = 295 PotashX3 = 465 PotashX4 = 635 PotashX5 = 805 PotashX6 = 975 PotashY = 240 } ;This is where the Stoke Max option appears on the menu StokeMaxX1 = 70 StokeMaxX2 = 250 StokeMaxX3 = 420 StokeMaxX4 = 590 StokeMaxX5 = 750 StokeMaxX6 = 910 StokeMaxY = 75 ;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number MaxButtonX = 515 MaxButtonY = 420 ;The Begin, Ignite and Take button appear in the same place, so these apply to all three. BeginIgniteTakeX1 = 45 BeginIgniteTakeX2 = 220 BeginIgniteTakeX3 = 390 BeginIgniteTakeX4 = 555 BeginIgniteTakeX5 = 725 BeginIgniteTakeX6 = 895 BeginIgniteTakeY = 240 ;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting. ;If this is a public kettle AND you are trying to change numbers for another resolution, then note: ;The coords are adjusted for public below, take that into consideration. ;If you dont have any of your own kettles and will change numbers for a different resolution, then ;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public" if (Kettle == "Public") { ;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions) PotashY := PotashY + 15 BeginIgniteTakeY := BeginIgniteTakeY + 15 StokeMaxY := StokeMaxY + 15 } ;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line ;This is the Y button of when it clicks the top of the menu to refresh the menu RefreshY := (StokeMaxY - 25) Gui, +AlwaysOnTop +ToolWindow Gui, Font, normal Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n Gui, Show delay = 6 Loop, %delay% { GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way! delay -- Sleep 1000 } SetDefaultMouseSpeed, 0 GuiControl, Text, MineCycleText, Focusing to eGenesis client ... WinActivate, eGenesis Client Sleep 500 Loop, %Runs% { counter ++ stoke = 0 waterlevel = - countdown = 0 seconds = 0 minutes = 0 seconds_eta = 30 minutes_eta = 15 cseconds = 0 cminutes = 0 sSeconds = 0 sMinutes = 0 ;Click Potash/Acid/Salt Button GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s Click, %PotashX1%, %PotashY% ;Pot 1 sleep 200 Click, %PotashX2%, %PotashY% ;Pot 2 sleep 200 Click, %PotashX3%, %PotashY% ;Pot 3 sleep 200 Click, %PotashX4%, %PotashY% ;Pot 4 sleep 200 Click, %PotashX5%, %PotashY% ;Pot 5 sleep 200 Click, %PotashX6%, %PotashY% ;Pot 6 sleep 200 ;Click Begin button GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 sleep 200 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 sleep 200 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 sleep 200 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 sleep 200 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 sleep 200 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 sleep 200 ;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option) GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s ;Pot 1 Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 2 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 3 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 4 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 5 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 6 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh sleep 200 ;This begins the Elapsed and ETA timers #Persistent SetTimer, Timer, 1000 ;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle waterlevel = 24 cminutes = 2 cseconds = 12 ;countdown = 132 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D break } waterlevel = 19 Gosub, StokeMax ;Stoke 2 (@ 19 water) countdown cminutes = 2 cseconds = 43 ;countdown = 163 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = 14 Gosub, StokeMax ;Stoke 3 (@ 14 water) countdown cminutes = 2 cseconds = 43 ;countdown = 163 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = 9 Gosub, StokeMax ;Stoke 4 (@ 9 water) countdown cminutes = 2 cseconds = 43 ;countdown = 163 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = 6 Gosub, StokeMax ;Stoke 5 (@ 6 water) countdown cminutes = 1 cseconds = 36 ;countdown = 96 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = N/A Gosub, StokeMax ;Countdown until complete cminutes = 3 cseconds = 6 ;countdown = 186 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer } cminutes = 0 cseconds = 0 } ; End Runs Loop ;Click Take button WinActivate, eGenesis Client GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 Sleep 200 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 Sleep 200 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 Sleep 200 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 Sleep 200 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 Sleep 200 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 ;ALL DONE! GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done! Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s return StokeMax: WinActivate, eGenesis Client ;Click Stoke Max stoke ++ GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s MouseGetPos, OldMX, OldMY Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1 sleep 200 Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2 sleep 200 Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3 sleep 200 Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4 sleep 200 Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5 sleep 200 Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6 sleep 200 MouseMove, %OldMX%, %OldMY%, 0 return Timer: seconds ++ if (seconds = 60) { seconds := 0 minutes ++ } if (seconds_eta = 0) { seconds_eta := 60 minutes_eta -- } if (minutes_eta < 0) minutes_eta := 0 seconds_eta -- return SetCountdown: countdown := (cminutes * 60 + cseconds) sSeconds := cseconds sMinutes := cminutes return StokeTimer: if (stoke = 5) { GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s } else { GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s } countdown -- if (sSeconds = 0) { sSeconds := 60 sMinutes -- } if (sMinutes < 0) sMinutes := 0 sSeconds -- Sleep 1000 return
12 Kettles:
;Make Potash/Acid/Salt with 12 kettles ;Pin 12 kettle menus from left to right, starting at upper left corner ;Ctrl+Alt+W to start script ;Ctrl+R to reload ;Ctrl+P to pause ;Emergency: Hold F2 button down 2 seconds to Abort current countdown and hit Stoke Max immediately on all pots ;Only the current countdown will abort. It will move on to the next countdown and continue normally. ;Trust the script, only use Emergency F2 when you have more than 32s when the Wood count turns to zero ;As long as there is less than 32s, when the wood hits zero, then dont interupt the script ;When it hits zero wood, its still a full 32 seconds before the kettle goes out ;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up. ^r::reload ^p::Pause ^!w:: ;Date: May 19, 2010 ;Author: Cegaiel IfWinExist eGenesis Client { WinGet, GameWinHandle, ID, eGenesis Client } else { Msgbox, eGenesis client not running, exiting... Exit } WinGetActiveStats, win_Title, Xmax, Ymax, win_Xpos, win_Ypos ;====================================================================== ;Check to see if we are in the correct resolution, or else exit script. ;You may remove this entire routine, if you wish. if !(Xmax = 1032) && (Ymax = 746) { Msgbox, You are not in 1024x768 resolution`n`nExiting... EXIT } ;====================================================================== Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, Type of Kettles? Gui, Add, DropDownList, vKettle Choose2, Private|Public Gui, Add, Text,, What are we making? Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt Gui, Add, Text,, How many runs? Gui, Add, Edit, vRuns wp number, 1 Gui, Add, Button, Default gStart, BEGIN Gui, Show return Start: Gui, Submit Gui, Destroy Counter = 0 Wood := (336 * runs) Water := (300 * runs) Salt := (12 * runs) Ash := (60 * runs) if (Make == "Acid") { OutputTotal := (3 * 12 * runs) Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... ;Position of the Acid button PotashX1 = 125 PotashX2 = 295 PotashX3 = 465 PotashX4 = 635 PotashX5 = 805 PotashX6 = 975 PotashY = 265 PotashY2 = 525 } else if (Make == "Potash") { OutputTotal := (5 * 12 * runs) Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... ;Position of the Potash button PotashX1 = 45 PotashX2 = 220 PotashX3 = 385 PotashX4 = 555 PotashX5 = 725 PotashX6 = 890 PotashY = 170 PotashY2 = 428 } else if (Make == "Salt") { OutputTotal := (3 * 12 * runs) Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue... ;Position of the Salt button PotashX1 = 125 PotashX2 = 295 PotashX3 = 465 PotashX4 = 635 PotashX5 = 805 PotashX6 = 975 PotashY = 240 PotashY2 = 500 } ;This is where the Stoke Max option appears on the menu StokeMaxX1 = 70 StokeMaxX2 = 250 StokeMaxX3 = 420 StokeMaxX4 = 590 StokeMaxX5 = 750 StokeMaxX6 = 910 StokeMaxY = 75 StokeMaxY2 = 335 ;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number MaxButtonX = 515 MaxButtonY = 420 ;The Begin, Ignite and Take button appear in the same place, so these apply to all three. BeginIgniteTakeX1 = 45 BeginIgniteTakeX2 = 220 BeginIgniteTakeX3 = 390 BeginIgniteTakeX4 = 555 BeginIgniteTakeX5 = 725 BeginIgniteTakeX6 = 895 BeginIgniteTakeY = 240 BeginIgniteTakeY2 = 500 ;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting. ;If this is a public kettle AND you are trying to change numbers for another resolution, then note: ;The coords are adjusted for public below, take that into consideration. ;If you dont have any of your own kettles and will change numbers for a different resolution, then ;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public" if (Kettle == "Public") { ;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions) PotashY := PotashY + 15 BeginIgniteTakeY := BeginIgniteTakeY + 15 StokeMaxY := StokeMaxY + 15 PotashY2 := PotashY2 + 30 BeginIgniteTakeY2 := BeginIgniteTakeY2 + 30 StokeMaxY2 := StokeMaxY2 + 30 } ;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line ;This is the Y button of when it clicks the top of the menu to refresh the menu RefreshY := (StokeMaxY - 25) RefreshY2 := (StokeMaxY2 - 25) Gui, +AlwaysOnTop +ToolWindow Gui, Font, normal Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n Gui, Show delay = 6 Loop, %delay% { GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way! delay -- Sleep 1000 } SetDefaultMouseSpeed, 0 GuiControl, Text, MineCycleText, Focusing to eGenesis client ... WinActivate, eGenesis Client Sleep 500 Loop, %Runs% { counter ++ stoke = 0 waterlevel = - countdown = 0 seconds = 0 minutes = 0 seconds_eta = 30 minutes_eta = 15 cseconds = 0 cminutes = 0 sSeconds = 0 sMinutes = 0 ;Click Potash/Acid/Salt Button GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s Click, %PotashX1%, %PotashY% ;Pot 1 sleep 200 Click, %PotashX2%, %PotashY% ;Pot 2 sleep 200 Click, %PotashX3%, %PotashY% ;Pot 3 sleep 200 Click, %PotashX4%, %PotashY% ;Pot 4 sleep 200 Click, %PotashX5%, %PotashY% ;Pot 5 sleep 200 Click, %PotashX6%, %PotashY% ;Pot 6 sleep 200 Click, %PotashX1%, %PotashY2% ;Pot 7 sleep 200 Click, %PotashX2%, %PotashY2% ;Pot 8 sleep 200 Click, %PotashX3%, %PotashY2% ;Pot 9 sleep 200 Click, %PotashX4%, %PotashY2% ;Pot 10 sleep 200 Click, %PotashX5%, %PotashY2% ;Pot 11 sleep 200 Click, %PotashX6%, %PotashY2% ;Pot 12 sleep 200 ;Click Begin button GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 sleep 200 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 sleep 200 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 sleep 200 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 sleep 200 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 sleep 200 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 sleep 200 Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7 sleep 200 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8 sleep 200 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9 sleep 200 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10 sleep 200 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11 sleep 200 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12 sleep 200 ;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option) GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s ;Pot 1 Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 2 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 3 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 4 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 5 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 6 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh sleep 200 ;Pot 7 Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX1%, %RefreshY2% ;Click Menu to refresh sleep 200 ;Pot 8 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX2%, %RefreshY2% ;Click Menu to refresh sleep 200 ;Pot 9 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX3%, %RefreshY2% ;Click Menu to refresh sleep 200 ;Pot 10 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX4%, %RefreshY2% ;Click Menu to refresh sleep 200 ;Pot 11 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX5%, %RefreshY2% ;Click Menu to refresh sleep 200 ;Pot 12 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Ignite sleep 200 Click, %MaxButtonX%, %MaxButtonY% ;Max button sleep 200 Click, %StokeMaxX6%, %RefreshY2% ;Click Menu to refresh sleep 200 ;This begins the Elapsed and ETA timers #Persistent SetTimer, Timer, 1000 ;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle waterlevel = 24 cminutes = 2 cseconds = 12 ;countdown = 132 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D break } waterlevel = 19 Gosub, StokeMax ;Stoke 2 (@ 19 water) countdown cminutes = 2 cseconds = 43 ;countdown = 163 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = 14 Gosub, StokeMax ;Stoke 3 (@ 14 water) countdown cminutes = 2 cseconds = 43 ;countdown = 163 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = 9 Gosub, StokeMax ;Stoke 4 (@ 9 water) countdown cminutes = 2 cseconds = 43 ;countdown = 163 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = 6 Gosub, StokeMax ;Stoke 5 (@ 6 water) countdown cminutes = 1 cseconds = 36 ;countdown = 96 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer GetKeyState, state, F2 if state = D { break } } waterlevel = N/A Gosub, StokeMax ;Countdown until complete cminutes = 3 cseconds = 6 ;countdown = 186 GoSub, SetCountdown Loop, %countdown% { Gosub, StokeTimer } cminutes = 0 cseconds = 0 } ; End Runs Loop ;Click Take button WinActivate, eGenesis Client GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1 Sleep 200 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2 Sleep 200 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3 Sleep 200 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4 Sleep 200 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5 Sleep 200 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6 Sleep 200 Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7 Sleep 200 Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8 Sleep 200 Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9 Sleep 200 Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10 Sleep 200 Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11 Sleep 200 Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12 ;ALL DONE! GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done! Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s return StokeMax: WinActivate, eGenesis Client ;Click Stoke Max stoke ++ GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s MouseGetPos, OldMX, OldMY Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1 sleep 200 Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2 sleep 200 Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3 sleep 200 Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4 sleep 200 Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5 sleep 200 Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6 sleep 200 Click, %StokeMaxX1%, %StokeMaxY2% ; Pot 7 sleep 200 Click, %StokeMaxX2%, %StokeMaxY2% ; Pot 8 sleep 200 Click, %StokeMaxX3%, %StokeMaxY2% ; Pot 9 sleep 200 Click, %StokeMaxX4%, %StokeMaxY2% ; Pot 10 sleep 200 Click, %StokeMaxX5%, %StokeMaxY2% ; Pot 11 sleep 200 Click, %StokeMaxX6%, %StokeMaxY2% ; Pot 12 sleep 200 MouseMove, %OldMX%, %OldMY%, 0 return Timer: seconds ++ if (seconds = 60) { seconds := 0 minutes ++ } if (seconds_eta = 0) { seconds_eta := 60 minutes_eta -- } if (minutes_eta < 0) minutes_eta := 0 seconds_eta -- return SetCountdown: countdown := (cminutes * 60 + cseconds) sSeconds := cseconds sMinutes := cminutes return StokeTimer: if (stoke = 5) { GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s } else { GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s } countdown -- if (sSeconds = 0) { sSeconds := 60 sMinutes -- } if (sMinutes < 0) sMinutes := 0 sSeconds -- Sleep 1000 return