This commit is contained in:
Bartek Dobrowolski-Nowakowski
2022-04-20 15:26:28 +02:00
parent 3d17e156b5
commit 5d0472feec
416 changed files with 16963 additions and 4 deletions

View File

@@ -0,0 +1,139 @@
GoTo EndRace_PANAM_Def
Race_PANAM()
{
; Turn Containers are in the CheckTurn.ahk
; turn1 := new TurnContainer(619, 183, 630, 166)
; turn2 := new TurnContainer(544, 117, 511, 123)
; turn3 := new TurnContainer(492, 155, 502, 183)
; lap_marker := new TurnContainer(560, 183)
turn1 := new TurnContainer(619, 112+remote_play_offsetY, 630, 95+remote_play_offsetY)
turn2 := new TurnContainer(544, 46+remote_play_offsetY, 511, 52+remote_play_offsetY)
turn3 := new TurnContainer(492, 84+remote_play_offsetY, 502, 111+remote_play_offsetY)
lap_marker := new TurnContainer(560, 112+remote_play_offsetY)
; race_start_delay := 17400 ; this is for PS5. It may vary for PS4.
Switch SysCheck {
Case 1:
race_start_delay := 17600
Case 2:
race_start_delay := 18200
Case 3:
race_start_delay := 18200
}
CheckForOilChange := Mod(30 - A_Index, 30)
SetFormat, IntegerFast, d
CheckForMaintenance := Mod(180 - A_Index, 180)
SetFormat, IntegerFast, d
if (__enableMaintenance_mod__ != 0){
ToolTipper("Oil: " CheckForOilChange " race(s) remaining`nEngine: " CheckForMaintenance " race(s) remaining", 250, 45)
}
t_ExpectedRaceTime := 205000
t_RaceStartTime := A_TickCount
t_RaceFinishTime := t_RaceStartTime + t_ExpectedRaceTime
ToolTipper("t_ExpectedRaceTime = " t_ExpectedRaceTime "`nt_RaceStartTime = " t_RaceStartTime "`nt_RaceFinishTime = " t_RaceFinishTime)
race_complete := false
; Press X to start the race
;Tooltip
Press_X()
; Hold Acceleration and manage turning
Nitrous_On()
Accel_On(100)
;SetTimer, CheckTyresOverheating, 1000
; Retry race if time is taking more than 5.5 mins
; (assume something went wrong with race)
;SetTimer, RetryRace, 330000
Sleep (race_start_delay)
controller.Axes.LX.SetState(67) /* before turn 1, to avoid queue of cars */
Loop {
; Turn 1
; Tooltip
CheckTurn(turn1.startX, turn1.startY)
ToolTipper("Turn 1 start found")
controller.Axes.LX.SetState(10)
CheckTurn(turn1.endX, turn1.endY)
ToolTipper("Turn 1 end found")
Nitrous_On()
controller.Axes.LX.SetState(75)
sleep(1500)
controller.Axes.LX.SetState(65)
sleep(3000)
controller.Axes.LX.SetState(62)
sleep(2000)
; Turn 2
CheckTurn(turn2.startX, turn2.startY)
ToolTipper("Turn 2 start found")
controller.Axes.LX.SetState(20)
CheckTurn(turn2.endX, turn2.endY)
ToolTipper("Turn 2 end found")
controller.Axes.LX.SetState(75)
sleep(2000)
controller.Axes.LX.SetState(65)
sleep(500)
; Turn 3
CheckTurn(turn3.startX, turn3.startY)
Nitrous_Off()
ToolTipper("Turn 3 start found")
controller.Axes.LX.SetState(0)
CheckTurn(turn3.endX, turn3.endY)
Nitrous_On()
ToolTipper("Turn 3 end found")
controller.Axes.LX.SetState(75)
sleep(3000)
controller.Axes.LX.SetState(65)
sleep(2000)
controller.Axes.LX.SetState(62)
CheckTurn(lap_marker.startX, lap_marker.startY)
ToolTipper("Lap Complete")
sleep(3000)
} until A_TickCount > t_racefinishtime
; ToolTip, Out of Loop, 100, 100, screen
loop {
;ToolTip, Racing, 100, 100, Screen
break_point := false
c1 := BitGrab(pix1x, pix1y+remote_play_offsetY, box_size)
for i, c in c1
{
d1 := Distance(c, color_check1)
;ToolTipper( d1 " " pix1y+remote_play_offsetY " " pix1x " " c)
if (d1 < tolerance ){
break_point := true
break
}
}
if (break_point)
break
controller.Dpad.SetState("Right")
Sleep, 50
controller.Dpad.SetState("None")
Sleep, 100
}
ToolTipper("Race End")
gosub, PauseLoop
Sleep, 500
return
}
Race_PANAM_Complete() {
race_complete := true
return
}
EndRace_PANAM_Def:

View File

@@ -0,0 +1,485 @@
;----------------------------------------------------------------------
; // START TOKYO RACE SCRIPT
;----------------------------------------------------------------------
GoTo EndRace_Tokyo_Def
Race_Tokyo()
{
; // PIT STOP MANAGER
; PIT IN LAP (index 0 - Example: Lapping in Lap 5 is VALUE 4)
pitlap := 5
; CHANGE TIRES TO:
; 0 = RACING HARD
; 1 = INTERMEDIATES
tires := 1
; VARIABLES
lapcounter := 0
pitstop := 0
outlap := 0
;----------------------------------------------------------------------
;---------------------------- // LAP 01 -------------------------------
;----------------------------------------------------------------------
;----------------------------------------------------------------------
; 01 // CHANGE FUEL MAP TO (LEAN 5) BEFORE RACE STARTS
;----------------------------------------------------------------------
Sleep(1000)
ToolTip, [LAP: 01][PITSTOPS: 0] 01 // Changing to Lean (5), 25, 250, Screen
loop 4 {
Press_Up(delay:=200)
sleep, 200
}
Sleep(6000)
;----------------------------------------------------------------------
; 02 // ACTIVATE ACCELERATION (100%) AND SHIFT TO 7TH GEAR
;----------------------------------------------------------------------
ToolTip, [LAP: 01][PITSTOPS: 0] 02 // Acceleration ON & Shifting to 7th gear, 25, 250, Screen
Accel_On(100)
;Nitrous_On()
loop 3 {
Press_X(delay:=200)
sleep, 200
}
;----------------------------------------------------------------------
; 03 // TRIGGER FORCED 5 SECOND PENALTY
;----------------------------------------------------------------------
ToolTip, [LAP: 01][PITSTOPS: 0] 03 // Triggering 5 sec. penalty, 25, 250, Screen
Sleep(1000)
Turn_Left(1000,10)
Turn_Left(13000,36)
;----------------------------------------------------------------------
;---------------------------- // LAP 02-12 ----------------------------
;----------------------------------------------------------------------
;----------------------------------------------------------------------
; 04 // START THE BIG LOOP
;----------------------------------------------------------------------
loop
{
;----------------------------------------------------------------------
; 05 // TRIGGER FORCED 5 SECOND PENALTY AND HUG WALLS UNTIL HAIRPIN
;----------------------------------------------------------------------
; // FIRST LAP
if (lapcounter = 0){
ToolTip, [LAP: 01][PITSTOPS: 0] 05.1 // Hugging left wall from straight to turn 1, 25, 250, Screen
Turn_Left(25000,36)
ToolTip, [LAP: 01][PITSTOPS: 0] 05.2 // Hugging right wall from chicane to hairpin, 25, 250, Screen
Turn_Right(20000,72)
}
; // LAP 02+ UNTIL WE DID A PITSTOP
if (lapcounter > 0) and (pitstop = 0){
ToolTip, [LAP: 02+][PITSTOPS: 0] 05.3 // Hugging left wall from straight to turn 1, 25, 250, Screen
Turn_Left(28000,36)
ToolTip, [LAP: 02+][PITSTOPS: 0] 05.4 // Hugging right wall from chicane to hairpin, 25, 250, Screen
Turn_Right(25000,72)
}
; // OUTLAP AFTER PITSTOP
if (outlap = 1){
ToolTip, [OUTLAP][LAP: 02+][PITSTOPS: 1] 05.5 // Hugging left wall from straight to turn 1, 25, 250, Screen
Turn_Left(34000,36)
ToolTip, [OUTLAP][LAP: 02+][PITSTOPS: 1] 05.6 // Hugging right wall from chicane to hairpin, 25, 250, Screen
Turn_Right(35000,72)
}
; // LAPS AFTER PITSTOP AND OUTLAP
if (lapcounter > 0) and (pitstop = 1) and (outlap = 0) {
ToolTip, [LAP: 02+][PITSTOPS: 1] 05.7 // Hugging left wall from straight to turn 1, 25, 250, Screen
Turn_Left(30000,36)
ToolTip, [LAP: 02+][PITSTOPS: 1] 05.8 // Hugging right wall from chicane to hairpin, 25, 250, Screen
Turn_Right(24000,72)
}
outlap := 0
;----------------------------------------------------------------------
; 06 // LOOKING FOR HAIRPIN -1-
;----------------------------------------------------------------------
ToolTip, // 06 Looking for hairpin -1-, 25, 250, Screen
color_player := 0xDE6E70
hairpin_complete := false
hairpinX := 506
hairpinY := 72
hairpinCount := 0
hairpinTolerance := 10
loop
{
tc := BitGrab(hairpinX, hairpinY,2)
for i, c in tc
{
td := Distance(c, color_player)
if (td < 9 ){
hairpin_complete := true
hairpinCount += 1
ToolTip, 06 // Hairpin -1- found, 25, 250, Screen
break
}
}
;Turn_Left(300, 30)
if( hairpinCount = 1 )
break
Sleep(100)
}
;----------------------------------------------------------------------
; 07 // IF HAIRPIN -1- FOUND:
; 07 // WAIT, THEN:
; 07 // HUG LEFT WALL THEN RIGHT UNTIL PEN LINE
;----------------------------------------------------------------------
; // LAP 01 TIMINGS
if (lapcounter = 0) {
ToolTip, [LAP: 01][PITSTOPS: 0] 07.1 // Hairpin - turn right 5700 70, 25, 250, Screen
Turn_Right(5700,70)
ToolTip, [LAP: 01][PITSTOPS: 0] 07.2 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 02 TIMINGS
if (lapcounter = 1) and (pitstop = 0) {
ToolTip, [LAP: 02][PITSTOPS: 0] 07.3 // Hairpin - turn right 5700 70, 25, 250, Screen
Turn_Right(5700,70)
ToolTip, [LAP: 02][PITSTOPS: 0] 07.4 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 03 TIMINGS
if (lapcounter = 2) and (pitstop = 0) {
ToolTip, [LAP: 03][PITSTOPS: 0] 07.5 // Hairpin - turn right 5700 70 - SLEEP 800, 25, 250, Screen
Turn_Right(5700,70)
;Sleep(800)
ToolTip, [LAP: 03][PITSTOPS: 0] 07.6 // Hairpin - turn right 12000 65 , 25, 250, Screen
Accel_On(55)
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 04 TIMINGS
if (lapcounter = 3) and (pitstop = 0) {
ToolTip, [LAP: 04][PITSTOPS: 0] 07.7 // Hairpin - turn right 5700 70 - SLEEP 1500, 25, 250, Screen
Turn_Right(5700,70)
;Sleep(1500)
ToolTip, [LAP: 04][PITSTOPS: 0] 07.8 // Hairpin - turn right 12000 65, 25, 250, Screen
Accel_On(55)
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 05 TIMINGS
if (lapcounter = 4) and (pitstop = 0) {
ToolTip, [LAP: 05][PITSTOPS: 0] 07.9 // Hairpin - turn right 5700 70 - SLEEP 2000, 25, 250, Screen
Turn_Right(5700,70)
;Sleep(2000)
ToolTip, [LAP: 05][PITSTOPS: 0] 07.10 // Hairpin - turn right 12000 65, 25, 250, Screen
Accel_On(55)
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 06 TIMINGS
if (lapcounter = 5)
{
ToolTip, [LAP: 06][PITSTOPS: 0] 07.11 // Hairpin - turn right 5700 70 - SLEEP 2400, 25, 250, Screen
Accel_On(55)
Turn_Right(5700,70)
;Sleep(2400)
ToolTip, [LAP: 06][PITSTOPS: 0] 07.12 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 07 TIMINGS
if (lapcounter = 6) {
ToolTip, [LAP: 07][PITSTOPS: 1] 07.13 // Hairpin - turn right 5700 70, 25, 250, Screen
Accel_On(55)
Turn_Right(5700,70)
ToolTip, [LAP: 07][PITSTOPS: 1] 07.14 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 08 TIMINGS
if (lapcounter = 7) {
ToolTip, [LAP: 08][PITSTOPS: 1] 07.15 // Hairpin - turn right 5700 70, 25, 250, Screen
Accel_On(55)
Turn_Right(5700,70)
ToolTip, [LAP: 08][PITSTOPS: 1] 07.16 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 09 TIMINGS
if (lapcounter = 8) {
ToolTip, [LAP: 09][PITSTOPS: 1] 07.17 // Hairpin - turn right 5700 70 - SLEEP 800, 25, 250, Screen
Turn_Right(5700,70)
ToolTip, [LAP: 09][PITSTOPS: 1] 07.18 // Hairpin - turn right 12000 65, 25, 250, Screen
;Sleep(800)
Accel_On(55)
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 10 TIMINGS
if (lapcounter = 9) {
ToolTip, [LAP: 10][PITSTOPS: 1] 07.19 // Hairpin - turn right 5700 70 - SLEEP 1500, 25, 250, Screen
Turn_Right(5700,70)
;Sleep(1500)
ToolTip, [LAP: 10][PITSTOPS: 1] 07.20 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 11 TIMINGS
if (lapcounter = 10) {
ToolTip, [LAP: 11][PITSTOPS: 1] 07.21 // Hairpin - turn right 5700 70 - SLEEP 2000, 25, 250, Screen
Turn_Right(5700,70)
;Sleep(2000)
ToolTip, [LAP: 11][PITSTOPS: 1] 07.22 // Hairpin - turn right 12000 65, 25, 250, Screen
Accel_On(55)
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
controller.Axes.LX.SetState(65)
}
; // LAP 12 TIMINGS
if (lapcounter = 11) {
ToolTip, [LAP: 12][PITSTOPS: 1] 07.23 // Hairpin - turn right 5700 70 - SLEEP 2400, 25, 250, Screen
Accel_On(55)
Turn_Right(5700,70)
;Sleep(2400)
ToolTip, [LAP: 12][PITSTOPS: 1] 07.24 // Hairpin - turn right 12000 65, 25, 250, Screen
Turn_Right(6000,65)
Accel_On(100)
Turn_Right(6000,65)
;OLD
;Turn_Right(12000,65)
; // DRIVE IT HOME BABY
Turn_Right(30000,65)
}
;----------------------------------------------------------------------
; 08 // LOOKING FOR HAIRPIN -2-
;----------------------------------------------------------------------
ToolTip, 08.1 // Looking for hairpin -2-, 25, 250, Screen
loop
{
tc := BitGrab(hairpinX, hairpinY,2)
for i, c in tc
{
td := Distance(c, color_player)
if (td < 20 ){
hairpin_complete := true
hairpinCount += 1
ToolTip, 08.2 // Hairpin Found, 25, 250, Screen
break
}
}
;Turn_Left(300, 30)
if( hairpinCount = 2 )
break
Sleep(100)
}
controller.Axes.LX.SetState(65)
hairpinCount := 0
;----------------------------------------------------------------------
; 09 // IF HAIRPIN -2- FOUND:
; 09 // START CHECK FOR LAPCOUNTER FOR PIT, IF TRUE START PIT ROUTINE
; 09 // ELSE SETUP FORCED PEN TRIGGER
;----------------------------------------------------------------------
Turn_Left(1000, 40)
;Turn_Right(300,65)
if (pitlap = lapcounter){
controller.Axes.LX.SetState(35)
ToolTip, [LAP: 02+][PITSTOPS: 0] 09.1 // Pitstop starting, 25, 250, Screen
Turn_Right(1000, 60)
controller.Axes.LX.SetState(40)
Sleep (5000)
controller.Axes.LX.SetState(0)
Sleep (20000)
Press_Up()
Sleep (100)
if (tires = 0) {
; // RACING HARD
ToolTip, 09.2 // CHANGING TO RACING HARD, 25, 250, Screen
loop, 5{
Press_Left()
}
}
if (tires = 1) {
; // INTERMEDIATES
ToolTip, 09.3 // CHANGING TO INTERMEDIATES, 25, 250, Screen
Press_Right()
}
Press_X()
; REFILL
;Press_Down()
;Press_X()
controller.Axes.LX.SetState(50)
Sleep, 18000
ToolTip, [LAP: 02+][PITSTOPS: 0] 09.4 // // LEAVING PIT - TRIGGER PEN & SHIFTING TO 7TH GEAR, 25, 250, Screen
Turn_Left(3000,0)
controller.Axes.LX.SetState(20)
loop 4 {
Press_X(delay:=200)
sleep, 200
}
pitstop := 1
outlap := 1
}
else {
controller.Axes.LX.SetState(65)
/*
; //NEW PEN TRIGGER LOGIC, NEEDS TESTING/TIMINGS
Turn_Left(2000,30)
controller.Axes.LX.SetState(0)
ToolTip, 09.4 // Triggering 5 sec. penalty, 25, 250, Screen
Sleep, 3000
controller.Axes.LX.SetState(59)
Sleep, 15000
*/
; // PEN TRIGGER LOGIC (UNSTABLE)
Sleep(5000)
Turn_Left(1000, 40)
Brake_on(100)
Accel_Off()
Sleep(3000)
ToolTip, 09.5 // Triggering 5 sec. penalty, 25, 250, Screen
controller.Axes.LX.SetState(70)
Brake_off()
Nitrous_On()
Accel_On(100)
Sleep(3000)
Turn_Right(2000, 90)
Turn_Right(11000, 65)
Sleep(3000)
Nitrous_Off()
}
;----------------------------------------------------------------------
; 55 // CLOSE LOOP LAP 1-12
;----------------------------------------------------------------------
lapcounter++
}
;----------------------------------------------------------------------
; 99 // CLOSE RACE SCRIPT
;----------------------------------------------------------------------
}
EndRace_Tokyo_Def:

View File

@@ -0,0 +1,296 @@
;----------------------------------------------------------------------
; // START TOKYO RACE SCRIPT
;----------------------------------------------------------------------
GoTo EndRace_Tokyo_Def
Race_Tokyo()
{
; VARIABLES
lapcounter := 0
;----------------------------------------------------------------------
;---------------------------- // LAP 01 -------------------------------
;----------------------------------------------------------------------
;----------------------------------------------------------------------
; /1/ CHANGE FUEL MAP TO (LEAN 5) BEFORE RACE STARTS
;----------------------------------------------------------------------
Sleep(1000)
ToolTip, /1/ Changing to Lean (5) //, 22, 70, Screen
loop 4 {
Press_Up(delay:=200)
sleep, 200
}
Sleep(6000)
;----------------------------------------------------------------------
; /2/ ACTIVATE ACCELERATION (100%) AND SHIFT TO 7TH GEAR
;----------------------------------------------------------------------
ToolTip, /2/ Acceleration ON & Shifting to 7th gear //, 22, 70, Screen
Accel_On(100)
;Nitrous_On()
loop 3 {
Press_X(delay:=200)
sleep, 200
}
;----------------------------------------------------------------------
; /3/ TRIGGER FORCED 5 SECOND PENALTY
;----------------------------------------------------------------------
ToolTip, /3/ Triggering 5 sec. penalty //, 22, 70, Screen
Sleep(1000)
Turn_Left(1000,10)
;----------------------------------------------------------------------
; /4/ CHECK IF WE GOT THE 5 SEC PENALTY
;----------------------------------------------------------------------
/*
loop {
gosub, CheckPenalty
if( Penalty_triggered = true)
break
Sleep(100)
}
ToolTip, /4/ PENALTY RECEIVED //, 22, 70, Screen
Sleep(5000)
*/
;----------------------------------------------------------------------
; /5/ WAIT, THEN STEERING TO THE LEFT SIDE TO:
; /5/ OVERTAKE CARS LEFT, GRIND WALL, TAKE T1 FROM LEFT
;----------------------------------------------------------------------
;----------------------------------------------------------------------
;---------------------------- // LAP 02-12 ----------------------------
;----------------------------------------------------------------------
;----------------------------------------------------------------------
; /6/ START THE BIG LOOP
;----------------------------------------------------------------------
Turn_Left(12000,36)
loop
{
;----------------------------------------------------------------------
; /7/ TRIGGER FORCED 5 SECOND PENALTY
;----------------------------------------------------------------------
if (lapcounter > 0)
{
ToolTip, /7.1/ Triggering 5 sec. penalty after tunnel //, 22, 70, Screen
ToolTip, /7.2/ HALF Acceleration for 3 sec //, 22, 70, Screen
}
ToolTip, 5.1 // Hugging left wall from straight to chicane //, 22, 70, Screen
Turn_Left(26000,36)
ToolTip, 5.2 // Hugging right wall from chicane to hairpin //, 22, 70, Screen
Turn_Right(33000,72)
/*
;----------------------------------------------------------------------
; /9/ START THE CHICANE SEARCH LOOP
;----------------------------------------------------------------------
ToolTip, /9/ Turn right through chicane //, 22, 70, Screen
Turn_Right(15000,75)
ToolTip, /9/ Looking for Chicane //, 22, 70, Screen
loop {
gosub, CheckChicane
if( Chicane_complete = true)
break
Sleep(100)
}
;----------------------------------------------------------------------
; /10/ IF CHICANE FOUND:
; /10/ WAIT, THEN:
; /10/ ACCELERATION & NITRO OFF, TURN RIGHT, ACCELERATION & NITRO ON, WAIT
;----------------------------------------------------------------------
Sleep(1550)
ToolTip, /10/ Acceleration & Nitro OFF //, 22, 70, Screen
Nitrous_Off()
Accel_Off()
ToolTip, /10/ Turning left //, 22, 70, Screen
Turn_Left(1500,15)
ToolTip, /10/ Acceleration & Nitro ON //, 22, 70, Screen
Accel_On(100)
Nitrous_On()
gosub, ResetChicane
*/
;----------------------------------------------------------------------
; /11/ START THE HAIRPIN SEARCH LOOP
;----------------------------------------------------------------------
ToolTip, /11/ Looking for hairpin, 22, 70, Screen
color_player := 0xDE6E70
hairpin_complete := false
hairpinX := 506
hairpinY := 72
hairpinCount := 0
hairpinTolerance := 10
loop
{
tc := BitGrab(hairpinX, hairpinY,2)
for i, c in tc
{
td := Distance(c, color_player)
if (td < 9 ){
hairpin_complete := true
hairpinCount += 1
ToolTip, /11/ Hairpin Found, 22, 70, Screen
break
}
}
;Turn_Left(300, 30)
if( hairpinCount = 1 )
break
Sleep(100)
}
;----------------------------------------------------------------------
; /12/ IF HAIRPIN (1) FOUND:
; /12/ WAIT, THEN:
; /12/ HUG THE LEFT WALL TO GET 90° BUMPS
;----------------------------------------------------------------------
;ToolTip, /12/ Turning left for corner bumps //, 22, 70, Screen
;Turn_Left(20000, 25)
ToolTip, /12/ Hairpin - turn right 5700 70 //, 100, 100, Screen
Turn_Right(5700,70)
Accel_On(75)
ToolTip, /12/ Hairpin - turn right 12000 60 //, 100, 100, Screen
Turn_Right(5000,70 + lapcounter)
Sleep(1000)
Turn_Right(5000,65)
Accel_On(100)
ToolTip, /12/ Sleep //, 100, 100, Screen
Sleep(3000)
controller.Axes.LX.SetState(65)
loop
{
tc := BitGrab(hairpinX, hairpinY,2)
for i, c in tc
{
td := Distance(c, color_player)
if (td < 20 ){
hairpin_complete := true
hairpinCount += 1
ToolTip, /11/ Hairpin Found, 100, 100, Screen
break
}
}
;Turn_Left(300, 30)
if( hairpinCount = 2 )
break
Sleep(100)
}
ToolTip, LX 65, 22, 70, Screen
if (lapcounter = 4){
controller.Axes.LX.SetState(35)
}
else {
controller.Axes.LX.SetState(65)
}
Sleep(4650)
hairpinCount := 0
;----------------------------------------------------------------------
; /13/ HUG THE RIGHT WALL TO AVOID THE PIT ENTRANCE
;----------------------------------------------------------------------
ToolTip, Left 300 - Right 300, 100, 100, Screen
;Turn_Right(300,65)
;----------------------------------------------------------------------
; /7/ TRIGGER FORCED 5 SECOND PENALTY
;----------------------------------------------------------------------
if (lapcounter = 4){
;----------------------------------------------------------------------
; /20/ MAKE PIT STOP CHANGE TIRES
;----------------------------------------------------------------------
ToolTip, Heading to pit, 100, 100, Screen
;Turn_Right(800, 60)
controller.Axes.LX.SetState(0)
Accel_On()
Brake_off()
Sleep, 17000
Turn_Left(5000, 20)
ToolTip, Changing tires, 100, 100, Screen
Press_Up()
loop, 5{
Press_Left()
}
Press_X()
Press_Down()
Press_X()
controller.Axes.LX.SetState(50)
Sleep, 12000
ToolTip, Leaving Pit, 100, 100, Screen
loop 4 {
Press_X(delay:=200)
sleep, 200
}
}
else {
Accel_Off()
Brake_on(100)
Turn_Left(950, 40)
Sleep(3000)
controller.Axes.LX.SetState(70)
Brake_off()
Nitrous_On()
Accel_On(100)
Sleep(3000)
Turn_Right(2000, 90)
Turn_Right(11000, 65)
Sleep(3000)
Nitrous_Off()
}
;----------------------------------------------------------------------
; /55/ CLOSE LOOP LAP 1-12
;----------------------------------------------------------------------
lapcounter++
ToolTip, /55/ LAP %lapcounter%, 100, 100, Screen
}
;----------------------------------------------------------------------
; /99/ CLOSE RACE SCRIPT
;----------------------------------------------------------------------
}
EndRace_Tokyo_Def: