Last active
December 14, 2021 20:38
-
-
Save Systemcluster/b4f1e5568d9493c5bb48dbc0aa458d16 to your computer and use it in GitHub Desktop.
Realm Grinder Auto-Buy/Auto-Upgrade/Auto-Click Script for AutoHotKey
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Realm Grinder Auto-Buy/Auto-Upgrade/Auto-Click Script | |
; (c) 2019 Systemcluster | |
; | |
; Version: 2021-12-12 | |
; | |
; This script requires AutoHotKey 2.0-beta.3 or later. | |
; Tested with the Realm Grinder Steam version and AutoHotKey 2.0-beta.3 | |
; Controls: | |
; | |
; F1 = Buy All once | |
; F2 = Toggle Treasure Click Mode (full Auto-Click) | |
; F3 = Toggle Buy+Click Mode (Auto-Buy + Auto-Upgrade + minimal Auto-Click) | |
; F4 = Toggle Super Mode (Auto-Buy + Auto-Upgrade + full Auto-Click) | |
; | |
; PRINTSCREEN = Set position of prioritized click (e.g. for prioritizing a building) | |
; ROLL = Reload script / Stop all | |
; PAUSE = Exit script | |
#MaxThreads 20 | |
#MaxThreadsPerHotkey 2 | |
#SingleInstance | |
SetControlDelay(-1) | |
SetDefaultMouseSpeed(0) | |
SetMouseDelay(1) | |
CoordMode("Pixel", "Client") | |
SetTitleMatchMode(3) | |
TITLE := "Realm Grinder" | |
BuyAllButtonX := 0 | |
BuyAllButtonY := 61 | |
PriorityBuyO := "Right" | |
PriorityBuyX := 0 | |
PriorityBuyY := 0 | |
YMid := 0 | |
XRight := 0 | |
BUY_BUTTON_COLOR := 0x980B1F | |
BUY_BUTTON_COLOR_ACTIVE := 0xB20E27 | |
ToggleRapid := False | |
ToggleBuy := False | |
ToggleSuper2 := False | |
UpdateBuyButton(BecomeActive:=True) { | |
; Update Buy All button position | |
if(BecomeActive) { | |
WinActivate() | |
Sleep(100) | |
} | |
else { | |
if(not WinActive()) { | |
return | |
} | |
} | |
global BuyAllButtonX | |
global BuyAllButtonY | |
global BUY_BUTTON_COLOR | |
global BUY_BUTTON_COLOR_ACTIVE | |
Color := PixelGetColor(121, BuyAllButtonY) | |
if(Color = BUY_BUTTON_COLOR) { | |
BuyAllButtonX := 121 | |
} | |
else if (Color = BUY_BUTTON_COLOR_ACTIVE) { | |
BuyAllButtonX := 121 | |
} | |
else { | |
Color := PixelGetColor(250, BuyAllButtonY) | |
if(Color = BUY_BUTTON_COLOR) { | |
BuyAllButtonX := 250 | |
} | |
else if(Color = BUY_BUTTON_COLOR_ACTIVE) { | |
BuyAllButtonX := 250 | |
} | |
else{ | |
BuyAllButtonX := 0 | |
} | |
} | |
} | |
UpdateDimensions() { | |
; Update window dimensions | |
global YMid | |
global XRight | |
WinGetPos(&X, &Y, &Width, &Height,) | |
XRight := Width - 200 | |
YMid := Floor((Height / 2) - 40) | |
} | |
TreasureClick(Times:=1,Delay:=16) { | |
; (Times) Treasure Clicks | |
global XRight | |
global YMid | |
Counter := 0 | |
While(Counter < Times) { | |
Counter := Counter + 1 | |
ControlClick("x" XRight " y" (YMid - 340),,,"LEFT", 1, "NA") | |
If(Counter < Times) { | |
Sleep(Delay) | |
} | |
} | |
} | |
BuyAllBuildings() { | |
; Buy All Buildings | |
; + 4 Treasure Clicks | |
global XRight | |
global YMid | |
global PriorityBuyX | |
global PriorityBuyY | |
global PriorityBuyO | |
if (PriorityBuyX > 0) { | |
if (PriorityBuyO = "Left") { | |
ControlClick("x" (PriorityBuyX) " y" (YMid + PriorityBuyY),,,"LEFT", 1, "NA") ; Priority Click | |
} | |
else { | |
WinGetPos(,,&Width,,) | |
ControlClick("x" (Width - PriorityBuyX) " y" (YMid + PriorityBuyY),,,"LEFT", 1, "NA") ; Priority Click | |
} | |
} | |
ControlClick("x" XRight " y" (YMid + 300),,,"LEFT", 1, "NA") ; Hall of Legends | |
ControlClick("x" XRight " y" (YMid + 240),,,"LEFT", 1, "NA") ; HoL - 1 | |
TreasureClick() | |
ControlClick("x" XRight " y" (YMid - 300),,,"LEFT", 1, "NA") ; Farm | |
ControlClick("x" XRight " y" (YMid - 240),,,"LEFT", 1, "NA") ; Inn | |
ControlClick("x" XRight " y" (YMid - 180),,,"LEFT", 1, "NA") ; Blacksmith | |
TreasureClick() | |
ControlClick("x" XRight " y" (YMid + 180),,,"LEFT", 1, "NA") ; HoL - 2 | |
ControlClick("x" XRight " y" (YMid + 120),,,"LEFT", 1, "NA") ; HoL - 3 | |
ControlClick("x" XRight " y" (YMid + 60),,,"LEFT", 1, "NA") ; HoL - 4 | |
ControlClick("x" XRight " y" (YMid),,,"LEFT", 1, "NA") ; HoL - 5 | |
ControlClick("x" XRight " y" (YMid - 60),,,"LEFT", 1, "NA") ; HoL - 6 | |
ControlClick("x" XRight " y" (YMid - 120),,,"LEFT", 1, "NA") ; HoL - 7 | |
TreasureClick() | |
ControlClick("x" XRight " y" (YMid + 300),,,"LEFT", 1, "NA") ; Hall of Legends | |
TreasureClick() | |
} | |
BuyAllUpgrades() { | |
; Buy All Upgrades | |
; + 1 Treasure Clicks | |
global BuyAllButtonX | |
global BuyAllButtonY | |
if(BuyAllButtonX > 0) { | |
ControlClick("x" BuyAllButtonX " y" BuyAllButtonY,,,"LEFT", 1, "NA") | |
TreasureClick() | |
} | |
} | |
F1:: { | |
; Buy All Once | |
global TITLE | |
if WinExist(TITLE) { | |
UpdateBuyButton() | |
UpdateDimensions() | |
TreasureClick(5) | |
BuyAllUpgrades() | |
BuyAllBuildings() | |
TreasureClick(5) | |
Sleep(200) | |
} | |
Return | |
} | |
F2:: { | |
; Treasure Click Mode | |
global TITLE | |
global ToggleRapid | |
global ToggleBuy | |
global ToggleSuper2 | |
ToggleRapid := !ToggleRapid | |
ToggleBuy := False | |
ToggleSuper2 := False | |
if WinExist(TITLE) { | |
UpdateBuyButton() | |
UpdateDimensions() | |
global BuyAllButtonX | |
global BuyAllButtonY | |
global XRight | |
While ToggleRapid { | |
TreasureClick(15) | |
Sleep(260) | |
TreasureClick(15) | |
Sleep(260) | |
} | |
} | |
Return | |
} | |
F3:: { | |
; Buy+Click Mode | |
global TITLE | |
global ToggleRapid | |
global ToggleBuy | |
global ToggleSuper2 | |
ToggleBuy := !ToggleBuy | |
ToggleRapid := False | |
ToggleSuper2 := False | |
If ToggleBuy { | |
if WinExist(TITLE) { | |
UpdateBuyButton() | |
Counter := 3 | |
While ToggleBuy { | |
UpdateBuyButton(False) | |
UpdateDimensions() | |
TreasureClick(3) | |
if(Counter >= 2) { | |
Counter := 0 | |
; Only buy upgrades every second iteration | |
; This prevents the message popup getting stuck | |
BuyAllUpgrades() | |
} | |
Counter := Counter + 1 | |
TreasureClick(3) | |
Sleep(400) | |
BuyAllBuildings() | |
Sleep(25) | |
TreasureClick(3) | |
Sleep(400) | |
} | |
} | |
} | |
Return | |
} | |
F4:: { | |
; Super Buy+Click Mode (max clicks) | |
global TITLE | |
global ToggleRapid | |
global ToggleBuy | |
global ToggleSuper2 | |
ToggleSuper2 := !ToggleSuper2 | |
ToggleBuy := False | |
ToggleRapid := False | |
If ToggleSuper2 { | |
if WinExist(TITLE) { | |
UpdateBuyButton() | |
Counter := 3 | |
While ToggleSuper2 { | |
UpdateBuyButton(False) | |
UpdateDimensions() | |
TreasureClick(1) | |
if(Counter >= 2) { | |
Counter := 0 | |
; Only buy upgrades every second iteration | |
; This prevents the message popup getting stuck | |
BuyAllUpgrades() ; +1 Clicks | |
} | |
else { | |
TreasureClick(1) | |
} | |
Counter := Counter + 1 | |
TreasureClick(1) | |
Sleep(250) | |
BuyAllBuildings() ; +4 Clicks | |
Sleep(20) | |
TreasureClick(15) | |
Sleep(250) | |
TreasureClick(8) | |
} | |
} | |
} | |
Return | |
} | |
PrintScreen:: { | |
; Update Buy All Button position and set Priority Click | |
global TITLE | |
if WinExist(TITLE) { | |
UpdateBuyButton() | |
UpdateDimensions() | |
global BuyAllButtonX | |
global BuyAllButtonY | |
global PriorityBuyX | |
global PriorityBuyY | |
global PriorityBuyO | |
global YMid | |
global XRight | |
MouseGetPos(&mX, &mY, &WinID) | |
WinTitle := WinGetTitle("ahk_id " WinID) | |
if (WinTitle = TITLE) { | |
WinGetPos(&X, &Y, &Width, &Height,) | |
if (mX > Width / 2) { | |
PriorityBuyX := Width - mX | |
PriorityBuyO := "Right" | |
} | |
else { | |
PriorityBuyX := mX | |
PriorityBuyO := "Left" | |
} | |
PriorityBuyY := mY - YMid | |
} | |
else { | |
PriorityBuyX := 0 | |
PriorityBuyY := 0 | |
} | |
} | |
Return | |
} | |
ScrollLock:: { | |
Reload | |
Sleep(500) | |
Return | |
} | |
Pause:: { | |
ExitApp | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment