Kiwi Clicker – AutoHotkey Scripts for Archer AFK Farming

AutoHotkey Scripts

Сrеdit gоеs to Birckk !

I completed the first reset and couldn’t be bothered to go further. But along the way I made some autohotkey scripts I thought I would share for grinding transcendence points using the archer. I’m not sure if this is at all the fastest way to grind but It’s what I got.

The versions are from after unlocking more and more starting points for upgrading archers. And the scripts are more or less the same with the difference in how many things are trained for archers and a few tweaks.

And the scripts expect 720p for the game if I’m not mistaken

; AutoHotKey Script for KiwiClicker
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

#SingleInstance Force
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#Persistent

CoordMode, ToolTip, Client
CoordMode, Mouse, Client
CoordMode, Pixel, Client

global gunUnlocked := true

global TotalSeconds := 0
global DoTranscend := false

global DoTrascendFarming := false
global TranscendTicks := 0
global TranscendCycle := (1.5 * 60) ; 30 sec per idle cycle

global IsUpgradingBuildings := false
global OrderBool := false

global ArcherX := 1020  ; X coordinate
global ArcherY := 516  ; Y coordinate

SetTimer, KC_Clicker, 25 ; Check every 25 milisecond
SetTimer, KC_ToolTip, 100 ; Update every 0,1 second
SetTimer, KC_Ticker, 1000 ; update every second

; Timer ---------------------------------------
KC_Ticker:
if(DoTrascendFarming && !DoTranscend)
{
	TotalSeconds++
}
return

; TranscendFarming --------------------------------------------
Transcend(){
    IfWinActive, ahk_exe Kiwi Clicker.exe  ; Only proceed if Kiwi Clicker.exe is active
    {
    DoTranscend := true
    TranscendTicks := 0
    TotalSeconds := 0

    CustomMovement(1135,236,765,236)
    sleep,400
    CustomMovement(765,236,1135,236)
    sleep,400
    CustomMovement(1135,236,765,236)
    sleep,400
    CustomMovement(765,236,1135,236)
    sleep,400
    CustomMovement(765,236,1135,236)

    sleep, 1000
    send g
    sleep, 50
    send g
    sleep, 3000 
    ; Upgrade_Archer()

    MouseMove, ArcherX, ArcherY
    sleep,1000
    
    DoTranscend := false

    TranscendTicks := 0
    TotalSeconds := 0
    }
}

KC_Clicker:
    IfWinActive, ahk_exe Kiwi Clicker.exe  ; Only proceed if Kiwi Clicker.exe is active
    {
        ;mouse
        MouseGetPos, xPos, yPos, winID
        WinGet, winProcName, ProcessName, winID
 
        ;archer box
        ArcherBoxTopX := 1002
        ArcherBoxTopY := 490
        ArcherBoxBottomX := 1056
        ArcherBoxBottomY := 551

        ; allowClick := (xPos > ArcherBoxTopX && xPos < ArcherBoxBottomX && yPos > ArcherBoxTopY && yPos < ArcherBoxBottomY)
        allowClick := xPos > ArcherBoxTopX && xPos < ArcherBoxBottomX && yPos > ArcherBoxTopY && yPos < ArcherBoxBottomY

        if(DoTrascendFarming && !DoTranscend){
            if(allowClick){
                if(!gunUnlocked){
                    ControlClick, x%ArcherX% y%ArcherY%, ahk_exe Kiwi Clicker.exe
                }
                if (Mod(TranscendTicks, 30) == 0 ){
                    Upgrade_Buildings(["t","r","e","q"])
                } 
                else if (Mod(TranscendTicks, 139) == 0 ){
                    Upgrade_Buildings(["w"])
                }
            }
            TranscendTicks++
    
            if (TotalSeconds >= TranscendCycle){
                Transcend()
            }
        }
    }
return

;upgrade every building in order
Upgrade_Buildings(buildingsArray){
    sleep 100
    Loop, % buildingsArray.Length()
        {
            Send % buildingsArray[A_Index]
            Sleep, 100
            Send 4
            Sleep, 100
        }
}
    
Upgrade_Archer(){
    IfWinActive, ahk_exe Kiwi Clicker.exe  ; Only proceed if Kiwi Clicker.exe is active
    {
    click, 1100, 660
    sleep, 300
    click, 305, 420
    sleep, 500
    click, 305, 470
    sleep, 150
    click, 366, 470
    sleep, 150
    click, 430, 470
    sleep, 150
    click, 242, 470
    sleep, 150
    click, 181, 470
    sleep, 150
    click, 305, 526
    sleep, 150
    click, 284, 579
    sleep, 150
    click, 326, 579
    sleep, 150
    ; next ones
    click, 305, 413
    sleep, 150
    click, 305, 345
    sleep, 150
    click, 334, 379
    sleep, 150
    click, 277, 379
    sleep, 150
    ; next ones
    ClickDelay(356, 420, 150)
    ClickDelay(397, 434, 150)
    ClickDelay(255, 420, 150)
    ClickDelay(212, 434, 150)
    ; finish
    sleep, 50
    ClickDelay(1212, 36, 150)
    }
}

ClickDelay(x, y, delay:=100) {
    Click, %x%, %y%
	Sleep, delay
}

; activation Keys --------------------------------------------
#IfWinActive ahk_exe Kiwi Clicker.exe
;; Make all hotkeys defined below context-sensitive (TC window must be active). 

F1:: ; Toggle TranscendFarming
DoTrascendFarming := !DoTrascendFarming
return

F2:: ; Toggle Buy
Transcend()
return

; ToolTip --------------------------------------------
KC_ToolTip:
    IfWinActive, ahk_exe Kiwi Clicker.exe  ; Replace 'YourApplication.exe' with the executable of your specific application
    {
        TooltipString := "Transcend Farming (F1): " . (DoTrascendFarming ? "True" : "False") 
        ; UpgradeCounterString := ""
        ; StrPut(UpgradeCounter, &UpgradeCounterString)
        TooltipString := TooltipString . "`nTranscendTicks = " . TranscendTicks
        TooltipString := TooltipString . "`nTime = " . TotalSeconds
        TooltipString := TooltipString . "`n`nTranscend (F2)"
        ToolTip, %TooltipString%, 0, 100  ; Display tooltip at (8, 120)
    }
    else
    {
        ToolTip  ; Hide tooltip if the specific application is not active
    }
return

; Custom Movement --------------------------------------------
CustomMovement(startX, startY, endX, endY){
    ; Define the duration and intervals
    duration := 500  ; 500 milliseconds = 0.5 seconds
    interval := 10  ; Update every 10 milliseconds

    ; Calculate the number of steps
    steps := duration // interval

    ; Loop to move the cursor
    Loop, % steps
    {
        ; Calculate the time factor (how far along the duration we are)
        t := A_Index / steps

        ; Interpolate the x and y positions
        x := (1-t) * startX + t * endX
        y := (1-t) * startY + t * endY

        ; Move the mouse
        MouseMove, % x, % y, 0  ; The "0" makes the movement instant

        ; Sleep for the interval
        Sleep, % interval
    }
    return
}
Volodymyr Azimoff
About Volodymyr Azimoff 13797 Articles
I love games and I live games. Video games are my passion, my hobby and my job. My experience with games started back in 1994 with the Metal Mutant game on ZX Spectrum computer. And since then, I’ve been playing on anything from consoles, to mobile devices. My first official job in the game industry started back in 2005, and I'm still doing what I love to do.

Be the first to comment

Leave a Reply

Your email address will not be published.


*