Main
Main
#SingleInstance, Force
#NoEnv
SetWorkingDir %A_ScriptDir%
#WinActivateForce
SetMouseDelay, -1
SetWinDelay, -1
SetControlDelay, -1
SetBatchLines, -1
; globals
global webhookURL
global privateServerLink
global discordUserID
global PingSelected
global reconnectingProcess
global windowIDS := []
global currentWindow := ""
global firstWindow := ""
global instanceNumber
global idDisplay := ""
global started := 0
global cycleCount := 0
global cycleFinished := 0
global toolTipText := ""
global currentHour
global currentMinute
global currentSecond
global midX
global midY
global msgBoxCooldown := 0
global gearAutoActive := 0
global seedAutoActive := 0
global eggAutoActive := 0
global cosmeticAutoActive := 0
global honeyShopAutoActive := 0
global honeyDepositAutoActive := 0
global collectPollinatedAutoActive := 0
global actionQueue := []
global selectedResolution
; http functions
SendDiscordMessage(webhookURL, message) {
try {
whr.Open("POST", webhookURL, false)
whr.SetRequestHeader("Content-Type", "application/json")
whr.Send(json)
whr.WaitForResponse()
status := whr.Status
global webhookURL
global privateServerLink
global settingsFile
isValid := 0
try {
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", url, false)
whr.Send()
whr.WaitForResponse()
status := whr.Status
if (msg) {
if (mode = "webhook") {
if (isValid && webhookURL != "") {
IniWrite, %webhookURL%, %settingsFile%, Main, UserWebhook
MsgBox, 0, Message, Webhook Saved Successfully
}
else if (!isValid && webhookURL != "") {
MsgBox, 0, Message, Invalid Webhook
IniRead, savedWebhook, %settingsFile%, Main, UserWebhook,
GuiControl,, webhookURL, %savedWebhook%
}
} else if (mode = "privateserver") {
if (isValid && privateServerLink != "") {
IniWrite, %privateServerLink%, %settingsFile%, Main,
PrivateServerLink
MsgBox, 0, Message, Private Server Link Saved Successfully
}
else if (!isValid && privateServerLink != "") {
MsgBox, 0, Message, Invalid Private Server Link
IniRead, savedServerLink, %settingsFile%, Main, PrivateServerLink,
GuiControl,, privateServerLink, %savedServerLink%
}
}
}
return isValid
}
static popupID := 99
innerX := 20
innerY := 35
innerW := 200
innerH := 50
winW := 200
winH := 50
x := guiX + (guiW - winW) // 2 - 40
y := guiY + (guiH - winH) // 2
if (!msgBoxCooldown) {
msgBoxCooldown = 1
Gui, %popupID%:Destroy
Gui, %popupID%:+AlwaysOnTop -Caption +ToolWindow +Border
Gui, %popupID%:Color, FFFFFF
Gui, %popupID%:Font, s10 cBlack, Segoe UI
Gui, %popupID%:Add, Text, x%innerX% y%innerY% w%innerW% h%innerH%
BackgroundWhite Center cBlack, %msgText%
Gui, %popupID%:Show, x%x% y%y% NoActivate
SetTimer, HidePopupMessage, -%duration%
Sleep, 2200
msgBoxCooldown = 0
}
DonateResponder(ctrlName) {
MsgBox, 1, Disclaimer,
(
Your browser will open with a link to a roblox gamepass once you press OK.
- Feel free to check the code, there are no malicious links.
)
IfMsgBox, OK
if (ctrlName = "Donate100")
Run, https://www.roblox.com/game-pass/1197306369/100-Donation
else if (ctrlName = "Donate500")
Run, https://www.roblox.com/game-pass/1222540123/500-Donation
else if (ctrlName = "Donate1000")
Run, https://www.roblox.com/game-pass/1222262383/1000-Donation
else if (ctrlName = "Donate2500")
Run, https://www.roblox.com/game-pass/1222306189/2500-Donation
else if (ctrlName = "Donate10000")
Run, https://www.roblox.com/game-pass/1220930414/10-000-Donation
else
return
}
; mouse functions
SafeMoveRelative(xRatio, yRatio) {
if WinExist("ahk_exe RobloxPlayerBeta.exe") {
WinGetPos, winX, winY, winW, winH, ahk_exe RobloxPlayerBeta.exe
moveX := winX + Round(xRatio * winW)
moveY := winY + Round(yRatio * winH)
MouseMove, %moveX%, %moveY%
}
SafeClickRelative(xRatio, yRatio) {
if WinExist("ahk_exe RobloxPlayerBeta.exe") {
WinGetPos, winX, winY, winW, winH, ahk_exe RobloxPlayerBeta.exe
clickX := winX + Round(xRatio * winW)
clickY := winY + Round(yRatio * winH)
Click, %clickX%, %clickY%
}
getMouseCoord(axis) {
if (axis = "x")
return relX
else if (axis = "y")
return relY
global SavedSpeed
global SavedKeybind
global UINavigationFix
global indexItem
global currentArray
if (!continuous) {
sendKeybind(SavedKeybind)
Sleep, 50
if (UINavigationFix) {
repeatKey("Up", 5, 50)
Sleep, 50
repeatKey("Left", 3, 50)
Sleep, 50
repeatKey("up", 5, 50)
Sleep, 50
repeatKey("Left", 3, 50)
Sleep, 50
}
}
}
else if (mode = "calculate") {
if (dir = "up") {
repeatKey(dir)
repeatKey("Enter")
repeatKey(dir, sendCount)
}
else if (dir = "down") {
FileAppend, % "sendCount: " . sendCount . "`n", debug.txt
if ((currentArray.Name = "honeyItems") && (previousIndex = 1 ||
previousIndex = 10 || previousIndex = 12)) {
if (!(findIndex(indexArray, 1, "bool"))) {
sendCount++
}
sendCount--
FileAppend, % "went down one less because of previous index: " .
previousIndex . "`n", debug.txt
}
repeatKey(dir, sendCount)
repeatKey("Enter")
repeatKey(dir)
if ((currentArray.Name = "gearItems") && (index != 2) &&
(UINavigationFix)) {
repeatKey("Left")
}
else if ((currentArray.Name = "seedItems") && (UINavigationFix)) {
repeatKey("Left")
}
if ((currentArray.Name = "honeyItems") && (index = 1 || index = 10 ||
index = 12)) {
repeatKey(dir)
FileAppend, % "went down one extra for index: " . index . "`n",
debug.txt
}
}
}
else if (mode = "close") {
if (dir = "up") {
if (itemType = "Honey" && UINavigationFix) {
index += 10
}
repeatKey(dir)
repeatKey("Enter")
repeatKey(dir, index)
}
else if (dir = "down") {
repeatKey(dir, index)
repeatKey("Enter")
repeatKey(dir)
}
if (exitUi) {
Sleep, 50
sendKeybind(SavedKeybind)
}
return
global currentArray
global currentSelectedArray
global indexItem := ""
global indexArray := []
global UINavigationFix
indexArray := []
lastIndex := 0
; name array
if (itemType = "honey" && UINavigationFix) {
StringUpper, itemType, itemType, T
arrayName := "real" . itemType . "Items"
}
else {
arrayName := itemType . "Items"
}
currentArray := %arrayName%
currentArray.Name := arrayName
; get arrays
StringUpper, itemType, itemType, T
; buy items
for i, index in indexArray {
currentItem := currentSelectedArray[i]
Sleep, 50
uiUniversal(, 0, 1, , , , "calculate", index, "down", itemType)
indexItem := currentSelectedArray[i]
sleepAmount(100, 200)
quickDetect(0x26EE26, 0x1DB31D, 5, 0.4262, 0.2903, 0.6918, 0.8508)
Sleep, 50
lastIndex := index - 1
}
; end
Sleep, 100
uiUniversal(, 0, 1,,,, "close", lastIndex, "up", itemType)
Sleep, 100
; helper functions
global SavedSpeed
if (key = "nil") {
return
}
Loop, %count% {
Send {%key%}
Sleep, % (SavedSpeed = "Ultra" ? (delay - 25) : SavedSpeed = "Max" ? (delay
- 30) : delay)
}
sendKeybind(keybind) {
if (keybind = "\") {
Send, \
} else {
Send, {%keybind%}
}
}
sleepAmount(fastTime, slowTime) {
global SavedSpeed
FileAppend, % "Searching " . array.Name . " for " . value . "`n", debug.txt
if (returnValue = "int") {
return 1
}
else if (returnValue = "bool") {
return false
}
searchItem(search := "nil") {
global UINavigationFix
if(search = "nil") {
Return
}
;with UINavigationFix
if (UINavigationFix) {
uiUniversal("150524150505305", 0)
typeString(search)
Sleep, 50
if (search = "recall") {
uiUniversal("4335505541555055", 1, 1)
}
else if (search = "pollinated") {
uiUniversal("22115505544444444441111111155055", 1, 1)
}
else if (search = "pollen") {
uiUniversal("2211550554444444444111111155055", 1, 1)
}
uiUniversal(10)
}
else { ;without UINavigationFix
uiUniversal("1011143333333333333333333311440", 0)
Sleep, 50
typeString(search)
Sleep, 50
if (search = "recall") {
uiUniversal("2211550554155055", 1, 1)
}
else if (search = "pollinated") {
uiUniversal("22115505544444444444444444444441111111155055", 1, 1)
}
else if (search = "pollen") {
uiUniversal("2211550554444444444111111155055", 1, 1)
}
uiUniversal(10)
}
if (string = "") {
Return
}
if (clean) {
Send {BackSpace 20}
Sleep, 100
}
Return
dialogueClick(shop) {
Loop, 5 {
Send, {WheelUp}
Sleep, 20
}
Sleep, 500
if (shop = "gear") {
SafeClickRelative(midX + 0.4, midY - 0.1)
}
else if (shop = "honey") {
SafeClickRelative(midX + 0.4, midY)
}
Sleep, 500
Loop, 5 {
Send, {WheelDown}
Sleep, 20
}
SafeClickRelative(midX, midY)
if (unselect) {
Send, {%key%}
Sleep, 200
Send, {%key%}
}
else if (select) {
Send, {%key%}
}
closeRobuxPrompt() {
Loop, 4 {
Send {Escape}
Sleep, 100
}
}
getWindowIDS(returnIndex := 0) {
global windowIDS
global idDisplay
global firstWindow
windowIDS := []
idDisplay := ""
firstWindow := ""
Loop, %robloxWindows% {
windowIDS.Push(robloxWindows%A_Index%)
idDisplay .= windowIDS[A_Index] . ", "
}
firstWindow := % windowIDS[1]
if (returnIndex) {
Return windowIDS[returnIndex]
}
closeShop(shop, success) {
if (success) {
Sleep, 500
if (shop = "Honey") {
if (UINavigationFix) {
uiUniversal("2223331111140", 1, 1)
}
else {
uiUniversal("43333311140320", 1, 1)
}
}
else {
uiUniversal("4330320", 1, 1)
}
}
else {
walkDistance(order := 0, multiplier := 1) {
; later
sendMessages() {
; later
; color detectors
global UINavigationFix
global selectedEggItems
global currentItem
eggsCompleted := 0
isSelected := 0
eggColorMap := Object()
eggColorMap["Common Egg"] := "0xFFFFFF"
eggColorMap["Uncommon Egg"] := "0x81A7D3"
eggColorMap["Rare Egg"] := "0xBB5421"
eggColorMap["Legendary Egg"] := "0x2D78A3"
eggColorMap["Mythical Egg"] := "0x00CCFF"
eggColorMap["Bug Egg"] := "0x86FFD5"
Loop, 5 {
for rarity, color in eggColorMap {
currentItem := rarity
isSelected := 0
if (!eggsCompleted) {
uiUniversal(5, 1, 1)
ToolTip, Error In Detection
SetTimer, HideTooltip, -1500
SendDiscordMessage(webhookURL, "Failed To Detect Any Egg [Error]" .
(PingSelected ? " <@" . discordUserID . ">" : ""))
}
PixelSearch, FoundX, FoundY, x1, y1, x2, y2, colorInBGR, variation, Fast
if (ErrorLevel = 0) {
return true
}
stock := 0
eggDetected := 0
global currentItem
global UINavigationFix
ping := false
if (PingSelected) {
for i, pingitem in pingItems {
if (pingitem = currentItem) {
ping := true
break
}
}
}
; for eggs
if (egg) {
PixelSearch, FoundX, FoundY, x1, y1, x2, y2, color1, variation, Fast RGB
if (ErrorLevel = 0) {
stock := 1
ToolTip, %currentItem% `nIn Stock
SetTimer, HideTooltip, -1500
uiUniversal(500, 1, 1)
Sleep, 50
if (ping)
SendDiscordMessage(webhookURL, "Bought " . currentItem . ". <@" .
discordUserID . ">")
else
SendDiscordMessage(webhookURL, "Bought " . currentItem . ".")
}
if (!stock) {
if (UINavigationFix) {
uiUniversal(3140, 1, 1)
}
else {
uiUniversal(1105, 1, 1)
}
SendDiscordMessage(webhookURL, currentItem . " Not In Stock.")
}
}
Sleep, 100
if (!stock) {
ToolTip, %currentItem% `nNot In Stock
SetTimer, HideTooltip, -1500
; SendDiscordMessage(webhookURL, currentItem . " Not In Stock.")
}
; item arrays
eggItems := ["Common Egg", "Uncommon Egg", "Rare Egg", "Legendary Egg", "Mythical
Egg"
, "Bug Egg"]
cosmeticItems := ["Cosmetic 1", "Cosmetic 2", "Cosmetic 3", "Cosmetic 4", "Cosmetic
5"
, "Cosmetic 6", "Cosmetic 7", "Cosmetic 8", "Cosmetic 9"]
function1(username) {
global GAME_PASS_ID
username := Trim(username)
if (function1(rbUser)) {
IniWrite, 1, %settingsFile%, Main, %VERIFIED_KEY%
IniWrite, %rbUser%, %settingsFile%, Main, VerifiedUsername
MsgBox, 0, Success, Verification successful, enjoy the macro!
} else {
MsgBox, 16, Access Denied, Sorry, that account does not own the required
game-pass.
ExitApp
}
}
Gosub, ShowGui
; main ui
ShowGui:
Gui, Destroy
Gui, +Resize +MinimizeBox +SysMenu
Gui, Margin, 10, 10
Gui, Color, 0x202020
Gui, Font, s9 cWhite, Segoe UI
Gui, Add, Tab, x10 y10 w580 h440 vMyTab, Seeds|Gears|Eggs|Honey|Cosmetics|
Settings|Credits
Gui, Tab, 1
Gui, Font, s9 c90EE90 Bold, Segoe UI
Gui, Add, GroupBox, x23 y50 w475 h340 c90EE90, Seed Shop Items
IniRead, SelectAllSeeds, %settingsFile%, Seed, SelectAllSeeds, 0
Gui, Add, Checkbox, % "x50 y90 vSelectAllSeeds gHandleSelectAll c90EE90 " .
(SelectAllSeeds ? "Checked" : ""), Select All Seeds
Loop, % seedItems.Length() {
IniRead, sVal, %settingsFile%, Seed, Item%A_Index%, 0
if (A_Index > 18) {
col := 350
idx := A_Index - 19
yBase := 125
}
else if (A_Index > 9) {
col := 200
idx := A_Index - 10
yBase := 125
}
else {
col := 50
idx := A_Index
yBase := 100
}
y := yBase + (idx * 25)
Gui, Add, Checkbox, % "x" col " y" y " vSeedItem" A_Index "
gHandleSelectAll cD3D3D3 " . (sVal ? "Checked" : ""), % seedItems[A_Index]
}
Gui, Tab, 2
Gui, Font, s9 c87CEEB Bold, Segoe UI
Gui, Add, GroupBox, x23 y50 w475 h340 c87CEEB, Gear Shop Items
IniRead, SelectAllGears, %settingsFile%, Gear, SelectAllGears, 0
Gui, Add, Checkbox, % "x50 y90 vSelectAllGears gHandleSelectAll c87CEEB " .
(SelectAllGears ? "Checked" : ""), Select All Gears
Loop, % gearItems.Length() {
IniRead, gVal, %settingsFile%, Gear, Item%A_Index%, 0
if (A_Index > 9) {
col := 200
idx := A_Index - 10
yBase := 125
}
else {
col := 50
idx := A_Index
yBase := 100
}
y := yBase + (idx * 25)
Gui, Add, Checkbox, % "x" col " y" y " vGearItem" A_Index "
gHandleSelectAll cD3D3D3 " . (gVal ? "Checked" : ""), % gearItems[A_Index]
}
Gui, Tab, 3
Gui, Font, s9 ce87b07 Bold, Segoe UI
Gui, Add, GroupBox, x23 y50 w475 h340 ce87b07, Egg Shop
IniRead, SelectAllEggs, %settingsFile%, Egg, SelectAllEggs, 0
Gui, Add, Checkbox, % "x50 y90 vSelectAllEggs gHandleSelectAll ce87b07 " .
(SelectAllEggs ? "Checked" : ""), Select All Eggs
Loop, % eggItems.Length() {
IniRead, eVal, %settingsFile%, Egg, Item%A_Index%, 0
y := 125 + (A_Index - 1) * 25
Gui, Add, Checkbox, % "x50 y" y " vEggItem" A_Index " gHandleSelectAll
cD3D3D3 " . (eVal ? "Checked" : ""), % eggItems[A_Index]
}
Gui, Tab, 4
Gui, Font, s9 ce8ac07 Bold, Segoe UI
Gui, Add, GroupBox, x23 y50 w475 h340 ce8ac07, Honey Shop
IniRead, AutoCollectPollinated, %settingsFile%, Honey, AutoCollectPollinated, 0
Gui, Add, Checkbox, % "x50 y90 vAutoCollectPollinated ce8ac07 " .
(AutoCollectPollinated ? "Checked" : ""), Auto-Collect Pollinated Plants
IniRead, AutoHoney, %settingsFile%, Honey, AutoDepositHoney, 0
Gui, Add, Checkbox, % "x50 y115 vAutoHoney ce8ac07 " . (AutoHoney ? "Checked" :
""), Auto-Deposit Honey
IniRead, SelectAllHoney, %settingsFile%, Honey, SelectAllHoney, 0
Gui, Add, Checkbox, % "x50 y140 vSelectAllHoney gHandleSelectAll ce8ac07 " .
(SelectAllHoney ? "Checked" : ""), Select All Honey Items
Loop, % realHoneyItems.Length() {
IniRead, gVal, %settingsFile%, Honey, Item%A_Index%, 0
if (A_Index > 7) {
col := 200
idx := A_Index - 8
yBase := 175
} else {
col := 50
idx := A_Index
yBase := 150
}
y := yBase + (idx * 25)
Gui, Add, Checkbox, % "x" col " y" y " vHoneyItem" A_Index "
gHandleSelectAll cD3D3D3 " . (gVal ? "Checked" : ""), % realHoneyItems[A_Index]
}
/*
Gui, Tab, 5
Gui, Font, s9 cD3D3D3 Bold, Segoe UI
; — Crafting Seeds —
Gui, Add, GroupBox, x23 y50 w230 h380 cD3D3D3, Crafting Seeds
IniRead, SelectAllCraft, %settingsFile%, Craft, SelectAllCraft, 0
Gui, Add, Checkbox, % "x40 y90 vSelectAllCraft gHandleSelectAll c90EE90 " .
(SelectAllCraft ? "Checked" : ""), Select All Seeds
Loop, % craftItems.Length() {
IniRead, cVal, %settingsFile%, Craft, Item%A_Index%, 0
y := 125 + (A_Index - 1) * 25
Gui, Add, Checkbox, % "x40 y" y " vCraftItem" A_Index " gHandleSelectAll
" . (cVal ? "Checked" : ""), % craftItems[A_Index]
}
; — Crafting Tools —
Gui, Add, GroupBox, x270 y50 w230 h380 cD3D3D3, Crafting Tools
IniRead, SelectAllCraft2, %settingsFile%, Craft2, SelectAllCraft2, 0
Gui, Add, Checkbox, % "x280 y90 vSelectAllCraft2 gHandleSelectAll c90EE90 " .
(SelectAllCraft2 ? "Checked" : ""), Select All Tools
Loop, % craftItems2.Length() {
IniRead, c2Val, %settingsFile%, Craft2, Item%A_Index%, 0
y := 125 + (A_Index - 1) * 25
Gui, Add, Checkbox, % "x280 y" y " vCraftItem2" A_Index " gHandleSelectAll
" . (c2Val ? "Checked" : ""), % craftItems2[A_Index]
}
*/
Gui, Tab, 5
Gui, Font, s9 cD41551 Bold, Segoe UI
Gui, Add, GroupBox, x23 y50 w475 h340 cD41551, Cosmetic Shop
IniRead, BuyAllCosmetics, %settingsFile%, Cosmetic, BuyAllCosmetics, 0
Gui, Add, Checkbox, % "x50 y90 vBuyAllCosmetics cD41551 " . (BuyAllCosmetics ?
"Checked" : ""), Buy All Cosmetics
Gui, Tab, 6
Gui, Font, s9 cWhite Bold, Segoe UI
Gui, Add, Button, x400 y165 w85 h18 gClearSaves Background202020, Clear Saves
Gui, Tab, 7
Gui, Font, s9 cWhite Bold, Segoe UI
Gui, Add, GroupBox, x23 y50 w475 h340 cD3D3D3, Credits
Gui, Show, w520 h460, Virage Premium GAG Macro [WORKING BEES]
Return
; ui handlers
DisplayWebhookValidity:
checkValidity(webhookURL, 1, "webhook")
Return
UpdateUserID:
if (discordUserID != "") {
IniWrite, %discordUserID%, %settingsFile%, Main, DiscordUserID
MsgBox, 0, Message, Discord UserID Saved
}
Return
DisplayServerValidity:
checkValidity(privateServerLink, 1, "privateserver")
Return
ClearSaves:
MsgBox, 0, Message, Webhook, User Id, and Private Server Link Cleared
Return
UpdateKeybind:
Gui, Submit, NoHide
if (StrLen(SavedKeybind) != 1)
return ; still editing – do nothing yet
IniWrite, %SavedKeybind%, %settingsFile%, Main, UINavigationKeybind
GuiControl,, SavedKeybind, %SavedKeybind%
MsgBox, 0, Message, % "Keybind saved as: " . SavedKeybind
Return
UpdateSpeed:
Return
UpdateResolution:
return
HandleSelectAll:
if (SubStr(A_GuiControl, 1, 9) = "SelectAll") {
group := SubStr(A_GuiControl, 10) ; seeds, gears, eggs
controlVar := A_GuiControl
Loop {
item := group . "Item" . A_Index
if (!IsSet(%item%))
break
GuiControl,, %item%, % %controlVar%
}
}
else if (RegExMatch(A_GuiControl, "^(Seed|Gear|Egg|Honey)Item\d+$", m)) {
group := m1 ; seed, gear, egg
assign := (group = "Seed" || group = "Gear" || group = "Egg") ? "SelectAll"
. group . "s" : "SelectAll" . group
if (!%A_GuiControl%)
GuiControl,, %assign%, 0
}
if (A_GuiControl = "SelectAllSeeds") {
Loop, % seedItems.Length()
GuiControl,, SeedItem%A_Index%, % SelectAllSeeds
Gosub, SaveSettings
}
else if (A_GuiControl = "SelectAllEggs") {
Loop, % eggItems.Length()
GuiControl,, EggItem%A_Index%, % SelectAllEggs
Gosub, SaveSettings
}
else if (A_GuiControl = "SelectAllGears") {
Loop, % gearItems.Length()
GuiControl,, GearItem%A_Index%, % SelectAllGears
Gosub, SaveSettings
}
else if (A_GuiControl = "SelectAllHoney") {
Loop, % realHoneyItems.Length()
GuiControl,, HoneyItem%A_Index%, % SelectAllHoney
Gosub, SaveSettings
}
UpdateSettingColor:
; color values
autoColor := "+c" . (AutoAlign ? "90EE90" : "D3D3D3")
pingColor := "+c" . (PingSelected ? "90EE90" : "D3D3D3")
multiInstanceColor := "+c" . (MultiInstanceMode ? "90EE90" : "D3D3D3")
uiNavigationFixColor := "+c" . (UINavigationFix ? "90EE90" : "D3D3D3")
; apply colors
GuiControl, %autoColor%, AutoAlign
GuiControl, +Redraw, AutoAlign
return
Donate:
DonateResponder(A_GuiControl)
Return
HideTooltip:
ToolTip
return
HidePopupMessage:
Gui, 99:Destroy
Return
if (mode = "seed") {
arr1 := scrollCounts_1080p
arr2 := scrollCounts_1440p_100
arr3 := scrollCounts_1440p_125
} else if (mode = "gear") {
arr1 := gearScroll_1080p
arr2 := gearScroll_1440p_100
arr3 := gearScroll_1440p_125
}
return loopCount
}
; item selection
UpdateSelectedItems:
selectedSeedItems := []
Loop, % seedItems.Length() {
if (SeedItem%A_Index%)
selectedSeedItems.Push(seedItems[A_Index])
}
selectedGearItems := []
Loop, % gearItems.Length() {
if (GearItem%A_Index%)
selectedGearItems.Push(gearItems[A_Index])
}
selectedEggItems := []
Loop, % eggItems.Length() {
if (eggItem%A_Index%)
selectedEggItems.Push(eggItems[A_Index])
}
selectedHoneyItems := []
Loop, % realHoneyItems.Length() {
if (HoneyItem%A_Index%)
selectedHoneyItems.Push(realHoneyItems[A_Index])
}
Return
GetSelectedItems() {
result := ""
if (selectedSeedItems.Length()) {
result .= "Seed Items:`n"
for _, name in selectedSeedItems
result .= " - " name "`n"
}
if (selectedGearItems.Length()) {
result .= "Gear Items:`n"
for _, name in selectedGearItems
result .= " - " name "`n"
}
if (selectedEggItems.Length()) {
result .= "Egg Items:`n"
for _, name in selectedEggItems
result .= " - " name "`n"
}
if (selectedHoneyItems.Length()) {
result .= "Honey Items:`n"
for _, name in selectedHoneyItems
result .= " - " name "`n"
}
return result
}
; macro starts
StartScanMultiInstance:
global cycleCount
global cycleFinished
global lastGearMinute := -1
global lastSeedMinute := -1
global lastEggShopMinute := -1
global lastCosmeticShopHour := -1
global lastHoneyShopMinute := -1
; global lastHoneyShopHour := -1
global lastDepositHoneyMinute := -1
global lastCollectPollinatedHour := -1
started := 1
cycleFinished := 1
currentSection := "StartScanMultiInstance"
getWindowIDS()
if(!windowIDS.MaxIndex()) {
MsgBox, 0, Message, No Roblox Window Found
Return
if (MultiInstanceMode) {
MsgBox, 1, Multi-Instance Mode, % "You have " . windowIDS.MaxIndex() . "
instances open. (Instance ID's: " . idDisplay . ")`nPress OK to start the macro."
IfMsgBox, Cancel
Return
}
if (MultiInstanceMode) {
for window in windowIDS {
currentWindow := % windowIDS[window]
Sleep, 500
SafeClickRelative(0.5, 0.5)
Sleep, 100
Gosub, alignment
Sleep, 100
}
}
else {
Sleep, 500
Gosub, alignment
Sleep, 100
Gosub, UpdateSelectedItems
itemsText := GetSelectedItems()
Sleep, 500
Gosub, SetTimers
while (started) {
if (actionQueue.Length()) {
SetTimer, AutoReconnect, Off
ToolTip
next := actionQueue.RemoveAt(1)
if (MultiInstanceMode) {
for window in windowIDS {
currentWindow := % windowIDS[window]
instanceNumber := window
ToolTip, % "Running Cycle On Instance " . window
SetTimer, HideTooltip, -1500
SendDiscordMessage(webhookURL, "***Instance " .
instanceNumber . "***")
WinActivate, % "ahk_id " . currentWindow
Sleep, 200
SafeClickRelative(midX, midY)
Sleep, 200
Gosub, % next
}
}
else {
WinActivate, % "ahk_id " . firstWindow
Gosub, % next
}
if (!actionQueue.MaxIndex()) {
cycleFinished := 1
}
Sleep, 500
} else {
Gosub, SetToolTip
if (cycleFinished) {
WinActivate, % "ahk_id " . firstWindow
cycleCount++
SendDiscordMessage(webhookURL, "[**CYCLE " . cycleCount . "
COMPLETED**]")
cycleFinished := 0
if (!MultiInstanceMode) {
SetTimer, AutoReconnect, 5000
}
}
Sleep, 1000
}
}
Return
; actions
AutoBuySeed:
; queues if its not the first cycle and the time is a multiple of 5
if (cycleCount > 0 && Mod(currentMinute, 5) = 0 && currentMinute !=
lastSeedMinute) {
lastSeedMinute := currentMinute
SetTimer, PushBuySeed, -8000
}
Return
PushBuySeed:
actionQueue.Push("BuySeed")
Return
BuySeed:
currentSection := "BuySeed"
if (selectedSeedItems.Length())
Gosub, SeedShopPath
Return
AutoBuyGear:
; queues if its not the first cycle and the time is a multiple of 5
if (cycleCount > 0 && Mod(currentMinute, 5) = 0 && currentMinute !=
lastGearMinute) {
lastGearMinute := currentMinute
SetTimer, PushBuyGear, -8000
}
Return
PushBuyGear:
actionQueue.Push("BuyGear")
Return
BuyGear:
currentSection := "BuyGear"
if (selectedGearItems.Length())
Gosub, GearShopPath
Return
AutoBuyEggShop:
; queues if its not the first cycle and the time is a multiple of 30
if (cycleCount > 0 && Mod(currentMinute, 30) = 0 && currentMinute !=
lastEggShopMinute) {
lastEggShopMinute := currentMinute
SetTimer, PushBuyEggShop, -8000
}
Return
PushBuyEggShop:
actionQueue.Push("BuyEggShop")
Return
BuyEggShop:
currentSection := "BuyEggShop"
if (selectedEggItems.Length()) {
Gosub, EggShopPath
}
Return
AutoBuyCosmeticShop:
; queues if its not the first cycle, the minute is 0, and the current hour is
an even number (every 2 hours)
if (cycleCount > 0 && currentMinute = 0 && Mod(currentHour, 2) = 0 &&
currentHour != lastCosmeticShopHour) {
lastCosmeticShopHour := currentHour
SetTimer, PushBuyCosmeticShop, -8000
}
Return
PushBuyCosmeticShop:
actionQueue.Push("BuyCosmeticShop")
Return
BuyCosmeticShop:
currentSection := "BuyCosmeticShop"
if (BuyAllCosmetics) {
Gosub, CosmeticShopPath
}
Return
AutoCollectPollinated:
; queues if its not the first cycle, the minute is 0, and the current hour
isn't the same as the last hour it was run
if (cycleCount > 0 && currentMinute = 0 && currentHour !=
lastCollectPollinatedHour) {
lastHoneyShopHour := currentHour
SetTimer, PushCollectPollinated, -600000
}
Return
PushCollectPollinated:
actionQueue.Push("CollectPollinated")
Return
CollectPollinated:
currentSection := "CollectPollinated"
if (AutoCollectPollinated) {
Gosub, CollectPollinatedPath
}
Return
AutoBuyHoneyShop:
; queues if its not the first cycle and the time is a multiple of 30
if (cycleCount > 0 && Mod(currentMinute, 30) = 0 && currentMinute !=
lastHoneyShopMinute) {
lastHoneyShopMinute := currentMinute
SetTimer, PushBuyHoneyShop, -8000
}
Return
PushBuyHoneyShop:
actionQueue.Push("BuyHoneyShop")
Return
BuyHoneyShop:
currentSection := "BuyHoneyShop"
if (selectedHoneyItems.Length()) {
Gosub, HoneyShop
}
Return
AutoDepositHoney:
; queues if its not the first cycle and the time is a multiple of 5
if (cycleCount > 0 && Mod(currentMinute, 5) = 0 && currentMinute !=
lastDepositHoneyMinute) {
lastDepositHoneyMinute := currentMinute
SetTimer, PushDepositHoney, -8000
}
Return
PushDepositHoney:
actionQueue.Push("DepositHoney")
Return
DepositHoney:
currentSection := "DepositHoney"
if (AutoHoney) {
Gosub, DepositHoneyPath
}
Return
; helper labels
SetToolTip:
mod5 := Mod(currentMinute, 5)
rem5min := (mod5 = 0) ? 5 : 5 - mod5
rem5sec := rem5min * 60 - currentSecond
if (rem5sec < 0)
rem5sec := 0
seedMin := rem5sec // 60
seedSec := Mod(rem5sec, 60)
seedText := (seedSec < 10) ? seedMin . ":0" . seedSec : seedMin . ":" . seedSec
gearMin := rem5sec // 60
gearSec := Mod(rem5sec, 60)
gearText := (gearSec < 10) ? gearMin . ":0" . gearSec : gearMin . ":" . gearSec
depositHoneyMin := rem5sec // 60
depositHoneySec := Mod(rem5sec, 60)
depositHoneyText := (depositHoneySec < 10) ? depositHoneyMin . ":0" .
depositHoneySec : depositHoneyMin . ":" . depositHoneySec
tooltipText := ""
if (selectedSeedItems.Length()) {
tooltipText .= "Seed Shop: " . seedText . "`n"
}
if (selectedGearItems.Length()) {
tooltipText .= "Gear Shop: " . gearText . "`n"
}
if (selectedEggItems.Length()) {
tooltipText .= "Egg Shop : " . eggText . "`n"
}
if (BuyAllCosmetics) {
tooltipText .= "Cosmetic Shop: " . cosText . "`n"
}
if (AutoHoney) {
tooltipText .= "Deposit Honey: " . depositHoneyText . "`n"
}
if (selectedHoneyItems.Length()) {
tooltipText .= "Honey Shop: " . honeyText . "`n"
}
if (AutoCollectPollinated) {
tooltipText .= "Collect Pollinated: " . collectPollinatedText . "`n"
}
if (tooltipText != "") {
CoordMode, Mouse, Screen
MouseGetPos, mX, mY
offsetX := 10
offsetY := 10
ToolTip, % tooltipText, % (mX + offsetX), % (mY + offsetY)
} else {
ToolTip ; clears any existing tooltip
}
Return
SetTimers:
if (selectedSeedItems.Length()) {
actionQueue.Push("BuySeed")
}
seedAutoActive := 1
SetTimer, AutoBuySeed, 1000 ; checks every second if it should queue
if (selectedGearItems.Length()) {
actionQueue.Push("BuyGear")
}
gearAutoActive := 1
SetTimer, AutoBuyGear, 1000 ; checks every second if it should queue
if (selectedEggItems.Length()) {
actionQueue.Push("BuyEggShop")
}
eggAutoActive := 1
SetTimer, AutoBuyEggShop, 1000 ; checks every second if it should queue
if (BuyAllCosmetics) {
actionQueue.Push("BuyCosmeticShop")
}
cosmeticAutoActive := 1
SetTimer, AutoBuyCosmeticShop, 1000 ; checks every second if it should queue
if (AutoCollectPollinated) {
actionQueue.Push("CollectPollinated")
}
collectPollinatedAutoActive := 1
SetTimer, AutoCollectPollinated, 1000 ; checks every second if it should queue
if (selectedHoneyItems.Length()) {
actionQueue.Push("BuyHoneyShop")
}
honeyShopAutoActive := 1
SetTimer, AutoBuyHoneyShop, 1000 ; checks every second if it should queue
if (AutoHoney) {
actionQueue.Push("DepositHoney")
}
honeyDepositAutoActive := 1
SetTimer, AutoDepositHoney, 1000 ; checks every second if it should queue
Return
UpdateTime:
FormatTime, currentHour,, hh
FormatTime, currentMinute,, mm
FormatTime, currentSecond,, ss
currentHour := currentHour + 0
currentMinute := currentMinute + 0
currentSecond := currentSecond + 0
Return
AutoReconnect:
global actionQueue
Return
CheckLoadingScreen:
getWindowIDS()
Return
; set up labels
alignment:
SafeClickRelative(0.5, 0.5)
Sleep, 100
searchitem("recall")
Sleep, 200
if (AutoAlign) {
GoSub, cameraChange
Sleep, 100
Gosub, zoomAlignment
Sleep, 100
GoSub, cameraAlignment
Sleep, 100
Gosub, characterAlignment
Sleep, 100
Gosub, cameraChange
Sleep, 100
}
else {
Gosub, zoomAlignment
Sleep, 100
}
Sleep, 1000
uiUniversal(11110)
Sleep, 100
Return
cameraChange:
; changes camera mode to follow and can be called again to reverse it (0123, 0-
>3, 3->0)
Send, {Escape}
Sleep, 500
Send, {Tab}
Sleep, 400
Send {Down}
Sleep, 100
repeatKey("Right", 2, (SavedSpeed = "Ultra") ? 55 : (SavedSpeed = "Max") ? 60 :
30)
Sleep, 100
Send {Escape}
Return
cameraAlignment:
Return
zoomAlignment:
Loop, 40 {
Send, {WheelUp}
Sleep, 20
}
Sleep, 200
Loop, 6 {
Send, {WheelDown}
Sleep, 20
}
midX := getMouseCoord("x")
midY := getMouseCoord("y")
Return
characterAlignment:
; aligns character through spam tping and using the follow camera mode
sendKeybind(SavedKeybind)
Sleep, 10
if (UINavigationFix) {
repeatKey("Left", 5)
Sleep, 10
repeatKey("Up", 5)
Sleep, 10
}
repeatKey("Right", 3)
Loop, % ((SavedSpeed = "Ultra") ? 12 : (SavedSpeed = "Max") ? 18 : 8) {
Send, {Enter}
Sleep, 10
repeatKey("Right", 2)
Sleep, 10
Send, {Enter}
Sleep, 10
repeatKey("Left", 2)
}
Sleep, 10
sendKeybind(SavedKeybind)
Return
; buying paths
EggShopPath:
Sleep, 100
uiUniversal("11110")
Sleep, 100
hotbarController(1, 0, "2")
sleepAmount(100, 1000)
SafeClickRelative(midX, midY)
SendDiscordMessage(webhookURL, "**[Egg Cycle]**")
Sleep, 800
; egg 1 sequence
Send, {w Down}
Sleep, 1800
Send {w Up}
sleepAmount(500, 1000)
Send {e}
Sleep, 100
uiUniversal("11114", 0, 0)
Sleep, 100
quickDetectEgg(0x26EE26, 15, 0.41, 0.65, 0.52, 0.70)
Sleep, 800
; egg 2 sequence
Send, {w down}
Sleep, 200
Send, {w up}
sleepAmount(100, 1000)
Send {e}
Sleep, 100
uiUniversal("11114", 0, 0)
Sleep, 100
quickDetectEgg(0x26EE26, 15, 0.41, 0.65, 0.52, 0.70)
Sleep, 800
; egg 3 sequence
Send, {w down}
Sleep, 200
Send, {w up}
sleepAmount(100, 1000)
Send, {e}
Sleep, 200
uiUniversal("11114", 0, 0)
Sleep, 100
quickDetectEgg(0x26EE26, 15, 0.41, 0.65, 0.52, 0.70)
Sleep, 300
closeRobuxPrompt()
sleepAmount(1250, 2500)
SendDiscordMessage(webhookURL, "**[Eggs Completed]**")
Return
SeedShopPath:
seedsCompleted := 0
uiUniversal("1111020")
sleepAmount(100, 1000)
Send, {e}
SendDiscordMessage(webhookURL, "**[Seed Cycle]**")
sleepAmount(2500, 5000)
; checks for the shop opening up to 5 times to ensure it doesn't fail
Loop, 5 {
if (simpleDetect(0x00CCFF, 10, 0.54, 0.20, 0.65, 0.325)) {
ToolTip, Seed Shop Opened
SetTimer, HideTooltip, -1500
SendDiscordMessage(webhookURL, "Seed Shop Opened.")
Sleep, 200
uiUniversal("33311443333114405550555", 0)
Sleep, 100
buyUniversal("seed")
SendDiscordMessage(webhookURL, "Seed Shop Closed.")
seedsCompleted = 1
}
if (seedsCompleted) {
break
}
Sleep, 2000
}
closeShop("seed", seedsCompleted)
Sleep, 200
Gosub, alignment
Sleep, 200
Return
GearShopPath:
gearsCompleted := 0
hotbarController(0, 1, "0")
uiUniversal("11110")
sleepAmount(100, 500)
hotbarController(1, 0, "2")
sleepAmount(100, 500)
SafeClickRelative(midX, midY)
sleepAmount(1200, 2500)
Send, {e}
sleepAmount(1500, 5000)
dialogueClick("gear")
SendDiscordMessage(webhookURL, "**[Gear Cycle]**")
sleepAmount(2500, 5000)
; checks for the shop opening up to 5 times to ensure it doesn't fail
Loop, 5 {
if (simpleDetect(0x00CCFF, 10, 0.54, 0.20, 0.65, 0.325)) {
ToolTip, Gear Shop Opened
SetTimer, HideTooltip, -1500
SendDiscordMessage(webhookURL, "Gear Shop Opened.")
Sleep, 200
uiUniversal("33311443333114405550555", 0)
Sleep, 100
buyUniversal("gear")
SendDiscordMessage(webhookURL, "Gear Shop Closed.")
gearsCompleted = 1
}
if (gearsCompleted) {
break
}
Sleep, 2000
}
closeShop("gear", gearsCompleted)
hotbarController(0, 1, "0")
SendDiscordMessage(webhookURL, "**[Gears Completed]**")
Return
CosmeticShopPath:
; if you are reading this please forgive this absolute garbage label
cosmeticsCompleted := 0
hotbarController(0, 1, "0")
uiUniversal("11110")
sleepAmount(100, 500)
hotbarController(1, 0, "2")
sleepAmount(100, 500)
SafeClickRelative(midX, midY)
sleepAmount(800, 1000)
Send, {w Down}
Sleep, 900
Send, {w Up}
sleepAmount(100, 1000)
Send, {e}
sleepAmount(2500, 5000)
SendDiscordMessage(webhookURL, "**[Cosmetic Cycle]**")
; checks for the shop opening up to 5 times to ensure it doesn't fail
Loop, 5 {
if (simpleDetect(0x00CCFF, 10, 0.61, 0.182, 0.764, 0.259)) {
ToolTip, Cosmetic Shop Opened
SetTimer, HideTooltip, -1500
SendDiscordMessage(webhookURL, "Cosmetic Shop Opened.")
Sleep, 200
for index, item in cosmeticItems {
label := StrReplace(item, " ", "")
currentItem := cosmeticItems[A_Index]
Gosub, %label%
SendDiscordMessage(webhookURL, "Bought " . currentItem .
(PingSelected ? " <@" . discordUserID . ">" : ""))
Sleep, 100
}
SendDiscordMessage(webhookURL, "Cosmetic Shop Closed.")
cosmeticsCompleted = 1
}
if (cosmeticsCompleted) {
break
}
Sleep, 2000
}
if (cosmeticsCompleted) {
Sleep, 500
uiUniversal("111114150320")
}
else {
SendDiscordMessage(webhookURL, "Failed To Detect Cosmetic Shop Opening
[Error]" . (PingSelected ? " <@" . discordUserID . ">" : ""))
; failsafe
uiUniversal("11114111350")
Sleep, 50
uiUniversal("11110")
}
hotbarController(0, 1, "0")
SendDiscordMessage(webhookURL, "**[Cosmetics Completed]**")
Return
CollectPollinatedPath:
searchItem("pollen")
hotbarController(1, 0, "3")
; left side
SendDiscordMessage(webhookURL, "**[Collecting Left Side...]**")
Send, {s down}
Sleep, 270
Send, {s up}
sleepAmount(200, 500)
Send, {a down}
Sleep, 900
Send, {a up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {a down}
Sleep, 800
Send, {a up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {a down}
Sleep, 600
Send, {a up}
sleepAmount(200, 500)
Send, {s down}
Sleep, 1000
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1200
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1300
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1000
Send, {s up}
sleepAmount(200, 500)
Send, {d down}
Sleep, 900
Send, {d up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {d down}
Sleep, 800
Send, {d up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {d down}
Sleep, 600
Send, {d up}
sleepAmount(200, 500)
uiUniversal("11110")
; right side
SendDiscordMessage(webhookURL, "**[Collecting Right Side...]**")
Send, {s down}
Sleep, 270
Send, {s up}
sleepAmount(200, 500)
Send, {d down}
Sleep, 800
Send, {d up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {d down}
Sleep, 800
Send, {d up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {d down}
Sleep, 600
Send, {d up}
sleepAmount(200, 500)
Send, {s down}
Sleep, 1000
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1200
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1300
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1000
Send, {s up}
sleepAmount(200, 500)
Send, {a down}
Sleep, 900
Send, {a up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {a down}
Sleep, 800
Send, {a up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {a down}
Sleep, 600
Send, {a up}
sleepAmount(200, 500)
uiUniversal("11110")
; middle
SendDiscordMessage(webhookURL, "**[Collecting Middle Area...]**")
Send, {s down}
Sleep, 1000
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1200
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1300
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
Send, {s down}
Sleep, 1000
Send, {s up}
sleepAmount(200, 500)
SafeClickRelative(midX, midY)
sleepAmount(8000, 10000)
hotbarController(0, 1, "0")
uiUniversal(11110)
Return
DepositHoneyPath:
depositCount := 0
Send, {d down}
Sleep, 8500
Send, {d up}
sleepAmount(100, 1000)
Send, {w down}
Sleep, 650
Send, {w up}
sleepAmount(100, 1000)
Send, {d down}
Sleep, 1200
Send, {d up}
sleepAmount(100, 500)
Loop, 3 {
searchItem("pollinated")
hotbarController(1, 0, "9")
sleepAmount(100, 500)
Loop, 2 {
Send {e}
Sleep, 200
}
depositCount++
SendDiscordMessage(webhookURL, "Depositing/Collecting Honey Try #" .
depositCount . ".")
Sleep, 1000
}
hotbarController(0, 1, "0")
uiUniversal(11110)
Return
HoneyShop:
global UINavigationFix
honeyCompleted := 0
closeShop("honey", honeyCompleted)
hotbarController(0, 1, "0")
SendDiscordMessage(webhookURL, "**[Honey Shop Completed]**")
Return
; cosmetic labels
Cosmetic1:
Sleep, 50
Loop, 5 {
uiUniversal("111114450")
sleepAmount(50, 200)
}
Return
Cosmetic2:
Sleep, 50
Loop, 5 {
uiUniversal("11111442250")
sleepAmount(50, 200)
}
Return
Cosmetic3:
Sleep, 50
Loop, 5 {
uiUniversal("1111144222250")
sleepAmount(50, 200)
}
Return
Cosmetic4:
Sleep, 50
Loop, 5 {
uiUniversal("11111442222450")
sleepAmount(50, 200)
}
Return
Cosmetic5:
Sleep, 50
Loop, 5 {
uiUniversal("111114422224150")
sleepAmount(50, 200)
}
Return
Cosmetic6:
Sleep, 50
Loop, 5 {
uiUniversal("1111144222241150")
sleepAmount(50, 200)
}
Return
Cosmetic7:
Sleep, 50
Loop, 5 {
uiUniversal("11111442222411150")
sleepAmount(50, 200)
}
Return
Cosmetic8:
Sleep, 50
Loop, 5 {
uiUniversal("111114422224111150")
sleepAmount(50, 200)
}
Return
Cosmetic9:
Sleep, 50
Loop, 5 {
uiUniversal("1111144222241111150")
sleepAmount(50, 200)
}
Return
SaveSettings:
Gui, Submit, NoHide
; — Egg section —
Loop, % eggItems.Length()
IniWrite, % (EggItem%A_Index% ? 1 : 0), %settingsFile%, Egg, Item
%A_Index%
IniWrite, % SelectAllEggs, %settingsFile%, Egg, SelectAllEggs
; — Gear section —
Loop, % gearItems.Length()
IniWrite, % (GearItem%A_Index% ? 1 : 0), %settingsFile%, Gear, Item
%A_Index%
IniWrite, % SelectAllGears, %settingsFile%, Gear, SelectAllGears
; — Seed section —
Loop, % seedItems.Length()
IniWrite, % (SeedItem%A_Index% ? 1 : 0), %settingsFile%, Seed, Item
%A_Index%
IniWrite, % SelectAllSeeds, %settingsFile%, Seed, SelectAllSeeds
; — Honey section —
; first the “place” items 1–10
Loop, 10
IniWrite, % (HoneyItem%A_Index% ? 1 : 0), %settingsFile%, Honey, Item
%A_Index%
IniWrite, % SelectAllHoney, %settingsFile%, Honey, SelectAllHoney
IniWrite, % AutoDepositHoney, %settingsFile%, Honey, AutoDepositHoney
; then 11–14
Loop, % realHoneyItems.Length()
if (A_Index > 10 && A_Index <= 14)
IniWrite, % (HoneyItem%A_Index% ? 1 : 0), %settingsFile%, Honey, Item
%A_Index%
IniWrite, % AutoCollectPollinated, %settingsFile%, Honey, AutoCollectPollinated
; — Main section —
IniWrite, % AutoAlign, %settingsFile%, Main, AutoAlign
IniWrite, % PingSelected, %settingsFile%, Main, PingSelected
IniWrite, % MultiInstanceMode, %settingsFile%, Main, MultiInstanceMode
IniWrite, % SavedSpeed, %settingsFile%, Main, MacroSpeed
IniWrite, % privateServerLink, %settingsFile%, Main, PrivateServerLink
IniWrite, % discordUserID, %settingsFile%, Main, DiscordUserID
IniWrite, % SavedKeybind, %settingsFile%, Main, UINavigationKeybind
IniWrite, % webhookURL, %settingsFile%, Main, UserWebhook
IniWrite, % UINavigationFix, %settingsFile%, Main, UINavigationFix
; — Cosmetic section —
IniWrite, % BuyAllCosmetics, %settingsFile%, Cosmetic, BuyAllCosmetics
; — CraftSeed section —
IniWrite, % SelectAllCraft, %settingsFile%, CraftSeed,
SelectAllCraftSeed
; — CraftTool section —
IniWrite, % SelectAllCraft2, %settingsFile%, CraftTool,
SelectAllCraftTool
Return
StopMacro(terminate := 1) {
PauseMacro(terminate := 1) {
StopMacro(1)
Return
PauseMacro(1)
SendDiscordMessage(webhookURL, "Macro reloaded.")
Reload ; ahk built in reload
Return
; f7 reloads
F7::
PauseMacro(1)
SendDiscordMessage(webhookURL, "Macro reloaded.")
Reload ; ahk built in reload
Return
; f5 starts scan
F5::
Gosub, StartScanMultiInstance
Return
F8::
IfMsgBox, OK
FileDelete, debug.txt
Return
#MaxThreadsPerHotkey, 2