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

434 lines
15 KiB
Python
Executable File

USING "rage_builtins.sch"
USING "globals.sch"
#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
USING "commands_camera.sch"
USING "commands_misc.sch"
USING "commands_streaming.sch"
USING "script_player.sch"
USING "commands_clock.sch"
USING "selector_public.sch"
CONST_INT numlocation 1
//CONST_INT stat_count 5000
INT index, loaded_low, loaded_med, loaded_hi, required_low, required_med, required_hi, count
INT total_loaded_low, total_loaded_med, total_loaded_hi, total_required_low, total_required_med, total_required_hi
//INT last_loaded_low, last_loaded_med, last_loaded_hi, last_required_low, last_required_med, last_required_hi
INT average_loaded_low, average_loaded_med, average_loaded_hi, average_required_low, average_required_med, average_required_hi
INT peak_loaded_low, peak_loaded_med, peak_loaded_hi, peak_required_low, peak_required_med, peak_required_hi
INT not_loaded_low, not_loaded_med, not_loaded_hi
VECTOR FPSlocation[1]
//STRING FPSlocationName[1]
//VECTOR v_car_destination[4]
FLOAT car_heading[numlocation]
//FLOAT camera_pan_mod
//FLOAT camera_pitch_mod
VEHICLE_INDEX veh_car
MODEL_NAMES model_car
BOOL SWITCH_VEHS, have_stats_started
BOOL ANOTHER_ITERATION
VECTOR coords
ENUM FPS_TEST_STAGE
SETUP,
WARP_TO_LOCATION,
CREATE_CAR,
CAR_DRIVE,
CLEANUP_ZONE,
STREAMING_RESULTS
ENDENUM
FPS_TEST_STAGE FPSlocationStage = SETUP
PROC CLEANUP_SCRIPT()
SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE (FALSE)
PRINTLN("HELI STREAMING TERMINATING")
TERMINATE_THIS_THREAD()
ENDPROC
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS)
ENDIF
PRINTLN("HELI STREAMING STARTING")
index = 0
WHILE TRUE
WAIT(0)
IF IS_PLAYER_PLAYING(PLAYER_ID())
SWITCH FPSlocationStage
CASE SETUP
SET_ENTITY_PROOFS(PLAYER_PED_ID(), TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
CLEAR_PLAYER_WANTED_LEVEL(PLAYER_ID())
FPSlocationStage = WARP_TO_LOCATION
SHUTDOWN_LOADING_SCREEN()
// Fade the screen in
IF NOT IS_SCREEN_FADED_IN()
AND NOT IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(500)
ENDIF
AUTOMATED_TEST_BEGIN()
BREAK
CASE WARP_TO_LOCATION
index = 0
count = 0
total_loaded_low = 0
total_loaded_med = 0
total_loaded_hi = 0
total_required_low = 0
total_required_med = 0
total_required_hi = 0
peak_loaded_low = 0
peak_loaded_med = 0
peak_loaded_hi = 0
peak_required_low = 0
peak_required_med = 0
peak_required_hi = 0
// IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1, "heli_streaming")
// REMOVE_VEHICLE_RECORDING(1, "heli_streaming")
// ENDIF
// IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1, "jet_streaming")
// REMOVE_VEHICLE_RECORDING(1, "jet_streaming")
// ENDIF
FPSlocation[0] = <<1367.1207, -2075.1047, 300.0>> // HELI
// SET_MAX_WANTED_LEVEL(0)
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
SET_ENTITY_COORDS(PLAYER_PED_ID(), FPSlocation[index])
SET_ENTITY_HEADING(PLAYER_PED_ID(), 0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
SETTIMERA(0)
FPSlocationStage = CREATE_CAR
BREAK
CASE CREATE_CAR
PRINTSTRING("...Create car")
PRINTNL()
IF NOT DOES_ENTITY_EXIST(veh_car)
IF NOT SWITCH_VEHS
model_car = FROGGER
REQUEST_MODEL(model_car)
ELSE
model_car = LAZER
REQUEST_MODEL(model_car)
ENDIF
IF HAS_MODEL_LOADED(model_car)
CLEAR_AREA(FPSlocation[index], 20, TRUE)
veh_car = CREATE_VEHICLE(model_car, FPSlocation[index], car_heading[index])
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(veh_car)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), veh_car)
SET_ENTITY_COORDS(veh_car, FPSlocation[index])
SET_ENTITY_HEADING(veh_car, car_heading[index])
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_ENTITY_INVINCIBLE(veh_car, TRUE)
SET_VEHICLE_ENGINE_ON(veh_car, TRUE, TRUE)
WAIT(0)
coords = GET_ENTITY_COORDS(PLAYER_PED_ID())
CLEAR_AREA(coords, 2000, TRUE)
PRINTLN("Waiting for scene to load...")
NEW_LOAD_SCENE_START_SPHERE(coords, 4500.0)
WAIT(0)
WHILE NOT IS_NEW_LOAD_SCENE_LOADED()
WAIT(0)
ENDWHILE
NEW_LOAD_SCENE_STOP()
PRINTLN("Scene loaded, let's wait for the rest...")
LOAD_ALL_OBJECTS_NOW()
INSTANTLY_FILL_PED_POPULATION()
INSTANTLY_FILL_VEHICLE_POPULATION()
PRINTLN("Waiting for peds and vehicles...")
SETTIMERA(0)
WHILE TIMERA() < 3000
WAIT(0)
ENDWHILE
IF NOT SWITCH_VEHS
REQUEST_VEHICLE_RECORDING(1, "heli_streaming")
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(1, "heli_streaming")
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(veh_car)
START_PLAYBACK_RECORDED_VEHICLE(veh_car, 1, "heli_streaming")
ENDIF
ELSE
REQUEST_VEHICLE_RECORDING(1, "jet_streaming")
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(1, "jet_streaming")
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(veh_car)
START_PLAYBACK_RECORDED_VEHICLE(veh_car, 1, "jet_streaming")
ENDIF
ENDIF
WAIT(0)
PRINTLN("Let's go!")
SET_CLOCK_TIME(17, 0, 0)
SET_MODEL_AS_NO_LONGER_NEEDED(model_car)
IF NOT have_stats_started
DBG_SET_MAPDATA_STATS(TRUE)
PRINTLN("DBG_SET_MAPDATA_STATS(TRUE)")
have_stats_started = TRUE
ENDIF
FPSlocationStage = CAR_DRIVE
ANOTHER_ITERATION = TRUE
AUTOMATED_TEST_START_ITERATION()
ENDIF
ENDIF
// REQUEST_VEHICLE_RECORDING(INT FileNumber, STRING pRecordingName)
// HAS_VEHICLE_RECORDING_BEEN_LOADED(INT FileNumber, STRING pRecordingName)
// START_PLAYBACK_RECORDED_VEHICLE
// IS_PLAYBACK_GOING_ON_FOR_VEHICLE(VEHICLE_INDEX VehicleIndex)
BREAK
CASE CAR_DRIVE
IF IS_VEHICLE_DRIVEABLE(veh_car) AND NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(veh_car)
SETTIMERA(0)
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh_car)
ANOTHER_ITERATION = AUTOMATED_TEST_NEXT_ITERATION()
SETTIMERB(0)
FPSlocationStage = CLEANUP_ZONE
ENDIF
//IMAPS LOADED
loaded_low = DBG_GET_NUM_MAPDATA_LOADED(MAPDATA_LOW)
total_loaded_low = total_loaded_low + loaded_low //sum of all
IF loaded_low > peak_loaded_low //Get peak
peak_loaded_low = loaded_low
ENDIF
// PRINTLN("DBG_GET_NUM_MAPDATA_LOADED(MAPDATA_LOW) = ", loaded_low, " PEAK LOW = ", peak_loaded_low, " Sum of all(DEBUG) = ", total_loaded_low)
loaded_med = DBG_GET_NUM_MAPDATA_LOADED(MAPDATA_MED)
total_loaded_med = total_loaded_med + loaded_med //sum of all
IF loaded_med > peak_loaded_med //Get peak
peak_loaded_med = loaded_med
ENDIF
// PRINTLN("DBG_GET_NUM_MAPDATA_LOADED(MAPDATA_MED) = ", loaded_med, " PEAK MED = ", peak_loaded_med, " Sum of all(DEBUG) = ", total_loaded_med)
loaded_hi = DBG_GET_NUM_MAPDATA_LOADED(MAPDATA_HI)
total_loaded_hi = total_loaded_hi + loaded_hi //sum of all
IF loaded_hi > peak_loaded_hi //Get peak
peak_loaded_hi = loaded_hi
ENDIF
// PRINTLN("DBG_GET_NUM_MAPDATA_LOADED(MAPDATA_HI) = ", loaded_hi, " PEAK HI = ", peak_loaded_hi, " Sum of all(DEBUG) = ", total_loaded_hi)
//IMAPS REQUIRED
required_low = DBG_GET_NUM_MAPDATA_REQUIRED(MAPDATA_LOW)
total_required_low = total_required_low + required_low //sum of all
IF required_low > peak_required_low //Get peak
peak_required_low = required_low
ENDIF
// PRINTLN("DBG_GET_NUM_MAPDATA_REQUIRED(MAPDATA_LOW) = ", required_low, " PEAK LOW = ", peak_required_low, " Sum of all(DEBUG) = ", total_required_low)
required_med = DBG_GET_NUM_MAPDATA_REQUIRED(MAPDATA_MED)
total_required_med = total_required_med + required_med //sum of all
IF required_med > peak_required_med //Get peak
peak_required_med = required_med
ENDIF
// PRINTLN("DBG_GET_NUM_MAPDATA_REQUIRED(MAPDATA_MED) = ", required_med, " PEAK MED = ", peak_required_med, " Sum of all(DEBUG) = ", total_required_med)
required_hi = DBG_GET_NUM_MAPDATA_REQUIRED(MAPDATA_HI)
total_required_hi = total_required_hi + required_hi //sum of all
IF required_hi > peak_required_hi //Get peak
peak_required_hi = required_hi
ENDIF
// PRINTLN("DBG_GET_NUM_MAPDATA_REQUIRED(MAPDATA_HI) = ", required_hi, " PEAK HI = ", peak_required_hi, " Sum of all(DEBUG) = ", total_required_hi)
count ++
// PRINTLN("number of times stats run = ", count)
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P) //Debug skip camera rotate
SETTIMERA(5000)
FPSlocationStage = WARP_TO_LOCATION
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S) //Debug skip camera rotate
SETTIMERA(5000)
IF NOT SWITCH_VEHS
SWITCH_VEHS = TRUE
ELSE
SWITCH_VEHS = FALSE
ENDIF
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh_car)
FPSlocationStage = WARP_TO_LOCATION
ENDIF
BREAK
CASE CLEANUP_ZONE
IF have_stats_started
average_loaded_low = total_loaded_low / count
PRINTLN("AVERAGE LOADED LOW = ", average_loaded_low, " PEAK LOADED LOW = ", peak_loaded_low)
average_loaded_med = total_loaded_med / count
PRINTLN("AVERAGE LOADED MED = ", average_loaded_med, " PEAK LOADED MED = ", peak_loaded_med)
average_loaded_hi = total_loaded_hi / count
PRINTLN("AVERAGE LOADED HI = ", average_loaded_hi, " PEAK LOADED HI = ", peak_loaded_hi)
average_required_low = total_required_low / count
PRINTLN("AVERAGE REQUIRED LOW = ", average_required_low, " PEAK REQUIRED LOW = ", peak_required_low)
average_required_med = total_required_med / count
PRINTLN("AVERAGE REQUIRED MED = ", average_required_med, " PEAK REQUIRED MED = ", peak_required_med)
average_required_hi = total_required_hi / count
PRINTLN("AVERAGE REQUIRED HI = ", average_required_hi, " PEAK REQUIRED HI = ", peak_required_hi)
not_loaded_low = average_required_low - average_loaded_low
PRINTLN("NOT LOADED LOW = ", not_loaded_low)
not_loaded_med = average_required_med - average_loaded_med
PRINTLN("NOT LOADED MED = ", not_loaded_med)
not_loaded_hi = average_required_hi - average_loaded_hi
PRINTLN("NOT LOADED HI = ", not_loaded_hi)
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE (TRUE)
DBG_SET_MAPDATA_STATS(FALSE)
PRINTLN("DBG_SET_MAPDATA_STATS(FALSE)")
have_stats_started = FALSE
ENDIF
// DISPLAY_TEXT_WITH_LITERAL_STRING(0.2, 0.2, "STRING", "AVERAGE LOADED LOW")
DRAW_DEBUG_TEXT_2D("AVERAGE LOADED LOW", <<0.1, 0.1, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(average_loaded_low), <<0.25, 0.1, 0>> )
DRAW_DEBUG_TEXT_2D("PEAK LOADED LOW", <<0.1, 0.12, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(peak_loaded_low), <<0.25, 0.12, 0>> )
DRAW_DEBUG_TEXT_2D("AVERAGE LOADED MED", <<0.1, 0.14, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(average_loaded_med), <<0.25, 0.14, 0>> )
DRAW_DEBUG_TEXT_2D("PEAK LOADED MED", <<0.1, 0.16, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(peak_loaded_med), <<0.25, 0.16, 0>> )
DRAW_DEBUG_TEXT_2D("AVERAGE LOADED HI", <<0.1, 0.18, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(average_loaded_hi), <<0.25, 0.18, 0>> )
DRAW_DEBUG_TEXT_2D("PEAK LOADED HI", <<0.1, 0.2, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(peak_loaded_hi), <<0.25, 0.2, 0>> )
DRAW_DEBUG_TEXT_2D("AVERAGE REQUIRED LOW", <<0.1, 0.3, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(average_required_low), <<0.25, 0.3, 0>> )
DRAW_DEBUG_TEXT_2D("PEAK REQUIRED LOW", <<0.1, 0.32, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(peak_required_low), <<0.25, 0.32, 0>> )
DRAW_DEBUG_TEXT_2D("AVERAGE REQUIRED MED", <<0.1, 0.34, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(average_required_med), <<0.25, 0.34, 0>> )
DRAW_DEBUG_TEXT_2D("PEAK REQUIRED MED", <<0.1, 0.36, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(peak_required_med), <<0.25, 0.36, 0>> )
DRAW_DEBUG_TEXT_2D("AVERAGE REQUIRED HI", <<0.1, 0.38, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(average_required_hi), <<0.25, 0.38, 0>> )
DRAW_DEBUG_TEXT_2D("PEAK REQUIRED HI", <<0.1, 0.4, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(peak_required_hi), <<0.25, 0.4, 0>> )
DRAW_DEBUG_TEXT_2D("NOT LOADED LOW", <<0.1, 0.5, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(not_loaded_low), <<0.25, 0.5, 0>> )
DRAW_DEBUG_TEXT_2D("NOT LOADED MED", <<0.1, 0.52, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(not_loaded_med), <<0.25, 0.52, 0>> )
DRAW_DEBUG_TEXT_2D("NOT LOADED HI", <<0.1, 0.54, 0>> )
DRAW_DEBUG_TEXT_2D(GET_STRING_FROM_INT(not_loaded_hi), <<0.25, 0.54, 0>> )
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)
index = 0
FPSlocationStage = WARP_TO_LOCATION
ENDIF
IF TIMERB() > 3000
IF ANOTHER_ITERATION
// Time for another one.
index = 0
FPSlocationStage = WARP_TO_LOCATION
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S) //Debug skip camera rotate
SETTIMERA(5000)
IF NOT SWITCH_VEHS
SWITCH_VEHS = TRUE
ELSE
SWITCH_VEHS = FALSE
ENDIF
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh_car)
FPSlocationStage = WARP_TO_LOCATION
ENDIF
BREAK
CASE STREAMING_RESULTS
CLEANUP_SCRIPT()
BREAK
ENDSWITCH
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", "Press S to switch tests. Press P to restart test. Press F to fail", 1, 1)
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
CLEANUP_SCRIPT()
ENDIF
ENDWHILE
ENDSCRIPT
#ENDIF