3718 lines
136 KiB
Scheme
Executable File
3718 lines
136 KiB
Scheme
Executable File
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
|
|
USING "friendController_private.sch"
|
|
USING "friendActivity_private.sch"
|
|
USING "friendActivity_dropoff_private.sch"
|
|
USING "friendActivity_bar_private.sch"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
USING "script_debug.sch"
|
|
USING "shared_debug.sch"
|
|
// USING "hud_creator_tool.sch"
|
|
|
|
///debug interface for friends scripts
|
|
/// sam.hackett@rockstarleeds.com
|
|
///
|
|
|
|
// *******************************************************************************************
|
|
// DEBUG UTILS
|
|
// *******************************************************************************************
|
|
|
|
PROC SAVE_DIALOGUESTAR_LINE_TO_DEBUG_FILE(STRING sRoot, STRING sDescription,
|
|
enumCharacterList eName, STRING sDialogue, BOOL bCellphone)
|
|
|
|
STRING sGuid
|
|
SWITCH eName
|
|
CASE CHAR_MICHAEL sGuid="74A35B39-171E-4CD8-A348-F119DD0C638A" BREAK
|
|
CASE CHAR_FRANKLIN sGuid="D116FE4D-A753-40C5-B9B5-129A7DF2911D" BREAK
|
|
CASE CHAR_TREVOR sGuid="88F3AD4C-C46D-462A-8049-B335741D94C4" BREAK
|
|
CASE CHAR_LAMAR sGuid="C82DCD89-2093-421B-8AD8-177C151F7B46" BREAK
|
|
CASE CHAR_JIMMY sGuid="5fa02f57-dacc-42cc-9d38-ee36683e68fe" BREAK
|
|
CASE CHAR_AMANDA sGuid="63883d26-a2f5-4e61-bed7-526d89d63a15" BREAK
|
|
|
|
DEFAULT sGuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("<Conversation placeholder=\"True\" root=\"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sRoot)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" description=\"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sDescription)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" random=\"False\" ")
|
|
IF NOT bCellphone
|
|
SAVE_STRING_TO_DEBUG_FILE("category=\"Default\"")
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE("category=\"Cellphone\"")
|
|
ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE(" >")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" <Lines>")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" <Line guid=\"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sGuid)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" dialogue=\"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sDialogue)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" speaker=\"0\" listener=\"1\" ")
|
|
IF NOT bCellphone
|
|
SAVE_STRING_TO_DEBUG_FILE("special=\"Face_to_face\"")
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE("special=\"Cellphone\"")
|
|
ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE(" />")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" </Lines>")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("</Conversation>")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
ENDPROC
|
|
|
|
PROC DEBUG_RequestAndWaitAdditionalText(STRING pTextBlockName, TEXT_BLOCK_SLOTS SlotNumber)
|
|
REQUEST_ADDITIONAL_TEXT(pTextBlockName, SlotNumber)
|
|
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(SlotNumber)
|
|
REQUEST_ADDITIONAL_TEXT(pTextBlockName, SlotNumber)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDPROC
|
|
#if USE_CLF_DLC
|
|
FUNC STRING GetLabel_SAVEHOUSE_NAME_ENUMCLF(SAVEHOUSE_NAME_ENUM eName)
|
|
SWITCH eName
|
|
CASE SAVEHOUSEclf_MICHAEL_BH RETURN "SAVEHOUSEclf_MICHAEL_BH" BREAK
|
|
CASE SAVEHOUSEclf_MICHAEL_CS RETURN "SAVEHOUSEclf_MICHAEL_CS" BREAK
|
|
CASE SAVEHOUSEclf_MICHAEL_PRO RETURN "SAVEHOUSEclf_MICHAEL_PRO" BREAK
|
|
CASE SAVEHOUSEclf_TREVOR_CS RETURN "SAVEHOUSEclf_TREVOR_CS" BREAK
|
|
CASE SAVEHOUSEclf_TREVOR_VB RETURN "SAVEHOUSEclf_TREVOR_VB" BREAK
|
|
CASE SAVEHOUSEclf_TREVOR_SC RETURN "SAVEHOUSEclf_TREVOR_SC" BREAK
|
|
CASE SAVEHOUSEclf_TREVOR_PRO RETURN "SAVEHOUSEclf_TREVOR_PRO" BREAK
|
|
CASE SAVEHOUSEclf_FRANKLIN_SC RETURN "SAVEHOUSEclf_FRANKLIN_SC" BREAK
|
|
CASE SAVEHOUSEclf_FRANKLIN_VH RETURN "SAVEHOUSEclf_FRANKLIN_VH" BREAK
|
|
CASE SAVEHOUSEclf_FRANKLIN_PRO RETURN "SAVEHOUSEclf_FRANKLIN_PRO" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "Invalid savehouse name"
|
|
ENDFUNC
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
FUNC STRING GetLabel_SAVEHOUSE_NAME_ENUMNRM(SAVEHOUSE_NAME_ENUM eName)
|
|
SWITCH eName
|
|
CASE SAVEHOUSENRM_BH RETURN "SAVEHOUSENRM_BH" BREAK
|
|
CASE SAVEHOUSENRM_CHATEAU RETURN "SAVEHOUSENRM_CHATEAU" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "Invalid savehouse name"
|
|
ENDFUNC
|
|
#endif
|
|
FUNC STRING GetLabel_SAVEHOUSE_NAME_ENUM(SAVEHOUSE_NAME_ENUM eName)
|
|
#if USE_CLF_DLC
|
|
return GetLabel_SAVEHOUSE_NAME_ENUMCLF(eName)
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
return GetLabel_SAVEHOUSE_NAME_ENUMNRM(eName)
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
|
|
SWITCH eName
|
|
CASE SAVEHOUSE_MICHAEL_BH RETURN "SAVEHOUSE_MICHAEL_BH" BREAK
|
|
CASE SAVEHOUSE_MICHAEL_CS RETURN "SAVEHOUSE_MICHAEL_CS" BREAK
|
|
CASE SAVEHOUSE_MICHAEL_PRO RETURN "SAVEHOUSE_MICHAEL_PRO" BREAK
|
|
CASE SAVEHOUSE_TREVOR_CS RETURN "SAVEHOUSE_TREVOR_CS" BREAK
|
|
CASE SAVEHOUSE_TREVOR_VB RETURN "SAVEHOUSE_TREVOR_VB" BREAK
|
|
CASE SAVEHOUSE_TREVOR_SC RETURN "SAVEHOUSE_TREVOR_SC" BREAK
|
|
CASE SAVEHOUSE_TREVOR_PRO RETURN "SAVEHOUSE_TREVOR_PRO" BREAK
|
|
CASE SAVEHOUSE_FRANKLIN_SC RETURN "SAVEHOUSE_FRANKLIN_SC" BREAK
|
|
CASE SAVEHOUSE_FRANKLIN_VH RETURN "SAVEHOUSE_FRANKLIN_VH" BREAK
|
|
CASE SAVEHOUSE_FRANKLIN_PRO RETURN "SAVEHOUSE_FRANKLIN_PRO" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "Invalid savehouse name"
|
|
#endif
|
|
#endif
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
// *******************************************************************************************
|
|
// RAG DEBUGGING SERVICES
|
|
// *******************************************************************************************
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//-- FRIEND LOCATIONS (debug)
|
|
//---------------------------------------------------------------------------------------------------
|
|
|
|
PROC PRIVATE_DEBUG_DisplayFriendLocations(WIDGET_GROUP_ID& hParentWidgetGroup, BOOL& bDisplayFriendLocations)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations()")
|
|
|
|
// Rag accessors
|
|
BOOL bJumpToPickupCoords[MAX_FRIEND_LOCATIONS]
|
|
BOOL bJumpToSpawnPos[MAX_FRIEND_LOCATIONS]
|
|
BOOL bJumpToParkPos[MAX_FRIEND_LOCATIONS]
|
|
BOOL bGrabAnchorPos[MAX_FRIEND_LOCATIONS]
|
|
BOOL bGrabSpawnPos[MAX_FRIEND_LOCATIONS]
|
|
BOOL bGrabParkPos[MAX_FRIEND_LOCATIONS]
|
|
|
|
// Vars for temp peds/blips at locations
|
|
WIDGET_GROUP_ID hWidget[MAX_FRIEND_LOCATIONS]
|
|
BLIP_INDEX hDebugBlip[MAX_FRIEND_LOCATIONS]
|
|
PED_INDEX hDebugPedA
|
|
PED_INDEX hDebugPedB
|
|
|
|
enumFriendLocation eFriendLoc
|
|
|
|
|
|
// Create widgets for each FriendLocation
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations() // Create widgets for each FriendLocation")
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
REPEAT MAX_FRIEND_LOCATIONS eFriendLoc
|
|
IF eFriendLoc <> FLOC_adhoc
|
|
hWidget[eFriendLoc] =
|
|
START_WIDGET_GROUP(GetLabel_enumFriendLocation(eFriendLoc))
|
|
ADD_WIDGET_BOOL("Warp to location", bJumpToPickupCoords[eFriendLoc])
|
|
ADD_WIDGET_BOOL("Warp to spawn pos", bJumpToSpawnPos[eFriendLoc])
|
|
ADD_WIDGET_BOOL("Warp to park pos", bJumpToParkPos[eFriendLoc])
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_VECTOR_SLIDER("Anchor", g_FriendLocations[eFriendLoc].vPickupCoord, -9999.0, 9999.0, 0.1)
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_VECTOR_SLIDER("PedA offset", g_FriendLocations[eFriendLoc].vPedOffsetA, -30.0, 30.0, 0.1)
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_VECTOR_SLIDER("PedB offset", g_FriendLocations[eFriendLoc].vPedOffsetB, -30.0, 30.0, 0.1)
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Grab anchor pos", bGrabAnchorPos[eFriendLoc])
|
|
ADD_WIDGET_BOOL("Grab spawn pos", bGrabSpawnPos[eFriendLoc])
|
|
ADD_WIDGET_BOOL("Grab park pos", bGrabParkPos[eFriendLoc])
|
|
STOP_WIDGET_GROUP()
|
|
ENDIF
|
|
ENDREPEAT
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
|
|
// Create peds/blips at each FriendLocation
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations() // Load models")
|
|
|
|
MODEL_NAMES ped_modelA = GET_FRIEND_MODEL(FR_MICHAEL)
|
|
MODEL_NAMES ped_modelB = GET_FRIEND_MODEL(FR_LAMAR)
|
|
|
|
// Load models + anims
|
|
REQUEST_MODEL(ped_modelA)
|
|
REQUEST_MODEL(ped_modelB)
|
|
REQUEST_ANIM_DICT("friends@laf@ig_1@idle_a")
|
|
REQUEST_ANIM_DICT("friends@")
|
|
|
|
WHILE NOT HAS_MODEL_LOADED(ped_modelA)
|
|
OR NOT HAS_MODEL_LOADED(ped_modelB)
|
|
OR NOT HAS_ANIM_DICT_LOADED("friends@laf@ig_1@idle_a")
|
|
OR NOT HAS_ANIM_DICT_LOADED("friends@")
|
|
|
|
REQUEST_MODEL(ped_modelA)
|
|
REQUEST_MODEL(ped_modelB)
|
|
REQUEST_ANIM_DICT("friends@laf@ig_1@idle_a")
|
|
REQUEST_ANIM_DICT("friends@")
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
|
|
// Create peds
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations() // Create peds/blips")
|
|
enumFriendLocation eRecentLoc = FLOC_coffeeShop_RH
|
|
|
|
VECTOR vDriveway = g_FriendLocations[eRecentLoc].vPickupCoord
|
|
VECTOR vDoorstepA = g_FriendLocations[eRecentLoc].vPickupCoord + g_FriendLocations[eRecentLoc].vPedOffsetA
|
|
VECTOR vDoorstepB = g_FriendLocations[eRecentLoc].vPickupCoord + g_FriendLocations[eRecentLoc].vPedOffsetB
|
|
|
|
CLEAR_AREA(vDriveway, 25.0, TRUE)
|
|
hDebugPedA = CREATE_PED(PEDTYPE_MISSION, ped_modelA, vDoorstepA, 0.0)
|
|
hDebugPedB = CREATE_PED(PEDTYPE_MISSION, ped_modelB, vDoorstepB, 0.0)
|
|
|
|
SET_ENTITY_PROOFS(hDebugPedA, TRUE, TRUE, TRUE, TRUE, TRUE)
|
|
SET_ENTITY_PROOFS(hDebugPedB, TRUE, TRUE, TRUE, TRUE, TRUE)
|
|
|
|
TASK_PLAY_ANIM(hDebugPedA, "friends@laf@ig_1@idle_a", "idle_c", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING)
|
|
TASK_PLAY_ANIM(hDebugPedB, "friends@", "pickupwait", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING)
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(ped_modelA)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(ped_modelB)
|
|
|
|
// Create blips
|
|
REPEAT MAX_FRIEND_LOCATIONS eFriendLoc
|
|
IF eFriendLoc <> FLOC_adhoc
|
|
hDebugBlip[eFriendLoc] = ADD_BLIP_FOR_COORD(vDriveway)
|
|
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_IsHomeLoc) // HomeLoc blips are blue, otherwise red
|
|
SET_BLIP_COLOUR(hDebugBlip[eFriendLoc], BLIP_COLOUR_BLUE)
|
|
ELSE
|
|
SET_BLIP_COLOUR(hDebugBlip[eFriendLoc], BLIP_COLOUR_RED)
|
|
ENDIF
|
|
#if USE_CLF_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_CLF_SAVEHOUSE // If it's linked to a safehouse it's larger
|
|
SET_BLIP_SCALE(hDebugBlip[eFriendLoc], 1.25)
|
|
ENDIF
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_NRM_SAVEHOUSE // If it's linked to a safehouse it's larger
|
|
SET_BLIP_SCALE(hDebugBlip[eFriendLoc], 1.25)
|
|
ENDIF
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_SAVEHOUSE_LOCATIONS // If it's linked to a safehouse it's larger
|
|
SET_BLIP_SCALE(hDebugBlip[eFriendLoc], 1.25)
|
|
ENDIF
|
|
#endif
|
|
#endif
|
|
|
|
SET_BLIP_NAME_FROM_TEXT_FILE(hDebugBlip[eFriendLoc], GetLabel_enumFriendLocation(eFriendLoc))
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
|
|
// Maintain widgets/FriendLocations
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations() // Maintain widgets/FriendLocations")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
WHILE bDisplayFriendLocations
|
|
REPEAT MAX_FRIEND_LOCATIONS eFriendLoc
|
|
IF eFriendLoc <> FLOC_adhoc
|
|
vDriveway = g_FriendLocations[eFriendLoc].vPickupCoord
|
|
vDoorstepA = g_FriendLocations[eFriendLoc].vPickupCoord + g_FriendLocations[eFriendLoc].vPedOffsetA
|
|
vDoorstepB = g_FriendLocations[eFriendLoc].vPickupCoord + g_FriendLocations[eFriendLoc].vPedOffsetB
|
|
|
|
// Warp player if requested
|
|
IF bJumpToPickupCoords[eFriendLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vDriveway)
|
|
SET_ENTITY_FACING(PLAYER_PED_ID(), vDoorstepA)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
ENDIF
|
|
eRecentLoc = eFriendLoc
|
|
bJumpToPickupCoords[eFriendLoc] = FALSE
|
|
ENDIF
|
|
|
|
IF bJumpToSpawnPos[eFriendLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), g_FriendLocations[eFriendLoc].vSpawnPos)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), g_FriendLocations[eFriendLoc].fSpawnRot)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
ENDIF
|
|
bJumpToSpawnPos[eFriendLoc] = FALSE
|
|
ENDIF
|
|
|
|
IF bJumpToParkPos[eFriendLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), g_FriendLocations[eFriendLoc].vParkPos)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
ENDIF
|
|
bJumpToParkPos[eFriendLoc] = FALSE
|
|
ENDIF
|
|
|
|
IF bGrabAnchorPos[eFriendLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
VECTOR vAnchorNewPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
GET_GROUND_Z_FOR_3D_COORD(vAnchorNewPos+<<0,0,1>>, vAnchorNewPos.z)
|
|
|
|
VECTOR vAnchorChange = vAnchorNewPos - g_FriendLocations[eFriendLoc].vPickupCoord
|
|
|
|
g_FriendLocations[eFriendLoc].vPickupCoord = vAnchorNewPos
|
|
g_FriendLocations[eFriendLoc].vPedOffsetA -= vAnchorChange
|
|
g_FriendLocations[eFriendLoc].vPedOffsetB -= vAnchorChange
|
|
ENDIF
|
|
bGrabAnchorPos[eFriendLoc] = FALSE
|
|
ENDIF
|
|
|
|
IF bGrabSpawnPos[eFriendLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
g_FriendLocations[eFriendLoc].vSpawnPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
g_FriendLocations[eFriendLoc].fSpawnRot = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
ENDIF
|
|
bGrabSpawnPos[eFriendLoc] = FALSE
|
|
ENDIF
|
|
|
|
IF bGrabParkPos[eFriendLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
g_FriendLocations[eFriendLoc].vParkPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
ENDIF
|
|
bGrabParkPos[eFriendLoc] = FALSE
|
|
ENDIF
|
|
|
|
// Update blip position
|
|
IF DOES_BLIP_EXIST(hDebugBlip[eFriendLoc])
|
|
SET_BLIP_COORDS(hDebugBlip[eFriendLoc], vDriveway)
|
|
ENDIF
|
|
|
|
// Update ped position
|
|
IF eFriendLoc = eRecentLoc
|
|
IF NOT IS_PED_INJURED(hDebugPedA)
|
|
SET_ENTITY_COORDS(hDebugPedA, vDoorstepA)
|
|
SET_ENTITY_FACING(hDebugPedA, vDriveway)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(hDebugPedB)
|
|
SET_ENTITY_COORDS(hDebugPedB, vDoorstepB)
|
|
SET_ENTITY_FACING(hDebugPedB, vDriveway)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Update flags
|
|
// INT iFlags = 0
|
|
// IF bAllowMichael[eFriendLoc] iFlags = iFlags | FLF_Michael ENDIF
|
|
// IF bAllowFranklin[eFriendLoc] iFlags = iFlags | FLF_Franklin ENDIF
|
|
// IF bAllowTrevor[eFriendLoc] iFlags = iFlags | FLF_Trevor ENDIF
|
|
// IF bAllowLamar[eFriendLoc] iFlags = iFlags | FLF_Lamar ENDIF
|
|
// IF bAllowJimmy[eFriendLoc] iFlags = iFlags | FLF_Jimmy ENDIF
|
|
// IF bAllowAmanda[eFriendLoc] iFlags = iFlags | FLF_Amanda ENDIF
|
|
//
|
|
// IF bAllowPickup[eFriendLoc] iFlags = iFlags | FLF_Pickup ENDIF
|
|
// IF bAllowDropoff[eFriendLoc] iFlags = iFlags | FLF_Dropoff ENDIF
|
|
// IF bIsHomeLoc[eFriendLoc] iFlags = iFlags | FLF_IsHomeLoc ENDIF
|
|
//
|
|
// g_FriendLocations[eFriendLoc].iFlags = iFlags
|
|
|
|
// Draw loc position + ped offset
|
|
DRAW_DEBUG_SPHERE(vDriveway, 0.1, 255,255,255, 128)
|
|
DRAW_DEBUG_LINE(vDriveway, vDoorstepA, 255, 255, 255, 255)
|
|
DRAW_DEBUG_LINE(vDoorstepA-<<0,0,10>>, vDoorstepA+<<0,0,10>>, 255, 255, 255, 255)
|
|
|
|
// Draw spawn and park positions
|
|
DRAW_DEBUG_SPHERE(g_FriendLocations[eFriendLoc].vSpawnPos, 0.1, 0,255,0, 128)
|
|
DRAW_DEBUG_SPHERE(g_FriendLocations[eFriendLoc].vParkPos, 0.1, 0,255,255, 128)
|
|
|
|
// Draw ped offset B
|
|
VECTOR vParkPos = g_FriendLocations[eFriendLoc].vParkPos
|
|
DRAW_DEBUG_LINE(vDriveway, vParkPos, 200, 200, 200, 255)
|
|
DRAW_DEBUG_LINE(vParkPos-<<0,0,10>>, vParkPos+<<0,0,10>>, 200, 200, 200, 255)
|
|
DRAW_DEBUG_LINE(vParkPos, vDoorstepB, 150, 150, 150, 255)
|
|
DRAW_DEBUG_LINE(vDoorstepB-<<0,0,10>>, vDoorstepB+<<0,0,10>>, 150, 150, 150, 255)
|
|
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// Delete peds/blips at each FriendLocation
|
|
REPEAT MAX_FRIEND_LOCATIONS eFriendLoc
|
|
IF eFriendLoc <> FLOC_adhoc
|
|
IF DOES_ENTITY_EXIST(hDebugPedA)
|
|
DELETE_PED(hDebugPedA)
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(hDebugPedB)
|
|
DELETE_PED(hDebugPedB)
|
|
ENDIF
|
|
IF DOES_BLIP_EXIST(hDebugBlip[eFriendLoc])
|
|
REMOVE_BLIP(hDebugBlip[eFriendLoc])
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
REMOVE_ANIM_DICT("friends@laf@ig_1@idle_a")
|
|
REMOVE_ANIM_DICT("friends@")
|
|
|
|
//-- Save output to file
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations() // Save to file")
|
|
|
|
OPEN_DEBUG_FILE()
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("//----------------------- PRIVATE_InitialiseFriendLocations() // Save to file...")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
|
|
REPEAT MAX_FRIEND_LOCATIONS eFriendLoc
|
|
IF eFriendLoc <> FLOC_adhoc
|
|
// Save comment heading
|
|
|
|
#if USE_CLF_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_CLF_SAVEHOUSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" // ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_Savehouse_Respawn_Name(g_FriendLocations[eFriendLoc].hSavehouse))
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_NRM_SAVEHOUSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" // ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_Savehouse_Respawn_Name(g_FriendLocations[eFriendLoc].hSavehouse))
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_SAVEHOUSE_LOCATIONS
|
|
SAVE_STRING_TO_DEBUG_FILE(" // ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_Savehouse_Respawn_Name(g_FriendLocations[eFriendLoc].hSavehouse))
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
#endif
|
|
#endif
|
|
// Save main entry
|
|
SAVE_STRING_TO_DEBUG_FILE(" PRIVATE_SetupFriendLoc(")
|
|
SAVE_STRING_TO_DEBUG_FILE(GetLabel_enumFriendLocation(eFriendLoc))
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_FriendLocations[eFriendLoc].vPickupCoord)
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_FriendLocations[eFriendLoc].vPedOffsetA)
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_FriendLocations[eFriendLoc].vPedOffsetB)
|
|
#if USE_CLF_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_CLF_SAVEHOUSE
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_STRING_TO_DEBUG_FILE(GetLabel_SAVEHOUSE_NAME_ENUM(g_FriendLocations[eFriendLoc].hSavehouse))
|
|
ENDIF
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_NRM_SAVEHOUSE
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_STRING_TO_DEBUG_FILE(GetLabel_SAVEHOUSE_NAME_ENUM(g_FriendLocations[eFriendLoc].hSavehouse))
|
|
ENDIF
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_SAVEHOUSE_LOCATIONS
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_STRING_TO_DEBUG_FILE(GetLabel_SAVEHOUSE_NAME_ENUM(g_FriendLocations[eFriendLoc].hSavehouse))
|
|
ENDIF
|
|
#endif
|
|
#endif
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
// Save spawn points
|
|
SAVE_STRING_TO_DEBUG_FILE(" PRIVATE_SetupFriendLoc_SpawnPoint(")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_FriendLocations[eFriendLoc].vSpawnPos)
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(g_FriendLocations[eFriendLoc].fSpawnRot)
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_FriendLocations[eFriendLoc].vParkPos)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
// Save char flags
|
|
BOOL bPunctuate = FALSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" PRIVATE_SetupFriendLoc_CharFlags(")
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_AllChars)
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_AllChars")
|
|
ELSE
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Michael)
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Michael")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Franklin)
|
|
IF bPunctuate SAVE_STRING_TO_DEBUG_FILE("|") ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Franklin")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Trevor)
|
|
IF bPunctuate SAVE_STRING_TO_DEBUG_FILE("|") ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Trevor")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Lamar)
|
|
IF bPunctuate SAVE_STRING_TO_DEBUG_FILE("|") ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Lamar")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Jimmy)
|
|
IF bPunctuate SAVE_STRING_TO_DEBUG_FILE("|") ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Jimmy")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Amanda)
|
|
IF bPunctuate SAVE_STRING_TO_DEBUG_FILE("|") ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Amanda")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
// Save usage flags
|
|
bPunctuate = FALSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" PRIVATE_SetupFriendLoc_UsageFlags(")
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_PickupDropoff)
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_PickupDropoff")
|
|
bPunctuate = TRUE
|
|
ELIF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Pickup)
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Pickup")
|
|
bPunctuate = TRUE
|
|
ELIF FriendLoc_AreFlagsSet(eFriendLoc, FLF_Dropoff)
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_Dropoff")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
IF FriendLoc_AreFlagsSet(eFriendLoc, FLF_IsHomeLoc)
|
|
IF bPunctuate SAVE_STRING_TO_DEBUG_FILE("|") ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE("FLF_IsHomeLoc")
|
|
bPunctuate = TRUE
|
|
ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
// Save pickup to file
|
|
SAVE_STRING_TO_DEBUG_FILE("//----------------------- PRIVATE_InitialiseFriendLocations() // END")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
CLOSE_DEBUG_FILE()
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayFriendLocations() // End")
|
|
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
REPEAT MAX_FRIEND_LOCATIONS eFriendLoc
|
|
IF eFriendLoc <> FLOC_adhoc
|
|
DELETE_WIDGET_GROUP(hWidget[eFriendLoc])
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//-- ACTIVITY LOCATIONS (debug)
|
|
//---------------------------------------------------------------------------------------------------
|
|
|
|
PROC PRIVATE_DEBUG_DisplayActivityLocations(WIDGET_GROUP_ID& hParentWidgetGroup, BOOL& bDisplayActivityLocations)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayActivityLocations()")
|
|
|
|
// Rag accessors
|
|
BOOL bJumpToPickupCoords[MAX_ACTIVITY_LOCATIONS]
|
|
BOOL bRespotVehicle
|
|
|
|
// Vars for temp peds/blips at locations
|
|
WIDGET_GROUP_ID hWidget
|
|
BLIP_INDEX hDebugBlip[MAX_ACTIVITY_LOCATIONS]
|
|
|
|
enumActivityLocation eActivityLoc
|
|
enumActivityLocation eDrawLoc = NO_ACTIVITY_LOCATION
|
|
|
|
|
|
// Create widgets for each ActivityLocation
|
|
CDEBUG2LN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayActivityLocations() // Create widgets for each ActivityLocation")
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
hWidget =
|
|
START_WIDGET_GROUP("Locations")
|
|
REPEAT MAX_ACTIVITY_LOCATIONS eActivityLoc
|
|
TEXT_LABEL_63 tJumpLabel
|
|
tJumpLabel = "Warp to "
|
|
tJumpLabel += GetLabel_enumActivityLocation(eActivityLoc)
|
|
ADD_WIDGET_BOOL(tJumpLabel, bJumpToPickupCoords[eActivityLoc])
|
|
ENDREPEAT
|
|
|
|
START_WIDGET_GROUP("Controls")
|
|
ADD_WIDGET_BOOL("Respot vehicle", bRespotVehicle)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
|
|
// Create blip at each ActivityLocation
|
|
CDEBUG2LN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityLocations() // Create peds/blips at each ActivityLocation")
|
|
|
|
REPEAT MAX_ACTIVITY_LOCATIONS eActivityLoc
|
|
hDebugBlip[eActivityLoc] = ADD_BLIP_FOR_COORD(GET_STATIC_BLIP_POSITION(g_ActivityLocations[eActivityLoc].sprite))
|
|
SET_BLIP_NAME_FROM_TEXT_FILE(hDebugBlip[eActivityLoc], GetLabel_enumActivityLocation(eActivityLoc))
|
|
ENDREPEAT
|
|
|
|
|
|
// Maintain widgets/ActivityLocations
|
|
CDEBUG2LN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityLocations() // Maintain widgets/ActivityLocations")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
structFRespotData respot
|
|
|
|
WHILE bDisplayActivityLocations
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
REPEAT MAX_ACTIVITY_LOCATIONS eActivityLoc
|
|
VECTOR vAnchor = GET_STATIC_BLIP_POSITION(g_ActivityLocations[eActivityLoc].sprite)
|
|
|
|
// Warp player if requested
|
|
IF bJumpToPickupCoords[eActivityLoc]
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vAnchor)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
ENDIF
|
|
bJumpToPickupCoords[eActivityLoc] = FALSE
|
|
eDrawLoc = eActivityLoc
|
|
ENDIF
|
|
|
|
// // Update blip position
|
|
// IF DOES_BLIP_EXIST(hDebugBlip[eActivityLoc])
|
|
// SET_BLIP_COORDS(hDebugBlip[eActivityLoc], vAnchor)
|
|
// ENDIF
|
|
ENDREPEAT
|
|
|
|
IF eDrawLoc < MAX_ACTIVITY_LOCATIONS
|
|
|
|
VECTOR vAnchor = GET_STATIC_BLIP_POSITION(g_ActivityLocations[eDrawLoc].sprite)
|
|
|
|
// Draw loc position
|
|
DRAW_DEBUG_SPHERE(vAnchor, 0.1, 255, 255, 255, 255)
|
|
DRAW_DEBUG_LINE(vAnchor-<<0,0,10>>, vAnchor+<<0,0,10>>, 255, 255, 255, 255)
|
|
|
|
// Draw respot position
|
|
IF Private_ALOC_GetRespotData(eDrawLoc, respot)
|
|
VECTOR vPos = respot.vCarPos
|
|
VECTOR vLook = GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(respot.vCarPos, respot.fCarRot, <<0,1,0>>)
|
|
|
|
DRAW_DEBUG_SPHERE(vPos, 0.1, 255, 0, 75, 255)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, 255, 0, 75, 255)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.5>>, vLook+<<0,0,0.5>>, 255, 0, 75, 255)
|
|
ENDIF
|
|
|
|
IF bRespotVehicle
|
|
VEHICLE_INDEX hVehicle = GET_PLAYERS_LAST_VEHICLE()
|
|
IF DOES_ENTITY_EXIST(hVehicle) AND NOT IS_ENTITY_DEAD(hVehicle)
|
|
Private_RespotVehicleForActivity(hVehicle, eDrawLoc)
|
|
ENDIF
|
|
bRespotVehicle = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// Delete blips at each ActivityLocation
|
|
REPEAT MAX_ACTIVITY_LOCATIONS eActivityLoc
|
|
IF DOES_BLIP_EXIST(hDebugBlip[eActivityLoc])
|
|
REMOVE_BLIP(hDebugBlip[eActivityLoc])
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
// //-- Save output to file
|
|
// CDEBUG2LN(DEBUG_FRIENDS, "PRIVATE_DEBUG_DisplayActivityLocations() // Save to file")
|
|
//
|
|
// OPEN_DEBUG_FILE()
|
|
//
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
// SAVE_STRING_TO_DEBUG_FILE("//----------------------- PRIVATE_InitialiseActivityLocations() // Save to file...")
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
//
|
|
// REPEAT MAX_ACTIVITY_LOCATIONS eActivityLoc
|
|
// // Save main entry
|
|
// SAVE_STRING_TO_DEBUG_FILE(" PRIVATE_SetupActivityLoc(")
|
|
// SAVE_STRING_TO_DEBUG_FILE(GetLabel_enumActivityLocation(eActivityLoc))
|
|
// SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
// SAVE_STRING_TO_DEBUG_FILE(GetLabel_enumActivityType(g_ActivityLocations[eActivityLoc].type))
|
|
// SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
// SAVE_STRING_TO_DEBUG_FILE(DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(g_ActivityLocations[eActivityLoc].sprite)))
|
|
// SAVE_STRING_TO_DEBUG_FILE(")")
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
// ENDREPEAT
|
|
//
|
|
// // Save pickup to file
|
|
// SAVE_STRING_TO_DEBUG_FILE("//----------------------- PRIVATE_InitialiseActivityLocations() // END")
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
// SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
//
|
|
// CLOSE_DEBUG_FILE()
|
|
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
DELETE_WIDGET_GROUP(hWidget)
|
|
ENDPROC
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//-- DROPOFF SCENE (debug)
|
|
//---------------------------------------------------------------------------------------------------
|
|
|
|
FUNC BOOL PRIVATE_DEBUG_CreateFriendPed(BOOL bUsePlayableChar = TRUE)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_CreateFriendPed() - Adding friend ped...")
|
|
|
|
// Check group size
|
|
INT iLeaderCount, iFollowerCount
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
IF iFollowerCount >= 2
|
|
SCRIPT_ASSERT("PRIVATE_DEBUG_CreateFriendPed() - Group too big to add more friends")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
PED_INDEX hFollower = NULL
|
|
IF iFollowerCount > 0
|
|
hFollower = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 0)
|
|
ENDIF
|
|
|
|
// Select unused char
|
|
enumCharacterList eNewChar = NO_CHARACTER
|
|
|
|
IF bUsePlayableChar
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() <> CHAR_MICHAEL
|
|
AND (IS_PED_INJURED(hFollower) OR Private_GetCharFromPed(hFollower) <> CHAR_MICHAEL)
|
|
eNewChar = CHAR_MICHAEL
|
|
|
|
ELIF GET_CURRENT_PLAYER_PED_ENUM() <> CHAR_FRANKLIN
|
|
AND (IS_PED_INJURED(hFollower) OR Private_GetCharFromPed(hFollower) <> CHAR_FRANKLIN)
|
|
eNewChar = CHAR_FRANKLIN
|
|
|
|
ELIF GET_CURRENT_PLAYER_PED_ENUM() <> CHAR_TREVOR
|
|
AND (IS_PED_INJURED(hFollower) OR Private_GetCharFromPed(hFollower) <> CHAR_TREVOR)
|
|
eNewChar = CHAR_TREVOR
|
|
|
|
ELSE
|
|
SCRIPT_ASSERT("Couldn't find valid unused player character to create ped")
|
|
RETURN FALSE
|
|
ENDIF
|
|
ELSE
|
|
INT iNpcStart = ENUM_TO_INT(MAX_FRIENDS) - (1 + NUM_OF_NPC_FRIENDS)
|
|
INT iNpcIndex = GET_RANDOM_INT_IN_RANGE(0, NUM_OF_NPC_FRIENDS)
|
|
INT iCount = 0
|
|
|
|
WHILE eNewChar = NO_CHARACTER
|
|
enumCharacterList ePotentialNpcChar = GET_CHAR_FROM_FRIEND(INT_TO_ENUM(enumFriend, iNpcStart+iNpcIndex))
|
|
|
|
IF (IS_PED_INJURED(hFollower) OR Private_GetCharFromPed(hFollower) <> ePotentialNpcChar)
|
|
eNewChar = ePotentialNpcChar
|
|
ELSE
|
|
iNpcIndex = (iNpcIndex + 1) % ENUM_TO_INT(MAX_FRIENDS)
|
|
iCount++
|
|
IF iCount > NUM_OF_NPC_FRIENDS
|
|
SCRIPT_ASSERT("Couldn't find valid unused npc character to create ped")
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDWHILE
|
|
ENDIF
|
|
|
|
// Load model
|
|
MODEL_NAMES model
|
|
IF eNewChar = CHAR_MICHAEL
|
|
model = GET_FRIEND_MODEL(FR_MICHAEL)
|
|
ELIF eNewChar = CHAR_FRANKLIN
|
|
model = GET_FRIEND_MODEL(FR_FRANKLIN)
|
|
ELIF eNewChar = CHAR_TREVOR
|
|
model = GET_FRIEND_MODEL(FR_TREVOR)
|
|
ELIF eNewChar = CHAR_LAMAR
|
|
model = GET_FRIEND_MODEL(FR_LAMAR)
|
|
ELIF eNewChar = CHAR_JIMMY
|
|
model = GET_FRIEND_MODEL(FR_JIMMY)
|
|
ELIF eNewChar = CHAR_AMANDA
|
|
model = GET_FRIEND_MODEL(FR_AMANDA)
|
|
ENDIF
|
|
|
|
REQUEST_MODEL(model)
|
|
WHILE NOT HAS_MODEL_LOADED(model)
|
|
REQUEST_MODEL(model)
|
|
SET_TEXT_COLOUR(100, 255, 255, 255)
|
|
SET_TEXT_SCALE(0.5, 0.6)
|
|
SET_TEXT_WRAP(0.0, 1.0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.78, 0.85, "STRING", "Creating friend ped...")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// Create friend ped
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
VECTOR vSpawnPos
|
|
IF iFollowerCount = 0
|
|
vSpawnPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<-0.5, 2.0, 1.0>>)
|
|
ELSE
|
|
vSpawnPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.5, 2.0, 1.0>>)
|
|
ENDIF
|
|
GET_GROUND_Z_FOR_3D_COORD(vSpawnPos, vSpawnPos.z)
|
|
PED_INDEX hFriendPed = CREATE_PED(PEDTYPE_MISSION, model, vSpawnPos, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
|
|
IF NOT IS_PED_INJURED(hFriendPed)
|
|
// TODO: Set friend ped attributes?
|
|
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
VEHICLE_INDEX hPlayerVehicle = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
IF IS_ENTITY_ALIVE(hPlayerVehicle)
|
|
SET_PED_INTO_VEHICLE(hFriendPed, hPlayerVehicle, VS_ANY_PASSENGER)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_PED_AS_GROUP_MEMBER(hFriendPed, PLAYER_GROUP_ID())
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(model)
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC PRIVATE_DEBUG_RemoveAllFriendPeds()
|
|
|
|
INT iLeaderCount, iFollowerCount
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
INT iIndex = 0
|
|
WHILE iIndex < iFollowerCount
|
|
PED_INDEX hGroupPed = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), iIndex)
|
|
IF NOT IS_PED_INJURED(hGroupPed) AND NOT IS_PED_GROUP_LEADER(hGroupPed, PLAYER_GROUP_ID())
|
|
REMOVE_PED_FROM_GROUP(hGroupPed)
|
|
DELETE_PED(hGroupPed)
|
|
ENDIF
|
|
iIndex++
|
|
ENDWHILE
|
|
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_RunDropoffScene(structFDropoffScene& dropoff, structPedsForConversation& convPeds, INT iMinFriends = 1, VEHICLE_INDEX hFriendCarA = NULL, VEHICLE_INDEX hFriendCarB = NULL)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_RunDropoffScene()...")
|
|
|
|
PED_INDEX hFriendA, hFriendB
|
|
|
|
// Grab friend peds to use
|
|
INT iLeaderCount, iFollowerCount
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
WHILE iFollowerCount < iMinFriends
|
|
IF PRIVATE_DEBUG_CreateFriendPed()
|
|
iFollowerCount++
|
|
ELSE
|
|
SCRIPT_ASSERT("PRIVATE_DEBUG_RunDropoffScene() - Couldn't create friend ped")
|
|
EXIT
|
|
ENDIF
|
|
ENDWHILE
|
|
hFriendA = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 0)
|
|
hFriendB = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 1)
|
|
|
|
// Reset gameplay cam
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
|
|
VEHICLE_INDEX hVehicle = NULL
|
|
structFDropoff dropoffData
|
|
|
|
// Run the scene
|
|
INT iCutsceneStep = 0
|
|
INT iDrunkTimer = 0
|
|
|
|
WHILE NOT Dropoff_ProcessScene(dropoff, dropoffData, convPeds, iCutsceneStep, iDrunkTimer, hFriendA, hFriendB, hVehicle, hFriendCarA, hFriendCarB)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// IF DOES_ENTITY_EXIST(hFriendA)
|
|
// DELETE_PED(hFriendA)
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(hFriendB)
|
|
// DELETE_PED(hFriendB)
|
|
// ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/*
|
|
PROC PRIVATE_DEBUG_EditDropoffScene(WIDGET_GROUP_ID& hParentWidgetGroup, structPedsForConversation& convPeds, BOOL& bEnable, structFDropoffScene& dropoff, VECTOR vAnchor)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene()...")
|
|
|
|
// Rag accessors
|
|
BOOL bDisplayPositions = TRUE
|
|
BOOL bForceRunScene = FALSE
|
|
BOOL bToggleFriendPeds = FALSE
|
|
|
|
BOOL bGrabCarCamPan0 = FALSE
|
|
BOOL bGrabCarCamPan1 = FALSE
|
|
|
|
BOOL bGrabFootCamPan0 = FALSE
|
|
BOOL bGrabFootCamPan1 = FALSE
|
|
|
|
VECTOR vCarOffset = dropoff.vCarPos - vAnchor
|
|
|
|
BOOL bFixPosHeights = FALSE
|
|
|
|
BOOL bGrabPlayerPos = FALSE
|
|
BOOL bGrabPed0Pos = FALSE
|
|
BOOL bGrabPed1Pos = FALSE
|
|
|
|
BOOL bGrabExitPos = FALSE
|
|
BOOL bGrabSwitch0Pos = FALSE
|
|
BOOL bGrabSwitch1Pos = FALSE
|
|
|
|
|
|
//-- Create widgets --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene() // Create widgets")
|
|
|
|
WIDGET_GROUP_ID hDropoffGroup
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
hDropoffGroup =
|
|
START_WIDGET_GROUP("Scene data")
|
|
// Add widgets
|
|
ADD_WIDGET_BOOL("Display positions", bDisplayPositions)
|
|
ADD_WIDGET_BOOL("Toggle friend peds", bToggleFriendPeds)
|
|
ADD_WIDGET_BOOL("Force run scene", bForceRunScene)
|
|
ADD_WIDGET_BOOL("Fix ped pos heights", bFixPosHeights)
|
|
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Grab switch0 pos from player", bGrabSwitch0Pos)
|
|
ADD_WIDGET_BOOL("Grab switch1 pos from player", bGrabSwitch1Pos)
|
|
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Grab car cam pan start", bGrabCarCamPan0)
|
|
ADD_WIDGET_BOOL("Grab car cam pan end", bGrabCarCamPan1)
|
|
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Grab on-foot cam pan start", bGrabFootCamPan0)
|
|
ADD_WIDGET_BOOL("Grab on-foot cam pan end", bGrabFootCamPan1)
|
|
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_VECTOR_SLIDER("Car offset", vCarOffset, -30.0, 30.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Car heading", dropoff.fCarRot, 0.0, 360.0, 0.1)
|
|
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Grab player pos with mouse", bGrabPlayerPos)
|
|
ADD_WIDGET_BOOL("Grab friendA pos with mouse", bGrabPed0Pos)
|
|
ADD_WIDGET_BOOL("Grab friendB pos with mouse", bGrabPed1Pos)
|
|
ADD_WIDGET_BOOL("Grab exit pos with mouse", bGrabExitPos)
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
|
|
//-- Setup world --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene() // Setup world")
|
|
|
|
// Create pickup loc blip
|
|
BLIP_INDEX hLocBlip = ADD_BLIP_FOR_COORD(vAnchor)
|
|
SET_BLIP_SPRITE(hLocBlip, RADAR_TRACE_FRIEND)
|
|
SET_BLIP_NAME_FROM_TEXT_FILE(hLocBlip, "FR_PKUPBLIP")
|
|
|
|
// Warp player
|
|
CLEAR_AREA(vAnchor, 25.0, TRUE)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vAnchor)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
//LOAD_SCENE(vPickupCoord)
|
|
ENDIF
|
|
|
|
// Load text
|
|
REQUEST_ADDITIONAL_TEXT("FRIENDS", OBJECT_TEXT_SLOT)
|
|
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(OBJECT_TEXT_SLOT)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
//-- Monitor widgets --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene() // Montior widgets")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
|
|
WHILE bEnable
|
|
// Update dropoff positions from offset widgets
|
|
dropoff.vCarPos = vAnchor + vCarOffset
|
|
|
|
// Draw anchor pos
|
|
IF bDisplayPositions
|
|
DRAW_DEBUG_SPHERE(vAnchor, 0.1, 255,255,255, 128)
|
|
|
|
VECTOR vPos
|
|
FLOAT fRot
|
|
INT iR
|
|
INT iG
|
|
INT iB
|
|
|
|
// Draw player spot pos
|
|
vPos = dropoff.vPlayerPos
|
|
iR = 200
|
|
iG = 0
|
|
iB = 200
|
|
DRAW_DEBUG_LINE(vAnchor, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw friend positions
|
|
vPos = dropoff.vPedPos[0]
|
|
iR = 200
|
|
iG = 200
|
|
iB = 200
|
|
DRAW_DEBUG_LINE(vAnchor, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
vPos = dropoff.vPedPos[1]
|
|
iR = 200
|
|
iG = 200
|
|
iB = 200
|
|
DRAW_DEBUG_LINE(vAnchor, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw car spot pos
|
|
vPos = dropoff.vCarPos
|
|
fRot = dropoff.fCarRot
|
|
iR = 255
|
|
iG = 0
|
|
iB = 75
|
|
DRAW_DEBUG_LINE(vAnchor, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.1>>, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vPos, fRot, <<0,1.5,0.1>>), iR,iG,iB, 128)
|
|
|
|
// Draw exit pos
|
|
vPos = dropoff.vExitPos
|
|
iR = 0
|
|
iG = 255
|
|
iB = 175
|
|
DRAW_DEBUG_LINE(vAnchor, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
ENDIF
|
|
|
|
// Grab camera positions
|
|
IF DOES_CAM_EXIST(GET_DEBUG_CAM())
|
|
IF IS_CAM_RENDERING(GET_DEBUG_CAM())
|
|
// Grab car debug cam
|
|
IF bGrabCarCamPan0
|
|
dropoff.mCarCamPan[0].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mCarCamPan[0].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.fCarCamPanFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCarCamPan0 = FALSE
|
|
ENDIF
|
|
IF bGrabCarCamPan1
|
|
dropoff.mCarCamPan[1].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mCarCamPan[1].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.fCarCamPanFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCarCamPan1 = FALSE
|
|
ENDIF
|
|
|
|
// Grab foot debug cam
|
|
IF bGrabFootCamPan0
|
|
dropoff.mFootCamPan[0].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mFootCamPan[0].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.fFootCamPanFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabFootCamPan0 = FALSE
|
|
ENDIF
|
|
IF bGrabFootCamPan1
|
|
dropoff.mFootCamPan[1].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mFootCamPan[1].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.fFootCamPanFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabFootCamPan1 = FALSE
|
|
ENDIF
|
|
|
|
// Print FOV to screen
|
|
TEXT_LABEL tFOVDebug = "FOV: "
|
|
tFOVDebug += GET_STRING_FROM_FLOAT(GET_CAM_FOV(GET_DEBUG_CAM()))
|
|
|
|
SET_TEXT_COLOUR(100, 255, 255, 255)
|
|
SET_TEXT_SCALE(0.7, 0.8)
|
|
SET_TEXT_WRAP(0.0, 1.0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.78, 0.85, "STRING", tFOVDebug)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Set ped standing positions to ground level
|
|
IF bFixPosHeights
|
|
dropoff.vPlayerPos.z = vAnchor.z + 1.0
|
|
GET_GROUND_Z_FOR_3D_COORD(dropoff.vPlayerPos, dropoff.vPlayerPos.z)
|
|
|
|
dropoff.vPedPos[0].z = vAnchor.z + 1.0
|
|
GET_GROUND_Z_FOR_3D_COORD(dropoff.vPedPos[0], dropoff.vPedPos[0].z)
|
|
|
|
dropoff.vPedPos[1].z = vAnchor.z + 1.0
|
|
GET_GROUND_Z_FOR_3D_COORD(dropoff.vPedPos[1], dropoff.vPedPos[1].z)
|
|
bFixPosHeights = FALSE
|
|
ENDIF
|
|
|
|
// Grab positions from mouse
|
|
IF IS_MOUSE_BUTTON_JUST_PRESSED(MB_LEFT_BTN)
|
|
IF bGrabPlayerPos
|
|
dropoff.vPlayerPos = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
IF bGrabPed0Pos
|
|
dropoff.vPedPos[0] = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
IF bGrabPed1Pos
|
|
dropoff.vPedPos[1] = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
IF bGrabExitPos
|
|
dropoff.vExitPos = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // Look away from exit dest
|
|
// IF bGrabExitPos
|
|
// FLOAT fExitHeading = GET_FACING_HEADING(GET_ENTITY_COORDS(PLAYER_PED_ID()), dropoff.vExitPos)
|
|
// FLOAT fRelativeHeading = fExitHeading - GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(fRelativeHeading + 165)
|
|
// ENDIF
|
|
|
|
// Grab switch positions
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF bGrabSwitch0Pos
|
|
dropoff.vSwitchPos[0] = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
dropoff.fSwitchRot[0] = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
// SET_ENTITY_COORDS(PLAYER_PED_ID(), dropoff.vSwitchPos[0])
|
|
// SET_ENTITY_HEADING(PLAYER_PED_ID(), dropoff.fSwitchRot[0])
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
bGrabSwitch0Pos = FALSE
|
|
ENDIF
|
|
IF bGrabSwitch1Pos
|
|
dropoff.vSwitchPos[1] = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
dropoff.fSwitchRot[1] = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
// SET_ENTITY_COORDS(PLAYER_PED_ID(), dropoff.vSwitchPos[1])
|
|
// SET_ENTITY_HEADING(PLAYER_PED_ID(), dropoff.fSwitchRot[1])
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
bGrabSwitch1Pos = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
INT iLeaderCount = 0, iFollowerCount = 0
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
// Toggle friends
|
|
IF bToggleFriendPeds
|
|
IF iFollowerCount < 2
|
|
PRIVATE_DEBUG_CreateFriendPed()
|
|
ELSE
|
|
PRIVATE_DEBUG_RemoveAllFriendPeds()
|
|
ENDIF
|
|
bToggleFriendPeds = FALSE
|
|
ENDIF
|
|
|
|
// Run scene if triggered
|
|
IF CAN_PLAYER_START_CUTSCENE()
|
|
IF bForceRunScene
|
|
PRIVATE_DEBUG_RunDropoffScene(dropoff, convPeds, 2)
|
|
bForceRunScene = FALSE
|
|
|
|
ELIF iFollowerCount > 0
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vAnchor+<<0,0,g_vAnyMeansLocate.z>>, g_vAnyMeansLocate, TRUE, TRUE, TM_IN_VEHICLE)
|
|
OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vAnchor+<<0,0,g_vOnFootLocate.z>>, g_vOnFootLocate, TRUE, TRUE, TM_ON_FOOT)
|
|
PRIVATE_DEBUG_RunDropoffScene(dropoff, convPeds, 2)
|
|
bForceRunScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene() // Cleanup")
|
|
|
|
IF DOES_BLIP_EXIST(hLocBlip)
|
|
REMOVE_BLIP(hLocBlip)
|
|
ENDIF
|
|
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
|
|
DELETE_WIDGET_GROUP(hDropoffGroup)
|
|
ENDPROC
|
|
*/
|
|
PROC PRIVATE_DEBUG_EditDropoffScene_Luke(WIDGET_GROUP_ID& hParentWidgetGroup, structPedsForConversation& convPeds, BOOL& bEnable, structFDropoffScene& dropoff, VECTOR vAnchor)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene_Luke()...")
|
|
|
|
// Rag accessors
|
|
BOOL bRunScene2 = FALSE
|
|
BOOL bRunScene1 = FALSE
|
|
|
|
BOOL bGrabFootPanStart[6]
|
|
BOOL bGrabFootPanEnd[6]
|
|
BOOL bGrabFootCatchupCam
|
|
BOOL bGrabCarCatchupCam
|
|
|
|
BOOL bShowFootPanStart5
|
|
|
|
BOOL bWarpToAnchor
|
|
BOOL bWarpToSwitch[3]
|
|
|
|
CONST_INT c_iMaxGrabPositions 11
|
|
INT iGrabPosState = -1
|
|
BOOL bGrabPosition[c_iMaxGrabPositions]
|
|
|
|
BOOL bRespotExpansion[4]
|
|
|
|
BOOL bGrabFriendCarA
|
|
BOOL bGrabFriendCarB
|
|
VEHICLE_INDEX hFriendCarA
|
|
VEHICLE_INDEX hFriendCarB
|
|
BLIP_INDEX hFriendCarABlip
|
|
BLIP_INDEX hFriendCarBBlip
|
|
|
|
BOOL bForceDebugDraw
|
|
|
|
|
|
//-- Create widgets --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene_Luke() // Create widgets")
|
|
|
|
WIDGET_GROUP_ID hDropoffGroup
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
hDropoffGroup =
|
|
START_WIDGET_GROUP("Scene data")
|
|
// Add widgets
|
|
ADD_WIDGET_BOOL("Run scene with 2 friends", bRunScene2)
|
|
ADD_WIDGET_BOOL("Run scene with 1 friend", bRunScene1)
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Debug - set current car owned by friend A", bGrabFriendCarA)
|
|
ADD_WIDGET_BOOL("Debug - set current car owned by friend B", bGrabFriendCarB)
|
|
ADD_WIDGET_BOOL("Debug - force debug draw", bForceDebugDraw)
|
|
|
|
// On-foot cams
|
|
START_WIDGET_GROUP("Cameras")
|
|
ADD_WIDGET_BOOL("Friend shots are alternate versions", dropoff.bFootCam2IsAlternative)
|
|
ADD_WIDGET_BOOL("Taxi style scene", dropoff.bIsTaxiStyle)
|
|
ADD_WIDGET_FLOAT_SLIDER("Initial speech delay", dropoff.fFootSpeechDelay, 0.0, 15.0, 0.1)
|
|
ADD_WIDGET_STRING(".")
|
|
|
|
START_WIDGET_GROUP("Establishing shot")
|
|
ADD_WIDGET_BOOL("Establishing shot - enable", dropoff.mFootPans[0].bEnabled)
|
|
ADD_WIDGET_BOOL("Establishing shot - grab start camera", bGrabFootPanStart[0])
|
|
ADD_WIDGET_BOOL("Establishing shot - grab end camera", bGrabFootPanEnd[0])
|
|
ADD_WIDGET_FLOAT_SLIDER("Establishing shot - pan duration", dropoff.mFootPans[0].fDuration, 0.0, 15.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Friend 1 shot")
|
|
ADD_WIDGET_BOOL("Friend 1 shot - enable", dropoff.mFootPans[1].bEnabled)
|
|
ADD_WIDGET_BOOL("Friend 1 shot - grab start camera", bGrabFootPanStart[1])
|
|
ADD_WIDGET_BOOL("Friend 1 shot - grab end camera", bGrabFootPanEnd[1])
|
|
ADD_WIDGET_FLOAT_SLIDER("Friend 1 shot - pan duration", dropoff.mFootPans[1].fDuration, 0.0, 15.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Friend 2 shot")
|
|
ADD_WIDGET_BOOL("Friend 2 shot - enable", dropoff.mFootPans[2].bEnabled)
|
|
ADD_WIDGET_BOOL("Friend 2 shot - grab start camera", bGrabFootPanStart[2])
|
|
ADD_WIDGET_BOOL("Friend 2 shot - grab end camera", bGrabFootPanEnd[2])
|
|
ADD_WIDGET_FLOAT_SLIDER("Friend 2 shot - pan duration", dropoff.mFootPans[2].fDuration, 0.0, 15.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Exit shot (normal)")
|
|
ADD_WIDGET_BOOL("Exit shot - enable", dropoff.mFootPans[3].bEnabled)
|
|
ADD_WIDGET_BOOL("Exit shot - grab start camera", bGrabFootPanStart[3])
|
|
ADD_WIDGET_BOOL("Exit shot - grab end camera", bGrabFootPanEnd[3])
|
|
ADD_WIDGET_BOOL("Exit shot - grab catchup cam", bGrabFootCatchupCam)
|
|
ADD_WIDGET_FLOAT_SLIDER("Exit shot - pan duration", dropoff.mFootPans[3].fDuration, 0.0, 15.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Exit shot - hold", dropoff.fFootFinalDelay, 0.0, 15.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Exit shot (car 1)")
|
|
ADD_WIDGET_BOOL("Exit shot - enable", dropoff.mFootPans[4].bEnabled)
|
|
ADD_WIDGET_BOOL("Exit shot - grab start camera", bGrabFootPanStart[4])
|
|
ADD_WIDGET_BOOL("Exit shot - grab end camera", bGrabFootPanEnd[4])
|
|
ADD_WIDGET_FLOAT_SLIDER("Exit shot - pan duration", dropoff.mFootPans[4].fDuration, 0.0, 15.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Exit shot - hold", dropoff.fCarFinalDelay0, 0.0, 15.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Exit shot (car 2)")
|
|
ADD_WIDGET_BOOL("Exit shot - enable", dropoff.mFootPans[5].bEnabled)
|
|
ADD_WIDGET_BOOL("Exit shot - grab start camera", bGrabFootPanStart[5])
|
|
ADD_WIDGET_BOOL("Exit shot - grab end camera", bGrabFootPanEnd[5])
|
|
ADD_WIDGET_BOOL("Exit shot - grab catchup cam", bGrabCarCatchupCam)
|
|
ADD_WIDGET_FLOAT_SLIDER("Exit shot - pan duration", dropoff.mFootPans[5].fDuration, 0.0, 15.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Exit shot - hold", dropoff.fCarFinalDelay, 0.0, 15.0, 0.1)
|
|
ADD_WIDGET_BOOL("Exit shot - show cam pan start", bShowFootPanStart5)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
// Positions
|
|
START_WIDGET_GROUP("Positions")
|
|
ADD_WIDGET_BOOL("Set player position", bGrabPosition[0])
|
|
ADD_WIDGET_BOOL("Set friend A position", bGrabPosition[1])
|
|
ADD_WIDGET_BOOL("Set friend B position", bGrabPosition[2])
|
|
ADD_WIDGET_BOOL("Set exit position", bGrabPosition[3])
|
|
ADD_WIDGET_BOOL("Set car position", bGrabPosition[4])
|
|
ADD_WIDGET_FLOAT_SLIDER("Car heading", dropoff.fCarRot, 0.0, 360.0, 5.0)
|
|
|
|
ADD_WIDGET_BOOL("Set car fake walk position", bGrabPosition[5])
|
|
ADD_WIDGET_BOOL("Set car fake drive position", bGrabPosition[6])
|
|
START_WIDGET_GROUP("Extra respot")
|
|
ADD_WIDGET_BOOL("Set position", bGrabPosition[7])
|
|
ADD_WIDGET_FLOAT_SLIDER("Car heading", dropoff.mExtraRespot.fCarRot, 0.0, 360.0, 5.0)
|
|
ADD_WIDGET_BOOL("Expand X left", bRespotExpansion[0])
|
|
ADD_WIDGET_BOOL("Expand X right", bRespotExpansion[1])
|
|
ADD_WIDGET_BOOL("Expand Y forward", bRespotExpansion[2])
|
|
ADD_WIDGET_BOOL("Expand Y back", bRespotExpansion[3])
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
|
|
// Positions
|
|
START_WIDGET_GROUP("Switch Positions")
|
|
ADD_WIDGET_BOOL("Set friend A switch position", bGrabPosition[8])
|
|
ADD_WIDGET_BOOL("Set friend B switch position", bGrabPosition[9])
|
|
ADD_WIDGET_BOOL("Set car switch position", bGrabPosition[10])
|
|
ADD_WIDGET_FLOAT_SLIDER("friend A switch heading", dropoff.fSwitchRot[0], 0.0, 360.0, 5.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("friend B switch heading", dropoff.fSwitchRot[1], 0.0, 360.0, 5.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("car switch heading", dropoff.fSwitchRot[2], 0.0, 360.0, 5.0)
|
|
ADD_WIDGET_BOOL("Warp to anchor position", bWarpToAnchor)
|
|
ADD_WIDGET_BOOL("Warp to friend A switch position", bWarpToSwitch[0])
|
|
ADD_WIDGET_BOOL("Warp to friend B switch position", bWarpToSwitch[1])
|
|
ADD_WIDGET_BOOL("Warp to car switch position", bWarpToSwitch[2])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
|
|
//-- Setup world --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene_Luke() // Setup world")
|
|
|
|
// Create pickup loc blip
|
|
BLIP_INDEX hLocBlip = ADD_BLIP_FOR_COORD(vAnchor)
|
|
SET_BLIP_SPRITE(hLocBlip, RADAR_TRACE_FRIEND)
|
|
SET_BLIP_NAME_FROM_TEXT_FILE(hLocBlip, "FR_PKUPBLIP")
|
|
|
|
// Warp player
|
|
CLEAR_AREA(vAnchor, 25.0, TRUE)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vAnchor)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
//LOAD_SCENE(vPickupCoord)
|
|
ENDIF
|
|
|
|
// Load text
|
|
REQUEST_ADDITIONAL_TEXT("FRIENDS", OBJECT_TEXT_SLOT)
|
|
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(OBJECT_TEXT_SLOT)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// Setup expansion boxes
|
|
INT iBitLoop
|
|
REPEAT COUNT_OF(bRespotExpansion) iBitLoop
|
|
bRespotExpansion[iBitLoop] = IS_BIT_SET(dropoff.mExtraRespot.expandDir, iBitLoop)
|
|
ENDREPEAT
|
|
|
|
|
|
//-- Monitor widgets --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene_Luke() // Montior widgets")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
|
|
WHILE bEnable
|
|
|
|
VECTOR vPos
|
|
FLOAT fRot
|
|
INT iR
|
|
INT iG
|
|
INT iB
|
|
|
|
// Draw anchor
|
|
DRAW_DEBUG_SPHERE(vAnchor, 0.1, 255, 255, 255, 100)
|
|
|
|
// Draw player spot pos
|
|
vPos = dropoff.vPlayerPos
|
|
iR = 200
|
|
iG = 0
|
|
iB = 200
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw friend positions
|
|
vPos = dropoff.vPedPos[0]
|
|
iR = 0
|
|
iG = 255
|
|
iB = 175
|
|
DRAW_DEBUG_LINE(dropoff.vPlayerPos, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
vPos = dropoff.vPedPos[1]
|
|
iR = 0
|
|
iG = 255
|
|
iB = 175
|
|
DRAW_DEBUG_LINE(dropoff.vPlayerPos, vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw exit pos
|
|
iR = 200
|
|
iG = 200
|
|
iB = 200
|
|
vPos = dropoff.vExitPos
|
|
DRAW_DEBUG_LINE(dropoff.vPedPos[0], vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(dropoff.vPedPos[1], vPos, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw car spot pos
|
|
vPos = dropoff.vCarPos
|
|
fRot = dropoff.fCarRot
|
|
iR = 255
|
|
iG = 0
|
|
iB = 75
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.5>>, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vPos, fRot, <<0,1.5,0.5>>), iR,iG,iB, 128)
|
|
|
|
// Draw car fake walk pos
|
|
iR = 255
|
|
iG = 75
|
|
iB = 0
|
|
vPos = dropoff.vCarFakeWalkPos
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw car fake drive pos
|
|
iR = 255/2
|
|
iG = 75/2
|
|
iB = 0
|
|
vPos = dropoff.vCarFakeDrivePos
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
|
|
// Draw secondary car pos
|
|
vPos = dropoff.mExtraRespot.vCarPos
|
|
fRot = dropoff.mExtraRespot.fCarRot
|
|
iR = 255
|
|
iG = 255
|
|
iB = 0
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.5>>, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vPos, fRot, <<0,1.5,0.5>>), iR,iG,iB, 128)
|
|
|
|
// Draw switch A pos
|
|
vPos = dropoff.vSwitchPos[0]
|
|
fRot = dropoff.fSwitchRot[0]
|
|
iR = 175
|
|
iG = 0
|
|
iB = 255
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.5>>, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vPos, fRot, <<0,1.5,0.5>>), iR,iG,iB, 128)
|
|
|
|
// Draw switch B pos
|
|
vPos = dropoff.vSwitchPos[1]
|
|
fRot = dropoff.fSwitchRot[1]
|
|
iR = 175
|
|
iG = 0
|
|
iB = 255
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.5>>, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vPos, fRot, <<0,1.5,0.5>>), iR,iG,iB, 128)
|
|
|
|
// Draw switch car pos
|
|
vPos = dropoff.vSwitchPos[2]
|
|
fRot = dropoff.fSwitchRot[2]
|
|
iR = 175+75
|
|
iG = 0+75
|
|
iB = 255+75
|
|
DRAW_DEBUG_LINE(vPos-<<0,0,10>>, vPos+<<0,0,10>>, iR,iG,iB, 128)
|
|
DRAW_DEBUG_LINE(vPos+<<0,0,0.5>>, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vPos, fRot, <<0,1.5,0.5>>), iR,iG,iB, 128)
|
|
|
|
// Grab camera positions
|
|
IF DOES_CAM_EXIST(GET_DEBUG_CAM())
|
|
IF IS_CAM_RENDERING(GET_DEBUG_CAM())
|
|
// Force debug cam
|
|
IF bShowFootPanStart5
|
|
SET_CAM_COORD(GET_DEBUG_CAM(), dropoff.mFootPans[5].mStart.vPos)
|
|
SET_CAM_ROT(GET_DEBUG_CAM(), dropoff.mFootPans[5].mStart.vRot)
|
|
SET_CAM_FOV(GET_DEBUG_CAM(), dropoff.mFootPans[5].fFov)
|
|
bShowFootPanStart5 = FALSE
|
|
ENDIF
|
|
|
|
// Grab debug cam
|
|
INT i
|
|
REPEAT COUNT_OF(dropoff.mFootPans) i
|
|
// Grab foot cams from debug
|
|
IF bGrabFootPanStart[i]
|
|
dropoff.mFootPans[i].mStart.vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mFootPans[i].mStart.vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.mFootPans[i].fFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
dropoff.mFootPans[i].bEnabled = TRUE
|
|
bGrabFootPanStart[i] = FALSE
|
|
ENDIF
|
|
IF bGrabFootPanEnd[i]
|
|
dropoff.mFootPans[i].mEnd.vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mFootPans[i].mEnd.vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.mFootPans[i].fFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
dropoff.mFootPans[i].bEnabled = TRUE
|
|
bGrabFootPanEnd[i] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF bGrabFootCatchupCam
|
|
dropoff.mFootCatchupCam.vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mFootCatchupCam.vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.fFootCatchupFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabFootCatchupCam = FALSE
|
|
ENDIF
|
|
|
|
IF bGrabCarCatchupCam
|
|
dropoff.mCarCatchupCam.vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
dropoff.mCarCatchupCam.vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
dropoff.fCarCatchupFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCarCatchupCam = FALSE
|
|
ENDIF
|
|
|
|
// Print FOV to screen
|
|
TEXT_LABEL tFOVDebug = "CAN GRAB CAMERA"
|
|
// tFOVDebug += GET_STRING_FROM_FLOAT(GET_CAM_FOV(GET_DEBUG_CAM()))
|
|
|
|
SET_TEXT_COLOUR(100, 255, 255, 255)
|
|
SET_TEXT_SCALE(0.7, 0.8)
|
|
SET_TEXT_WRAP(0.0, 1.0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.6, 0.85, "STRING", tFOVDebug)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Grab actor positions
|
|
INT iGrabPosLoop, iSubLoop
|
|
|
|
REPEAT c_iMaxGrabPositions iGrabPosLoop
|
|
IF bGrabPosition[iGrabPosLoop]
|
|
|
|
// If this is a new selection...
|
|
IF iGrabPosState <> iGrabPosLoop
|
|
|
|
// Set as current
|
|
iGrabPosState = iGrabPosLoop
|
|
|
|
// Deselect everything else
|
|
REPEAT c_iMaxGrabPositions iSubLoop
|
|
IF iSubLoop <> iGrabPosState
|
|
bGrabPosition[iSubLoop] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
// If has been deselected...
|
|
IF iGrabPosState = iGrabPosLoop
|
|
|
|
// Clear current
|
|
iGrabPosState = -1
|
|
|
|
// Deselect everything else
|
|
REPEAT c_iMaxGrabPositions iSubLoop
|
|
bGrabPosition[iSubLoop] = FALSE
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
VECTOR vMousePos
|
|
IF IS_MOUSE_BUTTON_PRESSED(MB_LEFT_BTN)
|
|
vMousePos = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
|
|
IF iGrabPosState = 0 dropoff.vPlayerPos = vMousePos
|
|
ELIF iGrabPosState = 1 dropoff.vPedPos[0] = vMousePos
|
|
ELIF iGrabPosState = 2 dropoff.vPedPos[1] = vMousePos
|
|
ELIF iGrabPosState = 3 dropoff.vExitPos = vMousePos
|
|
ELIF iGrabPosState = 4 dropoff.vCarPos = vMousePos
|
|
ELIF iGrabPosState = 5 dropoff.vCarFakeWalkPos = vMousePos
|
|
ELIF iGrabPosState = 6 dropoff.vCarFakeDrivePos = vMousePos
|
|
ELIF iGrabPosState = 7 dropoff.mExtraRespot.vCarPos = vMousePos
|
|
ELIF iGrabPosState = 8 dropoff.vSwitchPos[0] = vMousePos
|
|
ELIF iGrabPosState = 9 dropoff.vSwitchPos[1] = vMousePos
|
|
ELIF iGrabPosState = 10 dropoff.vSwitchPos[2] = vMousePos
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bRespotExpansion[0] AND bRespotExpansion[1]
|
|
IF IS_BIT_SET(dropoff.mExtraRespot.expandDir, 0)
|
|
bRespotExpansion[0] = FALSE
|
|
ELSE
|
|
bRespotExpansion[1] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
IF bRespotExpansion[2] AND bRespotExpansion[3]
|
|
IF IS_BIT_SET(dropoff.mExtraRespot.expandDir, 2)
|
|
bRespotExpansion[2] = FALSE
|
|
ELSE
|
|
bRespotExpansion[3] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
REPEAT COUNT_OF(bRespotExpansion) iBitLoop
|
|
IF bRespotExpansion[iBitLoop]
|
|
SET_BIT(dropoff.mExtraRespot.expandDir, iBitLoop)
|
|
ELSE
|
|
CLEAR_BIT(dropoff.mExtraRespot.expandDir, iBitLoop)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
// Run scene if triggered
|
|
IF CAN_PLAYER_START_CUTSCENE()
|
|
IF bRunScene2
|
|
PRIVATE_DEBUG_RunDropoffScene(dropoff, convPeds, 2, hFriendCarA, hFriendCarB)
|
|
bRunScene2 = FALSE
|
|
|
|
ELIF bRunScene1
|
|
PRIVATE_DEBUG_RunDropoffScene(dropoff, convPeds, 1, hFriendCarA, hFriendCarB)
|
|
bRunScene1 = FALSE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bWarpToAnchor
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vAnchor)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
bWarpToAnchor = FALSE
|
|
ENDIF
|
|
INT iSwitch
|
|
REPEAT 3 iSwitch
|
|
IF bWarpToSwitch[iSwitch]
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), dropoff.vSwitchPos[iSwitch])
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), dropoff.fSwitchRot[iSwitch])
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
bWarpToSwitch[iSwitch] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF bGrabFriendCarA
|
|
IF DOES_BLIP_EXIST(hFriendCarABlip)
|
|
REMOVE_BLIP(hFriendCarABlip)
|
|
ENDIF
|
|
// IF DOES_ENTITY_EXIST(hFriendCarA)
|
|
// SET_VEHICLE_AS_NO_LONGER_NEEDED(hFriendCarA)
|
|
// ENDIF
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
hFriendCarA = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
IF DOES_ENTITY_EXIST(hFriendCarA)
|
|
hFriendCarABlip = CREATE_VEHICLE_BLIP(hFriendCarA)
|
|
// IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hFriendCarA)
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hFriendCarA, TRUE, TRUE)
|
|
// ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
bGrabFriendCarA = FALSE
|
|
ENDIF
|
|
IF bGrabFriendCarB
|
|
IF DOES_BLIP_EXIST(hFriendCarBBlip)
|
|
REMOVE_BLIP(hFriendCarBBlip)
|
|
ENDIF
|
|
// IF DOES_ENTITY_EXIST(hFriendCarB)
|
|
// SET_VEHICLE_AS_NO_LONGER_NEEDED(hFriendCarB)
|
|
// ENDIF
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
hFriendCarB = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
IF DOES_ENTITY_EXIST(hFriendCarB)
|
|
hFriendCarBBlip = CREATE_VEHICLE_BLIP(hFriendCarB)
|
|
// IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hFriendCarB)
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hFriendCarB, TRUE, TRUE)
|
|
// ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
bGrabFriendCarB = FALSE
|
|
ENDIF
|
|
|
|
IF bForceDebugDraw
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditDropoffScene_Luke() // Cleanup")
|
|
|
|
IF DOES_BLIP_EXIST(hLocBlip)
|
|
REMOVE_BLIP(hLocBlip)
|
|
ENDIF
|
|
IF DOES_BLIP_EXIST(hFriendCarABlip)
|
|
REMOVE_BLIP(hFriendCarABlip)
|
|
ENDIF
|
|
IF DOES_BLIP_EXIST(hFriendCarBBlip)
|
|
REMOVE_BLIP(hFriendCarBBlip)
|
|
ENDIF
|
|
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
|
|
DELETE_WIDGET_GROUP(hDropoffGroup)
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_SaveDropoffScene(TEXT_LABEL_63& tLocName, structFDropoffScene& scene, BOOL bIsFriendLoc, BOOL bExportWrapperComments = TRUE)
|
|
|
|
TEXT_LABEL_63 tFuncName
|
|
IF bIsFriendLoc
|
|
tFuncName = "Private_FLOC_GetDropoffScene()"
|
|
ELSE
|
|
tFuncName = "PRIVATE_ActivityLoc_GetDropoffData()"
|
|
ENDIF
|
|
|
|
//-- Save output to file
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_SaveDropoffScene(", tLocName, ") // Save dropoff scene to file")
|
|
|
|
OPEN_DEBUG_FILE()
|
|
|
|
// Save Dropoff to file
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
IF bExportWrapperComments
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("//----------------------- ")SAVE_STRING_TO_DEBUG_FILE(tFuncName)SAVE_STRING_TO_DEBUG_FILE(" - ")SAVE_STRING_TO_DEBUG_FILE(tLocName) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
SAVE_STRING_TO_DEBUG_FILE(" CASE ") SAVE_STRING_TO_DEBUG_FILE(tLocName) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].mStart.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[0].mStart.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].mStart.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[0].mStart.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].mEnd.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[0].mEnd.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].mEnd.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[0].mEnd.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].fFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[0].fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].fDuration = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[0].fDuration) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[0].bEnabled = ")SAVE_BOOL_TO_DEBUG_FILE( scene.mFootPans[0].bEnabled) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].mStart.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[1].mStart.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].mStart.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[1].mStart.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].mEnd.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[1].mEnd.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].mEnd.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[1].mEnd.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].fFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[1].fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].fDuration = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[1].fDuration) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[1].bEnabled = ")SAVE_BOOL_TO_DEBUG_FILE( scene.mFootPans[1].bEnabled) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].mStart.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[2].mStart.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].mStart.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[2].mStart.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].mEnd.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[2].mEnd.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].mEnd.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[2].mEnd.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].fFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[2].fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].fDuration = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[2].fDuration) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[2].bEnabled = ")SAVE_BOOL_TO_DEBUG_FILE( scene.mFootPans[2].bEnabled) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].mStart.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[3].mStart.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].mStart.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[3].mStart.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].mEnd.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[3].mEnd.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].mEnd.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[3].mEnd.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].fFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[3].fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].fDuration = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[3].fDuration) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[3].bEnabled = ")SAVE_BOOL_TO_DEBUG_FILE( scene.mFootPans[3].bEnabled) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].mStart.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[4].mStart.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].mStart.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[4].mStart.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].mEnd.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[4].mEnd.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].mEnd.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[4].mEnd.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].fFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[4].fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].fDuration = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[4].fDuration) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[4].bEnabled = ")SAVE_BOOL_TO_DEBUG_FILE( scene.mFootPans[4].bEnabled) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].mStart.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[5].mStart.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].mStart.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[5].mStart.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].mEnd.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[5].mEnd.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].mEnd.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootPans[5].mEnd.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].fFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[5].fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].fDuration = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.mFootPans[5].fDuration) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootPans[5].bEnabled = ")SAVE_BOOL_TO_DEBUG_FILE( scene.mFootPans[5].bEnabled) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootCatchupCam.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootCatchupCam.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mFootCatchupCam.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mFootCatchupCam.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fFootCatchupFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fFootCatchupFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCarCatchupCam.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCarCatchupCam.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCarCatchupCam.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCarCatchupCam.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCarCatchupFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCarCatchupFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vCarPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vCarPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCarRot = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCarRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPlayerPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPlayerPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedPos[0] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedPos[0]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedPos[1] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedPos[1]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vExitPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vExitPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fFootSpeechDelay = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fFootSpeechDelay) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fFootFinalDelay = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fFootFinalDelay) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCarFinalDelay0 = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCarFinalDelay0) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCarFinalDelay = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCarFinalDelay) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.bFootCam2IsAlternative = ")SAVE_BOOL_TO_DEBUG_FILE( scene.bFootCam2IsAlternative) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.bIsTaxiStyle = ")SAVE_BOOL_TO_DEBUG_FILE( scene.bIsTaxiStyle) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vCarFakeWalkPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vCarFakeWalkPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vCarFakeDrivePos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vCarFakeDrivePos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mExtraRespot.vCarPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mExtraRespot.vCarPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mExtraRespot.fCarRot = ")SAVE_FLOAT_TO_DEBUG_FILE(scene.mExtraRespot.fCarRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mExtraRespot.expandDir = ")SAVE_INT_TO_DEBUG_FILE(scene.mExtraRespot.expandDir) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vSwitchPos[0] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vSwitchPos[0]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fSwitchRot[0] = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fSwitchRot[0]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vSwitchPos[1] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vSwitchPos[1]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fSwitchRot[1] = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fSwitchRot[1]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vSwitchPos[2] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vSwitchPos[2]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fSwitchRot[2] = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fSwitchRot[2]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" RETURN TRUE") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" BREAK") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
IF bExportWrapperComments
|
|
SAVE_STRING_TO_DEBUG_FILE("//----------------------- ")SAVE_STRING_TO_DEBUG_FILE(tFuncName)SAVE_STRING_TO_DEBUG_FILE(" - END") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
CLOSE_DEBUG_FILE()
|
|
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_ExportAllFLOCDropoffs()
|
|
structFDropoffScene scene
|
|
enumFriendLocation eLoc
|
|
REPEAT MAX_FRIEND_LOCATIONS eLoc
|
|
IF eLoc <> FLOC_adhoc
|
|
Private_FLOC_GetDropoffScene(eLoc, scene)
|
|
|
|
scene.mFootPans[5].mStart.vPos = scene.mFootCatchupCam.vPos
|
|
scene.mFootPans[5].mStart.vRot = scene.mFootCatchupCam.vRot
|
|
scene.mFootPans[5].mEnd.vPos = scene.mFootCatchupCam.vPos
|
|
scene.mFootPans[5].mEnd.vRot = scene.mFootCatchupCam.vRot
|
|
scene.mFootPans[5].fFov = scene.fFootCatchupFov
|
|
scene.mFootPans[5].fDuration = 0
|
|
scene.mFootPans[5].bEnabled = TRUE
|
|
|
|
TEXT_LABEL_63 tLocName = GetLabel_enumFriendLocation(eLoc)
|
|
PRIVATE_DEBUG_SaveDropoffScene(tLocName, scene, TRUE, FALSE)
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_ExportAllALOCDropoffs()
|
|
structFDropoffScene scene
|
|
enumActivityLocation eLoc = ALOC_cinema_downtown
|
|
WHILE eLoc <= ALOC_cinema_vinewood
|
|
Private_ALOC_GetDropoffScene(eLoc, scene)
|
|
|
|
scene.mFootPans[5].mStart.vPos = scene.mFootCatchupCam.vPos
|
|
scene.mFootPans[5].mStart.vRot = scene.mFootCatchupCam.vRot
|
|
scene.mFootPans[5].mEnd.vPos = scene.mFootCatchupCam.vPos
|
|
scene.mFootPans[5].mEnd.vRot = scene.mFootCatchupCam.vRot
|
|
scene.mFootPans[5].fFov = scene.fFootCatchupFov
|
|
scene.mFootPans[5].fDuration = 0
|
|
scene.mFootPans[5].bEnabled = TRUE
|
|
|
|
TEXT_LABEL_63 tLocName = GetLabel_enumActivityLocation(eLoc)
|
|
PRIVATE_DEBUG_SaveDropoffScene(tLocName, scene, FALSE, FALSE)
|
|
eLoc = INT_TO_ENUM(enumActivityLocation, ENUM_TO_INT(eLoc) + 1)
|
|
ENDWHILE
|
|
ENDPROC
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//-- ACTIVITY SCENE (debug)
|
|
//---------------------------------------------------------------------------------------------------
|
|
|
|
PROC PRIVATE_DEBUG_RunActivityScene(structFActivityScene& scene, structPedsForConversation& convPeds, enumActivityLocation eLoc)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_RunActivityScene()...")
|
|
|
|
PED_INDEX hFriendA, hFriendB
|
|
|
|
// Grab friend peds to use
|
|
INT iLeaderCount, iFollowerCount
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
IF iFollowerCount = 0
|
|
IF NOT PRIVATE_DEBUG_CreateFriendPed()
|
|
SCRIPT_ASSERT("PRIVATE_DEBUG_RunActivityScene() - Couldn't create friend ped")
|
|
EXIT
|
|
ENDIF
|
|
hFriendA = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 0)
|
|
hFriendB = NULL
|
|
|
|
ELIF iFollowerCount = 1
|
|
hFriendA = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 0)
|
|
hFriendB = NULL
|
|
|
|
ELSE
|
|
hFriendA = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 0)
|
|
hFriendB = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 1)
|
|
ENDIF
|
|
|
|
|
|
// Run the scene
|
|
INT iCutsceneStep = 0
|
|
|
|
WHILE NOT Private_ProcessActivityScene(eLoc, scene, iCutsceneStep, hFriendA, hFriendB, convPeds)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// IF DOES_ENTITY_EXIST(hFriendA)
|
|
// DELETE_PED(hFriendA)
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(hFriendB)
|
|
// DELETE_PED(hFriendB)
|
|
// ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_MakeGroupSober()
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_MakeGroupSober()...")
|
|
PED_INDEX hFriendA, hFriendB
|
|
|
|
// Grab friend peds to use
|
|
INT iLeaderCount, iFollowerCount
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
MAKE_PED_SOBER(PLAYER_PED_ID())
|
|
|
|
IF iFollowerCount > 0
|
|
hFriendA = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 0)
|
|
IF NOT IS_PED_INJURED(hFriendA)
|
|
MAKE_PED_SOBER(hFriendA)
|
|
ENDIF
|
|
ENDIF
|
|
IF iFollowerCount > 1
|
|
hFriendB = GET_PED_AS_GROUP_MEMBER(PLAYER_GROUP_ID(), 1)
|
|
IF NOT IS_PED_INJURED(hFriendB)
|
|
MAKE_PED_SOBER(hFriendB)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
QUIT_DRUNK_CAMERA_IMMEDIATELY()
|
|
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_DrawActivityScenePath(VECTOR& vNodes[], INT r, INT g, INT b, BOOL bIsCinema, INT iHighlight)
|
|
|
|
// Draw path
|
|
DRAW_DEBUG_LINE(vNodes[0], vNodes[1], r,g,b, 128)
|
|
IF bIsCinema = FALSE
|
|
DRAW_DEBUG_LINE(vNodes[1], vNodes[2], r,g,b, 128)
|
|
ENDIF
|
|
|
|
// Draw uprights
|
|
INT iCount = COUNT_OF(vNodes)
|
|
IF bIsCinema
|
|
iCount--
|
|
ENDIF
|
|
|
|
INT i
|
|
REPEAT iCount i
|
|
DRAW_DEBUG_LINE(vNodes[i]-<<0,0,10>>, vNodes[i]+<<0,0,10>>, r,g,b, 128)
|
|
r += 75
|
|
g += 75
|
|
b += 75
|
|
|
|
IF i = iHighlight
|
|
DRAW_DEBUG_SPHERE(vNodes[i]+<<0.0, 0.0, 0.25>>, 0.025, r,g,b, 128)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_EditActivityScene(WIDGET_GROUP_ID& hParentWidgetGroup, structPedsForConversation& convPeds, BOOL& bEnable, structFActivityScene& scene, VECTOR vAnchor, enumActivityLocation eLoc)
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityScene(", GetLabel_enumActivityLocation(eLoc), ")...")
|
|
|
|
// Rag accessors
|
|
BOOL bDisplayPositions = TRUE
|
|
BOOL bToggleFriendPeds = FALSE
|
|
BOOL bSetFriendsSober = FALSE
|
|
BOOL bForceRunScene = FALSE
|
|
|
|
BOOL bGrabCamPanA0 = FALSE
|
|
BOOL bGrabCamPanA1 = FALSE
|
|
BOOL bGrabCamTime = FALSE
|
|
BOOL bGrabCamPanB0 = FALSE
|
|
BOOL bGrabCamPanB1 = FALSE
|
|
BOOL bIsCinema = scene.bIsCinema
|
|
|
|
INT iCurGroup = 0
|
|
|
|
BOOL bDisplayClear = FALSE
|
|
BOOL bEditClear[2]
|
|
INT iCurClearEdit = -1
|
|
FLOAT fClearHeight = scene.vClearB.z - scene.vClearA.z
|
|
|
|
BOOL bQuickGrabPos[3]
|
|
BOOL bEditPos[9]
|
|
INT iCurPedPos = 0
|
|
VECTOR vPedPosOffset = scene.vPedPPos[0] - vAnchor
|
|
|
|
bEditPos[0] = TRUE
|
|
bEditPos[1] = FALSE
|
|
bEditPos[2] = FALSE
|
|
bEditPos[3] = FALSE
|
|
bEditPos[4] = FALSE
|
|
bEditPos[5] = FALSE
|
|
bEditPos[6] = FALSE
|
|
bEditPos[7] = FALSE
|
|
bEditPos[8] = FALSE
|
|
|
|
bQuickGrabPos[0] = FALSE
|
|
bQuickGrabPos[1] = FALSE
|
|
bQuickGrabPos[2] = FALSE
|
|
|
|
|
|
//-- Create widgets --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityScene() // Create widgets")
|
|
|
|
WIDGET_GROUP_ID hASceneGroup
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
hASceneGroup =
|
|
START_WIDGET_GROUP("Scene data")
|
|
// Add widgets
|
|
ADD_WIDGET_BOOL("Toggle friend peds", bToggleFriendPeds)
|
|
ADD_WIDGET_BOOL("Set friends sober", bSetFriendsSober)
|
|
ADD_WIDGET_BOOL("Run scene", bForceRunScene)
|
|
|
|
START_WIDGET_GROUP("Camera")
|
|
ADD_WIDGET_BOOL("Grab cam pan A start", bGrabCamPanA0)
|
|
ADD_WIDGET_BOOL("Grab cam pan A end", bGrabCamPanA1)
|
|
ADD_WIDGET_BOOL("Grab cam time", bGrabCamTime)
|
|
ADD_WIDGET_BOOL("Grab cam pan B start", bGrabCamPanB0)
|
|
ADD_WIDGET_BOOL("Grab cam pan B end", bGrabCamPanB1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Pan A duration (normal)", scene.fPanADurationNormal, 0.0, 10.0, 1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Pan A duration (drunk)", scene.fPanADurationDrunk, 0.0, 10.0, 1.0)
|
|
ADD_WIDGET_BOOL("Is cinema scene", bIsCinema)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Ped positions")
|
|
ADD_WIDGET_BOOL("Edit positions", bDisplayPositions)
|
|
ADD_WIDGET_VECTOR_SLIDER("Ped pos", vPedPosOffset, -30.0, 30.0, 0.1)
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Edit player pos 0", bEditPos[0])
|
|
ADD_WIDGET_BOOL("Edit player pos 1", bEditPos[1])
|
|
ADD_WIDGET_BOOL("Edit player pos 2", bEditPos[2])
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Edit friend A pos 0", bEditPos[3])
|
|
ADD_WIDGET_BOOL("Edit friend A pos 1", bEditPos[4])
|
|
ADD_WIDGET_BOOL("Edit friend A pos 2", bEditPos[5])
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Edit friend B pos 0", bEditPos[6])
|
|
ADD_WIDGET_BOOL("Edit friend B pos 1", bEditPos[7])
|
|
ADD_WIDGET_BOOL("Edit friend B pos 2", bEditPos[8])
|
|
ADD_WIDGET_STRING(".")
|
|
ADD_WIDGET_BOOL("Quick grab all pos 0", bQuickGrabPos[0])
|
|
ADD_WIDGET_BOOL("Quick grab all pos 1", bQuickGrabPos[1])
|
|
ADD_WIDGET_BOOL("Quick grab all pos 2", bQuickGrabPos[2])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Clear box")
|
|
ADD_WIDGET_BOOL("Edit vehicle clear box", bDisplayClear)
|
|
ADD_WIDGET_BOOL("Edit pos 0", bEditClear[0])
|
|
ADD_WIDGET_BOOL("Edit pos 1", bEditClear[1])
|
|
ADD_WIDGET_FLOAT_SLIDER("Width", scene.fClearW, 0.0, 100.0, 10.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Height", fClearHeight, 0.0, 50.0, 10.0)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
|
|
//-- Setup world --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityScene() // Setup world")
|
|
|
|
// Create pickup loc blip
|
|
BLIP_INDEX hLocBlip = ADD_BLIP_FOR_COORD(vAnchor)
|
|
|
|
// Warp player
|
|
CLEAR_AREA(vAnchor, 25.0, TRUE)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vAnchor)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
//LOAD_SCENE(vPickupCoord)
|
|
ENDIF
|
|
|
|
|
|
//-- Monitor widgets --
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityScene() // Montior widgets")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
|
|
WHILE bEnable
|
|
|
|
// Grab camera positions
|
|
IF DOES_CAM_EXIST(GET_DEBUG_CAM())
|
|
IF IS_CAM_RENDERING(GET_DEBUG_CAM())
|
|
// Grab debug cam
|
|
IF bGrabCamPanA0
|
|
scene.mCamPanA[0].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
scene.mCamPanA[0].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
scene.fCamPanAFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCamPanA0 = FALSE
|
|
ENDIF
|
|
IF bGrabCamPanA1
|
|
scene.mCamPanA[1].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
scene.mCamPanA[1].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
scene.fCamPanAFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCamPanA1 = FALSE
|
|
ENDIF
|
|
IF bGrabCamTime
|
|
scene.mCamTime.vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
scene.mCamTime.vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
scene.fCamTimeFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCamPanA1 = FALSE
|
|
ENDIF
|
|
IF bGrabCamPanB0
|
|
scene.mCamPanB[0].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
scene.mCamPanB[0].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
scene.fCamPanBFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCamPanB0 = FALSE
|
|
ENDIF
|
|
IF bGrabCamPanB1
|
|
scene.mCamPanB[1].vPos = GET_CAM_COORD(GET_DEBUG_CAM())
|
|
scene.mCamPanB[1].vRot = GET_CAM_ROT(GET_DEBUG_CAM())
|
|
scene.fCamPanBFov = GET_CAM_FOV(GET_DEBUG_CAM())
|
|
bGrabCamPanB1 = FALSE
|
|
ENDIF
|
|
|
|
// Print FOV to screen
|
|
TEXT_LABEL tFOVDebug = "FOV: "
|
|
tFOVDebug += GET_STRING_FROM_FLOAT(GET_CAM_FOV(GET_DEBUG_CAM()))
|
|
|
|
SET_TEXT_COLOUR(100, 255, 255, 255)
|
|
SET_TEXT_SCALE(0.7, 0.8)
|
|
SET_TEXT_WRAP(0.0, 1.0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.78, 0.85, "STRING", tFOVDebug)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
scene.bIsCinema = bIsCinema
|
|
|
|
// Make position/clear box editing mutually exclusive
|
|
IF bDisplayPositions AND iCurGroup <> 0
|
|
bDisplayClear = FALSE
|
|
iCurGroup = 0
|
|
|
|
ELIF bDisplayClear AND iCurGroup <> 1
|
|
bDisplayPositions = FALSE
|
|
iCurGroup = 1
|
|
ENDIF
|
|
|
|
//-- Ped Positions
|
|
IF bDisplayPositions
|
|
|
|
DRAW_DEBUG_SPHERE(vAnchor, 0.1, 255,255,255, 128)
|
|
|
|
PRIVATE_DEBUG_DrawActivityScenePath(scene.vPedPPos, 200, 0, 200, scene.bIsCinema, iCurPedPos)
|
|
PRIVATE_DEBUG_DrawActivityScenePath(scene.vPedAPos, 255, 0, 75, scene.bIsCinema, iCurPedPos - 3)
|
|
PRIVATE_DEBUG_DrawActivityScenePath(scene.vPedBPos, 0, 255, 175, scene.bIsCinema, iCurPedPos - 6)
|
|
|
|
// If a box is ticked, make that the current edit pos
|
|
BOOL bUpdatedEditPos = FALSE
|
|
INT i
|
|
REPEAT COUNT_OF(bEditPos) i
|
|
IF bUpdatedEditPos = FALSE
|
|
IF bEditPos[i]
|
|
IF iCurPedPos <> i
|
|
iCurPedPos = i
|
|
|
|
IF iCurPedPos = 0 vPedPosOffset = scene.vPedPPos[0] - vAnchor
|
|
ELIF iCurPedPos = 1 vPedPosOffset = scene.vPedPPos[1] - vAnchor
|
|
ELIF iCurPedPos = 2 vPedPosOffset = scene.vPedPPos[2] - vAnchor
|
|
ELIF iCurPedPos = 3 vPedPosOffset = scene.vPedAPos[0] - vAnchor
|
|
ELIF iCurPedPos = 4 vPedPosOffset = scene.vPedAPos[1] - vAnchor
|
|
ELIF iCurPedPos = 5 vPedPosOffset = scene.vPedAPos[2] - vAnchor
|
|
ELIF iCurPedPos = 6 vPedPosOffset = scene.vPedBPos[0] - vAnchor
|
|
ELIF iCurPedPos = 7 vPedPosOffset = scene.vPedBPos[1] - vAnchor
|
|
ELIF iCurPedPos = 8 vPedPosOffset = scene.vPedBPos[2] - vAnchor
|
|
ENDIF
|
|
|
|
bUpdatedEditPos = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
// Untick all boxes that aren't the current edit pos
|
|
REPEAT 9 i
|
|
IF iCurPedPos = i
|
|
bEditPos[i] = TRUE
|
|
ELSE
|
|
bEditPos[i] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
// Update the current edit pos
|
|
IF IS_MOUSE_BUTTON_JUST_PRESSED(MB_LEFT_BTN)
|
|
vPedPosOffset = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS() - vAnchor
|
|
ENDIF
|
|
VECTOR vPedPos = vAnchor + vPedPosOffset
|
|
|
|
IF iCurPedPos = 0 scene.vPedPPos[0] = vPedPos
|
|
ELIF iCurPedPos = 1 scene.vPedPPos[1] = vPedPos
|
|
ELIF iCurPedPos = 2 scene.vPedPPos[2] = vPedPos
|
|
ELIF iCurPedPos = 3 scene.vPedAPos[0] = vPedPos
|
|
ELIF iCurPedPos = 4 scene.vPedAPos[1] = vPedPos
|
|
ELIF iCurPedPos = 5 scene.vPedAPos[2] = vPedPos
|
|
ELIF iCurPedPos = 6 scene.vPedBPos[0] = vPedPos
|
|
ELIF iCurPedPos = 7 scene.vPedBPos[1] = vPedPos
|
|
ELIF iCurPedPos = 8 scene.vPedBPos[2] = vPedPos
|
|
ENDIF
|
|
|
|
// Quick grab from player
|
|
REPEAT COUNT_OF(bQuickGrabPos) i
|
|
IF bQuickGrabPos[i]
|
|
scene.vPedPPos[i] = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
scene.vPedAPos[i] = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
scene.vPedBPos[i] = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
bQuickGrabPos[i] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
|
|
//-- Clear Box
|
|
ELIF bDisplayClear
|
|
|
|
// Display ped clear box
|
|
VECTOR vTempMin = <<0.0, 0.0, 0.0>>
|
|
VECTOR vTempMax = <<0.0, 0.0, 0.0>>
|
|
Private_GetActivityScenePedPosBoundingBox(scene, vTempMin, vTempMax)
|
|
DRAW_DEBUG_BOX(vTempMin, vTempMax, 255, 0, 0, 100)
|
|
|
|
// Display vehicle clear box
|
|
scene.vClearB.z = scene.vClearA.z + fClearHeight
|
|
DRAW_DEBUG_ANGLED_AREA(scene.vClearA, scene.vClearB, scene.fClearW, 0, 0, 0, 100)//255)
|
|
|
|
// Update which point is being edited
|
|
IF bEditClear[0] AND iCurClearEdit <> 0
|
|
iCurClearEdit = 0
|
|
bEditClear[1] = FALSE
|
|
|
|
ELIF bEditClear[1] AND iCurClearEdit <> 1
|
|
iCurClearEdit = 1
|
|
bEditClear[0] = FALSE
|
|
|
|
ELIF NOT bEditClear[0] AND NOT bEditClear[1]
|
|
iCurClearEdit = -1
|
|
ENDIF
|
|
|
|
// Draw highlight on edit point
|
|
IF iCurClearEdit = 0 DRAW_DEBUG_SPHERE(scene.vClearA, 0.01, 150, 150, 150, 255)
|
|
ELIF iCurClearEdit = 1 DRAW_DEBUG_SPHERE(scene.vClearB, 0.01, 150, 150, 150, 255)
|
|
ENDIF
|
|
|
|
// Update edit point on click
|
|
IF IS_MOUSE_BUTTON_PRESSED(MB_LEFT_BTN)
|
|
IF iCurClearEdit = 0 scene.vClearA = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ELIF iCurClearEdit = 1 scene.vClearB = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// Run scene + manage buddy peds
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
INT iLeaderCount = 0, iFollowerCount = 0
|
|
GET_GROUP_SIZE(PLAYER_GROUP_ID(), iLeaderCount, iFollowerCount)
|
|
|
|
// Toggle friends
|
|
IF bToggleFriendPeds
|
|
IF iFollowerCount < 2
|
|
PRIVATE_DEBUG_CreateFriendPed()
|
|
ELSE
|
|
PRIVATE_DEBUG_RemoveAllFriendPeds()
|
|
ENDIF
|
|
bToggleFriendPeds = FALSE
|
|
ENDIF
|
|
|
|
// Run scene if triggered
|
|
IF CAN_PLAYER_START_CUTSCENE()
|
|
IF bForceRunScene
|
|
// PRIVATE_DEBUG_MakeGroupSober()
|
|
PRIVATE_DEBUG_RunActivityScene(scene, convPeds, eLoc)
|
|
bForceRunScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bSetFriendsSober
|
|
PRIVATE_DEBUG_MakeGroupSober()
|
|
bSetFriendsSober = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_EditActivityScene() // Cleanup")
|
|
|
|
IF DOES_BLIP_EXIST(hLocBlip)
|
|
REMOVE_BLIP(hLocBlip)
|
|
ENDIF
|
|
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
|
|
DELETE_WIDGET_GROUP(hASceneGroup)
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_SaveActivityScene(TEXT_LABEL_63& tLocName, structFActivityScene& scene)
|
|
|
|
TEXT_LABEL_63 tFuncName = "Private_ALOC_GetActivityScene()"
|
|
|
|
//-- Save output to file
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_SaveActivityScene(", tLocName, ") // Save activity scene to file")
|
|
|
|
OPEN_DEBUG_FILE()
|
|
|
|
// Save activity scene to file
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("//----------------------- ")SAVE_STRING_TO_DEBUG_FILE(tFuncName)SAVE_STRING_TO_DEBUG_FILE(" - ")SAVE_STRING_TO_DEBUG_FILE(tLocName) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" CASE ") SAVE_STRING_TO_DEBUG_FILE(tLocName) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanA[0].vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanA[0].vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanA[0].vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanA[0].vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanA[1].vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanA[1].vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanA[1].vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanA[1].vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCamPanAFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCamPanAFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamTime.vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamTime.vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamTime.vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamTime.vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCamTimeFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCamTimeFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanB[0].vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanB[0].vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanB[0].vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanB[0].vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanB[1].vPos = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanB[1].vPos) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.mCamPanB[1].vRot = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.mCamPanB[1].vRot) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fCamPanBFov = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fCamPanBFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fPanADurationNormal = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fPanADurationNormal) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fPanADurationDrunk = ")SAVE_FLOAT_TO_DEBUG_FILE( scene.fPanADurationDrunk) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.bIsCinema = ")SAVE_BOOL_TO_DEBUG_FILE(scene.bIsCinema) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedPPos[0] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedPPos[0]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedPPos[1] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedPPos[1]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedPPos[2] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedPPos[2]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedAPos[0] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedAPos[0]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedAPos[1] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedAPos[1]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedAPos[2] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedAPos[2]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedBPos[0] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedBPos[0]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedBPos[1] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedBPos[1]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vPedBPos[2] = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vPedBPos[2]) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vClearA = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vClearA) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.vClearB = ")SAVE_VECTOR_TO_DEBUG_FILE(scene.vClearB) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" scene.fClearW = ")SAVE_FLOAT_TO_DEBUG_FILE(scene.fClearW) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" RETURN TRUE") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" BREAK") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("//----------------------- ")SAVE_STRING_TO_DEBUG_FILE(tFuncName)SAVE_STRING_TO_DEBUG_FILE(" - END") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
CLOSE_DEBUG_FILE()
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//-- DISPLAY (track player instances)
|
|
//---------------------------------------------------------------------------------------------------
|
|
|
|
|
|
PROC PRIVATE_DEBUG_TrackFriendPlayerInstances(BOOL bEnable, BLIP_INDEX &hBlips[])
|
|
|
|
CONST_INT DEBUG_CONST_iExistsRow 10
|
|
|
|
// For each playable character
|
|
IF bEnable
|
|
INT i
|
|
REPEAT 3 i
|
|
// Get character
|
|
enumCharacterList char = INT_TO_ENUM(enumCharacterList, i)
|
|
|
|
// Get traits
|
|
HUD_COLOURS hudColourExists = HUD_COLOUR_PURE_WHITE
|
|
HUD_COLOURS hudColourKnown = HUD_COLOUR_WHITE
|
|
INT iBlipColour = BLIP_COLOUR_RED
|
|
TEXT_LABEL tName = "PlayerChar"
|
|
|
|
IF i = 0
|
|
tName = "Michael"
|
|
hudColourExists = HUD_COLOUR_REDLIGHT
|
|
hudColourKnown = HUD_COLOUR_REDDARK
|
|
iBlipColour = BLIP_COLOUR_RED
|
|
ELIF i = 1
|
|
tName = "Franklin"
|
|
hudColourExists = HUD_COLOUR_BLUELIGHT
|
|
hudColourKnown = HUD_COLOUR_BLUEDARK
|
|
iBlipColour = BLIP_COLOUR_BLUE
|
|
ELSE
|
|
tName = "Trevor"
|
|
hudColourExists = HUD_COLOUR_YELLOWLIGHT
|
|
hudColourKnown = HUD_COLOUR_YELLOWDARK
|
|
iBlipColour = BLIP_COLOUR_YELLOW
|
|
ENDIF
|
|
|
|
PED_INDEX hPed = g_sPlayerPedRequest.sSelectorPeds.pedID[GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(char)]
|
|
|
|
// If ped is the player...
|
|
IF g_eDefaultPlayerChar = char
|
|
DrawFriendLiteralString(tName, DEBUG_CONST_iExistsRow+i, HUD_COLOUR_PURE_WHITE)
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
REMOVE_BLIP(hBlips[i])
|
|
ENDIF
|
|
|
|
// If ped exists in world...
|
|
ELIF DOES_ENTITY_EXIST(hPed)
|
|
DrawFriendLiteralString(tName, DEBUG_CONST_iExistsRow+i, hudColourExists)
|
|
|
|
IF NOT DOES_BLIP_EXIST(hBlips[i])
|
|
OR GET_BLIP_ALPHA(hBlips[i]) <> 255
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
REMOVE_BLIP(hBlips[i])
|
|
ENDIF
|
|
|
|
hBlips[i] = CREATE_BLIP_FOR_PED(g_sPlayerPedRequest.sSelectorPeds.pedID[GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(char)])
|
|
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
SET_BLIP_COLOUR(hBlips[i], iBlipColour)
|
|
SET_BLIP_SCALE(hBlips[i], 2.0)
|
|
SET_BLIP_ALPHA(hBlips[i], 255)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// If is position known
|
|
ELIF IS_TIMEOFDAY_VALID(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[char])
|
|
AND NOT HasNumOfHoursPassedSincePedTimeStruct(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[char], 1)
|
|
AND g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[char].x <> 0.0
|
|
AND g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[char].y <> 0.0
|
|
AND g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[char].z <> 0.0
|
|
|
|
INT iSeconds=0, iMinutes=0, iHours=0, iDays=0, iMonths=0, iYears=0
|
|
GET_DIFFERENCE_BETWEEN_NOW_AND_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[char], iSeconds, iMinutes, iHours, iDays, iMonths, iYears)
|
|
|
|
iMinutes += iHours * 60
|
|
iMinutes += iDays * 60 * 24
|
|
TEXT_LABEL_63 tNameWithTime = tName
|
|
tNameWithTime += " "
|
|
tNameWithTime += iMinutes
|
|
tNameWithTime += " mins inactive"
|
|
|
|
DrawFriendLiteralString(tNameWithTime, DEBUG_CONST_iExistsRow+i, hudColourKnown)
|
|
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
REMOVE_BLIP(hBlips[i])
|
|
ENDIF
|
|
|
|
hBlips[i] = CREATE_BLIP_FOR_COORD(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[char])
|
|
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
SET_BLIP_COLOUR(hBlips[i], iBlipColour)
|
|
SET_BLIP_SCALE(hBlips[i], 1.5)
|
|
SET_BLIP_ALPHA(hBlips[i], 100)
|
|
ENDIF
|
|
|
|
// If ped has no known position...
|
|
ELSE
|
|
DrawFriendLiteralString(tName, DEBUG_CONST_iExistsRow+i, HUD_COLOUR_GREY)
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
REMOVE_BLIP(hBlips[i])
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
DrawFriendLiteralString("IS_PLAYER_SWITCH_IN_PROGRESS()", DEBUG_CONST_iExistsRow+5, HUD_COLOUR_GREY)
|
|
|
|
ELIF GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT
|
|
DrawFriendLiteralString("IS_PLAYER_SWITCH_IN_PROGRESS(): Short", DEBUG_CONST_iExistsRow+5, HUD_COLOUR_PURE_WHITE)
|
|
|
|
ELSE
|
|
TEXT_LABEL_63 tJumpCut = "IS_PLAYER_SWITCH_IN_PROGRESS(): "
|
|
|
|
IF GET_PLAYER_SWITCH_TYPE() <> SWITCH_TYPE_SHORT
|
|
tJumpCut += GET_PLAYER_SWITCH_JUMP_CUT_INDEX()
|
|
ELSE
|
|
tJumpCut += "short"
|
|
ENDIF
|
|
|
|
DrawFriendLiteralString(tJumpCut, DEBUG_CONST_iExistsRow+5, HUD_COLOUR_PURE_WHITE)
|
|
ENDIF
|
|
|
|
IF (g_sPlayerPedRequest.eState <> PR_STATE_PROCESSING)
|
|
DrawFriendLiteralString("PR_STATE_PROCESSING", DEBUG_CONST_iExistsRow+6, HUD_COLOUR_GREY)
|
|
ELSE
|
|
DrawFriendLiteralString("PR_STATE_PROCESSING", DEBUG_CONST_iExistsRow+6, HUD_COLOUR_PURE_WHITE)
|
|
ENDIF
|
|
|
|
ELSE
|
|
// Switched off -> remove blips
|
|
INT i
|
|
REPEAT 3 i
|
|
IF DOES_BLIP_EXIST(hBlips[i])
|
|
REMOVE_BLIP(hBlips[i])
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), CHAR_MICHAEL)
|
|
DrawFriendLiteralString("Is player's personal vehicle: MICHAEL", DEBUG_CONST_iExistsRow+7, HUD_COLOUR_PURE_WHITE)
|
|
|
|
ELIF IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), CHAR_FRANKLIN)
|
|
DrawFriendLiteralString("Is player's personal vehicle: FRANKLIN", DEBUG_CONST_iExistsRow+7, HUD_COLOUR_PURE_WHITE)
|
|
|
|
ELIF IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), CHAR_TREVOR)
|
|
DrawFriendLiteralString("Is player's personal vehicle: TREVOR", DEBUG_CONST_iExistsRow+7, HUD_COLOUR_PURE_WHITE)
|
|
|
|
ELSE
|
|
DrawFriendLiteralString("Is player's personal vehicle: NONE", DEBUG_CONST_iExistsRow+7, HUD_COLOUR_GREY)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_TestAdhocFriendLocation(BOOL& bTestAdhocFriendLoc)
|
|
|
|
// Maintain adhoc FriendLocation
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestAdhocFriendLocation() // Display adhoc location every frame")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
BLIP_INDEX hAdhocBlip = NULL
|
|
|
|
|
|
WHILE bTestAdhocFriendLoc
|
|
|
|
Private_ClearAdhocFriendLoc()
|
|
IF DOES_BLIP_EXIST(hAdhocBlip)
|
|
REMOVE_BLIP(hAdhocBlip)
|
|
ENDIF
|
|
|
|
IF IS_PED_UNINJURED(PLAYER_PED_ID())
|
|
IF Private_GetAvailableAdhocFriendLoc(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
VECTOR vDriveway = g_FriendLocations[FLOC_adhoc].vPickupCoord
|
|
VECTOR vDoorstepA = g_FriendLocations[FLOC_adhoc].vPickupCoord + g_FriendLocations[FLOC_adhoc].vPedOffsetA
|
|
VECTOR vDoorstepB = g_FriendLocations[FLOC_adhoc].vPickupCoord + g_FriendLocations[FLOC_adhoc].vPedOffsetB
|
|
|
|
// Draw loc position + ped offset
|
|
DRAW_DEBUG_SPHERE(vDriveway, 0.1, 255,255,255, 128)
|
|
DRAW_DEBUG_LINE(vDriveway, vDoorstepA, 255,255,255, 128)
|
|
DRAW_DEBUG_LINE(vDoorstepA-<<0,0,10>>, vDoorstepA+<<0,0,10>>, 255,255,255, 128)
|
|
DRAW_DEBUG_LINE(vDriveway, vDoorstepB, 255,255,255, 128)
|
|
DRAW_DEBUG_LINE(vDoorstepB-<<0,0,10>>, vDoorstepB+<<0,0,10>>, 255,255,255, 128)
|
|
|
|
// Draw spawn and park positions
|
|
DRAW_DEBUG_SPHERE(g_FriendLocations[FLOC_adhoc].vSpawnPos, 0.1, 0,255,0, 128)
|
|
DRAW_DEBUG_SPHERE(g_FriendLocations[FLOC_adhoc].vParkPos, 0.1, 0,255,255, 128)
|
|
|
|
// Draw ped offset B
|
|
VECTOR vParkPos = g_FriendLocations[FLOC_adhoc].vParkPos
|
|
DRAW_DEBUG_LINE(vDriveway, vParkPos, 0,255,255, 128)
|
|
DRAW_DEBUG_LINE(vParkPos-<<0,0,10>>, vParkPos+<<0,0,10>>, 0,255,255, 128)
|
|
|
|
// Add blip
|
|
hAdhocBlip = ADD_BLIP_FOR_COORD(vDriveway)
|
|
IF DOES_BLIP_EXIST(hAdhocBlip)
|
|
SET_BLIP_AS_FRIENDLY(hAdhocBlip, TRUE)
|
|
SET_BLIP_SPRITE(hAdhocBlip, RADAR_TRACE_FRIEND)
|
|
ENDIF
|
|
ELSE
|
|
DISPLAY_TEXT(0.5, 0.1, "No adhoc loc")
|
|
SCRIPT_ASSERT("PRIVATE_DEBUG_TestAdhocFriendLocation() - No adhoc location found")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
|
|
// Cleanup
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestAdhocFriendLocation() // Cleanup")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
|
|
Private_ClearAdhocFriendLoc()
|
|
IF DOES_BLIP_EXIST(hAdhocBlip)
|
|
REMOVE_BLIP(hAdhocBlip)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//-- TESTING (debug)
|
|
//---------------------------------------------------------------------------------------------------
|
|
|
|
PROC PRIVATE_DEBUG_TestKnockoutScene(enumCharacterList eChar, FLOAT fHitTime, VECTOR vBoxOffsetA, VECTOR vBoxSizeA, VECTOR vBoxOffsetB, VECTOR vBoxSizeB, VECTOR vBoxOffsetC, VECTOR vBoxSizeC)
|
|
|
|
TEXT_LABEL_63 tAnimDict = "friends@frt@ig_2"
|
|
TEXT_LABEL_63 tPlayerAnim = "knockout_player"
|
|
TEXT_LABEL_63 tFriendAnim = "knockout_trevor"
|
|
TEXT_LABEL_63 tCameraAnim = "knockout_cam"
|
|
|
|
SWITCH eChar
|
|
CASE CHAR_MICHAEL
|
|
tAnimDict = "friends@frm@ig_2"
|
|
tPlayerAnim = "knockout_player"
|
|
tFriendAnim = "knockout_mic"
|
|
tCameraAnim = "knockout_cam"
|
|
// fHitTime = 0.295
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
tAnimDict = "friends@frf@ig_2"
|
|
tPlayerAnim = "knockout_plyr"
|
|
tFriendAnim = "knockout_fra"
|
|
tCameraAnim = "knockout_cam"
|
|
// fHitTime = 0.257
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
tAnimDict = "friends@frt@ig_2"
|
|
tPlayerAnim = "knockout_player"
|
|
tFriendAnim = "knockout_trevor"
|
|
tCameraAnim = "knockout_cam"
|
|
// fHitTime = 0.391
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
|
|
// Setup
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Setup")
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)//, SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), 0) // TEMP - for testing bbox
|
|
|
|
|
|
// Load anim dict
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Load anim dict")
|
|
REQUEST_ANIM_DICT(tAnimDict)
|
|
WHILE NOT HAS_ANIM_DICT_LOADED(tAnimDict)
|
|
REQUEST_ANIM_DICT(tAnimDict)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
// Create friend ped
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Create friend ped")
|
|
MODEL_NAMES eModel = A_M_M_BevHills_01
|
|
REQUEST_MODEL(eModel)
|
|
WHILE NOT HAS_MODEL_LOADED(eModel)
|
|
REQUEST_MODEL(eModel)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
PED_INDEX hFriend = CREATE_PED(PEDTYPE_CIVMALE, eModel, GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(eModel)
|
|
|
|
|
|
// Create camera
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Create camera")
|
|
CAMERA_INDEX hCamera = CREATE_CAM("DEFAULT_ANIMATED_CAMERA", TRUE)
|
|
|
|
|
|
// Start sync scene
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Start sync scene")
|
|
|
|
VECTOR vPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
VECTOR vAnchor = vPos
|
|
GET_GROUND_Z_FOR_3D_COORD(vAnchor, vAnchor.z)
|
|
|
|
FLOAT fHeading = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
VECTOR vRot = << 0.0, 0.0, fHeading >>
|
|
|
|
INT hScene = CREATE_SYNCHRONIZED_SCENE(vAnchor, vRot)
|
|
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), hScene, tAnimDict, tPlayerAnim, NORMAL_BLEND_IN, REALLY_SLOW_BLEND_OUT)
|
|
TASK_SYNCHRONIZED_SCENE(hFriend, hScene, tAnimDict, tFriendAnim, NORMAL_BLEND_IN, REALLY_SLOW_BLEND_OUT)
|
|
PLAY_SYNCHRONIZED_CAM_ANIM(hCamera, hScene, tCameraAnim, tAnimDict)
|
|
|
|
IF IS_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(hScene)
|
|
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(hScene, FALSE)
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
|
|
|
|
// Wait for sync scene
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Wait for sync scene")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
|
|
BOOL bHasSwitchedToRagdoll = FALSE
|
|
|
|
WHILE IS_SYNCHRONIZED_SCENE_RUNNING(hScene) AND NOT IS_SCREEN_FADED_OUT()
|
|
|
|
WAIT(0)
|
|
DRAW_DEBUG_SPHERE(vAnchor, 0.2, 255, 100, 100, 100)
|
|
|
|
IF vBoxSizeA.x != 0.0 AND vBoxSizeA.y != 0.0 AND vBoxSizeA.z != 0.0
|
|
DRAW_DEBUG_BOX(vPos + vBoxOffsetA - (vBoxSizeA*0.5), vPos + vBoxOffsetA + (vBoxSizeA*0.5), 255, 0, 64, 64)
|
|
ENDIF
|
|
IF vBoxSizeB.x != 0.0 AND vBoxSizeB.y != 0.0 AND vBoxSizeB.z != 0.0
|
|
DRAW_DEBUG_BOX(vPos + vBoxOffsetB - (vBoxSizeB*0.5), vPos + vBoxOffsetB + (vBoxSizeB*0.5), 64, 0, 255, 64)
|
|
ENDIF
|
|
IF vBoxSizeC.x != 0.0 AND vBoxSizeC.y != 0.0 AND vBoxSizeC.z != 0.0
|
|
DRAW_DEBUG_BOX(vPos + vBoxOffsetC - (vBoxSizeC*0.5), vPos + vBoxOffsetC + (vBoxSizeC*0.5), 64, 128, 64, 64)
|
|
ENDIF
|
|
|
|
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY()
|
|
DO_SCREEN_FADE_OUT(500)
|
|
ENDIF
|
|
|
|
IF bHasSwitchedToRagdoll = FALSE
|
|
IF GET_SYNCHRONIZED_SCENE_PHASE(hScene) >= fHitTime
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
// SET_ENTITY_HEALTH(PLAYER_PED_ID(), 0)
|
|
SET_PED_TO_RAGDOLL(PLAYER_PED_ID(), 30000, 30000, TASK_RELAX, FALSE, FALSE, FALSE)
|
|
bHasSwitchedToRagdoll = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bHasSwitchedToRagdoll
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1, 0.1, "STRING", "Ragdolling")
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
// Clean up scene
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_TestKnockoutScene() // Cleanup")
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PED_TO_ANIMATED(PLAYER_PED_ID(), TRUE)
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vPos)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), fHeading)
|
|
ENDIF
|
|
|
|
IF DOES_CAM_EXIST(hCamera)
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
DESTROY_CAM(hCamera)
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(hFriend)
|
|
DELETE_PED(hFriend)
|
|
ENDIF
|
|
|
|
// Unload resources
|
|
REMOVE_ANIM_DICT(tAnimDict)
|
|
|
|
// Restore control
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
DO_SCREEN_FADE_IN(500)
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_AddFriendsForPlayer()
|
|
|
|
CLEAR_HELP()
|
|
|
|
SWITCH g_eDefaultPlayerChar
|
|
CASE CHAR_MICHAEL
|
|
PRINT_HELP("FR_00a") //Call Franklin or Trevor to organise an activity.
|
|
Add_Char_As_DefaultPlayer_Friend(CHAR_FRANKLIN)
|
|
Add_Char_As_DefaultPlayer_Friend(CHAR_TREVOR)
|
|
BREAK
|
|
|
|
CASE CHAR_FRANKLIN
|
|
PRINT_HELP("FR_00b") //Call Trevor or Michael to organise an activity.
|
|
Add_Char_As_DefaultPlayer_Friend(CHAR_TREVOR)
|
|
Add_Char_As_DefaultPlayer_Friend(CHAR_MICHAEL)
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
PRINT_HELP("FR_00c") //Call Michael or Franklin to organise an activity.
|
|
Add_Char_As_DefaultPlayer_Friend(CHAR_MICHAEL)
|
|
Add_Char_As_DefaultPlayer_Friend(CHAR_FRANKLIN)
|
|
BREAK
|
|
|
|
DEFAULT
|
|
//
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
|
|
FUNC BOOL PRIVATE_DEBUG_ForceFriendActivityWithAnyone()
|
|
// Get a random friend connection...
|
|
enumFriendConnection eNewConn
|
|
eNewConn = INT_TO_ENUM(enumFriendConnection, GET_RANDOM_INT_IN_RANGE(0, ENUM_TO_INT(MAX_FRIEND_CONNECTIONS)))
|
|
|
|
// If player is one of the friends in the connection, get the other one...
|
|
enumFriend eNewFriend
|
|
IF GET_OTHER_FRIEND_FROM_CONNECTION(eNewConn, eNewFriend)
|
|
|
|
enumCharacterList eNewFriendChar = GET_CHAR_FROM_FRIEND(eNewFriend)
|
|
|
|
IF GET_CONNECTION_STATE(eNewConn) = FC_STATE_Invalid
|
|
Add_Char_As_DefaultPlayer_Friend(eNewFriendChar)
|
|
ENDIF
|
|
|
|
IF GET_CONNECTION_STATE(eNewConn) = FC_STATE_ContactWait
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_DEBUG_ForceFriendActivityWithAnyone(): Force with ", GetLabel_enumFriend(eNewFriend))
|
|
SET_CONNECTION_FLAG(eNewConn, FC_FLAG_HasCallConnected)
|
|
SET_CONNECTION_STATE(eNewConn, FC_STATE_PhoneAccept)
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_CheckForMissingFriendDialogue()
|
|
|
|
BOOL bOpenedDebugFile = FALSE
|
|
enumFriendAudioBlock eAudioBlock = FAB_phone
|
|
TEXT_LABEL tAudioBlockLabel
|
|
BOOL bSaveAudioBlock = FALSE
|
|
|
|
// For each friend connection...
|
|
enumFriendConnection thisConnID
|
|
REPEAT MAX_FRIEND_CONNECTIONS thisConnID
|
|
|
|
enumFriend playerID = g_SavedGlobals.sFriendsData.g_FriendConnectData[thisConnID].friendA
|
|
enumFriend friendID = g_SavedGlobals.sFriendsData.g_FriendConnectData[thisConnID].friendB
|
|
|
|
// Check FriendPhoneConvs...
|
|
eAudioBlock = FAB_phone
|
|
tAudioBlockLabel = PRIVATE_FriendDialogue_GetAudioCode(playerID, friendID, NO_FRIEND, eAudioBlock)
|
|
tAudioBlockLabel += "AU"
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
|
|
// Check phone conv's friendA -> friendB
|
|
enumFriendPhonePhrase eCellConv
|
|
REPEAT MAX_FRIEND_PHONE_PHRASE eCellConv
|
|
|
|
TEXT_LABEL str = ""
|
|
Private_GetFriendPhonePhrase(GET_CHAR_FROM_FRIEND(playerID), GET_CHAR_FROM_FRIEND(friendID), eCellConv, tAudioBlockLabel, str)
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
bSaveAudioBlock = FALSE
|
|
ENDIF
|
|
|
|
TEXT_LABEL tDialogueFile = str
|
|
tDialogueFile += "_01"
|
|
IF NOT DOES_TEXT_LABEL_EXIST(tDialogueFile)
|
|
TEXT_LABEL_63 tDescription, tDialogue
|
|
tDescription = GetLabel_enumFriend(playerID)
|
|
tDescription += " "
|
|
tDescription += GetLabel_enumFriendPhonePhrase(eCellConv)
|
|
tDescription += " - "
|
|
tDialogue = "ENTER PHOLDER DIALOG FOR "
|
|
tDialogue += GetLabel_enumFriendPhonePhrase(eCellConv)
|
|
|
|
IF NOT bOpenedDebugFile
|
|
OPEN_DEBUG_FILE()
|
|
bOpenedDebugFile = TRUE
|
|
ENDIF
|
|
|
|
IF NOT bSaveAudioBlock
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" block: \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(tAudioBlockLabel)
|
|
SAVE_STRING_TO_DEBUG_FILE("\"")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
bSaveAudioBlock = TRUE
|
|
ENDIF
|
|
|
|
SAVE_DIALOGUESTAR_LINE_TO_DEBUG_FILE(str,
|
|
tDescription,
|
|
GET_CHAR_FROM_FRIEND(playerID),
|
|
tDialogue, TRUE)
|
|
ENDIF
|
|
ENDREPEAT
|
|
// Check phone conv's friendB -> friendA
|
|
// REPEAT MAX_FRIEND_PHONE_PHRASE eCellConv
|
|
//
|
|
// TEXT_LABEL str = ""
|
|
// Private_GetFriendPhonePhrase(playerID, friendID, eCellConv, tAudioBlockLabel, str)
|
|
//
|
|
// IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
// DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
// bSaveAudioBlock = FALSE
|
|
// ENDIF
|
|
//
|
|
// TEXT_LABEL tDialogueFile = str
|
|
// tDialogueFile += "_01"
|
|
// IF NOT DOES_TEXT_LABEL_EXIST(tDialogueFile)
|
|
// TEXT_LABEL_63 tDescription, tDialogue
|
|
// tDescription = GetLabel_enumFriend(friendID)
|
|
// tDescription += " "
|
|
// tDescription += GetLabel_enumFriendPhonePhrase(eCellConv)
|
|
// tDescription += " - "
|
|
// tDialogue = "ENTER PHOLDER DIALOG FOR "
|
|
// tDialogue += GetLabel_enumFriendPhonePhrase(eCellConv)
|
|
//
|
|
// IF NOT bOpenedDebugFile
|
|
// OPEN_DEBUG_FILE()
|
|
// bOpenedDebugFile = TRUE
|
|
// ENDIF
|
|
//
|
|
// SAVE_DIALOGUESTAR_LINE_TO_DEBUG_FILE(str,
|
|
// tDescription,
|
|
// GET_CHAR_FROM_FRIEND(friendID),
|
|
// tDialogue, TRUE)
|
|
// ENDIF
|
|
// ENDREPEAT
|
|
|
|
// Check FriendActivityConvs...
|
|
eAudioBlock = FAB_activity
|
|
tAudioBlockLabel = PRIVATE_FriendDialogue_GetAudioCode(playerID, friendID, NO_FRIEND, eAudioBlock)
|
|
tAudioBlockLabel += "AU"
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
bSaveAudioBlock = FALSE
|
|
|
|
// Check activity conv's friendA -> friendB
|
|
enumFriendActivityPhrase eActivityConv
|
|
REPEAT MAX_FRIEND_ACTIVITY_PHRASES eActivityConv
|
|
|
|
TEXT_LABEL str = ""
|
|
Private_GetFriendActivityPhrase(GET_CHAR_FROM_FRIEND(playerID), GET_CHAR_FROM_FRIEND(friendID), eActivityConv, tAudioBlockLabel, str)
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
bSaveAudioBlock = FALSE
|
|
ENDIF
|
|
|
|
TEXT_LABEL tDialogueFile = str
|
|
tDialogueFile += "_01"
|
|
IF NOT DOES_TEXT_LABEL_EXIST(tDialogueFile)
|
|
TEXT_LABEL_63 tDescription, tDialogue
|
|
tDescription = GetLabel_enumFriend(playerID)
|
|
tDescription += " "
|
|
tDescription += GetLabel_enumFriendActivityPhrase(eActivityConv)
|
|
tDescription += " - "
|
|
tDialogue = "ENTER PHOLDER DIALOG FOR "
|
|
tDialogue += GetLabel_enumFriendActivityPhrase(eActivityConv)
|
|
|
|
IF NOT bOpenedDebugFile
|
|
OPEN_DEBUG_FILE()
|
|
bOpenedDebugFile = TRUE
|
|
ENDIF
|
|
|
|
IF NOT bSaveAudioBlock
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" block: \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(tAudioBlockLabel)
|
|
SAVE_STRING_TO_DEBUG_FILE("\"")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
bSaveAudioBlock = TRUE
|
|
ENDIF
|
|
|
|
SAVE_DIALOGUESTAR_LINE_TO_DEBUG_FILE(str,
|
|
tDescription,
|
|
GET_CHAR_FROM_FRIEND(playerID),
|
|
tDialogue, FALSE)
|
|
ENDIF
|
|
ENDREPEAT
|
|
// Check activity conv's friendB -> friendA
|
|
// REPEAT MAX_FRIEND_ACTIVITY_PHRASES eActivityConv
|
|
//
|
|
// TEXT_LABEL str = ""
|
|
// Private_GetFriendActivityPhrase(GET_CHAR_FROM_FRIEND(friendID), GET_CHAR_FROM_FRIEND(playerID), eActivityConv, tAudioBlockLabel, str)
|
|
//
|
|
// IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
// DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
// bSaveAudioBlock = FALSE
|
|
// ENDIF
|
|
//
|
|
// TEXT_LABEL tDialogueFile = str
|
|
// tDialogueFile += "_01"
|
|
// IF NOT DOES_TEXT_LABEL_EXIST(tDialogueFile)
|
|
// TEXT_LABEL_63 tDescription, tDialogue
|
|
// tDescription = GetLabel_enumFriend(friendID)
|
|
// tDescription += " "
|
|
// tDescription += GetLabel_enumFriendActivityPhrase(eActivityConv)
|
|
// tDescription += " - "
|
|
// tDialogue = "ENTER PHOLDER DIALOG FOR "
|
|
// tDialogue += GetLabel_enumFriendActivityPhrase(eActivityConv)
|
|
//
|
|
// IF NOT bOpenedDebugFile
|
|
// OPEN_DEBUG_FILE()
|
|
// bOpenedDebugFile = TRUE
|
|
// ENDIF
|
|
//
|
|
// SAVE_DIALOGUESTAR_LINE_TO_DEBUG_FILE(str,
|
|
// tDescription,
|
|
// GET_CHAR_FROM_FRIEND(friendID),
|
|
// tDialogue, FALSE)
|
|
// ENDIF
|
|
// ENDREPEAT
|
|
|
|
// Check FriendTextMessages...
|
|
tAudioBlockLabel = "FRIENDS"
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
CONST_INT iMAX_TEXT_MESSAGE_COUNT 2//3
|
|
|
|
enumFriendTextMessage eTxtMsg
|
|
REPEAT MAX_FRIEND_TEXT_MESSAGES eTxtMsg
|
|
tAudioBlockLabel = "FRIENDS"
|
|
INT iTxtMsg
|
|
REPEAT iMAX_TEXT_MESSAGE_COUNT iTxtMsg
|
|
TEXT_LABEL str = ""
|
|
Private_GetFriendTextMessageLabel(playerID, eTxtMsg, iTxtMsg, str)
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
bSaveAudioBlock = FALSE
|
|
ENDIF
|
|
|
|
IF NOT DOES_TEXT_LABEL_EXIST(str)
|
|
TEXT_LABEL_63 tMessage
|
|
tMessage = GetLabel_enumFriend(playerID)
|
|
tMessage += ", it's "
|
|
tMessage += GetLabel_enumFriend(friendID)
|
|
tMessage += ". msg for \""
|
|
tMessage += GetLabel_enumFriendTextMessage(eTxtMsg)
|
|
tMessage += "\" - "
|
|
tMessage += iTxtMsg
|
|
|
|
IF NOT bOpenedDebugFile
|
|
OPEN_DEBUG_FILE()
|
|
bOpenedDebugFile = TRUE
|
|
ENDIF
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("[")SAVE_STRING_TO_DEBUG_FILE(str)SAVE_STRING_TO_DEBUG_FILE(":")SAVE_STRING_TO_DEBUG_FILE(tAudioBlockLabel)SAVE_STRING_TO_DEBUG_FILE("]")SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(tMessage)SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
REPEAT MAX_FRIEND_TEXT_MESSAGES eTxtMsg
|
|
tAudioBlockLabel = "FRIENDS" //PRIVATE_Get_FriendConnection_textBlock_Label(thisConnID, btextDialogue)
|
|
INT iTxtMsg
|
|
REPEAT iMAX_TEXT_MESSAGE_COUNT iTxtMsg
|
|
TEXT_LABEL str = ""
|
|
Private_GetFriendTextMessageLabel(friendID, eTxtMsg, iTxtMsg, str)
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tAudioBlockLabel, PHONE_TEXT_SLOT)
|
|
bSaveAudioBlock = FALSE
|
|
ENDIF
|
|
|
|
IF NOT DOES_TEXT_LABEL_EXIST(str)
|
|
TEXT_LABEL_63 tMessage
|
|
tMessage = GetLabel_enumFriend(friendID)
|
|
tMessage += ", it's "
|
|
tMessage += GetLabel_enumFriend(playerID)
|
|
tMessage += ". msg for \""
|
|
tMessage += GetLabel_enumFriendTextMessage(eTxtMsg)
|
|
tMessage += "\" - "
|
|
tMessage += iTxtMsg
|
|
|
|
IF NOT bOpenedDebugFile
|
|
OPEN_DEBUG_FILE()
|
|
bOpenedDebugFile = TRUE
|
|
ENDIF
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("[")SAVE_STRING_TO_DEBUG_FILE(str)SAVE_STRING_TO_DEBUG_FILE(":")SAVE_STRING_TO_DEBUG_FILE(tAudioBlockLabel)SAVE_STRING_TO_DEBUG_FILE("]")SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(tMessage)SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
|
|
ENDREPEAT
|
|
|
|
IF bOpenedDebugFile
|
|
CLOSE_DEBUG_FILE()
|
|
bOpenedDebugFile = FALSE
|
|
ELSE
|
|
CPRINTLN(DEBUG_FRIENDS, "no missing friend dialogue :)")
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_TestFriendPhoneDialogue(WIDGET_GROUP_ID& hParentWidgetGroup, BOOL& bTestFriendPhonecalls)
|
|
|
|
INT iTestSpeaker, iTestListener, iTestConn, iTestConv
|
|
TEXT_WIDGET_ID label_textWidget, block_textWidget, speech_textWidget
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
WIDGET_GROUP_ID testFriendPhonecalls_widget = START_WIDGET_GROUP("testFriendPhonecalls")
|
|
ADD_WIDGET_BOOL("bTestFriendPhonecalls", bTestFriendPhonecalls)
|
|
|
|
enumFriend eFri
|
|
START_NEW_WIDGET_COMBO()
|
|
REPEAT MAX_FRIENDS eFri
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriend(eFri))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestSpeaker", iTestSpeaker)
|
|
START_NEW_WIDGET_COMBO()
|
|
REPEAT MAX_FRIENDS eFri
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriend(eFri))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestListener", iTestListener)
|
|
START_NEW_WIDGET_COMBO()
|
|
enumFriendConnection eConn
|
|
REPEAT MAX_FRIEND_CONNECTIONS eConn
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriendConnection(eConn))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestConn", iTestConn)
|
|
|
|
START_NEW_WIDGET_COMBO()
|
|
enumFriendPhonePhrase eConv
|
|
REPEAT MAX_FRIEND_PHONE_PHRASE eConv
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriendPhonePhrase(eConv))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestConv", iTestConv)
|
|
|
|
block_textWidget = ADD_TEXT_WIDGET("block")
|
|
label_textWidget = ADD_TEXT_WIDGET("label")
|
|
speech_textWidget = ADD_TEXT_WIDGET("speech")
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
enumFriend eThisSpeaker, eThisListener
|
|
eThisSpeaker = GET_FRIEND_FROM_CHAR(GET_CURRENT_PLAYER_PED_ENUM())
|
|
eThisListener = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisSpeaker)+1)
|
|
|
|
enumFriendConnection eThisConn
|
|
eThisConn = GET_CONNECTION_FROM_FRIENDS(eThisSpeaker, eThisListener)
|
|
|
|
enumFriendPhonePhrase eThisConv
|
|
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
iTestConn = ENUM_TO_INT(eThisConn)
|
|
iTestConv = ENUM_TO_INT(eThisConv)
|
|
|
|
WHILE bTestFriendPhonecalls
|
|
|
|
IF (eThisSpeaker <> INT_TO_ENUM(enumFriend, iTestSpeaker))
|
|
eThisSpeaker = INT_TO_ENUM(enumFriend, iTestSpeaker)
|
|
|
|
IF (eThisListener = eThisSpeaker)
|
|
eThisListener = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisSpeaker)+1)
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
ENDIF
|
|
|
|
IF eThisSpeaker = FR_LAMAR
|
|
IF (eThisListener <> FR_FRANKLIN)
|
|
eThisListener = FR_FRANKLIN
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF (eThisListener <> INT_TO_ENUM(enumFriend, iTestListener))
|
|
eThisListener = INT_TO_ENUM(enumFriend, iTestListener)
|
|
|
|
IF (eThisSpeaker = eThisListener)
|
|
eThisSpeaker = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisListener)+1)
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
ENDIF
|
|
|
|
IF eThisListener = FR_LAMAR
|
|
IF (eThisSpeaker <> FR_FRANKLIN)
|
|
eThisSpeaker = FR_FRANKLIN
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
eThisConn = GET_CONNECTION_FROM_FRIENDS(eThisSpeaker, eThisListener)
|
|
iTestConn = ENUM_TO_INT(eThisConn)
|
|
|
|
IF (eThisConv <> INT_TO_ENUM(enumFriendPhonePhrase, iTestConv))
|
|
eThisConv = INT_TO_ENUM(enumFriendPhonePhrase, iTestConv)
|
|
ENDIF
|
|
|
|
TEXT_LABEL tBlock = ""
|
|
TEXT_LABEL tLabel = ""
|
|
Private_GetFriendPhonePhrase(GET_CHAR_FROM_FRIEND(eThisSpeaker), GET_CHAR_FROM_FRIEND(eThisListener), eThisConv, tBlock, tLabel)
|
|
|
|
SET_CONTENTS_OF_TEXT_WIDGET(block_textWidget, tBlock)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(label_textWidget, tLabel)
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tBlock, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tBlock, PHONE_TEXT_SLOT)
|
|
ENDIF
|
|
|
|
TEXT_LABEL tDialogueFile = tLabel
|
|
tDialogueFile += "_01"
|
|
STRING sSpeech = GET_STRING_FROM_TEXT_FILE(tDialogueFile)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(speech_textWidget, sSpeech)
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
IF DOES_WIDGET_GROUP_EXIST(testFriendPhonecalls_widget)
|
|
DELETE_WIDGET_GROUP(testFriendPhonecalls_widget)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_TestFriendActivityDialogue(WIDGET_GROUP_ID& hParentWidgetGroup, BOOL& bTestFriendContexts)
|
|
// enumFriendAudioBlock bContext = FAB_a_cellp""hone
|
|
|
|
INT iTestSpeaker, iTestListener, iTestConn, iTestConv
|
|
TEXT_WIDGET_ID label_textWidget, block_textWidget, speech_textWidget
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
WIDGET_GROUP_ID testFriendContexts_widget = START_WIDGET_GROUP("testFriendContexts")
|
|
ADD_WIDGET_BOOL("bTestFriendContexts", bTestFriendContexts)
|
|
|
|
enumFriend eFri
|
|
START_NEW_WIDGET_COMBO()
|
|
REPEAT MAX_FRIENDS eFri
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriend(eFri))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestSpeaker", iTestSpeaker)
|
|
START_NEW_WIDGET_COMBO()
|
|
REPEAT MAX_FRIENDS eFri
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriend(eFri))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestListener", iTestListener)
|
|
START_NEW_WIDGET_COMBO()
|
|
enumFriendConnection eConn
|
|
REPEAT MAX_FRIEND_CONNECTIONS eConn
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriendConnection(eConn))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestConn", iTestConn)
|
|
|
|
START_NEW_WIDGET_COMBO()
|
|
enumFriendActivityPhrase eConv
|
|
REPEAT MAX_FRIEND_ACTIVITY_PHRASES eConv
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriendActivityPhrase(eConv))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestConv", iTestConv)
|
|
|
|
block_textWidget = ADD_TEXT_WIDGET("block")
|
|
label_textWidget = ADD_TEXT_WIDGET("label")
|
|
speech_textWidget = ADD_TEXT_WIDGET("speech")
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
enumFriend eThisSpeaker, eThisListener
|
|
eThisSpeaker = GET_FRIEND_FROM_CHAR(GET_CURRENT_PLAYER_PED_ENUM())
|
|
eThisListener = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisSpeaker)+1)
|
|
|
|
enumFriendConnection eThisConn
|
|
eThisConn = GET_CONNECTION_FROM_FRIENDS(eThisSpeaker, eThisListener)
|
|
|
|
enumFriendActivityPhrase eThisConv
|
|
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
iTestConn = ENUM_TO_INT(eThisConn)
|
|
iTestConv = ENUM_TO_INT(eThisConv)
|
|
|
|
WHILE bTestFriendContexts
|
|
|
|
IF (eThisSpeaker <> INT_TO_ENUM(enumFriend, iTestSpeaker))
|
|
eThisSpeaker = INT_TO_ENUM(enumFriend, iTestSpeaker)
|
|
|
|
IF (eThisListener = eThisSpeaker)
|
|
eThisListener = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisSpeaker)+1)
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
ENDIF
|
|
|
|
IF eThisSpeaker = FR_LAMAR
|
|
IF (eThisListener <> FR_FRANKLIN)
|
|
eThisListener = FR_FRANKLIN
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF (eThisListener <> INT_TO_ENUM(enumFriend, iTestListener))
|
|
eThisListener = INT_TO_ENUM(enumFriend, iTestListener)
|
|
|
|
IF (eThisSpeaker = eThisListener)
|
|
eThisSpeaker = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisListener)+1)
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
ENDIF
|
|
|
|
IF eThisListener = FR_LAMAR
|
|
IF (eThisSpeaker <> FR_FRANKLIN)
|
|
eThisSpeaker = FR_FRANKLIN
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
eThisConn = GET_CONNECTION_FROM_FRIENDS(eThisSpeaker, eThisListener)
|
|
iTestConn = ENUM_TO_INT(eThisConn)
|
|
|
|
IF (eThisConv <> INT_TO_ENUM(enumFriendActivityPhrase, iTestConv))
|
|
eThisConv = INT_TO_ENUM(enumFriendActivityPhrase, iTestConv)
|
|
ENDIF
|
|
|
|
TEXT_LABEL tBlock = ""
|
|
TEXT_LABEL tLabel = ""
|
|
Private_GetFriendActivityPhrase(GET_CHAR_FROM_FRIEND(eThisSpeaker), GET_CHAR_FROM_FRIEND(eThisListener), eThisConv, tBlock, tLabel)
|
|
|
|
SET_CONTENTS_OF_TEXT_WIDGET(block_textWidget, tBlock)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(label_textWidget, tLabel)
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tBlock, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tBlock, PHONE_TEXT_SLOT)
|
|
ENDIF
|
|
|
|
TEXT_LABEL tDialogueFile = tLabel
|
|
tDialogueFile += "_01"
|
|
STRING sSpeech = GET_STRING_FROM_TEXT_FILE(tDialogueFile)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(speech_textWidget, sSpeech)
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
IF DOES_WIDGET_GROUP_EXIST(testFriendContexts_widget)
|
|
DELETE_WIDGET_GROUP(testFriendContexts_widget)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC PRIVATE_DEBUG_TestFriendTextMessages(WIDGET_GROUP_ID& hParentWidgetGroup, BOOL& bTestFriendTextMessages)
|
|
// enumFriendAudioBlock eAudioBlock = FAB_b
|
|
|
|
INT iTestSpeaker, iTestListener, iTestConn, iTestConv, iTestMsgCount = -1
|
|
TEXT_WIDGET_ID label_textWidget, block_textWidget, message_textWidget
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
WIDGET_GROUP_ID testFriendtextmessages_widget = START_WIDGET_GROUP("testFriendtextmessages")
|
|
ADD_WIDGET_BOOL("bTestFriendTextMessages", bTestFriendTextMessages)
|
|
|
|
enumFriend eFri
|
|
START_NEW_WIDGET_COMBO()
|
|
REPEAT MAX_FRIENDS eFri
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriend(eFri))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestSpeaker", iTestSpeaker)
|
|
START_NEW_WIDGET_COMBO()
|
|
REPEAT MAX_FRIENDS eFri
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriend(eFri))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestListener", iTestListener)
|
|
START_NEW_WIDGET_COMBO()
|
|
enumFriendConnection eConn
|
|
REPEAT MAX_FRIEND_CONNECTIONS eConn
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriendConnection(eConn))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestConn", iTestConn)
|
|
|
|
START_NEW_WIDGET_COMBO()
|
|
enumFriendTextMessage eTxt
|
|
REPEAT MAX_FRIEND_TEXT_MESSAGES eTxt
|
|
ADD_TO_WIDGET_COMBO(GetLabel_enumFriendTextMessage(eTxt))
|
|
ENDREPEAT
|
|
STOP_WIDGET_COMBO("iTestConv", iTestConv)
|
|
|
|
ADD_WIDGET_INT_SLIDER("iTestMsgCount", iTestMsgCount, -1, 10, 1)
|
|
|
|
label_textWidget = ADD_TEXT_WIDGET("label")
|
|
block_textWidget = ADD_TEXT_WIDGET("block")
|
|
message_textWidget = ADD_TEXT_WIDGET("message")
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
enumFriend eThisSpeaker, eThisListener
|
|
eThisSpeaker = GET_FRIEND_FROM_CHAR(GET_CURRENT_PLAYER_PED_ENUM())
|
|
eThisListener = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisSpeaker)+1)
|
|
|
|
enumFriendConnection eThisConn
|
|
eThisConn = GET_CONNECTION_FROM_FRIENDS(eThisSpeaker, eThisListener)
|
|
|
|
enumFriendTextMessage eThisTxt
|
|
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
iTestConn = ENUM_TO_INT(eThisConn)
|
|
iTestConv = ENUM_TO_INT(eThisTxt)
|
|
|
|
BOOL bReloadBlock = TRUE
|
|
WHILE bTestFriendTextMessages
|
|
|
|
IF (eThisSpeaker <> INT_TO_ENUM(enumFriend, iTestSpeaker))
|
|
eThisSpeaker = INT_TO_ENUM(enumFriend, iTestSpeaker)
|
|
bReloadBlock = TRUE
|
|
|
|
IF (eThisListener = eThisSpeaker)
|
|
eThisListener = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisSpeaker)+1)
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
ENDIF
|
|
|
|
IF eThisSpeaker = FR_LAMAR
|
|
IF (eThisListener <> FR_FRANKLIN)
|
|
eThisListener = FR_FRANKLIN
|
|
iTestListener = ENUM_TO_INT(eThisListener)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF (eThisListener <> INT_TO_ENUM(enumFriend, iTestListener))
|
|
eThisListener = INT_TO_ENUM(enumFriend, iTestListener)
|
|
bReloadBlock = TRUE
|
|
|
|
IF (eThisSpeaker = eThisListener)
|
|
eThisSpeaker = INT_TO_ENUM(enumFriend, ENUM_TO_INT(eThisListener)+1)
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
ENDIF
|
|
|
|
IF eThisListener = FR_LAMAR
|
|
IF (eThisSpeaker <> FR_FRANKLIN)
|
|
eThisSpeaker = FR_FRANKLIN
|
|
iTestSpeaker = ENUM_TO_INT(eThisSpeaker)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
eThisConn = GET_CONNECTION_FROM_FRIENDS(eThisSpeaker, eThisListener)
|
|
iTestConn = ENUM_TO_INT(eThisConn)
|
|
|
|
IF (eThisTxt <> INT_TO_ENUM(enumFriendTextMessage, iTestConv))
|
|
eThisTxt = INT_TO_ENUM(enumFriendTextMessage, iTestConv)
|
|
bReloadBlock = TRUE
|
|
ENDIF
|
|
|
|
TEXT_LABEL tBlock = "FRIENDS" //PRIVATE_Friend_GetAudioBlock(eThisConn, FAB_chat)
|
|
TEXT_LABEL tLabel = ""
|
|
Private_GetFriendTextMessageLabel(eThisSpeaker, eThisTxt, iTestMsgCount, tLabel)
|
|
|
|
IF bReloadBlock
|
|
DEBUG_RequestAndWaitAdditionalText(tBlock, PHONE_TEXT_SLOT)
|
|
bReloadBlock = FALSE
|
|
ENDIF
|
|
|
|
STRING sMessage = GET_STRING_FROM_TEXT_FILE(tLabel)
|
|
|
|
SET_CONTENTS_OF_TEXT_WIDGET(block_textWidget, tBlock)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(label_textWidget, tLabel)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(message_textWidget, sMessage)
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
IF DOES_WIDGET_GROUP_EXIST(testFriendtextmessages_widget)
|
|
DELETE_WIDGET_GROUP(testFriendtextmessages_widget)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/*
|
|
PROC PRIVATE_DEBUG_TestAllLamarDialogue(WIDGET_GROUP_ID& hParentWidgetGroup, BOOL& bTestAllLamarDialogue)
|
|
|
|
structPedsForConversation inSpeechStruct
|
|
|
|
BOOL bFriendConvBit_toggle[3], bTestThisLabel
|
|
TEXT_WIDGET_ID label_textWidget, block_textWidget, speech_textWidget
|
|
|
|
enumFriendConnection eConnect = FC_FRANKLIN_LAMAR
|
|
TEXT_LABEL tBlock = "FRLFbAU"
|
|
|
|
// UPDATE_FRIEND_CONVERSATION_STAGE(CHAR_FRANKLIN, CHAR_LAMAR, FGS_stageEarly)
|
|
|
|
SET_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
WIDGET_GROUP_ID testAllLamarDialogue_widget = START_WIDGET_GROUP("testAllLamarDialogue")
|
|
|
|
START_WIDGET_GROUP("convStruct")
|
|
ADD_WIDGET_INT_SLIDER("iMainConv", g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.iMainConv, 0, 10, 1)
|
|
ADD_WIDGET_INT_SLIDER("iMiniConv", g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.iMiniConv, 0, 10, 1)
|
|
ADD_WIDGET_INT_SLIDER("iDrunkConv", g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.iDrunkConv,0, 10, 1)
|
|
STOP_WIDGET_GROUP()
|
|
START_WIDGET_GROUP("enumFriendConvBit")
|
|
ADD_WIDGET_BOOL("FGS_stageEarly", bFriendConvBit_toggle[0])
|
|
ADD_WIDGET_BOOL("FGS_stageMid", bFriendConvBit_toggle[1])
|
|
ADD_WIDGET_BOOL("FGS_stageEnd", bFriendConvBit_toggle[2])
|
|
|
|
// ADD_WIDGET_BOOL("FC_invalid", bFriendConvBit_toggle[5])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
block_textWidget = ADD_TEXT_WIDGET("block")
|
|
label_textWidget = ADD_TEXT_WIDGET("label")
|
|
speech_textWidget = ADD_TEXT_WIDGET("speech")
|
|
|
|
ADD_WIDGET_BOOL("bTestThisLabel", bTestThisLabel)
|
|
STOP_WIDGET_GROUP()
|
|
CLEAR_CURRENT_WIDGET_GROUP(hParentWidgetGroup)
|
|
|
|
WHILE bTestAllLamarDialogue
|
|
//FC_stageEarly
|
|
IF bFriendConvBit_toggle[0]
|
|
g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.eGameStage = FGS_stageEarly
|
|
bFriendConvBit_toggle[0] = FALSE
|
|
ENDIF
|
|
|
|
//FC_stageMid
|
|
IF bFriendConvBit_toggle[1]
|
|
g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.eGameStage = FGS_stageMid
|
|
bFriendConvBit_toggle[1] = FALSE
|
|
ENDIF
|
|
|
|
//FC_stageLate
|
|
IF bFriendConvBit_toggle[2]
|
|
g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.eGameStage = FGS_stageLate
|
|
bFriendConvBit_toggle[2] = FALSE
|
|
ENDIF
|
|
|
|
TEXT_LABEL tLabel = "FR_LF_"
|
|
// BOOL bFoundstateBit = FALSE
|
|
// IF IS_BITMASK_AS_ENUM_SET(g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.stateBit, FGS_stageEarly)
|
|
// bFoundstateBit = TRUE
|
|
// tLabel += "E"
|
|
// ENDIF
|
|
// IF IS_BITMASK_AS_ENUM_SET(g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.stateBit, FGS_stageMid)
|
|
// bFoundstateBit = TRUE
|
|
// tLabel += "M"
|
|
// ENDIF
|
|
// IF IS_BITMASK_AS_ENUM_SET(g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.stateBit, FGS_stageLate)
|
|
// bFoundstateBit = TRUE
|
|
// tLabel += "L"
|
|
// ENDIF
|
|
// IF NOT bFoundstateBit
|
|
// tLabel += "X"
|
|
// ENDIF
|
|
//
|
|
// BOOL bFoundType = FALSE
|
|
// IF IS_BITMASK_AS_ENUM_SET(g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.stateBit, FC_typeConv)
|
|
// bFoundType = TRUE
|
|
// tLabel += "C"
|
|
// ENDIF
|
|
// IF IS_BITMASK_AS_ENUM_SET(g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.stateBit, FC_typeMini)
|
|
// bFoundType = TRUE
|
|
// tLabel += "M"
|
|
// ENDIF
|
|
// IF NOT bFoundType
|
|
// tLabel += "X"
|
|
// ENDIF
|
|
//
|
|
// tLabel += g_SavedGlobals.sFriendsData.g_FriendConnectData[eConnect].convStruct.count
|
|
|
|
|
|
IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED(tBlock, PHONE_TEXT_SLOT)
|
|
DEBUG_RequestAndWaitAdditionalText(tBlock, PHONE_TEXT_SLOT)
|
|
ENDIF
|
|
|
|
SET_CONTENTS_OF_TEXT_WIDGET(block_textWidget, tBlock)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(label_textWidget, tLabel)
|
|
|
|
TEXT_LABEL tDialogueFile_1 = tLabel
|
|
tDialogueFile_1 += "_1"
|
|
|
|
IF DOES_TEXT_LABEL_EXIST(tDialogueFile_1)
|
|
STRING sSpeech_1 = GET_STRING_FROM_TEXT_FILE(tDialogueFile_1)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(speech_textWidget, sSpeech_1)
|
|
|
|
IF bTestThisLabel
|
|
ADD_PED_FOR_DIALOGUE(inSpeechStruct, 0, NULL, "LAMAR")
|
|
ADD_PED_FOR_DIALOGUE(inSpeechStruct, 1, NULL, "FRANKLIN")
|
|
|
|
KILL_ANY_CONVERSATION()
|
|
IF CREATE_CONVERSATION(inSpeechStruct, tBlock, tLabel,
|
|
CONV_PRIORITY_AMBIENT_MEDIUM)
|
|
bTestThisLabel = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELSE
|
|
SET_CONTENTS_OF_TEXT_WIDGET(speech_textWidget, "NONE")
|
|
bTestThisLabel = FALSE
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
IF DOES_WIDGET_GROUP_EXIST(testAllLamarDialogue_widget)
|
|
DELETE_WIDGET_GROUP(testAllLamarDialogue_widget)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
*/
|
|
PROC PRIVATE_DEBUG_PrintInvolvedFriendsList()
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "Printing full mission \"involved friends\" list to temp_debug.txt")
|
|
OPEN_DEBUG_FILE()
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Full mission \"Involved friends\" list")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SP_MISSIONS eMissionID
|
|
REPEAT SP_MISSION_MAX eMissionID
|
|
IF eMissionID <> SP_MISSION_NONE
|
|
TEXT_LABEL_63 tMission = GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID)
|
|
TEXT_LABEL_63 tInvolved = GetLabel_InvolvedFriends(eMissionID)
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(tMission)
|
|
SAVE_STRING_TO_DEBUG_FILE(": ")
|
|
SAVE_STRING_TO_DEBUG_FILE(tInvolved)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
CLOSE_DEBUG_FILE()
|
|
|
|
ENDPROC
|
|
|
|
PROC PRIVATE_DEBUG_PrintMissionsCloseToLocations()
|
|
|
|
IF OPEN_DEBUG_FILE()
|
|
|
|
CPRINTLN(DEBUG_FRIENDS, "\n\n\nPrinting missions close to locations to temp_debug.txt\n")
|
|
SAVE_STRING_TO_DEBUG_FILE("\nMissions close to activity locations...\n")
|
|
|
|
// For each story mission
|
|
SP_MISSIONS eMission
|
|
REPEAT SP_MISSION_MAX eMission
|
|
// Get mission name
|
|
TEXT_LABEL_63 tMission = GetLabel_SP_MISSIONS(eMission)
|
|
|
|
// Get mission pos
|
|
VECTOR vMissionPos
|
|
STATIC_BLIP_NAME_ENUM eMissionBlip
|
|
|
|
eMissionBlip = g_sMissionStaticData[eMission].blip
|
|
IF eMissionBlip <> STATIC_BLIP_NAME_DUMMY_FINAL
|
|
IF IS_STATIC_BLIP_MULTIMODE(eMissionBlip)
|
|
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip, GET_CURRENT_PLAYER_PED_INT())
|
|
ELSE
|
|
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip)
|
|
ENDIF
|
|
|
|
// For each activity location
|
|
enumActivityLocation eLoc
|
|
REPEAT MAX_ACTIVITY_LOCATIONS eLoc
|
|
// Get location name
|
|
TEXT_LABEL_63 tLoc = GetLabel_enumActivityLocation(eLoc)
|
|
|
|
// Get location pos
|
|
VECTOR vLocPos = GET_STATIC_BLIP_POSITION(g_ActivityLocations[eLoc].sprite)
|
|
|
|
// If too close, print out
|
|
FLOAT fDist = VDIST(vMissionPos, vLocPos)
|
|
IF fDist <= 100.0
|
|
SAVE_STRING_TO_DEBUG_FILE(" Mission \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(tMission)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" is close to \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(tLoc)
|
|
SAVE_STRING_TO_DEBUG_FILE("\", dist = ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fDist)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("\nMissions close to friend locations...\n")
|
|
|
|
REPEAT SP_MISSION_MAX eMission
|
|
// Get mission name
|
|
TEXT_LABEL_63 tMission = GetLabel_SP_MISSIONS(eMission)
|
|
|
|
// Get mission pos
|
|
VECTOR vMissionPos
|
|
STATIC_BLIP_NAME_ENUM eMissionBlip
|
|
|
|
eMissionBlip = g_sMissionStaticData[eMission].blip
|
|
IF eMissionBlip <> STATIC_BLIP_NAME_DUMMY_FINAL
|
|
IF IS_STATIC_BLIP_MULTIMODE(eMissionBlip)
|
|
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip, GET_CURRENT_PLAYER_PED_INT())
|
|
ELSE
|
|
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip)
|
|
ENDIF
|
|
|
|
// For each friend location
|
|
enumFriendLocation eLoc
|
|
REPEAT MAX_FRIEND_LOCATIONS eLoc
|
|
IF eLoc <> FLOC_adhoc
|
|
// Get location name
|
|
TEXT_LABEL_63 tLoc = GetLabel_enumFriendLocation(eLoc)
|
|
|
|
// Get location pos
|
|
VECTOR vLocPos = FriendLoc_GetCoord(eLoc)
|
|
|
|
// If too close, print out
|
|
FLOAT fDist = VDIST(vMissionPos, vLocPos)
|
|
IF fDist <= 100.0
|
|
SAVE_STRING_TO_DEBUG_FILE(" Mission \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(tMission)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" is close to \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(tLoc)
|
|
SAVE_STRING_TO_DEBUG_FILE("\", dist = ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fDist)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("\nEnd\n\n\n")
|
|
CLOSE_DEBUG_FILE()
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
#ENDIF
|