Files
gtav-src/script/dev_ng/singleplayer/scripts/deathResponse/buddyDeathResponse.sc
T
2025-09-29 00:52:08 +02:00

194 lines
6.1 KiB
Python
Executable File

//Compile out Title Update changes to header functions.
//Must be before includes.
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
USING "commands_ped.sch"
USING "script_player.sch"
USING "player_ped_public.sch"
USING "dialogue_public.sch"
USING "commands_debug.sch"
USING "commands_replay.sch"
//USING "charsheet_global.sch"
int iped
enumCharacterList ePed
ped_index nearbyBuddy
FUNC BOOL GET_NEARBY_BUDDY(ped_index &pNeabyBuddy)
REPEAT NUM_PLAYER_PED_IDS iPed
IF DOES_ENTITY_EXIST(g_piCreatedPlayerPedIDs[iPed])
AND NOT IS_PED_INJURED(g_piCreatedPlayerPedIDs[iPed])
// cprintln(debug_Trevor3,"ped: ",iped)
IF g_piCreatedPlayerPedIDs[iPed] != PLAYER_PED_ID()
IF NOT IS_ENTITY_A_MISSION_ENTITY(g_piCreatedPlayerPedIDs[iPed])
// cprintln(debug_Trevor3,"not mission ped")
IF IS_PED_IN_ANY_VEHICLE(g_piCreatedPlayerPedIDs[iPed])
OR NOT IS_ENTITY_ATTACHED(g_piCreatedPlayerPedIDs[iPed])
// cprintln(debug_Trevor3,"not player")
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(g_piCreatedPlayerPedIDs[iPed]),GET_ENTITY_COORDS(player_ped_id(),false)) < 10
// cprintln(debug_Trevor3,"close")
ePed = GET_PLAYER_PED_ENUM(g_piCreatedPlayerPedIDs[iPed])
// cprintln(debug_Trevor3,"ePed = ",ePed)
IF ePed = CHAR_MICHAEL
OR ePed = CHAR_TREVOR
OR ePed = CHAR_FRANKLIN
// cprintln(debug_Trevor3,"is a player character")
IF ePed != GET_CURRENT_PLAYER_PED_ENUM()
IF HAS_ENTITY_CLEAR_LOS_TO_ENTITY(g_piCreatedPlayerPedIDs[iPed],PLAYER_PED_ID())
vehicle_index aVeh
IF IS_PED_IN_ANY_VEHICLE(g_piCreatedPlayerPedIDs[iPed])
aVeh = GET_VEHICLE_PED_IS_IN(g_piCreatedPlayerPedIDs[iPed])
ENDIF
IF (DOES_ENTITY_EXIST(aVeh) AND IS_VEHICLE_DRIVEABLE(aveh))
OR NOT DOES_ENTITY_EXIST(aVeh)
pNeabyBuddy = g_piCreatedPlayerPedIDs[iPed]
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
IF IS_SCREEN_FADED_OUT()
// cprintln(debug_Trevor3,"Exit cos screenfaded")
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
/*GET_PED_NEARBY_PEDS(player_ped_id(),pedArray,PEDTYPE_INVALID)
REPEAT COUNT_OF(pedArray) i
IF NOT IS_PED_INJURED(pedArray[i])
THIS_MODEL = GET_ENTITY_MODEL(pedArray[i])
IF THIS_MODEL = MODEL_FRANKLIN
OR THIS_MODEL = MODEL_TREVOR
OR THIS_MODEL = MODEL_MICHAEL
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedArray[i]),GET_ENTITY_COORDS(player_ped_id(),false)) < 10
pNeabyBuddy = pedArray[i]
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC*/
PROC DO_DEATH_COMMENT(ped_index speakingPed)
// cprintln(debug_trevor3,"DO_DEATH_COMMENT wait")
int iPauseTime = GET_GAME_TIMER() + 1000
WHILE GET_GAME_TIMER() < iPauseTime
AND NOT IS_SCREEN_FADED_OUT() //force skip this bit if screem fades out
wait(0)
ENDWHILE
// cprintln(debug_trevor3,"DO_DEATH_COMMENT go")
IF NOT IS_PED_INJURED(speakingPed)
// cprintln(debug_trevor3,"Play speaking line")
IF ePed = CHAR_FRANKLIN
SWITCH GET_PLAYER_PED_ENUM(player_ped_id())
CASE CHAR_TREVOR
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(speakingPed, "BUDDY_SEES_TREVOR_DEATH", "FRANKLIN_NORMAL",SPEECH_PARAMS_FORCE)//SPEECH_PARAMS_ALLOW_REPEAT) // | SPEECH_PARAMS_FORCE_FRONTEND)
BREAK
CASE CHAR_MICHAEL
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(speakingPed, "BUDDY_SEES_MICHAEL_DEATH", "FRANKLIN_NORMAL",SPEECH_PARAMS_FORCE)
BREAK
ENDSWITCH
ELIF ePed = CHAR_TREVOR
SWITCH GET_PLAYER_PED_ENUM(player_ped_id())
CASE CHAR_FRANKLIN
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(speakingPed, "BUDDY_SEES_FRANKLIN_DEATH", "TREVOR_NORMAL",SPEECH_PARAMS_FORCE)//SPEECH_PARAMS_ALLOW_REPEAT) // | SPEECH_PARAMS_FORCE_FRONTEND)
BREAK
CASE CHAR_MICHAEL
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(speakingPed, "BUDDY_SEES_MICHAEL_DEATH", "TREVOR_NORMAL",SPEECH_PARAMS_FORCE)
BREAK
ENDSWITCH
//,SPEECH_PARAMS_ALLOW_REPEAT)// | SPEECH_PARAMS_FORCE_FRONTEND)
ELIF ePed = CHAR_MICHAEL
SWITCH GET_PLAYER_PED_ENUM(player_ped_id())
CASE CHAR_TREVOR
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(speakingPed, "BUDDY_SEES_TREVOR_DEATH", "MICHAEL_NORMAL",SPEECH_PARAMS_FORCE)//SPEECH_PARAMS_ALLOW_REPEAT) // | SPEECH_PARAMS_FORCE_FRONTEND)
BREAK
CASE CHAR_FRANKLIN
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(speakingPed, "BUDDY_SEES_FRANKLIN_DEATH", "MICHAEL_NORMAL",SPEECH_PARAMS_FORCE)
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDPROc
PROC DEATH_RESPONSE()
WHILE NOT GET_NEARBY_BUDDY(nearbyBuddy)
WAIT(0)
ENDWHILE
IF NOT IS_PED_INJURED(nearbyBuddy)
IF NOT g_bDontLetBuddiesReactToNextPlayerDeath
SET_ENTITY_AS_MISSION_ENTITY(nearbyBuddy,TRUE,TRUE)
IF GET_SCRIPT_TASK_STATUS(nearbyBuddy,SCRIPT_TASK_ANY) != FINISHED_TASK
CLEAR_PED_TASKS(nearbyBuddy)
ENDIf
vector vTemp = GET_ENTITY_COORDS(player_ped_id(),false)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(nearbyBuddy,TRUE)
sequence_index seq
OPEN_SEQUENCE_TASK(seq)
IF NOT IS_PED_IN_ANY_VEHICLE(nearbyBuddy)
IF NOT IS_PED_IN_COMBAT(nearbyBuddy)
AND NOT IS_PED_IN_ANY_VEHICLE(nearbyBuddy)
TASK_TURN_PED_TO_FACE_COORD(null,vTemp,6000)
ENDIF
ENDIF
TASK_LOOK_AT_COORD(null,vTemp,6000)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(nearbyBuddy,seq)
ENDIF
DO_DEATH_COMMENT(nearbyBuddy)
ENDIF
WHILE NOT IS_SCREEN_FADED_OUT()
WAIT(0)
ENDWHILE
//cleanup grabbed ped
IF DOES_ENTITY_EXIST(nearbyBuddy)
IF NOT IS_PED_INJURED(nearbyBuddy)
SET_PED_KEEP_TASK(nearbyBuddy,TRUE)
ENDIF
SET_PED_AS_NO_LONGER_NEEDED(nearbyBuddy)
ENDIF
g_bDontLetBuddiesReactToNextPlayerDeath = FALSE
TERMINATE_THIS_THREAD()
ENDPROC
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP)
OR REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP()
TERMINATE_THIS_THREAD()
ENDIF
DEATH_RESPONSE()
ENDSCRIPT