1058 lines
35 KiB
Python
Executable File
1058 lines
35 KiB
Python
Executable File
//=======================================================================================================================================
|
||
|
||
// Taxi_TakeToBest.sc
|
||
// Dev : John R. Diaz
|
||
/*
|
||
• “Take me to the best…” This passenger does not give a specific destination but rather asks the player to take them to a type of location.
|
||
This could be a strip club, a restaurant, or a clothing store. The passenger will talk about what kind of place they are looking for and
|
||
provide the player clues to their preferences. The player will receive bonus tips based on how much the passenger likes the place they
|
||
are dropped at or no tip if it’s a terrible choice. (For example: the conservative straight passenger heading to hit the clubs will not
|
||
pay the driver that drops them at the gay bar.)
|
||
*/
|
||
|
||
//CHANGELOG==========================================================================================================
|
||
//11/29/11 - Removed Blip scaling on shop blips on radar per #290240
|
||
//9/27/11 - Reformatting/prettifying all taxi oj scripts
|
||
//===================================================================================================================
|
||
|
||
|
||
//Compile out Title Update changes to header functions.
|
||
//Must be before includes.
|
||
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
||
|
||
|
||
|
||
//Includes------------------------------------------------------
|
||
USING "Taxi_Includes.sch"
|
||
|
||
USING "shop_public.sch"
|
||
|
||
|
||
//Consts
|
||
CONST_INT TAXI_SHOPS_MAX_NUM_SHOPS 3
|
||
CONST_INT TAXI_TTB_TIP_HIGH 30
|
||
CONST_INT TAXI_TTB_TIP_MED 10
|
||
//Local Variables-----------------------------------------------
|
||
CONST_INT TAXI_CONST_BONUS_CASH_BEST_STORE 500
|
||
|
||
TaxiStruct myTaxiData
|
||
|
||
SHOP_NAME_ENUM targetShopName, nearestShopName
|
||
|
||
MODEL_NAMES mPassengerModel = A_F_Y_BEVHILLS_03
|
||
|
||
ENUM TAXIOJ_DL_BONUS
|
||
TTTB_BONUS_GENERIC,
|
||
TTTB_BONUS_TOTAL
|
||
ENDENUM
|
||
|
||
BONUS_FIELD bonusTakeToBest[TTTB_BONUS_TOTAL]
|
||
|
||
//Native Data
|
||
BLIP_INDEX blipTaxiShop[TAXI_SHOPS_MAX_NUM_SHOPS]
|
||
|
||
SEQUENCE_INDEX siTemp
|
||
|
||
//Vectors
|
||
VECTOR vPassengerPt = << -412.0875, 1171.3588, 324.8176 >> //Los Santos Obeservatory
|
||
VECTOR vPassengerPickupPt = << -411.0378, 1175.7334, 324.6417 >>
|
||
VECTOR vTaxiDropoffShopPos[NUMBER_OF_SHOPS] //Droppoints
|
||
VECTOR vTaxiDropoffPOIPos[NUMBER_OF_SHOPS] //Passenger POI Walk Pts
|
||
VECTOR vTaxiDropoffWarpPos[NUMBER_OF_SHOPS] //Taxi Warp Pts
|
||
VECTOR vTaxiInStorePos[NUMBER_OF_SHOPS]
|
||
VECTOR vTaxiCurrentWalkInStorePos
|
||
|
||
//Bools
|
||
BOOL bNotCheckInModeOn = FALSE //FALSE TRUE
|
||
BOOL bLeftTaxi
|
||
BOOL bWentWanted
|
||
//BOOL bShowDebug = TRUE // TRUE FALSE
|
||
|
||
//Ints
|
||
INT iDebugThrottle = 1
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
INT iBestShopIndex = 0
|
||
#ENDIF // IS_DEBUG_BUILD
|
||
INT iTipIndex = 0
|
||
|
||
|
||
BOOL bCheckMidComplete = FALSE
|
||
BOOL bCheckEndComplete = FALSE
|
||
BOOL bFirstDropoffBlipEnabled = FALSE
|
||
|
||
//Floats
|
||
FLOAT fTaxiDropoffWarpHeading[NUMBER_OF_SHOPS]
|
||
|
||
//Dialogue Queue Info
|
||
BOOL g_bDebug = FALSE
|
||
TAXI_OJ_DIALOGUE_Q_DATA tTaxiOJ_DQ_Data
|
||
TAXI_OJ_DQ_CONVERSATION_LINE tDialogueLine[CONST_TAXIOJ_SIZE_Q]
|
||
|
||
AGGRO_ARGS aggroArgs
|
||
|
||
SCRIPT_SHARD_BIG_MESSAGE TaxiMidSize
|
||
//Debug---------------------------------------------------------------------------------------------------------------
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
WIDGET_GROUP_ID taxiRideWidgets,ojTaxiWidgets_Shops
|
||
BOOL bShowDropoffPt, bShowBestChoice
|
||
BOOL bDebugTurnOnFreeRide
|
||
TXM_DEBUG_SKIP_STATES tDebugState = TXM_DSS_CHECK_FOR_BUTTON_PRESS
|
||
#ENDIF
|
||
|
||
|
||
//FUNCTIONS------------------------------------------------------------------------------------------------------------
|
||
|
||
/*
|
||
ooooooooo ooooo o ooooo ooooooo ooooooo8
|
||
888 88o 888 888 888 o888 888o o888 88
|
||
888 888 888 8 88 888 888 888 888 oooo
|
||
888 888 888 8oooo88 888 o 888o o888 888o 88
|
||
o888ooo88 o888o o88o o888o o888ooooo88 88ooo88 888ooo888
|
||
*/
|
||
PROC TRIGGER_TAXI_QUEUE_TTB_LINES()
|
||
|
||
SET_TAXI_OJ_INTERRUPT_TIMER_OFF(myTaxiData)
|
||
|
||
//Trigger lines
|
||
IF IS_BANTER_SAFE_TO_PLAY(myTaxiData,tTaxiOJ_DQ_Data)
|
||
|
||
SWITCH tTaxiOJ_DQ_Data.iCurrentDQLine
|
||
//Make sure if player interrupts the initial line, that the objective prints anyway.
|
||
CASE 0
|
||
IF myTaxiData.tTaxiOJ_RideState = TRS_DRIVING_PASSENGER
|
||
|
||
IF NOT IS_TAXI_OJ_INTERRUPTION_LINE_PLAYING(myTaxiData)
|
||
|
||
IF SAFE_IS_THIS_PRINT_BEING_DISPLAYED("TX_OBJ_TTB_DO")
|
||
OR DOES_BLIP_EXIST(myTaxiData.blipTaxiDropOff)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"--------------------------[Taxi Oddjob Objective] GO TO J Store has been assigned")
|
||
tTaxiOJ_DQ_Data.iCurrentDQLine++
|
||
|
||
ELSE
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_OBJ_GIVE_MAIN
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_OBJ_GIVE_MAIN,TRUE,FALSE,TRUE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"--------------------------[Taxi Oddjob Objective] GO TO J Store has been REassigned")
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDIF
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 1
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) > TAXI_OBJ_GIVE_MAIN
|
||
AND GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_TTB_BANTER
|
||
AND NOT IS_TAXI_OJ_INTERRUPTION_LINE_PLAYING(myTaxiData)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Current speech index:", GET_TAXI_SPEECH_INDEX(myTaxiData))
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_TTB_BANTER,TRUE)
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering TTB Banter ")
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 2
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > GET_RANDOM_FLOAT_IN_RANGE(2.0,10.0)
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_BANTER_3
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_BANTER_3,TRUE)
|
||
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering Banter 3")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 3
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > GET_RANDOM_FLOAT_IN_RANGE(2.0,10.0)
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_BANTER_4
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_BANTER_4,TRUE)
|
||
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering Banter 4")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 4
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > 30.0//GET_RANDOM_FLOAT_IN_RANGE(2.0,10.0)
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_BANTER_2
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_BANTER_2,TRUE)
|
||
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering Banter 2")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 5
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > GET_RANDOM_FLOAT_IN_RANGE(8.0,16.0)
|
||
//Set Radio Station Check
|
||
// IF NOT GET_TAXI_RADIO_CHECK_FLAG(myTaxiData)
|
||
// TAXI_RADIO_STATION_TURN_ON(myTaxiData)
|
||
// IF g_bDebug
|
||
// SCRIPT_ASSERT("The Taxi Radio Should Be Updating")
|
||
// ENDIF
|
||
// ENDIF
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
PROCESS_IMPORTANT_DIALOGUE_Q(myTaxiData,tDialogueLine, tTaxiOJ_DQ_Data, g_bDebug)
|
||
|
||
ENDPROC
|
||
PROC TAXI_SHOP_SETUP_BLIPS(BLIP_INDEX &blipShop, SHOP_NAME_ENUM eShopName, BLIP_SPRITE eBlipSprite, INT iBlipColor = BLIP_COLOUR_YELLOW )
|
||
|
||
//Make my own
|
||
IF DOES_BLIP_EXIST(blipShop)
|
||
REMOVE_BLIP(blipShop)
|
||
ENDIF
|
||
|
||
blipShop = ADD_BLIP_FOR_COORD(GET_SHOP_COORDS(eShopName))
|
||
|
||
SET_BLIP_SPRITE(blipShop, eBlipSprite)
|
||
SET_BLIP_COLOUR(blipShop,iBlipColor)
|
||
// B* 926655 Taxi Take To Best: The map refers to all blipped clothing stores as "Discount Store". - have to hard code clothes store for now
|
||
SET_BLIP_NAME_FROM_TEXT_FILE(blipShop,GET_SHOP_NAME(eShopName))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_SHOP_SETUP_BLIPS - Shops name is ", GET_SHOP_NAME(eShopName))
|
||
|
||
//SET_BLIP_NAME_FROM_TEXT_FILE(blipShop,"BLIP_73")
|
||
|
||
//SET_BLIP_AS_MINIMAL_ON_EDGE(blipShop,TRUE)
|
||
SET_BLIP_SCALE(blipShop, BLIP_SIZE_COORD)
|
||
|
||
SET_BLIP_AS_MISSION_CREATOR_BLIP(blipShop, TRUE)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_SHOP_SETUP_BLIPS - Shops blipped")
|
||
ENDPROC
|
||
|
||
PROC TAXI_SHOP_DELETE_ALL_BLIPS(BLIP_INDEX &blipArray[])
|
||
INT i
|
||
REPEAT 3 i
|
||
IF DOES_BLIP_EXIST(blipArray[i])
|
||
REMOVE_BLIP(blipArray[i])
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_SHOP_DELETE_ALL_BLIPS - Blips cleaned up")
|
||
ENDPROC
|
||
|
||
PROC UPDATE_PROGRESS()
|
||
IF EVALUATE_OVERALL_TIME(myTaxiData, TAXI_DI_TIME_BAD, 168)
|
||
|
||
ELIF NOT bCheckMidComplete
|
||
bCheckMidComplete = EVALUATE_PROGRESS(myTaxiData, TAXI_DI_TIME_FAST, TAXI_DI_TIME_BAD, 1000, 73)
|
||
ELIF NOT bCheckEndComplete
|
||
bCheckEndComplete = EVALUATE_PROGRESS(myTaxiData, TAXI_DI_TIME_FAST, TAXI_DI_TIME_BAD, 28, 148)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC TAXI_OJ_SET_SHOP_DROPOFFS()
|
||
|
||
vTaxiDropoffShopPos[HAIRDO_SHOP_01_BH] = << -829.8521, -192.3817, 36.3936 >>
|
||
vTaxiDropoffShopPos[HAIRDO_SHOP_02_SC] = << 129.8964, -1716.6322, 28.0725 >>
|
||
vTaxiDropoffShopPos[CLOTHES_SHOP_L_01_SC] = << 88.1425, -1391.7910, 28.1999 >>
|
||
vTaxiDropoffShopPos[CLOTHES_SHOP_M_01_SM] = << -1210.9993, -785.9365, 16.0056 >>
|
||
vTaxiDropoffShopPos[CLOTHES_SHOP_H_01_BH] = << -723.82043, -160.79854, 35.92944 >> //<< -723.9122, -161.8416, 35.9609 >>
|
||
vTaxiDropoffShopPos[TATTOO_PARLOUR_01_HW] = << 339.2214, 158.9484, 102.1509 >>
|
||
vTaxiDropoffShopPos[GUN_SHOP_01_DT] = << 15.1447, -1127.1610, 27.7764 >>
|
||
|
||
//Set POI points (point where passenger is going to walk toward
|
||
//If these are not working, I think it's because shop scripts aren't all active or waiting to be discovered
|
||
vTaxiDropoffPOIPos[HAIRDO_SHOP_01_BH] = << -815.6819, -183.7194, 36.5695 >>
|
||
vTaxiDropoffPOIPos[HAIRDO_SHOP_02_SC] = << 136.1871, -1712.0688, 28.2916 >>
|
||
vTaxiDropoffPOIPos[CLOTHES_SHOP_L_01_SC] = << 84.2585, -1379.5623, 28.2919 >>
|
||
vTaxiDropoffPOIPos[CLOTHES_SHOP_M_01_SM] = << -1206.15601, -777.45782, 16.32830 >>
|
||
vTaxiDropoffPOIPos[CLOTHES_SHOP_H_01_BH] = << -716.05505, -160.17415, 35.98816 >>
|
||
vTaxiDropoffPOIPos[TATTOO_PARLOUR_01_HW] = << 342.1741, 172.9035, 102.1543 >>
|
||
vTaxiDropoffPOIPos[GUN_SHOP_01_DT] = << 22.1268, -1109.8680, 28.7970 >>
|
||
|
||
vTaxiInStorePos[CLOTHES_SHOP_L_01_SC] = << 76.3885, -1397.6653, 28.3719 >>
|
||
vTaxiInStorePos[CLOTHES_SHOP_M_01_SM] = << -1193.4290, -769.2299, 16.3289 >>
|
||
vTaxiInStorePos[CLOTHES_SHOP_H_01_BH] = << -710.8855, -152.4612, 36.4106 >>
|
||
|
||
vTaxiDropoffWarpPos[HAIRDO_SHOP_01_BH] = << -821.3112, -207.0323, 36.3333 >>
|
||
vTaxiDropoffWarpPos[HAIRDO_SHOP_02_SC] = << 138.4111, -1726.9070, 28.0569 >>
|
||
vTaxiDropoffWarpPos[CLOTHES_SHOP_L_01_SC] = << 96.1429, -1407.3462, 28.1563 >>
|
||
vTaxiDropoffWarpPos[CLOTHES_SHOP_M_01_SM] = << -1202.8093, -795.3967, 15.2069 >>
|
||
vTaxiDropoffWarpPos[CLOTHES_SHOP_H_01_BH] = << -710.7402, -178.9253, 35.8931 >>
|
||
vTaxiDropoffWarpPos[TATTOO_PARLOUR_01_HW] = << 348.4406, 156.2108, 101.9483 >>
|
||
vTaxiDropoffWarpPos[GUN_SHOP_01_DT] = << 40.1115, -1113.9235, 28.1427 >>
|
||
|
||
fTaxiDropoffWarpHeading[HAIRDO_SHOP_01_BH] = 33.19
|
||
fTaxiDropoffWarpHeading[HAIRDO_SHOP_02_SC] = 50.6
|
||
fTaxiDropoffWarpHeading[CLOTHES_SHOP_L_01_SC] = 48.99
|
||
fTaxiDropoffWarpHeading[CLOTHES_SHOP_M_01_SM] = 37.21
|
||
fTaxiDropoffWarpHeading[CLOTHES_SHOP_H_01_BH] = 28.39
|
||
fTaxiDropoffWarpHeading[TATTOO_PARLOUR_01_HW] = 71.56
|
||
fTaxiDropoffWarpHeading[GUN_SHOP_01_DT] = 148.91
|
||
|
||
|
||
/*
|
||
SWITCH eShopType
|
||
CASE SHOP_TYPE_HAIRDO
|
||
|
||
vTaxiDropoffShopPos[0] = << -829.8521, -192.3817, 36.3936 >>
|
||
vTaxiDropoffShopPos[1] = << 129.8964, -1716.6322, 28.0725 >>
|
||
|
||
BREAK
|
||
|
||
CASE SHOP_TYPE_CLOTHES
|
||
|
||
vTaxiDropoffShopPos[0] = << 88.1425, -1391.7910, 28.1999 >>
|
||
vTaxiDropoffShopPos[1] = << -1210.9993, -785.9365, 16.0056 >>
|
||
vTaxiDropoffShopPos[2] = << -723.9122, -161.8416, 35.9609 >>
|
||
|
||
BREAK
|
||
|
||
CASE SHOP_TYPE_TATTOO
|
||
|
||
vTaxiDropoffShopPos[0] = << 339.2214, 158.9484, 102.1509 >>
|
||
BREAK
|
||
|
||
CASE SHOP_TYPE_GUN
|
||
|
||
vTaxiDropoffShopPos[0] = << 15.1447, -1127.1610, 27.7764 >>
|
||
BREAK
|
||
ENDSWITCH
|
||
*/
|
||
ENDPROC
|
||
|
||
PROC TAXI_SHOP_HIDE_BLIPS()
|
||
|
||
INT iTemp
|
||
REPEAT TAXI_SHOPS_MAX_NUM_SHOPS iTemp
|
||
IF DOES_BLIP_EXIST(blipTaxiShop[iTemp])
|
||
SET_BLIP_ALPHA(blipTaxiShop[iTemp],0)
|
||
ENDIF
|
||
ENDREPEAT
|
||
ENDPROC
|
||
|
||
|
||
PROC TAXI_SHOP_SHOW_BLIPS()
|
||
|
||
INT iTemp
|
||
REPEAT TAXI_SHOPS_MAX_NUM_SHOPS iTemp
|
||
IF DOES_BLIP_EXIST(blipTaxiShop[iTemp])
|
||
SET_BLIP_ALPHA(blipTaxiShop[iTemp],255)
|
||
ENDIF
|
||
ENDREPEAT
|
||
ENDPROC
|
||
|
||
|
||
|
||
PROC TAXI_SHOP_ENABLE_BLIP_FOR_DESTINATION(SHOP_TYPE_ENUM eShopType)
|
||
#IF IS_DEBUG_BUILD
|
||
INT iTemp
|
||
#ENDIF // IS_DEBUG_BUILD
|
||
|
||
TAXI_OJ_SET_SHOP_DROPOFFS()
|
||
|
||
SWITCH eShopType
|
||
//"Clothing Shop"
|
||
CASE SHOP_TYPE_HAIRDO
|
||
|
||
BREAK
|
||
|
||
CASE SHOP_TYPE_CLOTHES
|
||
//Turn off the one on it
|
||
SET_STATIC_BLIP_CATEGORY_VISIBILITY(STATIC_BLIP_CATEGORY_SHOP, FALSE)
|
||
|
||
// clears out local blips
|
||
TAXI_SHOP_DELETE_ALL_BLIPS(blipTaxiShop)
|
||
|
||
//Make my own
|
||
TAXI_SHOP_SETUP_BLIPS(blipTaxiShop[0],CLOTHES_SHOP_L_01_SC,RADAR_TRACE_CLOTHES_STORE)
|
||
TAXI_SHOP_SETUP_BLIPS(blipTaxiShop[1],CLOTHES_SHOP_M_01_SM,RADAR_TRACE_CLOTHES_STORE)
|
||
TAXI_SHOP_SETUP_BLIPS(blipTaxiShop[2],CLOTHES_SHOP_H_01_BH,RADAR_TRACE_CLOTHES_STORE)
|
||
BREAK
|
||
|
||
//"Tattoo "
|
||
CASE SHOP_TYPE_TATTOO
|
||
|
||
BREAK
|
||
|
||
//"Gunshop"
|
||
CASE SHOP_TYPE_GUN
|
||
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
REPEAT TAXI_SHOPS_MAX_NUM_SHOPS iTemp
|
||
IF DOES_BLIP_EXIST(blipTaxiShop[iTemp])
|
||
IF ARE_VECTORS_EQUAL(GET_BLIP_COORDS(blipTaxiShop[iTemp]),GET_SHOP_COORDS(targetShopName))
|
||
iBestShopIndex = iTemp
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Taxi Shops Best one is ", iBestShopIndex)
|
||
ENDIF
|
||
ENDIF
|
||
ENDREPEAT
|
||
#ENDIF // IS_DEBUG_BUILD
|
||
ENDPROC
|
||
|
||
PROC ENABLE_INCORRECT_SHOP_BLIPS(BOOL bEnable)
|
||
|
||
IF bEnable
|
||
SET_STATIC_BLIP_CATEGORY_VISIBILITY(STATIC_BLIP_CATEGORY_SHOP, TRUE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Enabled Shop Blips.")
|
||
ELSE
|
||
SET_STATIC_BLIP_CATEGORY_VISIBILITY(STATIC_BLIP_CATEGORY_SHOP, FALSE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Disabled Shop Blip.")
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Request all our mission specific assets here
|
||
///
|
||
PROC REQUEST_TAXI_ODDJOB_TTB_STREAMS_STAGE_01()
|
||
//Load text and UI
|
||
REQUEST_MODEL(mPassengerModel)
|
||
TaxiMidSize.siMovie = REQUEST_MG_MIDSIZED_MESSAGE()
|
||
TAXI_INIT_SHARED_STREAMS(FALSE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TXM - TTB Stage 01 Assets Requested")
|
||
ENDPROC
|
||
|
||
PROC RELEASE_TAXI_ODDJOB_TTB_STREAMS_STAGE_01()
|
||
|
||
SET_MODEL_AS_NO_LONGER_NEEDED(mPassengerModel)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Taxi OJ Follow Car Stage01 Assets Released")
|
||
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Waits for our assets to load
|
||
///
|
||
/// RETURNS: TRUE if everything has loaded correctly FALSE if there was a problem
|
||
///
|
||
FUNC BOOL HAVE_TAXI_OJ_FC_STAGE_01_ASSETS_LOADED()
|
||
|
||
IF NOT HAS_MODEL_LOADED(mPassengerModel)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading A_F_Y_BevHills_03",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_SCALEFORM_MOVIE_LOADED(TaxiMidSize.siMovie)
|
||
#IF IS_DEBUG_BUILD
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading TaxiMidSize.siMovie",iDebugThrottle)
|
||
#ENDIF
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
|
||
IF NOT TAXI_SHARED_ASSETS_STREAMED(iDebugThrottle,FALSE)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading shared assets",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
PROC Script_Cleanup()
|
||
#IF IS_DEBUG_BUILD
|
||
IF DOES_WIDGET_GROUP_EXIST(taxiRideWidgets)
|
||
DELETE_WIDGET_GROUP(taxiRideWidgets)
|
||
ENDIF
|
||
|
||
IF DOES_WIDGET_GROUP_EXIST(ojTaxiWidgets_Shops)
|
||
DELETE_WIDGET_GROUP(ojTaxiWidgets_Shops)
|
||
ENDIF
|
||
|
||
CLEANUP_TAXI_WIDGETS()
|
||
|
||
#ENDIF
|
||
ENABLE_INCORRECT_SHOP_BLIPS(TRUE)
|
||
|
||
TAXI_SHOP_DELETE_ALL_BLIPS(blipTaxiShop)
|
||
|
||
RELEASE_TAXI_ODDJOB_TTB_STREAMS_STAGE_01()
|
||
|
||
TERMINATE_THIS_THREAD()
|
||
ENDPROC
|
||
|
||
// Perform any special commands if the script fails
|
||
// NOTE: This can include WAITs prior to the Mission_Cleanup() call
|
||
PROC Script_Failed()
|
||
TAXI_SCRIPT_FAILED(myTaxiData)
|
||
Script_Cleanup()
|
||
ENDPROC
|
||
|
||
PROC INITIALIZE_SCRIPT_VARIABLES()
|
||
|
||
TAXI_ODDJOB_GLOBAL_SETUP(myTaxiData,TXM_05_TAKETOBEST)
|
||
|
||
// Set our initial state up. VIP missions don't start at TRS_FINDING_LOCATION.
|
||
myTaxiData.tTaxiOJ_RideState = TRS_INIT_STREAM
|
||
|
||
// iDebugShop = iPrevDebugShop
|
||
myTaxiData.fTaxiOJ_BanterDelay = 20.0
|
||
myTaxiData.vTaxiOJ_WarpPtPickup = << -422.4797, 1181.7690, 324.6417 >>
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingPickup = 225.6436
|
||
|
||
myTaxiData.vTaxiOJ_WarpPtDropoff = << 171.1731, -3288.1711, 4.7828 >>
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingDropoff = 184.17
|
||
|
||
SET_TAXI_TIP_CUTOFFS(myTaxiData, 20, 40)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
#IF DEBUG_iTurnOnAllDXDebug
|
||
ENABLE_ALL_DIALOGUE_DEBUG()
|
||
#ENDIF
|
||
|
||
taxiRideWidgets = START_WIDGET_GROUP("Taxi Ride - Take To Best")
|
||
INIT_ODDJOB_TAXI_WIDGETS()
|
||
|
||
//Excitement Widget
|
||
ojTaxiWidgets_Shops = START_WIDGET_GROUP("Shops")
|
||
|
||
ADD_WIDGET_STRING("Locations Debugging")
|
||
ADD_WIDGET_BOOL("Show Drop Pts ",bShowDropoffPt)
|
||
ADD_WIDGET_BOOL("Toggle Best Shop GREEN",bShowBestChoice)
|
||
|
||
STOP_WIDGET_GROUP()
|
||
STOP_WIDGET_GROUP()
|
||
#ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~-------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~~~~~~~~~~~~ Oddjobs | Taxi | Take To Best ~~~~~~~~~~~~~~~~~----------")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~-------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----")
|
||
|
||
|
||
ENDPROC
|
||
#IF IS_DEBUG_BUILD
|
||
PROC PROCESS_WIDGETS()
|
||
|
||
UPDATE_TAXI_WIDGETS(myTaxiData,tTaxiOJ_DQ_Data)
|
||
|
||
IF bShowDropoffPt
|
||
DRAW_DEBUG_SPHERE(myTaxiData.vTaxiOJDropoff,3.0,255,215,0,150)
|
||
DRAW_DEBUG_TEXT("Closest Shop Dropoff Pt Here", myTaxiData.vTaxiOJDropoff)
|
||
ENDIF
|
||
|
||
IF bShowBestChoice
|
||
IF GET_BLIP_COLOUR(blipTaxiShop[iBestShopIndex]) = BLIP_COLOUR_YELLOW
|
||
SET_BLIP_COLOUR(blipTaxiShop[iBestShopIndex], BLIP_COLOUR_GREEN)
|
||
|
||
ELIF GET_BLIP_COLOUR(blipTaxiShop[iBestShopIndex]) = BLIP_COLOUR_GREEN
|
||
SET_BLIP_COLOUR(blipTaxiShop[iBestShopIndex], BLIP_COLOUR_YELLOW)
|
||
ENDIF
|
||
bShowBestChoice = FALSE
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
#ENDIF
|
||
|
||
FUNC SHOP_TYPE_ENUM CHOOSE_RANDOM_SHOP_TYPE()
|
||
INT NumOptions = 4
|
||
INT tempInt
|
||
SHOP_TYPE_ENUM returnEnum = SHOP_TYPE_EMPTY
|
||
STRING sShoptype = "SHOP_TYPE_EMPTY"
|
||
|
||
IF NOT bNotCheckInModeOn
|
||
tempInt = GET_RANDOM_INT_IN_RANGE() % NumOptions
|
||
ELSE
|
||
// tempInt = iDebugShop
|
||
ENDIF
|
||
|
||
SWITCH tempInt
|
||
CASE 0
|
||
returnEnum = SHOP_TYPE_HAIRDO
|
||
sShoptype = "SHOP_TYPE_HAIRDO"
|
||
BREAK
|
||
|
||
CASE 1
|
||
returnEnum = SHOP_TYPE_CLOTHES
|
||
sShoptype = "SHOP_TYPE_CLOTHES"
|
||
BREAK
|
||
|
||
CASE 2
|
||
returnEnum = SHOP_TYPE_TATTOO
|
||
sShoptype = "SHOP_TYPE_TATTOO"
|
||
BREAK
|
||
|
||
CASE 3
|
||
returnEnum = SHOP_TYPE_GUN
|
||
sShoptype = "SHOP_TYPE_GUN"
|
||
BREAK
|
||
ENDSWITCH
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI - Looking for shop type: ","",sShoptype)
|
||
RETURN returnEnum
|
||
ENDFUNC
|
||
FUNC SHOP_NAME_ENUM CHOOSE_RANDOM_SHOP_NAME_OF_TYPE(SHOP_TYPE_ENUM inputType, BOOL bPickRandomStore = TRUE)
|
||
INT i, startingInt, endingInt, countInt, randInt
|
||
SHOP_NAME_ENUM returnEnum = EMPTY_SHOP
|
||
startingInt = -1
|
||
endingInt = -1
|
||
//CLOTHES_SHOP_H_01_BH
|
||
|
||
REPEAT COUNT_OF(SHOP_NAME_ENUM) i
|
||
IF GET_SHOP_TYPE_ENUM((INT_TO_ENUM(SHOP_NAME_ENUM, i))) = inputType
|
||
countInt++
|
||
IF startingInt = -1
|
||
startingInt = i
|
||
ELSE
|
||
endingInt = i
|
||
ENDIF
|
||
ENDIF
|
||
ENDREPEAT
|
||
IF countInt > 0
|
||
IF endingInt <> -1
|
||
IF bPickRandomStore
|
||
randInt = GET_RANDOM_INT_IN_RANGE() % countInt
|
||
returnEnum = INT_TO_ENUM(SHOP_NAME_ENUM, (randInt + startingInt))
|
||
ELSE
|
||
returnEnum = CLOTHES_SHOP_H_01_BH
|
||
ENDIF
|
||
ELSE
|
||
returnEnum = INT_TO_ENUM(SHOP_NAME_ENUM, startingInt)
|
||
ENDIF
|
||
ENDIF
|
||
#IF IS_DEBUG_BUILD
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI - Looking for shop named: ", Get_Shop_Display_String_From_Shop_ID(returnEnum), " Enum Int = ", ENUM_TO_INT(returnEnum) )
|
||
#ENDIF
|
||
RETURN returnEnum
|
||
ENDFUNC
|
||
PROC BEST_CALCULATE_FARE_VALUES()
|
||
//No longer doing Random shops, hardcoding to HAIR SALON
|
||
//myTaxiData.targetShopType = CHOOSE_RANDOM_SHOP_TYPE()
|
||
|
||
// this just hardcodes it to CLOTHES_SHOP_H_01_BH
|
||
targetShopName = CHOOSE_RANDOM_SHOP_NAME_OF_TYPE(myTaxiData.targetShopType, FALSE)
|
||
|
||
TAXI_SHOP_ENABLE_BLIP_FOR_DESTINATION(myTaxiData.targetShopType)
|
||
|
||
IF targetShopName <> EMPTY_SHOP
|
||
FLOAT fDist
|
||
fDist = GET_ENTITY_DISTANCE_FROM_LOCATION(PLAYER_PED_ID(), GET_SHOP_COORDS(targetShopName))
|
||
myTaxiData.fTaxiOJ_TimeDeadline = (fDist * 0.3)
|
||
ELSE
|
||
myTaxiData.fTaxiOJ_TimeDeadline = 120.0
|
||
ENDIF
|
||
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
myTaxiData.iOldVehicleHealth = GET_ENTITY_HEALTH(myTaxiData.viTaxi)
|
||
ENDIF
|
||
ENDPROC
|
||
PROC Update_Destination_shop()
|
||
|
||
//Handle hiding/showing shop blips when player enters/exits taxi
|
||
IF NOT bLeftTaxi
|
||
IF IS_TAXI_TIMER_STARTED(myTaxiData, TT_NOTINCAB)
|
||
TAXI_SHOP_HIDE_BLIPS()
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_OBJ_LEFT_CAR,TRUE)
|
||
bLeftTaxi = TRUE
|
||
ENDIF
|
||
//Has Left Taxi
|
||
ELSE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF NOT IS_TAXI_TIMER_STARTED(myTaxiData, TT_NOTINCAB)
|
||
SET_PLAYER_LEFT_TAXI_OJ(myTaxiData)
|
||
TAXI_SHOP_SHOW_BLIPS()
|
||
bLeftTaxi = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF myTaxiData.bIsCurrentlyWanted
|
||
TAXI_SHOP_HIDE_BLIPS()
|
||
bWentWanted = TRUE
|
||
ELSE
|
||
IF bWentWanted
|
||
TAXI_SHOP_SHOW_BLIPS()
|
||
bWentWanted = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
nearestShopName = GET_CLOSEST_SHOP_OF_TYPE(GET_ENTITY_COORDS(PLAYER_PED_ID()), myTaxiData.targetShopType)
|
||
IF nearestShopName <> EMPTY_SHOP
|
||
|
||
SHOP_NAME_ENUM enumClosestShop = GET_CLOSEST_SHOP_OF_TYPE(GET_ENTITY_COORDS(PLAYER_PED_ID()), myTaxiData.targetShopType)
|
||
|
||
IF NOT ARE_VECTORS_EQUAL(myTaxiData.vTaxiOJDropoff, vTaxiDropoffShopPos[enumClosestShop])
|
||
|
||
myTaxiData.vTaxiOJDropoff = vTaxiDropoffShopPos[enumClosestShop]
|
||
myTaxiData.vTaxiOJ_PassengerGoToPt = vTaxiDropoffPOIPos[enumClosestShop]
|
||
myTaxiData.vTaxiOJ_WarpPtDropoff = vTaxiDropoffWarpPos[enumClosestShop]
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingDropoff = fTaxiDropoffWarpHeading[enumClosestShop]
|
||
vTaxiCurrentWalkInStorePos = vTaxiInStorePos[enumClosestShop]
|
||
ENDIF
|
||
|
||
ENDIF
|
||
ENDPROC
|
||
PROC TAXI_OJ_TTB_SET_TIPS_AND_EXCITEMENT_TO_CHECK()
|
||
|
||
//Tip Bits
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_POS_DELIVERY_TIME)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_HIT_PED)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_TOOK_DAMAGE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_ROLL_CAR)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_LEFT_CAR)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_STOPPED)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_RADIO_STATION_LIKE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_RADIO_STATION_DISLIKE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_FREEBIE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_LOST_POLICE)
|
||
|
||
//Excitement Bits
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_PassengerReactBits, TAXI_DF_HITPED)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_PassengerReactBits, TAXI_DF_ROLL)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_PassengerReactBits, TAXI_DF_TOOKDAMAGE)
|
||
|
||
|
||
//Turn off aggro bits
|
||
SET_BITMASK_AS_ENUM(aggroArgs.iBitFieldDontCheck, EAggro_Wanted)
|
||
|
||
|
||
//Start the mission timer here
|
||
TAXI_START_TIMER(myTaxiData, TT_RIDETODEST)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_OJ_DL_SET_TIPS_TO_CHECK set tips to check on")
|
||
ENDPROC
|
||
|
||
/*
|
||
|
||
oooo oooo o ooooo oooo oooo
|
||
8888o 888 888 888 8888o 88
|
||
88 888o8 88 8 88 888 88 888o88
|
||
88 888 88 8oooo88 888 88 8888
|
||
o88o 8 o88o o88o o888o o888o o88o 88
|
||
|
||
*/
|
||
|
||
PROC Main_Taxi_OJ_TakeToBest()
|
||
|
||
//Handles Fail Or No Taxi-------------------------------------------------------------------------------
|
||
IF IS_TAXI_JOB_IN_FAIL_STATE(myTaxiData)
|
||
|
||
TAXI_OJ_CLEAR_ALL_BLIPS(myTaxiData)
|
||
|
||
IF myTaxiData.tTaxiOJ_RideState > TRS_INIT_STREAM
|
||
IF TAXI_HANDLE_FAIL(myTaxiData)
|
||
Script_Failed()
|
||
ENDIF
|
||
ELSE
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_CLEANUP) > 5.0
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Fail During State: "," ", myTaxiData.sTaxiOJ_RideState, " ", myTaxiData.sTaxiOJ_Reason4Fail)
|
||
|
||
SET_PROPERTY_MANAGEMENT_RESULT(PROPERTY_MANAGEMENT_RESULT_FAILURE)
|
||
Script_Cleanup()
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Proceed
|
||
ELSE
|
||
//Run Throughtout the Entire Mission--------------------------------------------------------------
|
||
TAXI_OJ_MAINTAIN_GLOBAL_GATES(myTaxiData)
|
||
|
||
//Gobal taxi updates that all taxi missions run every frame
|
||
RUN_GLOBAL_TAXI_UPDATES(myTaxiData,aggroArgs)
|
||
|
||
UPDATE_TAXI_OJ_TIP(myTaxiData,iTipIndex)
|
||
|
||
PROCESS_TAXI_EXCEPTIONS(myTaxiData)
|
||
|
||
|
||
//Dialogue & Objectives
|
||
IF myTaxiData.tTaxiOJ_RideState > TRS_FINDING_LOCATION
|
||
|
||
TAXI_ODDJOB_HANDLE_TAXI_BLIPPING(myTaxiData)
|
||
|
||
IF NOT IS_TAXI_EMERGENCY_FAIL_SET(myTaxiData)
|
||
TRIGGER_TAXI_QUEUE_TTB_LINES()
|
||
ELSE
|
||
TAXI_SET_FAIL(myTaxiData,"Taxi Not Driveable",GET_TAXI_EMERGENCY_FAIL_STRING(myTaxiData))
|
||
ENDIF
|
||
|
||
ENDIF
|
||
//Track Driver progress
|
||
IF myTaxiData.tTaxiOJ_RideState = TRS_DRIVING_PASSENGER
|
||
HANDLE_TAXI_EXCITEMENT(myTaxiData,FALSE,TRUE)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
ELIF bDebugTurnOnFreeRide
|
||
HANDLE_TAXI_EXCITEMENT(myTaxiData,TRUE,TRUE)
|
||
#ENDIF
|
||
ENDIF
|
||
//================================================================================================
|
||
|
||
|
||
SWITCH myTaxiData.tTaxiOJ_RideState
|
||
|
||
//PRESTREAM and Check that the player and taxi are good to go
|
||
CASE TRS_INIT_STREAM
|
||
|
||
//Request of our assets
|
||
REQUEST_TAXI_ODDJOB_TTB_STREAMS_STAGE_01()
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_DIALOGUE,TAXI_DX_DELAY)
|
||
|
||
TAXI_SPAWN_PASSENGER(myTaxiData, vPassengerPt, vPassengerPickupPt, "TaxiMiranda",mPassengerModel,0,10.0)
|
||
TAXI_INIT_PASSENGER_BLIP(myTaxiData)
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_STREAMING)
|
||
|
||
BREAK
|
||
|
||
//Wait for streaming to finish
|
||
CASE TRS_STREAMING
|
||
|
||
IF HAVE_TAXI_OJ_FC_STAGE_01_ASSETS_LOADED()
|
||
|
||
INIT_ALL_TAXI_EXCITEMENT_VALUES()
|
||
|
||
INITIALIZE_GENERIC_TAXI_EXCEPTIONS()
|
||
|
||
TAXI_INITIALIZE_BONUS_FIELD(bonusTakeToBest[TTTB_BONUS_GENERIC], "TAXI_SC_BN_08", TAXI_CONST_BONUS_CASH_BEST_STORE)
|
||
TAXI_INITIALIZE_BONUS_INFO(myTaxiData, bonusTakeToBest)
|
||
|
||
myTaxiData.vTaxiOJPickup = vPassengerPt
|
||
|
||
//SET REACT BITS******************
|
||
CLEAR_ALL_TAXI_PASSENGER_REACT_BITS(myTaxiData)
|
||
|
||
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SPAWNING)
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
//Spawn passenger & designate the shop
|
||
CASE TRS_SPAWNING
|
||
IF PROPERTY_VIP_INIT_READY(myTaxiData)
|
||
|
||
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_TORSO, 0, 2)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_HAIR, 1, 0)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_LEG, 1,0)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_HEAD, 0,1)
|
||
|
||
SET_PED_CONFIG_FLAG(myTaxiData.piTaxiPassenger, PCF_GetOutUndriveableVehicle, FALSE)
|
||
ENDIF
|
||
|
||
//Setting the shop type to clothes---------------------------------------
|
||
myTaxiData.targetShopType = SHOP_TYPE_CLOTHES
|
||
|
||
//Give player obj to go pickup Passenger
|
||
ENABLE_TAXI_SPEECH(myTaxiData)
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_MANAGE_PICKUP)
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_MANAGE_PICKUP
|
||
IF TAXI_HANDLE_IV_PICKUP_NO_METER(myTaxiData)
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_WAIT_PARK)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_WAIT_PARK
|
||
IF IS_PASSENGER_ENTERING_TAXI(myTaxiData)
|
||
//Greet Driver as soon as they sit down & blip
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_TTB_SHOP,TRUE)
|
||
|
||
//CleanUp Pickup Lock & POI
|
||
CLEANUP_TAXI_PICKUP_STOP(myTaxiData)
|
||
|
||
TAXI_OJ_TTB_SET_TIPS_AND_EXCITEMENT_TO_CHECK()
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_DRIVING_PASSENGER)
|
||
|
||
ENDIF
|
||
|
||
// check to see if player dived, if so send back to prev state
|
||
IF IS_VEHICLE_DRIVEABLE( myTaxiData.viTaxi)
|
||
IF NOT IS_PED_IN_VEHICLE(myTaxiData.piTaxiPlayer, myTaxiData.viTaxi)
|
||
TAXI_HANDLE_PLAYER_DIVE(myTaxiData)
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_MANAGE_PICKUP)
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_DRIVING_PASSENGER
|
||
|
||
IF NOT bFirstDropoffBlipEnabled
|
||
IF myTaxiData.bObjPrinted
|
||
BEST_CALCULATE_FARE_VALUES()
|
||
ENABLE_INCORRECT_SHOP_BLIPS(FALSE)
|
||
bFirstDropoffBlipEnabled = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
Update_Destination_shop()
|
||
|
||
IF TAXI_HANDLE_DRIVING(myTaxiData/*,tTaxiOJ_DQ_Data*/, 5)
|
||
|
||
CLEAR_DIALOGUE_QUEUE(tDialogueLine)
|
||
CLOSE_DIALOGUE_QUEUE(tTaxiOJ_DQ_Data,CONST_TAXI_OJ_LINE_NUM_TO_CLOSE_DIALOGUE_Q)
|
||
|
||
IF nearestShopName = targetShopName
|
||
//TAXI_OVERRIDE_BONUS_AWARD(myTaxiData,bonusTakeToBest[TTTB_BONUS_TIP].cash,ENUM_TO_INT(TTTB_BONUS_TIP),TAXI_TTB_TIP_HIGH)
|
||
TASK_LOOK_AT_COORD(myTaxiData.piTaxiPassenger, <<-713.44891, -153.40938, 37.14410>>, 10000, SLF_SLOW_TURN_RATE | SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH)
|
||
TAXI_SET_BONUS_AWARD(myTaxiData,ENUM_TO_INT(TTTB_BONUS_GENERIC))
|
||
myTaxiData.iTaxiOJ_CashTip = 50
|
||
myTaxiData.bTaxiOJ_DoSayNoThanks = FALSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Main_Taxi_OJ_TakeToBest: at CLOTHES_SHOP_H_01_BH")
|
||
ELIF nearestShopName = CLOTHES_SHOP_M_01_SM
|
||
//TAXI_OVERRIDE_BONUS_AWARD(myTaxiData,bonusTakeToBest[TTTB_BONUS_TIP].cash,ENUM_TO_INT(TTTB_BONUS_TIP),TAXI_TTB_TIP_MED)
|
||
//TAXI_SET_BONUS_AWARD(myTaxiData,ENUM_TO_INT(TTTB_BONUS_TIP))
|
||
TASK_LOOK_AT_COORD(myTaxiData.piTaxiPassenger, <<-1196.37183, -772.46075, 17.30166>>, 10000, SLF_SLOW_TURN_RATE | SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH)
|
||
myTaxiData.iTaxiOJ_CashTip = 25
|
||
myTaxiData.bTaxiOJ_DoSayNoThanks = FALSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Main_Taxi_OJ_TakeToBest: at CLOTHES_SHOP_M_01_SM")
|
||
ELSE
|
||
TASK_LOOK_AT_COORD(myTaxiData.piTaxiPassenger, <<72.87311, -1392.59741, 29.76223>>, 10000, SLF_SLOW_TURN_RATE | SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH)
|
||
myTaxiData.iTaxiOJ_CashTip = 0
|
||
myTaxiData.bTaxiOJ_DoSayNoThanks = TRUE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Main_Taxi_OJ_TakeToBest: at CLOTHES_SHOP CRAP!")
|
||
ENDIF
|
||
|
||
|
||
//CASH $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||
SET_TAXI_FARE_OFF_MILEAGE(myTaxiData)
|
||
TAXI_OJ_RATE_OVERALL_TIP_LEVEL(myTaxiData)
|
||
CONVERT_TAXI_TIP_TO_CASH(myTaxiData)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_REGULAR_PAYMENT)
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Regular Payment
|
||
CASE TRS_REGULAR_PAYMENT
|
||
//Wait til passenger is done speaking/paying than tell him to leave vehicle
|
||
IF HAS_TAXI_OJ_PASSENGER_BEEN_DROPPED_OFF(myTaxiData)
|
||
|
||
CLEAR_PED_TASKS(myTaxiData.piTaxiPassenger)
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_LEAVE_ANY_VEHICLE(NULL)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,myTaxiData.vTaxiOJ_PassengerGoToPt,PEDMOVEBLENDRATIO_WALK,-1)
|
||
TASK_USE_NEAREST_SCENARIO_TO_COORD(NULL, myTaxiData.vTaxiOJ_PassengerGoToPt, 15, 5000)
|
||
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,vTaxiCurrentWalkInStorePos,PEDMOVEBLENDRATIO_WALK,-1)
|
||
TASK_USE_NEAREST_SCENARIO_TO_COORD(NULL, vTaxiCurrentWalkInStorePos, 15)
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(myTaxiData.piTaxiPassenger, siTemp)
|
||
|
||
SET_PED_KEEP_TASK(myTaxiData.piTaxiPassenger, TRUE)
|
||
|
||
//TAXI_OJ_TASK_PASSENGER_DROPOFF(myTaxiData)
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SCORECARD_GRADE)
|
||
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
//Pop up the scorecard
|
||
CASE TRS_SCORECARD_GRADE
|
||
|
||
//SET_PED_RESET_FLAG(myTaxiData.piTaxiPassenger, PRF_SearchForClosestDoor, TRUE)
|
||
|
||
IF TAXI_CALC_SCORECARD(myTaxiData,TaxiMidSize)
|
||
TAXI_MISSION_END(TRUE, myTaxiData,FALSE)
|
||
TAXI_RESET_TIMERS(myTaxiData,TT_CLEANUP)
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_CLEANUP)
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
CASE TRS_CLEANUP
|
||
|
||
//SET_PED_RESET_FLAG(myTaxiData.piTaxiPassenger, PRF_SearchForClosestDoor, TRUE)
|
||
|
||
|
||
// IF IS_ENTITY_AT_COORD(myTaxiData.piTaxiPassenger, <<80.6663, -1391.2383, 28.3876>>, <<25.0,25.0, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_ON_FOOT) //Low End Clothing
|
||
// OR IS_ENTITY_AT_COORD(myTaxiData.piTaxiPassenger, <<-1198.8291, -775.9587, 16.3238>>, <<2.0, 2.0, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_ON_FOOT) //SubUrban
|
||
// OR IS_ENTITY_AT_COORD(myTaxiData.piTaxiPassenger, <<-714.7526, -155.4902, 36.4152>>, <<2.0, 2.0, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_ON_FOOT) //Ponsonbys
|
||
// OR GET_TAXI_TIMER_IN_SECONDS(myTaxiData,TT_CLEANUP) > 15
|
||
CLEANUP_TAXI_OJ_PASSENGER(myTaxiData)
|
||
Script_Cleanup()
|
||
// ENDIF
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
SCRIPT
|
||
|
||
// Handles the player being busted or arrested, or if the player
|
||
// jumps into Multiplayer from Singleplayer – ensures the script
|
||
// gets cleaned up properly under the correct circumstances
|
||
IF (HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS | FORCE_CLEANUP_FLAG_REPEAT_PLAY))
|
||
SET_PROPERTY_MANAGEMENT_RESULT(PROPERTY_MANAGEMENT_RESULT_FAILURE)
|
||
Script_Cleanup()
|
||
ENDIF
|
||
|
||
// Any initialisation (generally, only mission scripts should set
|
||
// the mission flag to TRUE)
|
||
SET_MISSION_FLAG(TRUE)
|
||
|
||
INITIALIZE_SCRIPT_VARIABLES()
|
||
|
||
// The script loop
|
||
WHILE (TRUE)
|
||
// Maintain the script – perform per-frame functionality
|
||
|
||
//All skips and debug shortcuts-------------------------------
|
||
#IF IS_DEBUG_BUILD
|
||
|
||
PROCESS_TAXI_DEBUG_SKIP(myTaxiData,tDebugState)
|
||
|
||
// Debug Key: Check for Pass (not for Minigmes)
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
|
||
TAXI_ODDJOB_DEBUG_SKIP_TO_SCORECARD(myTaxiData)
|
||
ENDIF
|
||
|
||
// Debug Key: Check for Fail (not for Minigames)
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
|
||
TAXI_DEBUG_FAIL_TRIGGERED(myTaxiData)
|
||
Script_Failed()
|
||
ENDIF
|
||
|
||
// Debug Key: set vehicle health to 0.0
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_E))
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.viTaxi)
|
||
SET_VEHICLE_ENGINE_HEALTH(myTaxiData.viTaxi, 0.0)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
PROCESS_WIDGETS()
|
||
|
||
#ENDIF
|
||
//END DEBUG----------------------------------------------------
|
||
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPlayer)
|
||
Main_Taxi_OJ_TakeToBest()
|
||
ELSE
|
||
REASSIGN_TAXI_OJ_DRIVER(myTaxiData)
|
||
ENDIF
|
||
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
// Script should never reach here. Always terminate with cleanup function.
|
||
ENDSCRIPT
|
||
|