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.

User:Akiiki Bastet

From A Tale in the Desert
Jump to navigationJump to search

My Gravel Macro

To use:

  • Uses AHK - Windows Auto Hot Keys
  • Move to an open area. Drop your stones. Bring a sledgehammer. I prefer F8F8 view, zoomed moderately in - you can play with this if you get 'too far' messages. Don't wear white!
  • CLOSE CHAT! It uses hotkeys, sorry
  • Ctrl+F1 to get the splash screen.
  • F2 to start
  • F3 to pause - you'll want to exit the macro before using maps!
  • It will try to use 'S' to Smash stones or Scoop gravel.
  • Failing that, it will use Right Click to pick up piles of multiple gravel (which do not scoop)
F3::Pause Toggle
^F1::Setup() 
F2::Harvest()

Setup() {
	MsgBox, Graveller F2 to launch F3 to Pause
}

Harvest() {
	WinWait, eGenesis Client, 
	IfWinNotActive, eGenesis Client, , WinActivate, eGenesis Client, 
	WinWaitActive, eGenesis Client,
	WinGetActiveStats, win_Title, win_Width, win_Height, win_Xpos, win_Ypos
	ScreenWidth := win_Width
	ScreenHeight := win_Height
	PapyColour := 0xFFFFFF
	Loop {
		PixelSearch, x, y, ScreenWidth/10*4, ScreenHeight/10*4, ScreenWidth/10*6, ScreenHeight/10*6, %PapyColour%, 6, Fast RGB
		if (ErrorLevel == 0) {
			MouseMove, x, y
			Send s
			Sleep, 2000
			Click Right
			
		} else {
			PixelSearch, x, y, ScreenWidth/10*3, ScreenHeight/10*3, ScreenWidth/10*7, ScreenHeight/10*7, %PapyColour%, 6, Fast RGB
			if (ErrorLevel == 0) {
				MouseMove, x, y
				Send s
				Sleep, 2000
				Click Right

			} else {
				PixelSearch, x, y, ScreenWidth/10*2, ScreenHeight/10*2, ScreenWidth/10*8, ScreenHeight/10*8, %PapyColour%, 6, Fast RGB
				if (ErrorLevel == 0) {
					MouseMove, x, y
					Send s
					Sleep, 2000
					Click Right

				} else {
					PixelSearch, x, y, ScreenWidth/10, ScreenHeight/10, ScreenWidth/10*9, ScreenHeight/10*9, %PapyColour%, 6, Fast RGB
					if (ErrorLevel == 0) {
						MouseMove, x, y
						Send s
						Sleep, 2000
						Click Right

					}
				}
			}
		}
		Sleep, 2000
	}
}

My Thistle Garden Recording Macro

To use:

  • Uses AHK - Windows Auto Hot Keys
  • You will need the [image] files to make this go. The zip should contain ONLY bmp images. Be suspicious of exe's, etc!
  • Ensure you have adequate water, dung, seeds, etc for your macro before you run.
  • Edit the Tick# lines to program the operations. N adds Nit, P pot, H water, O aerates and S toggles sun. Use letters multiple times per row if you wish.
  • Ctrl+F1 to get the splash screen.
  • F1 while mouse is within the area of your garden window to locate it
  • F2 to start. It will run the programmed set of moves.
  • F3 to pause - you'll want to exit the macro before using maps!
  • It uses the mouse, but no keys, so feel free to chat.
  • Outputs observed nutrients from ticks 0 to 39 into ThistleResults.txt


; Thistle Macro
; Outputs ThistleGardenResults.txt into the same dir with the numbers it observes.

; Globals

; ======================================
; 
; Tending instructions
;
;     Each tick, the string should have one N, P, H, O or S for each time you want the button clicked.
;     You might also need to set the sun properly the first time, since that's a toggle.
; ======================================

Tick0 := "HHOO"
Tick1 := ""
Tick2 := ""
Tick3 := ""
Tick4 := ""
Tick5 := ""
Tick6 := ""
Tick7 := ""
Tick8 := ""
Tick9 := ""
Tick10 := ""
Tick11 := ""
Tick12 := ""
Tick13 := ""
Tick14 := ""
Tick15 := "N"
Tick16 := "HHHHHOOOOO"
Tick17 := "O"
Tick18 := ""
Tick19 := ""
Tick20 := ""
Tick21 := ""
Tick22 := ""
Tick23 := ""
Tick24 := ""
Tick25 := ""
Tick26 := ""
Tick27 := ""
Tick28 := ""
Tick29 := ""
Tick30 := ""
Tick31 := ""
Tick32 := ""
Tick33 := ""
Tick34 := ""
Tick35 := ""
Tick36 := ""
Tick37 := ""
Tick38 := ""
Tick39 := ""

; ======================================


TickTime := 10 * 1000 * 1.1

OCount := 0
Ox1 := 0
Oy1 := 0
Ox2 := 0
Oy2 := 0
Ox3 := 0
Oy3 := 0
Ox4 := 0
Oy4 := 0
Ox5 := 0
Oy5 := 0
Ox6 := 0
Oy6 := 0
Ox7 := 0
Oy7 := 0
Ox8 := 0
Oy8 := 0
Oy9 := 0


; Constants

bordercolor := 0x2E5072




; F3 to pause
F3::Pause

; Ctrl+F1 to re-initialize
^F1::Init()

; F1 to mark a garden dialog
F1::MarkGarden()

; F2 to begin
F2::StartGardens()

^F2::TestImage()



Init() {
    MsgBox, Welcome to Auto-Thistle.`n  F1 to mark a garden dialog.`n  F2 to Start.`n  F3 to Pause, Auto-Thistle
    OCount := 0
    Progress, SHOW, Completed setup, Mark gardens with F1 and press F2 to Start, AutoThistle
    Progress, x100 y100, Completed Setup, Mark gardens with F1 and press F2 to Start, Glass!

}


MarkGarden() {
    global Tick0, Tick1, Tick2, Tick3, Tick4, Tick5, Tick6, Tick7, Tick8, Tick9, Tick10, Tick11, Tick12, Tick13, Tick14, Tick15, Tick16, Tick17, Tick18, Tick19, Tick20, Tick21, Tick22, Tick23, Tick24, Tick25, Tick26, Tick27, Tick28, Tick29, Tick30, Tick31, Tick32, Tick33, Tick34, Tick35, Tick36, Tick37, Tick38, Tick39
    global OCount, Ox1, Oy1, Ox2, Oy2, Ox3, Oy3, Ox4, Oy4, Ox5, Oy5, Ox6, Oy6, Ox7, Oy7, Ox8, Oy9
    global bordercolor, TickTime
    
    MouseGetPos, mouseX, mouseY

    PixelSearch, , zeroY, mouseX, mouseY, mouseX, mouseY+300, %Bordercolor%
    PixelSearch, zeroX , , mouseX, mouseY, mouseX + 400, mouseY, %Bordercolor%

    if ErrorLevel {
        MsgBox, Garden Dialog Point not found, please try again
    } else {
        MouseMove, zeroX, zeroY
        ;MsgBox, Found corner here, Auto-CC
        
        OCount := OCount + 1
        Ox%OCount% := zeroX 
        Oy%OCount% := zeroY
        
    }
}

TestImage() {
    WinWait, eGenesis Client, 
    IfWinNotActive, eGenesis Client, , WinActivate, eGenesis Client, 
    WinWaitActive, eGenesis Client,
    WinGetActiveStats, win_Title, win_Width, win_Height, win_Xpos, win_Ypos
    digit := 0
    ImageSearch, PCx, PCy, 0, 0, win_Width, win_Height, *60 ThistleLite%digit%.bmp
    if (ErrorLevel == 0) {
        MouseMove, PCx, PCy
    } else {
        MsgBox, Error was %ErrorLevel% for file ThistleLite%digit%.bmp
        SoundPlay, *48
    }
}

StartGardens() {
    global Tick0, Tick1, Tick2, Tick3, Tick4, Tick5, Tick6, Tick7, Tick8, Tick9, Tick10, Tick11, Tick12, Tick13, Tick14, Tick15, Tick16, Tick17, Tick18, Tick19, Tick20, Tick21, Tick22, Tick23, Tick24, Tick25, Tick26, Tick27, Tick28, Tick29, Tick30, Tick31, Tick32, Tick33, Tick34, Tick35, Tick36, Tick37, Tick38, Tick39
    global OCount, Ox1, Oy1, Ox2, Oy2, Ox3, Oy3, Ox4, Oy4, Ox5, Oy5, Ox6, Oy6, Ox7, Oy7, Ox8, Oy9
    global bordercolor, TickTime

    ThisGarden := 0
    
    ; Action timers
    Timer1 := -10000
    Timer2 := -10000
    Timer3 := -10000
    Timer4 := -10000
    Timer5 := -10000
    Timer6 := -10000
    Timer7 := -10000
    Timer8 := -10000
    Timer9 := -10000
    
    ;Tick counts
    Garden1 := 0
    Garden2 := 0
    Garden3 := 0
    Garden4 := 0
    Garden5 := 0
    Garden6 := 0
    Garden7 := 0
    Garden8 := 0
    Garden9 := 0

    GardenDone1 := 0
    GardenDone2 := 0
    GardenDone3 := 0
    GardenDone4 := 0
    GardenDone5 := 0
    GardenDone6 := 0
    GardenDone7 := 0
    GardenDone8 := 0
    GardenDone9 := 0
    
    ; Fire up the gardens.  Image search for 'plant' button
    
    if(OCount == 1) {
        FileAppend, === Garden Run ===`n, ThistleGardenResults.txt 
    }
    Loop %OCount% {
        ThisGarden := A_Index
        zeroX := Ox%ThisGarden%
        zeroY := Oy%ThisGarden%
        Ux := zeroX - 420
        Uy := zeroY - 330
        ;MouseMove, Ux, Uy
        ;Sleep, 1000
        ;MouseMove, zeroX, zeroY
        ;ImageSearch, PCx, PCy, Ux, Uy, zeroX, zeroY, *60 ThistlesPlantCrop.bmp
        ImageSearch, PCx, PCy, Ux, Uy, zeroX, zeroY, *60 ThistlesPlantCrop.bmp
        if (ErrorLevel >= 1) {
            MsgBox, Unable to find start button.
            return
        }

        startx := PCx
        starty := PCy

        MouseMove, startx, starty
        Click Right
    }

    ThisGarden := 0

    Sleep, 1000
    
    Loop {
        ThisGarden := ThisGarden + 1
        if(ThisGarden > OCount) {
            ThisGarden := 1
        }
        
        if(GardenDone%ThisGarden% == 0) {
            zeroX := Ox%ThisGarden%
            zeroY := Oy%ThisGarden%

            ; Find the 'nit' button and work from there.

            Ux := zeroX - 420
            Uy := zeroY - 330
            ImageSearch, PCx, PCy, Ux, Uy, zeroX, zeroY, *60 ThistlesNit.bmp

            ButtonY := PCy + 5
            NitX := PCx + 5
            PotX := PCx + 35
            H2OX := PCx + 65
            OxyX := PCx + 95
            SunX := PCx + 125
            NumbersX := NitX-30
            NumbersX2 := NitX+5
            NumbersY := ButtonY
            NumbersY2 := zeroY
            
            AscX := PCx + 183
            BioX := PCx + 210
            CarX := PCx + 240
            FolX := PCx + 268
            NiaX := PCx + 297
            PyrX := PCx + 325
            ThiX := PCx + 354
            
            Now := A_TickCount
            

            Current := Garden%ThisGarden%

            ImageSearch, PCx, PCy, NumbersX, NumbersY, NumbersX2, NumbersY2, *60 Thistle%Current%.bmp
            if(ErrorLevel == 0) {

                TickText := Tick%Current%

                Loop {
                    if(StrLen(TickText) <= 0) {
                        break
                    }

                    char := SubStr(TickText, 1, 1) 
                    TickText := SubStr(TickText, 2) 

                    if(char == "N") {
                        Click Right %NitX%, %ButtonY%
                    }
                    if(char == "P") {
                        Click Right %PotX%, %ButtonY%
                    }
                    if(char == "H") {
                        Click Right %H2OX%, %ButtonY%
                    }
                    if(char == "O") {
                        Click Right %OxyX%, %ButtonY%
                    }
                    if(char == "S") {
                        Click Right %SunX%, %ButtonY%
                    }                            
                }
                
                if(OCount == 1) {
                    Y1 := PCy -1
                    Y2 := Y1 + 10
                    ; Asc tens digit
                    Asc := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, AscX, Y1, AscX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Asc .= digit
                            break
                        }
                    }
                    ;Asc ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, AscX+6, Y1, AscX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Asc .= digit
                            break
                        }
                    }
                    ; Bio tens digit
                    Bio := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, BioX, Y1, BioX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Bio .= digit
                            break
                        }
                    }
                    ;Bio ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, BioX+6, Y1, BioX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Bio .= digit
                            break
                        }
                    }
                    ; Car tens digit
                    Car := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, CarX, Y1, CarX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Car .= digit
                            break
                        }
                    }
                    ;Car ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, CarX+6, Y1, CarX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Car .= digit
                            break
                        }
                    }
                    ; Fol tens digit
                    Fol := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, FolX, Y1, FolX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Fol .= digit
                            break
                        }
                    }
                    ;Fol ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, FolX+6, Y1, FolX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Fol .= digit
                            break
                        }
                    }
                    ; Nia tens digit
                    Nia := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, NiaX, Y1, NiaX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Nia .= digit
                            break
                        }
                    }
                    ;Nia ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, NiaX+6, Y1, NiaX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Nia .= digit
                            break
                        }
                    }
                    ; Pyr tens digit
                    Pyr := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, PyrX, Y1, PyrX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Pyr .= digit
                            break
                        }
                    }
                    ;Pyr ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, PyrX+6, Y1, PyrX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Pyr .= digit
                            break
                        }
                    }
                    ; Thi tens digit
                    Thi := ""
                    Loop 9 {
                        digit := A_Index
                        ImageSearch, dx, dy, ThiX, Y1, ThiX+8, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Thi .= digit
                            break
                        }
                    }
                    ;Thi ones digit
                    Loop 10 {
                        digit := A_Index - 1
                        ImageSearch, dx, dy, ThiX+6, Y1, ThiX+12, Y2, *60 ThistleLite%digit%.bmp
                        if(ErrorLevel == 0) {
                            Thi .= digit
                            break
                        }
                    }
                    FileAppend, %Asc%`, %Bio%`, %Car%`, %Fol%`, %Nia%`, %Pyr%`, %thi%`,`n, ThistleGardenResults.txt 

                }                        

                Garden%ThisGarden%++
                if(Garden%ThisGarden% >= 40) {
                    GardenDone%ThisGarden% := 1
                }
            }
        }
        
        OneLeft := 0
        Loop %OCount% {
            if(GardenDone%A_Index% == 0) {
                OneLeft := 1
                break
            }
        }
        if(!OneLeft) {
            break
        }
        
        Progress, 100, First Garden at %Garden1%, Woot, Thistles!
        Sleep,400
    }
    SoundPlay *-1
}