Okay I did a few things to this overall, changing the structure and adding some tooltips to help with both Pixel Detect and Status to see if you are stuck in a loop or in the wrong place. So far 50/50 races.
I commented the code to show what I was attempting to look at. If you get the coordinates right in the places you need to set them then it will show you the colors.
Enter your coordinates then run your first race and watch the tooltips at the various key moments. If your coords are right you will know what to enter :) Window Spy and OPEN are your friends. They shouldn't be used when you are trying to bot this but should be very handy when configuring.
Code:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance force ;Skips the dialog box and replaces the old instance automatically
#Persistent
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
WinGet, programid, List, FINAL FANTASY
CoordMode, ToolTip, Pixel, Screen
;Initial state is Relative. Frustration awaits if you set Mouse to Screen and then use GetPixelColor because you forgot this line. There are separate ones for: Mouse, Pixel, ToolTip, Menu, Caret
; Control S to Start
^S::
looping=true
Loop
{
Queue:
if looping=false
break
tooltip, Current Race # : %A_Index%`n, 0, 0, 1 ;Create Window Tool Tip to show # of Races
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
StatusTip := "Asking for Race"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
sleep 1200
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 1200
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 1200
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 1200
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 1200
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 1200
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 1200
ControlSend,,{Numpad4}, ahk_id %programid1%
Sleep 1000
ControlSend,,{Numpad0}, ahk_id %programid1%
StatusTip := "Waiting for Race Ready"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
loop
{
sleep 1000
; Look for Purple Balloon in Race Ready
PixelGetColor, color, 1560, 510
tooltip, Race Ready Color: %color%`n, 0, 50, 3 ;Create Window Tool Tip to show color at location
if color = 0xD6226B
{
StatusTip := "Race Ready"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
Sleep 2000
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 2000
ControlSend,,{Numpad0}, ahk_id %programid1%
break
}
else
{
Sleep 500
continue
}
}
StatusTip := "Joined Race"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
; Race Joined Wait to Skip Cutscene
sleep, 13000
ControlSend, , {Esc}, ahk_id %programid1%
sleep, 2000
ControlSend, , {Numpad0}, ahk_id %programid1%
sleep, 14000
; Cutscene Skipped
StatusTip := "Finding Stamina Bar"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
; Sprint until 10 percent and break in case stamina stays above 10% at race end
loop
{
; Look at stam bar around 15% marker and if the background turns to Black/Stam Bar Empty Color
; Then raise on W. Two values are base on flashes of bar BLACK/Color of empty spot at 15%
; This also means it will resume pressing on the key if it gets a stam boost
PixelGetColor, color, 783, 983
tooltip, Stam Color: %color%`n, 0, 50, 3 ;Create Window Tool Tip for Stam Sprint/Walk Color
if (color = 0x101418 or color=0x000000)
{
StatusTip := "WALKING"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
ControlSend,,{w up}, ahk_id %programid1%
ControlSend,,{2}, ahk_id %programid1%
break
}
else
{
StatusTip := "SPRINTING"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
;Press W Down otherwise
sleep 2000
ControlSend,,{w down}, ahk_id %programid1%
ControlSend,,{1}, ahk_id %programid1%
continue
}
}
; Wait for race results screen to pop
loop
{
StatusTip := "Waiting for Race Results"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
PixelGetColor, color, 892, 380
tooltip, Race CompleteColor: %color%`n, 0, 50, 3 ;Create Window Tool Tip to show color at location
; Look for Yellow XP Coin on Race Complete Screen
if (color = 0x3DB3C6)
{
StatusTip := "Race Complete"
tooltip, Status: %StatusTip%`n, 0, 25, 2 ;Create Window Tool Tip for Status
Sleep 10000
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 500
ControlSend,,{Numpad0}, ahk_id %programid1%
Sleep 10000
break
}
else
{
Sleep 1500
continue
}
}
}
; ALT S to STOP
!s::
looping=false