mirror of
https://github.com/bnowakow/GT7-Scripts.git
synced 2026-01-28 14:06:01 +00:00
494 lines
16 KiB
AutoHotkey
494 lines
16 KiB
AutoHotkey
GoTo EndRace_Tokyo_Def
|
|
|
|
Race_Tokyo()
|
|
{
|
|
SetFormat, integerfast, d
|
|
TokyoStart:
|
|
;- VARIABLES -----------------------------------------------------------------------------
|
|
SetFormat, integerfast, d
|
|
TokyoLapCount := 1
|
|
maxTime := 200000
|
|
;- COORDINATES: TURNS --------------------------------------------------------------------
|
|
TokyoTurn1 := new TokyoTurnContainer(611, 59+remote_play_offsetY, 622, 69+remote_play_offsetY)
|
|
TokyoTurn2 := new TokyoTurnContainer(618, 70+remote_play_offsetY, 601, 76+remote_play_offsetY)
|
|
TokyoTurn3 := new TokyoTurnContainer(599, 79+remote_play_offsetY, 591, 87+remote_play_offsetY)
|
|
TokyoTurn4 := new TokyoTurnContainer(589, 88+remote_play_offsetY, 571, 96+remote_play_offsetY)
|
|
TokyoTurn5 := new TokyoTurnContainer(567, 96+remote_play_offsetY, 556, 90+remote_play_offsetY)
|
|
TokyoTurn6 := new TokyoTurnContainer(554, 86+remote_play_offsetY, 543, 82+remote_play_offsetY)
|
|
TokyoTurn7 := new TokyoTurnContainer(538, 81+remote_play_offsetY, 530, 75+remote_play_offsetY)
|
|
TokyoTurn8 := new TokyoTurnContainer(530, 75+remote_play_offsetY, 510, 72+remote_play_offsetY)
|
|
;- COORDINATES: PENALTY WARNINGS ---------------------------------------------------------
|
|
TokyoPenWarning := new TokyoTurnContainer(360, 154+remote_play_offsetY, 408, 154+remote_play_offsetY)
|
|
TokyoPenIndicator := new TokyoTurnContainer(366, 132+remote_play_offsetY)
|
|
;- COORDINATES: HAIRPIN TURN -------------------------------------------------------------
|
|
TokyoHairpinTurn := new TokyoTurnContainer(606, 334+remote_play_offsetY)
|
|
;- COORDINATES: PENALTY WARNINGS ---------------------------------------------------------
|
|
TokyoPen := new TokyoTurnContainer(360, 154+remote_play_offsetY, 408, 154+remote_play_offsetY)
|
|
TokyoPenServed := new TokyoTurnContainer(366, 132+remote_play_offsetY)
|
|
;- COORDINATES: HAIRPIN TURN--------------------------------------------------------------
|
|
TokyoHairpinTurn := new TokyoTurnContainer(606, 334+remote_play_offsetY)
|
|
;- MISC ----------------------------------------------------------------------------------
|
|
TokyoPitstop := new TokyoTurnContainer(191, 316+remote_play_offsetY, 580, 383+remote_play_offsetY)
|
|
TokyoPitstopEnter := new TokyoTurnContainer(530, 70+remote_play_offsetY)
|
|
TokyoPitstopDone := new TokyoTurnContainer(57, 329+remote_play_offsetY)
|
|
TokyoRestartRace := new TokyoTurnContainer(405,465+remote_play_offsetY)
|
|
;- RACE START ----------------------------------------------------------------------------
|
|
controller.Axes.LX.SetState(65)
|
|
Sleep(7400)
|
|
|
|
FormatTime, TGTime,, MM/dd hh:mm:ss
|
|
FileAppend, %TGTime%: Race started.`n, logs.txt
|
|
url := "https://api.telegram.org/bot" TelegramBotToken "/sendMessage?text=" TGTime ": Race started.&chat_id=" TelegramChatID
|
|
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
|
|
hObject.Open("GET",url)
|
|
hObject.Send()
|
|
|
|
guicontrol,, CurrentLoop, Race started. Good luck!
|
|
guicontrol,, CurrentLap, Current Lap: %TokyoLapCount% /12
|
|
Accel_On(100)
|
|
loop 3 {
|
|
Press_Triangle(delay:=50)
|
|
Sleep(200)
|
|
}
|
|
Sleep(800)
|
|
controller.Axes.LX.SetState(65)
|
|
;- 12 LAP LOOP ---------------------------------------------------------------------------
|
|
loop 12
|
|
{
|
|
location := "Start/Finish"
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
loopStartTime := A_TickCount
|
|
; Turn 1
|
|
location := "T1 Start"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn1.startX, TokyoTurn1.startY)
|
|
loop 3 {
|
|
Press_Triangle(delay:=50)
|
|
Sleep(200)
|
|
}
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(36)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
Sleep(1000)
|
|
location := "T1 End"
|
|
CheckTokyoTurn(TokyoTurn1.endX, TokyoTurn1.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(35)
|
|
Sleep(1000)
|
|
; Turn 2
|
|
location := "T2 Start"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn2.startX, TokyoTurn2.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(52)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
Sleep(1000)
|
|
location := "T2 End"
|
|
CheckTokyoTurn(TokyoTurn2.endX, TokyoTurn2.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(40)
|
|
Sleep(1000)
|
|
; Turn 3
|
|
location := "T3 Start"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn3.startX, TokyoTurn3.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
Sleep(1000)
|
|
controller.Axes.LX.SetState(40)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn3.endX, TokyoTurn3.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(70)
|
|
Sleep(1000)
|
|
; Turn 4
|
|
location := "T4 Start"
|
|
Accel_On(85)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn4.startX, TokyoTurn4.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
Sleep(1000)
|
|
controller.Axes.LX.SetState(68)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn4.endX, TokyoTurn4.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(60)
|
|
Accel_On(70)
|
|
Sleep(1000)
|
|
; Turn 5
|
|
location := "T5 Start"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn5.startX, TokyoTurn5.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(42)
|
|
Sleep(1000)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn5.endX, TokyoTurn5.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(63)
|
|
Sleep(1000)
|
|
; Turn 6
|
|
location := "T6 Start"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn6.startX, TokyoTurn6.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(70)
|
|
Sleep(1000)
|
|
Accel_on(75)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn6.endX, TokyoTurn6.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(40)
|
|
Sleep(1000)
|
|
; Turn 7
|
|
location := "T7 Start"
|
|
Accel_On(100)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn7.startX, TokyoTurn7.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(40)
|
|
Sleep(1000)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn7.endX, TokyoTurn7.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(70)
|
|
Sleep(1000)
|
|
; Turn 8
|
|
location := "T8 Start"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn8.startX, TokyoTurn8.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(65)
|
|
Sleep(1000)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoTurn8.endX, TokyoTurn8.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(30)
|
|
Sleep(2000)
|
|
Brake_on(100)
|
|
Sleep(2200)
|
|
Brake_off()
|
|
Accel_On(35)
|
|
; Penalty Warning 1
|
|
location := "Hairpin Entrance"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoPen1(TokyoPenWarning.startX, TokyoPenWarning.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
Accel_On(32)
|
|
controller.Axes.LX.SetState(40)
|
|
Sleep(1000)
|
|
; Hairpin Turn
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
location := "Hairpin Turn"
|
|
CheckTokyoHairpinTurn(TokyoHairpinTurn.startX, TokyoHairpinTurn.startY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
Sleep(hairpin_delay)
|
|
controller.Axes.LX.SetState(100)
|
|
Sleep(200)
|
|
Accel_Off()
|
|
Sleep(4200)
|
|
Accel_On(45) ;was 40
|
|
controller.Axes.LX.SetState(60)
|
|
Accel_Off()
|
|
Sleep(800)
|
|
controller.Axes.LX.SetState(40)
|
|
Accel_On(50)
|
|
Sleep(5000)
|
|
controller.Axes.LX.SetState(30)
|
|
Sleep(5500)
|
|
Accel_On(80)
|
|
loop 30 { ; failsafe, if we ever get a reset caused by a cone under the car
|
|
Press_Triangle(delay:=100)
|
|
Sleep(200)
|
|
}
|
|
; Penalty Warning 2
|
|
location := "Hairpin exit"
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoPen2(TokyoPen.endX, TokyoPen.endY)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
Sleep(1000)
|
|
if (TokyoLapCount <= 11)
|
|
{
|
|
|
|
location := "Pit entrance"
|
|
Accel_On(53)
|
|
controller.Axes.LX.SetState(30)
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoTurn(TokyoPitstopEnter.startX, TokyoPitstopEnter.startY)
|
|
controller.Axes.LX.SetState(0)
|
|
Accel_On(55)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoPitstop1(TokyoPitstop.startX, TokyoPitstop.startY)
|
|
location := "In pit"
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(50)
|
|
|
|
if (TokyoLapCount = 1)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap01timing := 0
|
|
location := "In pit: Waiting " lap01timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap01timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 2)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap02timing := 0
|
|
location := "In pit: Waiting " lap02timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap02timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 3)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap03timing := 0
|
|
location := "In pit: Waiting " lap03timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap03timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 4)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap04timing := 0
|
|
location := "In pit: Waiting " lap04timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap04timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 5)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap05timing := 20000
|
|
location := "In pit: Waiting " lap05timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap05timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 6)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap06timing := 0
|
|
location := "In pit: Waiting " lap06timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap06timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 7)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap07timing := 0
|
|
location := "In pit: Waiting " lap07timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap07timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 8)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap08timing := 0
|
|
location := "In pit: Waiting " lap08timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap08timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 9)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap09timing := 12000
|
|
location := "In pit: Waiting " lap09timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap09timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 10)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap10timing := 20000
|
|
location := "In pit: Waiting " lap10timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap10timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 11)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap11timing := 0
|
|
location := "In pit: Waiting " lap11timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap11timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
if (TokyoLapCount = 12)
|
|
{
|
|
SetFormat, integerfast, d
|
|
lap12timing := 0
|
|
location := "In pit: Waiting " lap12timing " Seconds."
|
|
guicontrol,, CurrentLoop, %location%
|
|
Sleep (lap12timing)
|
|
Press_Up()
|
|
Sleep (100)
|
|
Press_X()
|
|
Sleep (100)
|
|
Press_X()
|
|
}
|
|
controller.Axes.LX.SetState(20)
|
|
Accel_On(100)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoPenReceived(TokyoPenServed.startX, TokyoPenServed.startY)
|
|
location := "Start/Finish"
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
controller.Axes.LX.SetState(38)
|
|
Sleep (500)
|
|
loop 10 {
|
|
Press_Triangle(delay:=200)
|
|
sleep, 200
|
|
}
|
|
}
|
|
else {
|
|
location := "Start/Finish"
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
Accel_On(100)
|
|
controller.Axes.LX.SetState(60)
|
|
CheckMaxTime(maxTime, loopStartTime, TokyoLapCount)
|
|
CheckTokyoPenServed(TokyoPenServed.startX, TokyoPenServed.startY)
|
|
}
|
|
SetFormat, integerfast, d
|
|
TokyoLapCount++
|
|
guicontrol,, CurrentLap, Current Lap: %TokyoLapCount% /12
|
|
ProgressRace := (100/13)*TokyoLapCount
|
|
guicontrol,, RaceProgress, %ProgressRace%
|
|
|
|
if(TokyoLapCount = "13")
|
|
{
|
|
location := "Finish line"
|
|
|
|
FormatTime, TGTime,, MM/dd hh:mm:ss
|
|
FileAppend, %TGTime% Race finished.`n, logs.txt
|
|
url := "https://api.telegram.org/bot" TelegramBotToken "/sendMessage?text=" TGTime ": Race finished.&chat_id=" TelegramChatID
|
|
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
|
|
hObject.Open("GET",url)
|
|
hObject.Send()
|
|
|
|
guicontrol,, CurrentLoop, Current Location: %location%
|
|
guicontrol,, CurrentLap, GG!
|
|
controller.Axes.LX.SetState(50)
|
|
SetFormat, integerfast, d
|
|
racecounter++
|
|
SetFormat, integerfast, d
|
|
racecountertotal++
|
|
|
|
; // THIS SESSION
|
|
SetFormat, integerfast, d
|
|
SetFormat, FloatFast, 0.2
|
|
creditcountersession := (835000*racecounter)/1000000
|
|
SetFormat, integerfast, d
|
|
SetFormat, FloatFast, 0.2
|
|
creditavg := creditcountersession/(A_TickCount-script_start)*3600000
|
|
guicontrol,, RaceCounterSession, Races completed: %racecounter%
|
|
guicontrol,, ResetCounterSession, Races failed: %resetcounter%
|
|
guicontrol,, CreditCounterSession, Credits: %creditcountersession% M
|
|
guicontrol,, CreditAVGSession, Avg./h: %creditavg% M
|
|
|
|
; // ALL TIME
|
|
SetFormat, integerfast, d
|
|
SetFormat, FloatFast, 0.2
|
|
creditcountertotal := (835000*racecountertotal)/1000000
|
|
IniWrite, %racecountertotal%, config.ini,Stats, RaceCounterTotal
|
|
IniWrite, %resetcountertotal%, config.ini,Stats, ResetCounterTotal
|
|
guicontrol,, RaceCounterTotal, Races completed: %racecountertotal%
|
|
guicontrol,, ResetCounterTotal, Races failed: %resetcountertotal%
|
|
guicontrol,, CreditCounterTotal, Credits: %creditcountertotal% M
|
|
UpdateAVG(racecounter, script_start)
|
|
lapcounter =
|
|
ProgressRace =
|
|
guicontrol,, RaceProgress, %ProgressRace%
|
|
loop
|
|
{
|
|
restart_found := false
|
|
c2 := BitGrab(162, 43+remote_play_offsetY, 2)
|
|
for i, c in c2
|
|
{
|
|
d2 := Distance(c, color_restart)
|
|
SB_SetText(" Searching... " d2 " < 50",2)
|
|
if (d2 < 10 )
|
|
{
|
|
SB_SetText(" Found: Restart Color",2)
|
|
restart_found := true
|
|
break
|
|
}
|
|
}
|
|
if (restart_found)
|
|
break
|
|
Press_X()
|
|
Sleep(500)
|
|
|
|
}
|
|
SB_SetText("Found: Restart Color",2)
|
|
Sleep(260)
|
|
Press_O()
|
|
Sleep(200)
|
|
Press_Right()
|
|
Sleep(3000)
|
|
Press_X()
|
|
Sleep(4000)
|
|
Press_X()
|
|
Sleep(4000)
|
|
guicontrol,, CurrentLoop, Setting up next race.
|
|
Press_Options()
|
|
Sleep(1000)
|
|
Press_Right()
|
|
Sleep(500)
|
|
Press_X()
|
|
controller.Axes.LX.SetState(50)
|
|
UpdateAVG(racecounter, script_start)
|
|
Goto, TokyoStart
|
|
}
|
|
}
|
|
}
|
|
EndRace_Tokyo_Def: |