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

213 lines
4.9 KiB
Python
Executable File

#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
// ..........................
// : Fraser Morgan :
// : Speech Reverb Tracker :
// : 10/10/2012 :
// ..........................
USING "rage_builtins.sch"
USING "globals.sch"
USING "brains.sch"
USING "script_player.sch"
USING "script_ped.sch"
USING "commands_script.sch"
USING "commands_pad.sch"
USING "commands_ped.sch"
USING "commands_graphics.sch"
USING "commands_camera.sch"
USING "commands_streaming.sch"
USING "commands_interiors.sch"
USING "commands_task.sch"
USING "commands_object.sch"
USING "commands_physics.sch"
USING "commands_player.sch"
USING "commands_misc.sch"
USING "dialogue_public.sch"
USING "flow_public_core_override.sch"
USING "weapon_enums.sch"
PED_INDEX REVERB_PED
WIDGET_GROUP_ID reverbingPedWidgets
BOOL bCreatePed
BOOL bSpeech
BOOL bDeletePed
BOOL bTerminate
BOOL bSpeechWaitDelete
INT iTime = 1500
VECTOR vFront, vSide, vUp, vPos
VECTOR vPedPos, vTransformedPedPos
VECTOR vClickPos
FLOAT fDelta = 0
FLOAT fPedPos = 1
PROC MISSION_CLEANUP()
IF DOES_WIDGET_GROUP_EXIST(reverbingPedWidgets)
DELETE_WIDGET_GROUP(reverbingPedWidgets)
ENDIF
IF DOES_ENTITY_EXIST(REVERB_PED)
DELETE_PED(REVERB_PED)
ENDIF
TERMINATE_THIS_THREAD()
ENDPROC
PROC CLICK_UPDATER()
IF IS_MOUSE_BUTTON_JUST_PRESSED(MB_LEFT_BTN)
vClickPos = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
IF DOES_ENTITY_EXIST(REVERB_PED)
DELETE_PED(REVERB_PED)
ENDIF
REQUEST_MODEL(A_F_Y_BEVHILLS_01)
IF NOT HAS_MODEL_LOADED(A_F_Y_BEVHILLS_01)
WAIT(1500)
ENDIF
REVERB_PED = CREATE_PED(PEDTYPE_CIVFEMALE, A_F_Y_BEVHILLS_01, vClickPos)
SET_ENTITY_HEADING(REVERB_PED, (GET_ENTITY_HEADING(PLAYER_PED_ID())))
bCreatePed = FALSE
ENDIF
IF IS_MOUSE_BUTTON_JUST_PRESSED(MB_RIGHT_BTN)
IF DOES_ENTITY_EXIST(REVERB_PED)
bSpeechWaitDelete = TRUE
ENDIF
ENDIF
ENDPROC
PROC PED_BEHAVIOURS()
IF DOES_ENTITY_EXIST(REVERB_PED) AND NOT IS_ENTITY_DEAD(REVERB_PED)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(REVERB_PED, TRUE)
ENDIF
ENDPROC
PROC CREATE_WIDGETS()
reverbingPedWidgets = START_WIDGET_GROUP("Speech Reverb Tracker")
ADD_WIDGET_BOOL("Create Ped", bCreatePed)
ADD_WIDGET_BOOL("Trigger Ambient Speech", bSpeech)
ADD_WIDGET_BOOL("Delete Ped", bDeletePed)
ADD_WIDGET_STRING("")
ADD_WIDGET_INT_SLIDER("Time before deletion", iTime, 0, 5500, 100)
ADD_WIDGET_BOOL("Speech, Wait, Delete", bSpeechWaitDelete)
ADD_WIDGET_STRING("")
ADD_WIDGET_STRING("::TO USE MOUSE CLICK TO SPAWN A PED::")
ADD_WIDGET_STRING("1. Highlight Script bank in RAG")
ADD_WIDGET_STRING("2. Click [Toggle Script Bank] then navigate to Script -> Script Debug Tools")
ADD_WIDGET_STRING("3. Click [Enable / Disable Debugging]")
ADD_WIDGET_STRING("4. Click anywhere on screen to spawn the ped.")
ADD_WIDGET_STRING("(you may need to restart this script)")
ADD_WIDGET_BOOL("Terminate Script", bTerminate)
STOP_WIDGET_GROUP()
ENDPROC
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED()
MISSION_CLEANUP()
ENDIF
CREATE_WIDGETS()
WHILE TRUE
WAIT(0)
PED_BEHAVIOURS()
CLICK_UPDATER()
GET_ENTITY_MATRIX(PLAYER_PED_ID(), vFront, vSide, vUp, vPos)
vTransformedPedPos = vPos + fDelta * vSide
vPedPos = vTransformedPedPos + vFront * fPedPos
IF bSpeechWaitDelete
IF DOES_ENTITY_EXIST(REVERB_PED)
TASK_TURN_PED_TO_FACE_ENTITY(REVERB_PED, PLAYER_PED_ID(), 0)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(REVERB_PED, "PHONE_CONV1_CHAT3", "A_F_M_BEVHILLS_02_WHITE_FULL_01", "SPEECH_PARAMS_FORCE_NORMAL")
WAIT(iTime)
STOP_CURRENT_PLAYING_AMBIENT_SPEECH(REVERB_PED)
DELETE_PED(REVERB_PED)
ENDIF
bSpeechWaitDelete = FALSE
ENDIF
IF bDeletePed
IF DOES_ENTITY_EXIST(REVERB_PED)
WAIT(iTime)
STOP_CURRENT_PLAYING_AMBIENT_SPEECH(REVERB_PED)
DELETE_PED(REVERB_PED)
ENDIF
bDeletePed = FALSE
ENDIF
IF bSpeech
IF DOES_ENTITY_EXIST(REVERB_PED)
TASK_TURN_PED_TO_FACE_ENTITY(REVERB_PED, PLAYER_PED_ID(), 0)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(REVERB_PED, "PHONE_CONV1_CHAT3", "A_F_M_BEVHILLS_02_WHITE_FULL_01", "SPEECH_PARAMS_FORCE_NORMAL")
ENDIF
bSpeech = FALSE
ENDIF
IF bCreatePed
IF DOES_ENTITY_EXIST(REVERB_PED)
DELETE_PED(REVERB_PED)
ENDIF
REQUEST_MODEL(A_F_Y_BEVHILLS_01)
IF NOT HAS_MODEL_LOADED(A_F_Y_BEVHILLS_01)
WAIT(1500)
ENDIF
REVERB_PED = CREATE_PED(PEDTYPE_CIVFEMALE, A_F_Y_BEVHILLS_01, vPedPos)
SET_ENTITY_HEADING(REVERB_PED, (GET_ENTITY_HEADING(PLAYER_PED_ID())))
bCreatePed = FALSE
ENDIF
IF bTerminate
MISSION_CLEANUP()
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
MISSION_CLEANUP()
ENDIF
ENDWHILE
ENDSCRIPT
#ENDIF //IS_DEBUG_BUILD