159 lines
5.1 KiB
Scheme
Executable File
159 lines
5.1 KiB
Scheme
Executable File
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
|
|
USING "commands_debug.sch"
|
|
USING "commands_vehicle.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "commands_script.sch"
|
|
USING "script_player.sch"
|
|
|
|
|
|
|
|
|
|
INT iWdCarRecPlayProg = 0
|
|
INT iWdCarRecId = 1
|
|
|
|
FLOAT fWdCarRecTime = 0.0
|
|
|
|
BOOL bWdCarRecPutPlayerInCar = TRUE
|
|
BOOL bWdCarRecStartPlayback = FALSE
|
|
BOOL bWdCarRecBlipCar = FALSE
|
|
BOOL bWdCarRecRemoveWidget = FALSE
|
|
BOOL bWdCarRecSHowPlayRoute = FALSE
|
|
|
|
TEXT_WIDGET_ID wdCarModel, wdCarRecName
|
|
WIDGET_GROUP_ID wdVehicleRecordingPlayback
|
|
|
|
VEHICLE_INDEX vehWdCarRecPlayback
|
|
|
|
BLIP_INDEX blipWdCarRecPlayback
|
|
|
|
//PARAM NOTES: Specifiy whether or not the script should get cleaned up when the widget gets deleted. Needs to be FALSE if called from a mission script.
|
|
//PURPOSE: Wdiget for playing back vehicle recordings
|
|
PROC DO_VEHICLE_REC_PLAYBACK_WIDGET(BOOL bKillThreadOnCleanup = FALSE)
|
|
MODEL_NAMES mVehicle
|
|
VECTOR vTemp
|
|
STRING sRecName
|
|
SWITCH iWdCarRecPlayProg
|
|
CASE 0
|
|
wdVehicleRecordingPlayback = START_WIDGET_GROUP("Vehicle Recording Playback")
|
|
wdCarModel = ADD_TEXT_WIDGET("Vehicle Model")
|
|
wdCarRecName = ADD_TEXT_WIDGET("Recording Filename")
|
|
ADD_WIDGET_INT_SLIDER("Recording number", iWdCarRecId, 1, 2000, 1)
|
|
ADD_WIDGET_BOOL("Start playback", bWdCarRecStartPlayback)
|
|
ADD_WIDGET_FLOAT_SLIDER("Playback time", fWdCarRecTime, 0.0, 2000000.0, 0.1)
|
|
ADD_WIDGET_BOOL("Put player in car?", bWdCarRecPutPlayerInCar)
|
|
ADD_WIDGET_BOOL("Blip playback car?", bWdCarRecBlipCar)
|
|
ADD_WIDGET_BOOL("Show playback route?", bWdCarRecSHowPlayRoute)
|
|
ADD_WIDGET_BOOL("Delete widget", bWdCarRecRemoveWidget)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
SET_CONTENTS_OF_TEXT_WIDGET(wdCarModel, "POLICE")
|
|
SET_CONTENTS_OF_TEXT_WIDGET(wdCarRecName, "jetBlast")
|
|
iWdCarRecPlayProg++
|
|
BREAK
|
|
|
|
CASE 1
|
|
IF bWdCarRecStartPlayback
|
|
bWdCarRecStartPlayback = FALSE
|
|
|
|
sRecName = GET_CONTENTS_OF_TEXT_WIDGET(wdCarRecName)
|
|
|
|
|
|
IF NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(iWdCarRecId, sRecName)
|
|
REQUEST_VEHICLE_RECORDING(iWdCarRecId, sRecName)
|
|
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(iWdCarRecId, sRecName)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
|
|
//-- Place / Create the car at the beginning the of the recording
|
|
vTemp = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(iWdCarRecId, 0, sRecName)
|
|
CLEAR_AREA(vTemp, 15.0, TRUE)
|
|
|
|
IF NOT DOES_ENTITY_EXIST(vehWdCarRecPlayback)
|
|
mVehicle = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY(GET_CONTENTS_OF_TEXT_WIDGET(wdCarModel)))
|
|
IF IS_MODEL_IN_CDIMAGE(mVehicle)
|
|
IF NOT HAS_MODEL_LOADED(mVehicle)
|
|
REQUEST_MODEL(mVehicle)
|
|
WHILE NOT HAS_MODEL_LOADED(mVehicle)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
|
|
LOAD_SCENE(vTemp)
|
|
vehWdCarRecPlayback = CREATE_VEHICLE(mVehicle, vTemp, 0.0)
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehWdCarRecPlayback, iWdCarRecId,sRecName )
|
|
|
|
ELSE
|
|
SCRIPT_ASSERT("Vehicle recording playback: Not a valid vehicle model!")
|
|
EXIT
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_ENTITY_DEAD(vehWdCarRecPlayback)
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehWdCarRecPlayback)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehWdCarRecPlayback)
|
|
ENDIF
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehWdCarRecPlayback, iWdCarRecId,sRecName)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//-- Puts the player in the playback car.
|
|
IF bWdCarRecPutPlayerInCar
|
|
bWdCarRecPutPlayerInCar = FALSE
|
|
IF NOT IS_ENTITY_DEAD(vehWdCarRecPlayback)
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehWdCarRecPlayback)
|
|
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehWdCarRecPlayback)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF NOT IS_ENTITY_DEAD(vehWdCarRecPlayback)
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehWdCarRecPlayback)
|
|
//-- Display the current playback time
|
|
fWdCarRecTime = GET_TIME_POSITION_IN_RECORDING(vehWdCarRecPlayback)
|
|
|
|
//-- Display the route the playback takes
|
|
IF bWdCarRecSHowPlayRoute
|
|
DISPLAY_PLAYBACK_RECORDED_VEHICLE(vehWdCarRecPlayback, RDM_WHOLELINE)
|
|
ELSE
|
|
DISPLAY_PLAYBACK_RECORDED_VEHICLE(vehWdCarRecPlayback, RDM_NONE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//--Blip the playback car
|
|
IF bWdCarRecBlipCar
|
|
bWdCarRecBlipCar = FALSE
|
|
IF NOT DOES_BLIP_EXIST(blipWdCarRecPlayback)
|
|
blipWdCarRecPlayback = ADD_BLIP_FOR_ENTITY(vehWdCarRecPlayback)
|
|
SET_BLIP_AS_FRIENDLY(blipWdCarRecPlayback, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bWdCarRecRemoveWidget
|
|
//-- Remove the widget and kill the script
|
|
bWdCarRecRemoveWidget = FALSE
|
|
IF NOT IS_ENTITY_DEAD(vehWdCarRecPlayback)
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehWdCarRecPlayback)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehWdCarRecPlayback)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_BLIP_EXIST(blipWdCarRecPlayback)
|
|
REMOVE_BLIP(blipWdCarRecPlayback)
|
|
ENDIF
|
|
DELETE_WIDGET_GROUP(wdVehicleRecordingPlayback)
|
|
IF bKillThreadOnCleanup
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|