Files
2025-09-29 00:52:08 +02:00

243 lines
8.6 KiB
XML
Executable File

// Includes
USING "commands_hud.sch"
USING "script_drawing.sch"
// Constants
CONST_INT MAX_AI_RACERS 15
CONST_INT MAX_GRID 16
CONST_INT MAX_CHECKPOINTS 60
// Enums
ENUM RACE_TRACK_ID
STREET_RACE_01, // South Los Santos
STREET_RACE_02, // City Circuit
STREET_RACE_04, // Airport
STREET_RACE_05, // Freeway
STREET_RACE_06, // Vespucci Canals
SEA_RACE_01, // North Coast
SEA_RACE_02, // South Coast
SEA_RACE_03, // Raton Canyon
SEA_RACE_04, // Los Santos
RACE_COUNT,
RACE_INVALID
ENDENUM
ENUM RACE_TYPE
RACETYPE_UNDEFINED,
RACETYPE_BIKE,
RACETYPE_CAR,
RACETYPE_SEA
ENDENUM
// Structs
STRUCT TRACK_DATA
VECTOR vCheckpoint[MAX_CHECKPOINTS]
VECTOR vStartGrid[MAX_GRID]
FLOAT fStartGrid[MAX_GRID]
INT iNumLaps = 0
INT iNumCheckpoints = 0
INT iNumAIRacers = 0
FLOAT drivingSpeedSlow // Base vehicle speeds - the race AI can alter these up/down depending on if the AI is behind/ahead of the player
FLOAT drivingSpeedMedium
FLOAT drivingSpeedFast
ENDSTRUCT
STRUCT RACE_DATA
RACE_TRACK_ID eRaceTrack = RACE_INVALID
RACE_TYPE eRaceType = RACETYPE_UNDEFINED
INT iCandidateID = NO_CANDIDATE_ID
INT iRaceFee = 1000
INT iSaveSlot = -1
BOOL bP2P = FALSE
ENDSTRUCT
STRUCT PLAYER_VEHICLE
VEHICLE_INDEX vehPlayerVehicle
BLIP_INDEX biPlayerVehicle // Used if player exits his vehicle during the race
BOOL bDisplayedGetBackInVehicleText // Only display the 'get back in the vehicle' text once
ENDSTRUCT
PLAYER_VEHICLE sPlayerVehicle
/// PURPOSE: Display race help message
PROC DISPLAY_RACE_HELP(STRING text)
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(text)
PRINT_HELP_FOREVER(text)
ENDIF
ENDPROC
/// PURPOSE: Display race help message with number
PROC DISPLAY_RACE_HELP_WITH_NUMBER(STRING text, INT num)
IF NOT IS_THIS_HELP_MESSAGE_WITH_NUMBER_BEING_DISPLAYED(text, num)
PRINT_HELP_FOREVER_WITH_NUMBER(text, num)
ENDIF
ENDPROC
/// PURPOSE: Display race help message with two numbers
PROC DISPLAY_RACE_HELP_WITH_TWO_NUMBERS(STRING text, INT num1, INT num2)
IF NOT IS_THIS_HELP_MESSAGE_WITH_TWO_NUMBERS_BEING_DISPLAYED(text, num1, num2)
BEGIN_TEXT_COMMAND_DISPLAY_HELP(text)
ADD_TEXT_COMPONENT_INTEGER(num1)
ADD_TEXT_COMPONENT_INTEGER(num2)
END_TEXT_COMMAND_DISPLAY_HELP(HELP_TEXT_SLOT_STANDARD, TRUE, FALSE)
ENDIF
ENDPROC
/// PURPOSE:
/// Returns the model name from the race type
FUNC MODEL_NAMES GET_MODEL_NAME_BASED_OFF_RACE_TYPE(RACE_TYPE rtype)
MODEL_NAMES vehModel
SWITCH rtype
CASE RACETYPE_BIKE vehModel = BATI BREAK
CASE RACETYPE_CAR vehModel = NINEF BREAK
CASE RACETYPE_SEA vehModel = SEASHARK BREAK
ENDSWITCH
return vehModel
ENDFUNC
/// PURPOSE:
/// Returns the correct cloud user name based on which platform we are running
/// RETURNS:
/// String of the user name
FUNC STRING GET_CLOUD_ID()
STRING sReturnString
IF IS_PS3_VERSION()
sReturnString = "SPRACE"
ELIF IS_XBOX360_VERSION()
sReturnString = "2535285330962926"
ELIF IS_PLAYSTATION_PLATFORM()
sReturnString = "SPRACE"
ELIF IS_XBOX_PLATFORM()
sReturnString = "2535285330962926"
ELIF IS_PC_VERSION()
// Need to setup cloud data for PC version
sReturnString = "SPRACE"
ELSE
sReturnString = "SPRACE"
ENDIF
RETURN sReturnString
ENDFUNC
/// PURPOSE:
/// String of the user name
FUNC STRING GET_RACE_FILENAME(RACE_TRACK_ID raceTrack)
STRING sFilename
IF IS_PS3_VERSION()
SWITCH raceTrack
CASE SEA_RACE_04 sFilename = "qLp8OsaeTkCjzhK0SZoRVA" BREAK // SeaRace4
CASE SEA_RACE_02 sFilename = "JhV_7Ir4ekSQLafj22vFkg" BREAK // SeaRace2
CASE SEA_RACE_03 sFilename = "Fuc2Yl2sukOrORoMo1YJ1A" BREAK // SeaRace3
CASE SEA_RACE_01 sFilename = "aNlcpqEkhUytgK-8IMbTYQ" BREAK // SeaRace1
CASE STREET_RACE_01 sFilename = "9aLp9VEnME25Mp_6XZaw0A" BREAK // CityRace1
CASE STREET_RACE_04 sFilename = "lT9gI2mfrkGDhiW1lSlhbw" BREAK // OR POSSIBLY 8bvbHCAJykmlKzY5PeLDyw // CityRace4
CASE STREET_RACE_05 sFilename = "YxiNucGMGEu4lCKqizI2lA" BREAK // CityRace5
CASE STREET_RACE_02 sFilename = "szYNFSberECI5goiWsh1bw" BREAK // CityRace2
CASE STREET_RACE_06 sFilename = "nZ4p_4_F0EOFyZa2yKEHGA" BREAK // CityRace6
ENDSWITCH
ELIF IS_XBOX360_VERSION()
SWITCH raceTrack
// Street Races
CASE STREET_RACE_01 sFilename = "dm_test_20" BREAK // South Los Santos
CASE STREET_RACE_02 sFilename = "dm_test_18" BREAK // City Circuit
CASE STREET_RACE_04 sFilename = "dm_test_2" BREAK // Airport
CASE STREET_RACE_05 sFilename = "dm_test_4" BREAK // Freeway
CASE STREET_RACE_06 sFilename = "dm_test_5" BREAK // Vespucci Canals
// Sea Races
CASE SEA_RACE_01 sFilename = "dm_test_16" BREAK // North Coast
CASE SEA_RACE_02 sFilename = "dm_test_13" BREAK // South Coast
CASE SEA_RACE_03 sFilename = "dm_test_15" BREAK // Raton Canyon
CASE SEA_RACE_04 sFilename = "dm_test_24" BREAK // Los Santos
ENDSWITCH
ELIF IS_PLAYSTATION_PLATFORM()
SWITCH raceTrack
CASE SEA_RACE_04 sFilename = "qLp8OsaeTkCjzhK0SZoRVA" BREAK // SeaRace4
CASE SEA_RACE_02 sFilename = "JhV_7Ir4ekSQLafj22vFkg" BREAK // SeaRace2
CASE SEA_RACE_03 sFilename = "Fuc2Yl2sukOrORoMo1YJ1A" BREAK // SeaRace3
CASE SEA_RACE_01 sFilename = "aNlcpqEkhUytgK-8IMbTYQ" BREAK // SeaRace1
CASE STREET_RACE_01 sFilename = "9aLp9VEnME25Mp_6XZaw0A" BREAK // CityRace1
CASE STREET_RACE_04 sFilename = "lT9gI2mfrkGDhiW1lSlhbw" BREAK // OR POSSIBLY 8bvbHCAJykmlKzY5PeLDyw // CityRace4
CASE STREET_RACE_05 sFilename = "YxiNucGMGEu4lCKqizI2lA" BREAK // CityRace5
CASE STREET_RACE_02 sFilename = "szYNFSberECI5goiWsh1bw" BREAK // CityRace2
CASE STREET_RACE_06 sFilename = "nZ4p_4_F0EOFyZa2yKEHGA" BREAK // CityRace6
ENDSWITCH
ELIF IS_XBOX_PLATFORM()
SWITCH raceTrack
// Street Races
CASE STREET_RACE_01 sFilename = "dm_test_20" BREAK // South Los Santos
CASE STREET_RACE_02 sFilename = "dm_test_18" BREAK // City Circuit
CASE STREET_RACE_04 sFilename = "dm_test_2" BREAK // Airport
CASE STREET_RACE_05 sFilename = "dm_test_4" BREAK // Freeway
CASE STREET_RACE_06 sFilename = "dm_test_5" BREAK // Vespucci Canals
// Sea Races
CASE SEA_RACE_01 sFilename = "dm_test_16" BREAK // North Coast
CASE SEA_RACE_02 sFilename = "dm_test_13" BREAK // South Coast
CASE SEA_RACE_03 sFilename = "dm_test_15" BREAK // Raton Canyon
CASE SEA_RACE_04 sFilename = "dm_test_24" BREAK // Los Santos
ENDSWITCH
ELIF IS_PC_VERSION()
SWITCH raceTrack
// Street Races
CASE STREET_RACE_01 sFilename = "dm_test_20" BREAK // South Los Santos
CASE STREET_RACE_02 sFilename = "dm_test_18" BREAK // City Circuit
CASE STREET_RACE_04 sFilename = "dm_test_2" BREAK // Airport
CASE STREET_RACE_05 sFilename = "dm_test_4" BREAK // Freeway
CASE STREET_RACE_06 sFilename = "dm_test_5" BREAK // Vespucci Canals
// Sea Races
CASE SEA_RACE_01 sFilename = "dm_test_16" BREAK // North Coast
CASE SEA_RACE_02 sFilename = "dm_test_13" BREAK // South Coast
CASE SEA_RACE_03 sFilename = "dm_test_15" BREAK // Raton Canyon
CASE SEA_RACE_04 sFilename = "dm_test_24" BREAK // Los Santos
ENDSWITCH
ENDIF
RETURN sFilename
ENDFUNC
PROC SETUP_ROAD_BLOCKING(RACE_TRACK_ID raceTrack, VECTOR & vRaceRoadPos1, VECTOR & vRaceRoadPos2, FLOAT & fRaceRoadWidth)
SWITCH raceTrack
// South Los Santos
CASE STREET_RACE_01
vRaceRoadPos1 = <<311.126221,-1896.261353,20.683289>>//<<-189.618484,-1616.818237,33.681194>>
vRaceRoadPos2 = <<-295.065338,-1405.529663,35.314598>>//<<-131.111008,-1538.352417,32.255104>>
fRaceRoadWidth = 300.0//30.0
BREAK
// City Circuit
CASE STREET_RACE_02
vRaceRoadPos1 = <<273.184967,335.296875,105.570442>>
vRaceRoadPos2 = <<412.287659,299.230408,101.072403>>
fRaceRoadWidth = 20.0
BREAK
// Airport
CASE STREET_RACE_04
vRaceRoadPos1 = <<-823.715698,-2588.000488,13.769104>>
vRaceRoadPos2 = <<-801.335632,-2464.006592,12.429126>>
fRaceRoadWidth = 30.0
BREAK
// Freeway
CASE STREET_RACE_05
vRaceRoadPos1 = <<791.825745,-1423.862671,24.179544>>//<<800.515930,-1149.139771,27.544914>>
vRaceRoadPos2 = <<783.166992,-1015.648010,50.241344>>//<<731.347717,-1149.962402,32.013943>>
fRaceRoadWidth = 200.0//20.0
BREAK
// Vespucci Canals
CASE STREET_RACE_06
vRaceRoadPos1 = <<-1084.030396,-1165.723511,0.150211>>
vRaceRoadPos2 = <<-1029.212891,-1134.580933,2.174534>>
fRaceRoadWidth = 10.0
BREAK
ENDSWITCH
ENDPROC