Files
gtav-src/script/dev_ng/Code/AudioTest.sc
T
2025-09-29 00:52:08 +02:00

2965 lines
90 KiB
Python
Executable File

// Do nothing in release mode
#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
// Only include in debug mode
#IF IS_DEBUG_BUILD
//???????????????????????????????????????????????????????????????????????????????
//? Author: GEORGE Date: 05/02/10 ?
//???????????????????????????????????????????????????????????????????????????????
//? ?
//? Various audio tests! ?
//? ?
//? ?
//???????????????????????????????????????????????????????????????????????????????
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_audio.sch"
USING "commands_camera.sch"
USING "commands_clock.sch"
USING "commands_debug.sch"
USING "commands_graphics.sch"
USING "commands_hud.sch"
USING "commands_misc.sch"
USING "commands_object.sch"
USING "commands_pad.sch"
USING "commands_ped.sch"
USING "commands_player.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_task.sch"
USING "commands_vehicle.sch"
USING "commands_interiors.sch"
USING "commands_weapon.sch"
USING "commands_fire.sch"
USING "flow_public_game.sch"
//USING "flow_public_core_override.sch"
USING "model_enums.sch"
USING "script_player.sch"
USING "selector_public.sch"
USING "player_ped_public.sch"
USING "flow_public_game.sch"
//Variables etc
OBJECT_INDEX obj_cursor
MODEL_NAMES model_cursor = PROP_POOL_BALL_01
MODEL_NAMES model_shooter = A_M_Y_MUSCLBEAC_01
MODEL_NAMES model_shooter_last = A_M_Y_MUSCLBEAC_01
WEAPON_TYPE wt_shooterGun
WIDGET_GROUP_ID widget_debug
WIDGET_GROUP_ID widget_settings
WIDGET_GROUP_ID widgets_9 //for conversation
TEXT_WIDGET_ID widget_soundSet_name
TEXT_WIDGET_ID widget_sound_name
TEXT_WIDGET_ID widget_circle_sound_name
TEXT_WIDGET_ID widget_square_sound_name
TEXT_WIDGET_ID widget_triangle_sound_name
TEXT_WIDGET_ID widget_cross_sound_name
TEXT_WIDGET_ID widget_bank_name
TEXT_WIDGET_ID widget_bank_name_1
TEXT_WIDGET_ID widget_bank_name_2
TEXT_WIDGET_ID widget_bank_name_3
TEXT_WIDGET_ID widget_bank_name_4
TEXT_WIDGET_ID widget_bank_name_5
TEXT_WIDGET_ID widget_variable_name
TEXT_WIDGET_ID widget_scanner_scripted_report_name
TEXT_WIDGET_ID widget_scanner_scripted_report_name_2
TEXT_WIDGET_ID widget_scanner_audio_scene_name
TEXT_WIDGET_ID widget_dynamic_mixer
TEXT_WIDGET_ID widget_dynamic_mixer_variable_name
TEXT_WIDGET_ID widget_dynamic_mixer_group_name
TEXT_WIDGET_ID widget_script_stream_name
TEXT_WIDGET_ID widget_zonelist_name
PED_INDEX pi_shooter_01
BLIP_INDEX bi_shooter_01
BLIP_INDEX bi_sound_source_blip
//conversation test widgets
TEXT_WIDGET_ID widget_conversation_name
TEXT_WIDGET_ID widget_conversation_text_block_name
TEXT_WIDGET_ID widget_voice0_name
TEXT_WIDGET_ID widget_voice1_name
TEXT_WIDGET_ID widget_voice2_name
TEXT_WIDGET_ID widget_voice3_name
TEXT_WIDGET_ID widget_voice4_name
TEXT_WIDGET_ID widget_voice5_name
TEXT_WIDGET_ID widget_voice6_name
TEXT_WIDGET_ID widget_voice7_name
TEXT_WIDGET_ID widget_voice8_name
BOOL b_start_conversation = FALSE
BOOL b_stop_conversation = FALSE
BOOL b_speakers_made = FALSE
//Additional widgets for testing anim linked convos
INT i_ped_number
BOOL b_LoadAnims = TRUE
TEXT_WIDGET_ID widget_anim_name
TEXT_WIDGET_ID widget_anim_name2
TEXT_WIDGET_ID widget_anim_dictionary_name
TEXT_WIDGET_ID widget_anim_dictionary_name_2
TEXT_LABEL_63 s_anim_name
TEXT_LABEL_63 s_anim_dict_name
BOOL b_anim_HaveAllAnimsLoaded = FALSE
INT i_animCurrentChunk = 0
INT i_anim_load_stage = 0
INT i_numberOfConversationChunks = 5
//Conversation Testing
CONST_INT i_numberOfSpeakers 9
PED_INDEX pi_Speakers[i_numberOfSpeakers]
structPedsForConversation conversationPedStruct
FLOAT f_speaker_min_dist = 2.0
FLOAT f_speaker_max_dist = 5.0
BOOL b_doCustomFunction = FALSE
float f_CustomFunction = 0.0
//ZONELIST VARS
STRING s_zoneListName = "null"
INT i_zoneListFunction = 1
BOOL b_zoneListApply = FALSE
BOOL b_zoneForceChange = FALSE
BOOL b_playSound = TRUE
BOOL b_lockControls = TRUE
BOOL b_reloadBank = FALSE
BOOL b_releaseBank = FALSE
BOOL b_retriggerSound = FALSE
BOOL b_freezeSound = FALSE
BOOL b_yInheritX = FALSE
BOOL b_shooter_fire = TRUE
BOOL b_shooter_respot = FALSE
BOOL b_shooter_ready = FALSE
BOOL b_shooter_respawning = FALSE
BOOL b_playSoundFrontend = FALSE
BOOL b_weaponsAllowed[24]
BOOL b_bank_test_update_debug_var = FALSE
BOOL b_bank_test_up_dbg_var_on_start = FALSE
BOOL b_bank_test_controls_locked = FALSE
STRING s_sound_name
//BANKTEST STRINGS
BOOL b_setScriptCleanupTimeout = FALSE
INT i_scriptCleanupTimeout = 0
BOOL b_use_SoundSet
BOOL b_hint_banks
int i_bank_to_release = -1
STRING s_soundSet_name
STRING s_circle_sound_name
STRING s_square_sound_name
STRING s_triangle_sound_name
STRING s_cross_sound_name
STRING s_variable_name
TEXT_LABEL_63 s_bank_name
TEXT_LABEL_63 s_bank_name_2
TEXT_LABEL_63 s_bank_name_3
TEXT_LABEL_63 s_bank_name_4
TEXT_LABEL_63 s_bank_name_5
int i_loadTries = 0
VECTOR v_player_pos
VECTOR v_sound_pos
INT LSX
INT LSY
INT RSX
INT RSY
INT i_testSoundId0 = GET_SOUND_ID()
INT i_testSoundId1 = GET_SOUND_ID()
INT i_testSoundId2 = GET_SOUND_ID()
INT i_testSoundId3 = GET_SOUND_ID()
INT i_debug_sound_type
INT i_test_mode = 5
INT i_test_mode_last_frame = i_test_mode
PTFX_ID i_sparklyEffect
INT i_freezeTime
INT i_shooter_gun_type = 0
INT i_GunManRespawnTime = 5
INT i_GunManTimeToNewTarget = 10
INT i
INT i_model_number = 0
INT i_bankTestPlayFrom = 0
INT i_shoot_mode = 0
INT i_shoot_rate = 100
FLOAT f_shooter_burst_pause = 1.0
FLOAT f_shooter_burst_length = 3.0
FLOAT f_shooter_min_dist = 5.0
FLOAT f_shooter_max_dist = 15.0
FLOAT f_shooter_aim_offset = 1.0
FLOAT f_widget_product = -1
FLOAT f_debug_sound_variable = 1.0
FLOAT f_debug_sound_variable_last = 0.0
FLOAT f_debug_sound_variable_min = 0.0
FLOAT f_debug_sound_variable_max = 1.0
FLOAT f_debug_sound_cycle_time = 10.0
FLOAT f_debug_sound_retrigger_time = 5.0
FLOAT f_debug_sound_X = 10.0
FLOAT f_debug_sound_Y = 10.0
FLOAT f_debug_sound_Z = 0.0
FLOAT f_debug_sound_audio_scene_wet = 0.0
FLOAT f_debug_sound_audio_scene_wet_old = 0.0
CONST_INT i_numberOfGunMen 10
SEQUENCE_INDEX si_shooter_tasks
PED_INDEX pi_GunMen[i_numberOfGunMen]
BLIP_INDEX bi_GunMen[i_numberOfGunMen]
BOOL b_GunMen_armed[i_numberOfGunMen]
INT i_currentGunMan
INT i_crimeNumber = 0 //Crime number for passing to vigilante report triggering
INT i_crimeValue = 0 //Crime Value (?) for passing to vigilante report triggering
//ALARM TESTING
BOOL b_alarmsOn = FALSE
BOOL b_alarmsArePlaying = FALSE //For testing function
BOOL b_alarmsPlaying = FALSE
BOOL b_alarmsSkipToSustain = FALSE
BOOL b_alarmsForceState = FALSE
STRING s_alarmName
TEXT_WIDGET_ID widget_alarm_name
//SCANNER UNIT BITS
BOOL b_updateScannerUnit = FALSE //Bool to control report triggering
BOOL b_toggleDisableScanner = FALSE
BOOL b_disableScanner = FALSE
BOOL b_toggleScannerScriptedOnly = FALSE
BOOL b_scannerScriptedOnly = FALSE
// INT i_scannerUnitDivision = 0 //Division removed.
INT i_scannerUnitType = 0
INT i_scannerUnitBeat = 0
//Stuff for testing glas
BOOL b_glassToggle = FALSE
BOOL b_glassIsOn = FALSE
FLOAT f_glassRadius = 10
//Script-set position for scanner lines
BOOL b_updateScannerPos = FALSE
FLOAT f_scannerPosX = 0.0
FLOAT f_scannerPosY = 0.0
FLOAT f_scannerPosZ = 0.0
BOOL b_updateScannerCrime = FALSE
BOOL b_emitterOn = FALSE
BOOL b_emitterStatus = FALSE
BOOL b_emitterLinkToProp = FALSE
BOOL b_emitterSpawnProp = FALSE
BOOL b_emitterToggleScore = FALSE
bool b_emitterRetune = FALSE
TEXT_WIDGET_ID widget_emitter_name
TEXT_WIDGET_ID widget_station_name
TEXT_WIDGET_ID widget_music_name
OBJECT_INDEX obj_boombox
STRING s_scannerAudioScene //For crime name widget
BOOL b_setScannerAudioScene
BOOL b_unsetScannerAudioScene
FLOAT f_scannerApplyValue = 0.0
BOOL b_playScannerScriptedLine = FALSE //Bool to control report triggering
BOOL b_scannerAutoInfo = FALSE //Bool to decide to send all info
BOOL b_reportCrime = FALSE //Bool to control report triggering
BOOL b_playVigilanteCrime = FALSE //Bool to control report triggering
//STRING s_scannerScriptedCrime //For crime name widget
TEXT_LABEL_63 s_scannerScriptedCrime
FLOAT f_crimeX = -415.0 //Crime Coords
FLOAT f_crimeY = -535.0 //Crime Coords
FLOAT f_crimeZ = 40.0 //Crime Coords
BOOL b_loadYankton = FALSE
BOOL b_yanktonLoaded = FALSE
BOOL b_dynamicMixerStart = FALSE
BOOL b_dynamicMixerTestGroups = FALSE
BOOL b_dynamicMixerAddVehicleToMixGroup = FALSE
BOOL b_dynamicMixerRemoveVehicleFromMixGroup = FALSE
BOOL b_dynamicMixerStop = FALSE
BOOL b_dynamicMixerUseVariable = FALSE //Don't apply initially
BOOL b_dynamicMixerApplyWithPad = FALSE //Don't apply initially
STRING s_dynamicMixerName = "DefaultStringValue"
STRING s_lastDynamicMixerName = "DefaultStringValue2"
STRING s_dynamicMixerVariableName = "DefaultVaribleStringValue"
FLOAT f_dynamicMixerVariableValue = 0
STRING s_scriptedStreamName
BOOL b_overrideUnderwaterStream = FALSE
BOOL b_overrideUnderwaterStreamApplied = FALSE
BOOL b_streamIsPlaying = FALSE
BOOL b_loadStream = FALSE
BOOL b_playStream = FALSE
BOOL b_stopStream = FALSE
INT i_streamplaybackMode = 0
INT i_streamLoadTryCount = 0
INT i_streamLoadTryCountLimit = 100
//Walla Debug
FLOAT f_walla_density
FLOAT f_walla_factor
BOOL b_override_walla = FALSE
//WIDGETS
PROC CREATE_MAIN_WIDGET_GROUP()
widget_debug = START_WIDGET_GROUP("Audio Test")
START_WIDGET_GROUP("GLOBAL BITS")
ADD_WIDGET_BOOL("Do Custom Function",b_doCustomFunction)
ADD_WIDGET_FLOAT_SLIDER("Custom Float", f_CustomFunction, 0.0, 1.0, 0.01)
ADD_WIDGET_BOOL("Load Yankton",b_loadYankton)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("Sound Panner")
ADD_TO_WIDGET_COMBO("Single Shooter")
ADD_TO_WIDGET_COMBO("Multiple Shooters")
ADD_TO_WIDGET_COMBO("Banked Sound Tester")
ADD_TO_WIDGET_COMBO("Police Scanner Tester")
ADD_TO_WIDGET_COMBO("Audio Scene tester")
ADD_TO_WIDGET_COMBO("Scripted Stream Tester")
ADD_TO_WIDGET_COMBO("Walla Testing")
ADD_TO_WIDGET_COMBO("AmbientZoneList Toggling")
ADD_TO_WIDGET_COMBO("Conversation Tester")
ADD_TO_WIDGET_COMBO("Anim linked conversation Tester")
ADD_TO_WIDGET_COMBO("Glass Feet")
ADD_TO_WIDGET_COMBO("Alarms")
ADD_TO_WIDGET_COMBO("Static Emitters")
STOP_WIDGET_COMBO("Test Mode", i_test_mode)
STOP_WIDGET_GROUP()
//Dynamic widgets
widget_settings = START_WIDGET_GROUP("Settings")
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
ENDPROC
PROC CREATE_WIDGETS()
SET_CURRENT_WIDGET_GROUP(widget_settings)
SWITCH i_test_mode
CASE 0
widgets_9 = START_WIDGET_GROUP("Sound Panner")
ADD_WIDGET_FLOAT_SLIDER("Sound Emitter Cycle Time", f_debug_sound_cycle_time, 0.0, 50.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("Sound Emitter Retrigger Time", f_debug_sound_retrigger_time, 0.0, 50.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("Sound Emitter X Distance", f_debug_sound_X, 0.0, 500.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Sound Emitter Y Distance", f_debug_sound_Y, 0.0, 500.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Sound Emitter Z Distance", f_debug_sound_Z, 0.0, 500.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Rolloff Scaling", f_debug_sound_audio_scene_wet, 0.0, 1.0, 0.01)
ADD_WIDGET_BOOL("Y Inherit from X",b_yInheritX)
ADD_WIDGET_BOOL("Retrigger Sound",b_retriggerSound)
ADD_WIDGET_BOOL("Sound On",b_playSound)
ADD_WIDGET_BOOL("Freeze Sound Position",b_freezeSound)
widget_sound_name = ADD_TEXT_WIDGET("SOUND_NAME")
SET_CONTENTS_OF_TEXT_WIDGET(widget_sound_name,"PANNING_TEST")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("TYPE_CIRCLE")
ADD_TO_WIDGET_COMBO("TYPE_FLYBY")
ADD_TO_WIDGET_COMBO("TYPE_MANUAL_POS")
ADD_TO_WIDGET_COMBO("TYPE_RANDOM_POS")
STOP_WIDGET_COMBO("Sound Model Type", i_debug_sound_type)
STOP_WIDGET_GROUP()
BREAK
CASE 1
widgets_9 = START_WIDGET_GROUP("Shooters")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("A_M_Y_MUSCLBEAC_01")
ADD_TO_WIDGET_COMBO("A_M_M_Business_01")
ADD_TO_WIDGET_COMBO("G_M_Y_MexGoon_02")
ADD_TO_WIDGET_COMBO("A_F_M_BUSINESS01")
ADD_TO_WIDGET_COMBO("A_F_Y_BEACH_01")
ADD_TO_WIDGET_COMBO("A_F_M_BevHills_02")
ADD_TO_WIDGET_COMBO("A_M_Y_CYCLIST_01")
ADD_TO_WIDGET_COMBO("S_M_Y_COP_01")
ADD_TO_WIDGET_COMBO("S_F_Y_HOOKER_01")
ADD_TO_WIDGET_COMBO("S_M_Y_MARINE_01")
ADD_TO_WIDGET_COMBO("S_M_Y_SWAT_01")
ADD_TO_WIDGET_COMBO("S_M_Y_SWAT_01")
STOP_WIDGET_COMBO("Enemy Ped", i_model_number)
ADD_WIDGET_FLOAT_SLIDER("Min Distance", f_shooter_min_dist, 0.0, 200.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Max Distance", f_shooter_max_dist, 0.0, 200.0, 1)
START_WIDGET_GROUP("Single Shooter")
ADD_WIDGET_BOOL("Fire!",b_shooter_fire)
ADD_WIDGET_BOOL("Respot",b_shooter_respot)
ADD_WIDGET_INT_SLIDER("Shoot Rate",i_shoot_rate ,0,100,1)
ADD_WIDGET_FLOAT_SLIDER("Player aim offset", f_shooter_aim_offset, 0.0, 200.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Shooter Burst Length", f_shooter_burst_length, 0.0, 20.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("Shooter Burst Pause", f_shooter_burst_pause, 0.0, 10.0, 0.1)
//FIRING TYPE
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("FIRING_TYPE_1_BURST")
ADD_TO_WIDGET_COMBO("FIRING_TYPE_1_THEN_AIM")
ADD_TO_WIDGET_COMBO("FIRING_TYPE_CLIP")
ADD_TO_WIDGET_COMBO("FIRING_TYPE_CONTINUOUS")
ADD_TO_WIDGET_COMBO("FIRING_TYPE_RANDOM_BURSTS")
ADD_TO_WIDGET_COMBO("AT PLAYER CLIP")
ADD_TO_WIDGET_COMBO("AT PLAYER CONTINUOUS")
STOP_WIDGET_COMBO("Firing Type", i_shoot_mode)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("WEAPONTYPE_PISTOL")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_COMBATPISTOL")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_APPISTOL")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_MICROSMG")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_SMG")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_ASSAULTRIFLE")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_CARBINERIFLE")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_ADVANCEDRIFLE")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_MG")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_COMBATMG")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_PUMPSHOTGUN")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_SAWNOFFSHOTGUN")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_ASSAULTSHOTGUN")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_SNIPERRIFLE")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_HEAVYSNIPER")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_REMOTESNIPER")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_GRENADELAUNCHER")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_RPG")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_MINIGUN")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_GRENADE")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_SMOKEGRENADE")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_STICKYBOMB")
ADD_TO_WIDGET_COMBO("WEAPONTYPE_STUNGUN")
STOP_WIDGET_COMBO("Gun Type", i_shooter_gun_type)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
BREAK
CASE 2
widgets_9 = START_WIDGET_GROUP("Shooters")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("A_M_Y_MUSCLBEAC_01")
ADD_TO_WIDGET_COMBO("A_M_M_Business_01")
ADD_TO_WIDGET_COMBO("G_M_Y_MexGoon_02")
ADD_TO_WIDGET_COMBO("A_F_M_BUSINESS01")
ADD_TO_WIDGET_COMBO("A_F_Y_BEACH_01")
ADD_TO_WIDGET_COMBO("A_F_M_BevHills_02")
ADD_TO_WIDGET_COMBO("A_M_Y_CYCLIST_01")
ADD_TO_WIDGET_COMBO("S_M_Y_COP_01")
ADD_TO_WIDGET_COMBO("S_F_Y_HOOKER_01")
ADD_TO_WIDGET_COMBO("S_M_Y_MARINE_01")
ADD_TO_WIDGET_COMBO("S_M_Y_SWAT_01")
ADD_TO_WIDGET_COMBO("S_M_Y_SWAT_01")
STOP_WIDGET_COMBO("Enemy Ped", i_model_number)
ADD_WIDGET_FLOAT_SLIDER("Min Distance", f_shooter_min_dist, 0.0, 200.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Max Distance", f_shooter_max_dist, 0.0, 200.0, 1)
START_WIDGET_GROUP("Multiple Shooters")
ADD_WIDGET_BOOL("Timed Respawns", b_shooter_respawning)
ADD_WIDGET_INT_SLIDER("Respawn Time", i_GunManRespawnTime, 1, 20, 1)
ADD_WIDGET_INT_SLIDER("Time before target change", i_GunManTimeToNewTarget, 1, 20, 1)
ADD_WIDGET_BOOL("WEAPONTYPE_PISTOL",b_weaponsAllowed[0])
ADD_WIDGET_BOOL("WEAPONTYPE_COMBATPISTOL",b_weaponsAllowed[1])
ADD_WIDGET_BOOL("WEAPONTYPE_APPISTOL",b_weaponsAllowed[2])
ADD_WIDGET_BOOL("WEAPONTYPE_MICROSMG",b_weaponsAllowed[3])
ADD_WIDGET_BOOL("WEAPONTYPE_SMG",b_weaponsAllowed[4])
ADD_WIDGET_BOOL("WEAPONTYPE_ASSAULTRIFLE",b_weaponsAllowed[5])
ADD_WIDGET_BOOL("WEAPONTYPE_CARBINERIFLE",b_weaponsAllowed[6])
ADD_WIDGET_BOOL("WEAPONTYPE_ADVANCEDRIFLE",b_weaponsAllowed[7])
ADD_WIDGET_BOOL("WEAPONTYPE_MG",b_weaponsAllowed[8])
ADD_WIDGET_BOOL("WEAPONTYPE_COMBATMG",b_weaponsAllowed[9])
ADD_WIDGET_BOOL("WEAPONTYPE_PUMPSHOTGUN",b_weaponsAllowed[10])
ADD_WIDGET_BOOL("WEAPONTYPE_SAWNOFFSHOTGUN",b_weaponsAllowed[11])
ADD_WIDGET_BOOL("WEAPONTYPE_ASSAULTSHOTGUN",b_weaponsAllowed[12])
ADD_WIDGET_BOOL("WEAPONTYPE_SNIPERRIFLE",b_weaponsAllowed[13])
ADD_WIDGET_BOOL("WEAPONTYPE_HEAVYSNIPER",b_weaponsAllowed[14])
ADD_WIDGET_BOOL("WEAPONTYPE_REMOTESNIPER",b_weaponsAllowed[15])
ADD_WIDGET_BOOL("WEAPONTYPE_GRENADELAUNCHER",b_weaponsAllowed[16])
ADD_WIDGET_BOOL("WEAPONTYPE_RPG",b_weaponsAllowed[17])
ADD_WIDGET_BOOL("WEAPONTYPE_MINIGUN",b_weaponsAllowed[18])
ADD_WIDGET_BOOL("WEAPONTYPE_GRENADE",b_weaponsAllowed[19])
ADD_WIDGET_BOOL("WEAPONTYPE_SMOKEGRENADE",b_weaponsAllowed[20])
ADD_WIDGET_BOOL("WEAPONTYPE_STICKYBOMB",b_weaponsAllowed[21])
ADD_WIDGET_BOOL("WEAPONTYPE_STUNGUN",b_weaponsAllowed[22])
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
BREAK
CASE 3
widgets_9 = START_WIDGET_GROUP("Bank Sound Test")
ADD_WIDGET_BOOL("Use SoundSets",b_use_SoundSet)
widget_soundSet_name = ADD_TEXT_WIDGET("SoundSet Name")
ADD_WIDGET_BOOL("Apply Script Cleanup Timeout",b_setScriptCleanupTimeout)
ADD_WIDGET_INT_SLIDER("Script Cleanup Timeout",i_scriptCleanupTimeout,0,10000,1)
ADD_WIDGET_STRING("Audio bank names - note that the first too boxes are combined for long names")
widget_bank_name = ADD_TEXT_WIDGET("BANK NAME 0")
widget_bank_name_1 = ADD_TEXT_WIDGET("BANK NAME 0 pt 2")
widget_bank_name_2 = ADD_TEXT_WIDGET("BANK NAME 1")
widget_bank_name_3 = ADD_TEXT_WIDGET("BANK NAME 2")
widget_bank_name_4 = ADD_TEXT_WIDGET("BANK NAME 3")
widget_bank_name_5 = ADD_TEXT_WIDGET("BANK NAME 4")
ADD_WIDGET_INT_SLIDER("Bank To Release (-1 = all)",i_bank_to_release,-1,4,1)
ADD_WIDGET_BOOL("Lock controls",b_lockControls)
ADD_WIDGET_BOOL("Reload Banks",b_reloadBank)
ADD_WIDGET_BOOL("Hint Banks",b_hint_banks)
ADD_WIDGET_BOOL("Release Banks",b_releaseBank)
widget_variable_name = ADD_TEXT_WIDGET("Variable Name")
ADD_WIDGET_STRING("Control variable value using y-axis of left analogue stick on pad 1 - interpolates between:")
ADD_WIDGET_FLOAT_SLIDER("Variable Value Min", f_debug_sound_variable_min, -100.0, 100.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Variable Value Max", f_debug_sound_variable_max, -100.0, 100.0, 0.01)
ADD_WIDGET_BOOL("Update Variable Value every frame",b_bank_test_update_debug_var)
ADD_WIDGET_BOOL("Update Variable Value on start",b_bank_test_up_dbg_var_on_start)
widget_circle_sound_name = ADD_TEXT_WIDGET("CIRCLE SOUND")
widget_square_sound_name= ADD_TEXT_WIDGET("SQUARE SOUND")
widget_cross_sound_name = ADD_TEXT_WIDGET("CROSS SOUND")
widget_triangle_sound_name = ADD_TEXT_WIDGET("TRIANGLE SOUND")
ADD_WIDGET_BOOL("Frontend",b_playSoundFrontend)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("Player")
ADD_TO_WIDGET_COMBO("Player Car")
ADD_TO_WIDGET_COMBO("Frontend")
ADD_TO_WIDGET_COMBO("Cam Coords")
STOP_WIDGET_COMBO("Play from:", i_bankTestPlayFrom)
STOP_WIDGET_GROUP()
BREAK
CASE 4
widgets_9 = START_WIDGET_GROUP("Police Scanner Test")
widget_scanner_scripted_report_name = ADD_TEXT_WIDGET("Scripted Report Name")
widget_scanner_scripted_report_name_2 = ADD_TEXT_WIDGET("Scripted Report Name (overflow)")
ADD_WIDGET_BOOL("Disable scanner",b_toggleDisableScanner)
ADD_WIDGET_BOOL("Scripted Scanner only",b_toggleScannerScriptedOnly)
ADD_WIDGET_BOOL("Play Scripted Scanner Line",b_playScannerScriptedLine)
ADD_WIDGET_BOOL("Auto-set info",b_scannerAutoInfo)
ADD_WIDGET_BOOL("Update Unit Name",b_updateScannerUnit)
//ADD_WIDGET_INT_SLIDER("Division",i_scannerUnitDivision,0,9,1)
ADD_WIDGET_INT_SLIDER("Type",i_scannerUnitType,0,25,1)
ADD_WIDGET_INT_SLIDER("Beat",i_scannerUnitBeat,0,9,1)
ADD_WIDGET_BOOL("Update Position",b_updateScannerPos)
ADD_WIDGET_FLOAT_SLIDER("x",f_scannerPosX,-4000.0,4000.0,1.0)
ADD_WIDGET_FLOAT_SLIDER("y",f_scannerPosY,-4000.0,4000.0,1.0)
ADD_WIDGET_FLOAT_SLIDER("z",f_scannerPosZ,-4000.0,4000.0,1.0)
ADD_WIDGET_BOOL("Update Scanner Crime",b_updateScannerCrime)
ADD_WIDGET_INT_SLIDER("Crime number (from enum)", i_crimeNumber, 0, 35, 1)
widget_scanner_audio_scene_name = ADD_TEXT_WIDGET("Scanner Audio Scene")
ADD_WIDGET_BOOL("Set Audio Scene",b_setScannerAudioScene)
ADD_WIDGET_BOOL("Remove Audio Scene",b_unsetScannerAudioScene)
ADD_WIDGET_FLOAT_SLIDER("Scene Apply",f_scannerApplyValue,0.0,1.0,0.01)
START_WIDGET_GROUP("CRIMES AND VIGILANTE")
ADD_WIDGET_BOOL("Play Vigilante Crime",b_playVigilanteCrime)
ADD_WIDGET_BOOL("Report Crime",b_reportCrime)
ADD_WIDGET_FLOAT_SLIDER("XCoord",f_crimeX,-5000,5000,10)
ADD_WIDGET_FLOAT_SLIDER("YCoord",f_crimeY,-5000,5000,10)
ADD_WIDGET_FLOAT_SLIDER("ZCoord",f_crimeZ,-100,1000,10)
ADD_WIDGET_INT_SLIDER("Crime Value???", i_crimeValue, 0, 128, 1)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
BREAK
CASE 5
widgets_9 = START_WIDGET_GROUP("Audio Scene Tester")
widget_dynamic_mixer = ADD_TEXT_WIDGET("Scene Name")
ADD_WIDGET_BOOL("Start Scene",b_dynamicMixerStart)
ADD_WIDGET_BOOL("Stop Scene",b_dynamicMixerStop)
ADD_WIDGET_BOOL("Apply Variable",b_dynamicMixerUseVariable)
ADD_WIDGET_BOOL("Pad Control",b_dynamicMixerApplyWithPad)
ADD_WIDGET_BOOL("Test Mix Groups",b_dynamicMixerTestGroups)
widget_dynamic_mixer_group_name = ADD_TEXT_WIDGET("Mix Group Name")
ADD_WIDGET_BOOL("Add Vehicle to Group",b_dynamicMixerAddVehicleToMixGroup)
ADD_WIDGET_BOOL("Remove Vehicle to Group",b_dynamicMixerRemoveVehicleFromMixGroup)
widget_dynamic_mixer_variable_name = ADD_TEXT_WIDGET("Variable Name")
ADD_WIDGET_FLOAT_SLIDER("Variable Value",f_dynamicMixerVariableValue,0,1,0.01)
STOP_WIDGET_GROUP()
BREAK
CASE 6
widgets_9 = START_WIDGET_GROUP("Scripted Stream Tester")
widget_script_stream_name = ADD_TEXT_WIDGET("Stream Name")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("Player")
ADD_TO_WIDGET_COMBO("Player Pos")
ADD_TO_WIDGET_COMBO("Nearest Vehicle")
ADD_TO_WIDGET_COMBO("Frontend")
STOP_WIDGET_COMBO("Play from:", i_streamplaybackMode)
ADD_WIDGET_BOOL("Use SoundSets",b_use_SoundSet)
widget_soundSet_name = ADD_TEXT_WIDGET("SoundSet Name")
ADD_WIDGET_BOOL("Load Stream",b_loadStream)
ADD_WIDGET_BOOL("Play Stream",b_playStream)
ADD_WIDGET_BOOL("Stop Stream",b_stopStream)
ADD_WIDGET_STRING("READ ONLY - SHOULD BE TRUE WHEN SCRIPTED STREAM IS PLAYING!")
ADD_WIDGET_BOOL("StreamIsPlaying",b_streamIsPlaying)
//VARIABLE CONTROL BITS
widget_variable_name = ADD_TEXT_WIDGET("Variable Name")
ADD_WIDGET_STRING("Control variable value using y-axis of left analogue stick on pad 1 - interpolates between:")
ADD_WIDGET_FLOAT_SLIDER("Variable Value Min", f_debug_sound_variable_min, -100.0, 100.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Variable Value Max", f_debug_sound_variable_max, -100.0, 100.0, 0.01)
ADD_WIDGET_BOOL("Update Variable Value every frame",b_bank_test_update_debug_var)
ADD_WIDGET_BOOL("Update Variable Value on start",b_bank_test_up_dbg_var_on_start)
//Override underwater
ADD_WIDGET_BOOL("Override Underwater Stream",b_overrideUnderwaterStream)
STOP_WIDGET_GROUP()
BREAK
CASE 7
widgets_9 = START_WIDGET_GROUP("Walla")
ADD_WIDGET_FLOAT_SLIDER("Ped Density", f_walla_density, 0, 1.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Ped Density Override Factor", f_walla_factor, 0.0, 1.0, 0.01)
ADD_WIDGET_BOOL("Set Walla level",b_override_walla)
STOP_WIDGET_GROUP()
BREAK
CASE 8
widgets_9 = START_WIDGET_GROUP("Ambient Zone Control Testing")
widget_zonelist_name = ADD_TEXT_WIDGET("Zone or Zonelist Name")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("Zone On Temp")
ADD_TO_WIDGET_COMBO("Zone Off Temp")
ADD_TO_WIDGET_COMBO("Zone Reset Temp")
ADD_TO_WIDGET_COMBO("Zone On Persistent")
ADD_TO_WIDGET_COMBO("Zone Off Persistent")
ADD_TO_WIDGET_COMBO("ZoneList On Temp")
ADD_TO_WIDGET_COMBO("ZoneList Off Temp")
ADD_TO_WIDGET_COMBO("ZoneList Reset Temp")
ADD_TO_WIDGET_COMBO("ZoneList On Persistent")
ADD_TO_WIDGET_COMBO("ZoneList Off Persistent")
STOP_WIDGET_COMBO("Set to:", i_zoneListFunction)
ADD_WIDGET_BOOL("Force Instant",b_zoneForceChange)
ADD_WIDGET_BOOL("Apply",b_zoneListApply)
STOP_WIDGET_GROUP()
BREAK
CASE 9
widgets_9 = START_WIDGET_GROUP("Conversation Testing")
widget_conversation_text_block_name = ADD_TEXT_WIDGET("Conversation Text Block")
widget_conversation_name = ADD_TEXT_WIDGET("Conversation Name")
widget_voice0_name = ADD_TEXT_WIDGET("Voice0")
widget_voice1_name = ADD_TEXT_WIDGET("Voice1")
widget_voice2_name = ADD_TEXT_WIDGET("Voice2")
widget_voice3_name = ADD_TEXT_WIDGET("Voice3")
widget_voice4_name = ADD_TEXT_WIDGET("Voice4")
widget_voice5_name = ADD_TEXT_WIDGET("Voice5")
widget_voice6_name = ADD_TEXT_WIDGET("Voice6")
widget_voice7_name = ADD_TEXT_WIDGET("Voice7")
widget_voice8_name = ADD_TEXT_WIDGET("Voice8")
ADD_WIDGET_BOOL("Start Conversation",b_start_conversation)
ADD_WIDGET_BOOL("Stop Conversation",b_stop_conversation)
STOP_WIDGET_GROUP()
BREAK
CASE 10
widgets_9 = START_WIDGET_GROUP("Anim Linked Coversations")
widget_conversation_text_block_name = ADD_TEXT_WIDGET("Conversation Text Block")
widget_conversation_name = ADD_TEXT_WIDGET("Conversation Name")
widget_voice0_name = ADD_TEXT_WIDGET("Voice")
ADD_WIDGET_INT_SLIDER("Voice Number",i_ped_number,0,16,1)
ADD_WIDGET_BOOL("Load Anims",b_LoadAnims)
ADD_WIDGET_INT_SLIDER("Number of Chunks",i_numberOfConversationChunks,0,16,1)
widget_anim_dictionary_name = ADD_TEXT_WIDGET("Anim Dictionary Name")
widget_anim_dictionary_name_2 = ADD_TEXT_WIDGET("Anim Dictionary Name")
widget_anim_name = ADD_TEXT_WIDGET("Anim Name")
widget_anim_name2 = ADD_TEXT_WIDGET("Anim Name 2")
ADD_WIDGET_BOOL("Start Conversation",b_start_conversation)
ADD_WIDGET_BOOL("Stop Conversation",b_stop_conversation)
STOP_WIDGET_GROUP()
BREAK
CASE 11
widgets_9 = START_WIDGET_GROUP("Glass feet - centred on camera")
ADD_WIDGET_FLOAT_SLIDER("Glass Radius",f_glassRadius,0,100,1)
ADD_WIDGET_BOOL("Toggle Glass",b_glassToggle)
STOP_WIDGET_GROUP()
BREAK
CASE 12
widgets_9 = START_WIDGET_GROUP("Alarms")
ADD_WIDGET_BOOL("Toggle Alarms",b_alarmsOn)
widget_alarm_name = ADD_TEXT_WIDGET("Alarm Name")
ADD_WIDGET_BOOL("Skip Decay",b_alarmsSkipToSustain)
ADD_WIDGET_BOOL("Force Alarms off",b_alarmsForceState)
ADD_WIDGET_BOOL("Alarms are playing?",b_alarmsArePlaying)
STOP_WIDGET_GROUP()
BREAK
CASE 13
widgets_9 = START_WIDGET_GROUP("Static Emitters")
widget_emitter_name = ADD_TEXT_WIDGET("Emitter Name")
SET_CONTENTS_OF_TEXT_WIDGET(widget_emitter_name,"BEACH_PARTY_BOOMBOX_03")
ADD_WIDGET_BOOL("Toggle Emitter",b_emitterOn)
widget_station_name = ADD_TEXT_WIDGET("Station Name")
SET_CONTENTS_OF_TEXT_WIDGET(widget_station_name,"RADIO_02_POP")
ADD_WIDGET_BOOL("Retune Emitter",b_emitterRetune)
ADD_WIDGET_BOOL("Link To Prop",b_emitterLinkToProp)
ADD_WIDGET_BOOL("Spawn Prop",b_emitterSpawnProp)
widget_music_name = ADD_TEXT_WIDGET("Music Event Name")
ADD_TEXT_WIDGET("TRY CHN2_MISSION_START CHN2_STOP_TRACK ")
SET_CONTENTS_OF_TEXT_WIDGET(widget_station_name,"CHN2_MISSION_START")
ADD_WIDGET_BOOL("Toggle Score",b_emitterToggleScore)
STOP_WIDGET_GROUP()
BREAK
ENDSWITCH
CLEAR_CURRENT_WIDGET_GROUP(widget_settings)
ENDPROC
PROC DESTROY_WIDGETS()
IF DOES_WIDGET_GROUP_EXIST(widget_debug)
DELETE_WIDGET_GROUP(widget_debug)
ENDIF
ENDPROC
FUNC BOOL IS_SHOOTING(PED_INDEX shooter)
IF NOT IS_PED_INJURED(shooter)
SCRIPTTASKSTATUS taskStatus = GET_SCRIPT_TASK_STATUS(shooter, SCRIPT_TASK_PERFORM_SEQUENCE)
IF taskStatus = FINISHED_TASK
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
PROC setShooterTask()
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
CLEAR_SEQUENCE_TASK(si_shooter_tasks)
OPEN_SEQUENCE_TASK(si_shooter_tasks)
SWITCH i_shoot_mode
case 0
TASK_SHOOT_AT_COORD(NULL,v_player_pos + <<0,0,f_shooter_aim_offset>>, floor(f_shooter_burst_length*1000), FIRING_TYPE_1_BURST)
BREAK
case 1
TASK_SHOOT_AT_COORD(NULL,v_player_pos + <<0,0,f_shooter_aim_offset>>, floor(f_shooter_burst_length*1000), FIRING_TYPE_1_THEN_AIM)
BREAK
case 2
TASK_SHOOT_AT_COORD(NULL,v_player_pos + <<0,0,f_shooter_aim_offset>>, floor(f_shooter_burst_length*1000), FIRING_TYPE_CLIP)
BREAK
case 3
TASK_SHOOT_AT_COORD(NULL,v_player_pos + <<0,0,f_shooter_aim_offset>>, floor(f_shooter_burst_length*1000), FIRING_TYPE_CONTINUOUS)
BREAK
case 4
TASK_SHOOT_AT_COORD(NULL,v_player_pos + <<0,0,f_shooter_aim_offset>>, floor(f_shooter_burst_length*1000), FIRING_TYPE_RANDOM_BURSTS)
BREAK
case 5
TASK_SHOOT_AT_ENTITY(NULL,PLAYER_PED_ID(),floor(f_shooter_burst_length*1000), FIRING_TYPE_CONTINUOUS)
BREAK
case 6
TASK_SHOOT_AT_ENTITY(NULL,PLAYER_PED_ID(),floor(f_shooter_burst_length*1000), FIRING_TYPE_CLIP)
BREAK
ENDSWITCH
TASK_PAUSE(NULL,floor(f_shooter_burst_pause * 1000))
CLOSE_SEQUENCE_TASK(si_shooter_tasks)
ENDPROC
FUNC FLOAT getWidgetValues()
FLOAT widget_value = f_shooter_min_dist + f_shooter_max_dist + f_shooter_aim_offset + TO_FLOAT(i_shooter_gun_type)
RETURN widget_value
ENDFUNC
PROC Setup_Shooter()
//SETUP INITIAL WEAPONS FOR GUNMEN
//WEAPONTYPE_PISTOL
b_weaponsAllowed[0] = TRUE
//WEAPONTYPE_COMBATPISTOL
b_weaponsAllowed[1] = FALSE
//WEAPONTYPE_APPISTOL
b_weaponsAllowed[2] = FALSE
//WEAPONTYPE_MICROSMG
b_weaponsAllowed[3] = FALSE
//WEAPONTYPE_SMG
b_weaponsAllowed[4] = TRUE
//WEAPONTYPE_ASSAULTRIFLE
b_weaponsAllowed[5] = FALSE
//WEAPONTYPE_CARBINERIFLE
b_weaponsAllowed[6] = FALSE
//WEAPONTYPE_ADVANCEDRIFLE
b_weaponsAllowed[7] = FALSE
//WEAPONTYPE_MG
b_weaponsAllowed[8] = TRUE
//WEAPONTYPE_COMBATMG
b_weaponsAllowed[9] = FALSE
//WEAPONTYPE_PUMPSHOTGUN
b_weaponsAllowed[10] = FALSE
//WEAPONTYPE_SAWNOFFSHOTGUN
b_weaponsAllowed[11] = FALSE
//WEAPONTYPE_ASSAULTSHOTGUN
b_weaponsAllowed[12] = FALSE
//WEAPONTYPE_SNIPERRIFLE
b_weaponsAllowed[13] = FALSE
//WEAPONTYPE_HEAVYSNIPER
b_weaponsAllowed[14] = FALSE
//WEAPONTYPE_REMOTESNIPER
b_weaponsAllowed[15] = FALSE
//WEAPONTYPE_GRENADELAUNCHER
b_weaponsAllowed[16] = FALSE
//WEAPONTYPE_RPG
b_weaponsAllowed[17] = FALSE
//WEAPONTYPE_MINIGUN
b_weaponsAllowed[18] = FALSE
//WEAPONTYPE_GRENADE
b_weaponsAllowed[19] = FALSE
//WEAPONTYPE_SMOKEGRENADE
b_weaponsAllowed[20] = FALSE
//WEAPONTYPE_STICKYBOMB
b_weaponsAllowed[21] = FALSE
//WEAPONTYPE_STUNGUN
b_weaponsAllowed[22] = FALSE
REQUEST_MODEL(model_shooter)
WHILE NOT HAS_MODEL_LOADED(model_shooter)
REQUEST_MODEL(model_shooter)
PRINTSTRING("Loading Models (init)")
PRINTNL()
WAIT(0)
ENDWHILE
//Find state of shooter widgets
f_widget_product = getWidgetValues()
ENDPROC
PROC Setup_GunMen()
REQUEST_MODEL(model_shooter)
WHILE NOT HAS_MODEL_LOADED(model_shooter)
REQUEST_MODEL(model_shooter)
PRINTSTRING("Loading Models (init)")
PRINTNL()
WAIT(0)
ENDWHILE
ENDPROC
PROC Setup_Panner()
START_AUDIO_SCENE("AMBISONIC_PANNING_TEST_SCENE")
SET_AUDIO_SCENE_VARIABLE("AMBISONIC_PANNING_TEST_SCENE","apply",0)
WHILE NOT (HAS_MODEL_LOADED(model_cursor)
AND HAS_PTFX_ASSET_LOADED())
REQUEST_PTFX_ASSET()
REQUEST_MODEL(model_cursor)
PRINTSTRING("Loading Models")
PRINTNL()
WAIT(0)
ENDWHILE
obj_cursor = CREATE_OBJECT(model_cursor, <<-1234,-1135,13>>)
IF NOT DOES_BLIP_EXIST(bi_sound_source_blip)
bi_sound_source_blip = ADD_BLIP_FOR_ENTITY(obj_cursor)
ENDIF
ENDPROC
PROC Setup_PoScanTest()
PRINTSTRING("STARTING POLICE SCANNER TESTER")
PRINTNL()
SET_CONTENTS_OF_TEXT_WIDGET(widget_scanner_scripted_report_name,"CNC_OFFICER_DOWN")
SET_CONTENTS_OF_TEXT_WIDGET(widget_scanner_scripted_report_name_2,"")
SET_CONTENTS_OF_TEXT_WIDGET(widget_scanner_audio_scene_name,"POLICE_SCANNER_IMPORTANT_SCENE")
ENDPROC
PROC Setup_DynamicMixTest()
PRINTSTRING("STARTING AUDIO SCENE TESTER")
SET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer,"SOL_1_CHASE_JET_SCENE")
SET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer_group_name,"SOL_1_CHASE_JET_SHAMAL")
SET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer_variable_name,"apply")
PRINTNL()
ENDPROC
PROC Setup_ScriptedStreamTester()
PRINTSTRING("STARTING SCRIPTED STREAM TESTER")
SET_CONTENTS_OF_TEXT_WIDGET(widget_script_stream_name,"TEST_SCRIPTED_STREAM_NAME")
set_CONTENTS_OF_TEXT_WIDGET(widget_soundSet_name,"DOCKS_HEIST_FINALE_2A_SOUNDS")
PRINTNL()
ENDPROC
PROC Setup_WallaTest()
PRINTSTRING("STARTING WALLA TESTING WIDGETS")
PRINTNL()
ENDPROC
PROC Setup_ZoneListTest()
PRINTSTRING("STARTING ZONE TESTING WIDGETS")
PRINTNL()
SET_CONTENTS_OF_TEXT_WIDGET(widget_zonelist_name,"ZONE_LIST_YANKTON")
ENDPROC
PROC Setup_ConversationTest()
PRINTSTRING("STARTING Conversation TESTING WIDGETS")
PRINTNL()
SET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_name,"")
SET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_text_block_name,"")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice0_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice1_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice2_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice3_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice4_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice5_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice6_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice7_name,"default")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice8_name,"default")
b_speakers_made = FALSE
ENDPROC
PROC Setup_ConversationAnimTest()
PRINTSTRING("STARTING Conversation TESTING WIDGETS")
PRINTNL()
SET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_text_block_name,"PBJSAUD")
SET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_name,"PBJS_RAND_1")
SET_CONTENTS_OF_TEXT_WIDGET(widget_voice0_name,"JESSE")
SET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name,"special_ped@jessie")
SET_CONTENTS_OF_TEXT_WIDGET(widget_anim_name,"jessie_ig_1_")
SET_CONTENTS_OF_TEXT_WIDGET(widget_anim_name2,"p1_heydudes")
i_ped_number = 3
ENDPROC
FUNC BOOL LoadABank(STRING bankName)
//LOAD - BAIL AFTER 1000ms
if REQUEST_SCRIPT_AUDIO_BANK(bankName)
PRINTSTRING(bankName)
PRINTSTRING(" IS LOADED IN ")
PRINTNL()
return TRUE
ELSE
PRINTSTRING(bankName)
PRINTSTRING(" Requested")
PRINTNL()
return FALSE
endif
ENDFUNC
PROC getBankNames()
//GET NAMES
// s_bank_name = "SCRIPT\\"
// s_bank_name_2 = "SCRIPT\\"
// s_bank_name_3 = "SCRIPT\\"
// s_bank_name_4 = "SCRIPT\\"
// s_bank_name_5 = "SCRIPT\\"
s_bank_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name)
s_bank_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_1)
s_bank_name_2 = GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_2)
s_bank_name_3 = GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_3)
s_bank_name_4 = GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_4)
s_bank_name_5 = GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_5)
ENDPROC
FUNC BOOL hintAllBanks()
getBankNames()
//LOAD
HINT_SCRIPT_AUDIO_BANK(s_bank_name)
HINT_SCRIPT_AUDIO_BANK(s_bank_name_2)
HINT_SCRIPT_AUDIO_BANK(s_bank_name_3)
HINT_SCRIPT_AUDIO_BANK(s_bank_name_4)
HINT_SCRIPT_AUDIO_BANK(s_bank_name_5)
RETURN TRUE
ENDFUNC
FUNC BOOL LoadAllBanks()
getBankNames()
i_loadTries += 1
//LOAD
if (LoadABank(s_bank_name) AND LoadABank(s_bank_name_2) AND LoadABank(s_bank_name_3) AND LoadABank(s_bank_name_4) AND LoadABank(s_bank_name_5)) OR i_loadTries > 100
i_loadTries = 0
return TRUE
ELSE
return FALSE
ENDIF
ENDFUNC
PROC Setup_BankSoundTest()
//Set initial sound names and bank
SET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name,"Underwater")
SET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_1,"")
SET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_2,"FBI_05_Chemical_Factory_01")
SET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_3,"LIFTS")
SET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_4,"ALARM_BELL_01")
SET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_5,"ALARM_BELL_02")
SET_CONTENTS_OF_TEXT_WIDGET(widget_circle_sound_name,"UW_Ambience")
SET_CONTENTS_OF_TEXT_WIDGET(widget_square_sound_name,"FBI_05_RAID_GASMASK")
SET_CONTENTS_OF_TEXT_WIDGET(widget_triangle_sound_name,"FBI_05_RAID_TORCH")
SET_CONTENTS_OF_TEXT_WIDGET(widget_cross_sound_name,"RIFLE_FIRE")
SET_CONTENTS_OF_TEXT_WIDGET(widget_variable_name,"AbseilTime")
SET_CONTENTS_OF_TEXT_WIDGET(widget_soundSet_name,"Phone_SoundSet_Default")
LoadAllBanks()
s_circle_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_circle_sound_name)
s_square_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_square_sound_name)
s_triangle_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_triangle_sound_name)
s_cross_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_cross_sound_name)
ENDPROC
proc setup_glass()
PRINTNL()
ENDPROC
proc Setup_Alarms()
SET_CONTENTS_OF_TEXT_WIDGET(widget_alarm_name,"PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS")
ENDPROC
proc Setup_Emitters()
//NOWT
ENDPROC
PROC SetupTestMode()
SWITCH i_test_mode
CASE 0
Setup_Panner()
BREAK
CASE 1
Setup_Shooter()
BREAK
CASE 2
Setup_GunMen()
BREAK
CASE 3
Setup_BankSoundTest()
BREAK
CASE 4
Setup_PoScanTest()
BREAK
CASE 5
Setup_DynamicMixTest()
BREAK
CASE 6
Setup_ScriptedStreamTester()
BREAK
CASE 7
Setup_WallaTest()
BREAK
CASE 8
Setup_ZoneListTest()
BREAK
CASE 9
Setup_ConversationTest()
BREAK
CASE 10
Setup_ConversationAnimTest()
BREAK
CASE 11
Setup_Glass()
BREAK
CASE 12
Setup_Alarms()
BREAK
CASE 13
Setup_Emitters()
BREAK
ENDSWITCH
ENDPROC
PROC MISSION_SETUP()
REGISTER_SCRIPT_WITH_AUDIO()
//Create Main widgets top level group
CREATE_MAIN_WIDGET_GROUP()
//Create Widgets for the current test mode
CREATE_WIDGETS()
//Setup the current test mode
SetupTestMode()
IF IS_PLAYER_PLAYING(PLAYER_ID())
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDIF
CLEAR_HELP()
CLEAR_PRINTS()
SETTIMERA(0)
SETTIMERB(0)
ENDPROC
PROC SoundPanningTest()
//Get Widget Values and player coords
s_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_sound_name)
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
if b_yInheritX
f_debug_sound_Y = f_debug_sound_X
ENDIF
if b_playSound
if not b_retriggerSound
if HAS_SOUND_FINISHED(i_testSoundId0)
PLAY_SOUND_FROM_ENTITY(i_testSoundId0,s_sound_name,obj_cursor)
ENDIF
ENDIF
IF i_sparklyEffect = NULL
i_sparklyEffect = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_bio_grille_cutting", obj_cursor,<<0,0,0>>,<<0,0,0>>,1)
// PRINTINT(i_sparklyEffect)
PRINTNL()
ENDIF
ELSE
if not HAS_SOUND_FINISHED(i_testSoundId0)
STOP_SOUND(i_testSoundId0)
IF i_sparklyEffect != NULL
STOP_PARTICLE_FX_LOOPED(i_sparklyEffect)
i_sparklyEffect = NULL
ENDIF
ENDIF
ENDIF
if b_playSound and not b_freezeSound
if i_freezeTime > 0
SETTIMERA(i_freezeTime)
ENDIF
SWITCH i_debug_sound_type
case 0
//Circling Sound
if TIMERA() >= f_debug_sound_cycle_time*1000
SETTIMERA(0)
endif
v_sound_pos.x = SIN((TO_FLOAT(TIMERA()) / (f_debug_sound_cycle_time*1000))*360) * f_debug_sound_X + v_player_pos.x
v_sound_pos.y = COS((TO_FLOAT(TIMERA()) / (f_debug_sound_cycle_time*1000))*360) * f_debug_sound_Y + v_player_pos.y
v_sound_pos.z = f_debug_sound_Z + v_player_pos.z
BREAK
CASE 1
//Passing Sound
if TIMERA() >= f_debug_sound_cycle_time*1000
SETTIMERA(0)
endif
v_sound_pos.x = ((TO_FLOAT(TIMERA()) / (f_debug_sound_cycle_time * 1000))*2 - 1) * f_debug_sound_X + v_player_pos.x
v_sound_pos.y = f_debug_sound_Y + v_player_pos.y
v_sound_pos.z = f_debug_sound_Z + v_player_pos.z
BREAK
CASE 2
//Manually Positioned Sound
v_sound_pos.x = v_player_pos.x + f_debug_sound_X
v_sound_pos.y = v_player_pos.y + f_debug_sound_Y
v_sound_pos.z = v_player_pos.z + f_debug_sound_Z
BREAK
CASE 3
//Randomised position
if TIMERB() >= f_debug_sound_retrigger_time * 1000
v_sound_pos = GET_RANDOM_POINT_IN_DISC(v_player_pos,f_debug_sound_X,f_debug_sound_Z)
ENDIF
BREAK
ENDSWITCH
i_freezeTime = -1
ELSE
if i_freezeTime < 0
i_freezeTime = TIMERA()
ENDIF
ENDIF
IF b_retriggerSound and b_playSound
IF TIMERB() > f_debug_sound_retrigger_time * 1000
PLAY_SOUND_FROM_ENTITY(i_testSoundId0,s_sound_name,obj_cursor)
ENDIF
ENDIF
if TIMERB() > f_debug_sound_retrigger_time * 1000
SETTIMERB(0)
ENDIF
SET_ENTITY_COORDS_NO_OFFSET(obj_cursor,v_sound_pos)
if not IS_AUDIO_SCENE_ACTIVE("AMBISONIC_PANNING_TEST_SCENE")
START_AUDIO_SCENE("AMBISONIC_PANNING_TEST_SCENE")
ELSE
if f_debug_sound_audio_scene_wet != f_debug_sound_audio_scene_wet_old
SET_AUDIO_SCENE_VARIABLE("AMBISONIC_PANNING_TEST_SCENE","apply",f_debug_sound_audio_scene_wet)
ENDIF
f_debug_sound_audio_scene_wet_old = f_debug_sound_audio_scene_wet
ENDIF
ENDPROC
FUNC VECTOR SHOOTER_GET_NEW_COORDS()
FLOAT f_random_distance = GET_RANDOM_FLOAT_IN_RANGE(f_shooter_min_dist,f_shooter_max_dist)
FLOAT f_random_angle = GET_RANDOM_FLOAT_IN_RANGE(0,360)
VECTOR new_pos = v_player_pos + <<f_random_distance*SIN(f_random_angle),f_random_distance*COS(f_random_angle),0>>
GET_GROUND_Z_FOR_3D_COORD(new_pos,new_pos.z)
RETURN new_pos
ENDFUNC
FUNC FLOAT GetHeadingBetweenVectors(VECTOR A, VECTOR B)
RETURN GET_HEADING_FROM_VECTOR_2D(B.x-A.x,B.y-A.y)
ENDFUNC
PROC updateTheModel()
model_shooter_last = model_shooter
SWITCH i_model_number
CASE 0
model_shooter = A_M_Y_MUSCLBEAC_01
BREAK
CASE 1
model_shooter = A_M_M_Business_01
BREAK
CASE 2
model_shooter = G_M_Y_MexGoon_02
BREAK
CASE 3
model_shooter = S_M_M_HighSec_01//A_F_M_BUSINESS01
BREAK
CASE 4
model_shooter = A_F_Y_BEACH_01
BREAK
CASE 5
model_shooter = A_F_M_BevHills_02
BREAK
CASE 6
model_shooter = A_M_Y_CYCLIST_01
BREAK
CASE 7
model_shooter = S_M_Y_COP_01
BREAK
CASE 8
model_shooter = S_F_Y_HOOKER_01
BREAK
CASE 9
model_shooter = S_M_Y_MARINE_01
BREAK
CASE 10
model_shooter = S_M_Y_SWAT_01
BREAK
CASE 11
model_shooter = S_M_Y_SWAT_01
BREAK
ENDSWITCH
IF model_shooter != model_shooter_last
SET_MODEL_AS_NO_LONGER_NEEDED(model_shooter_last)
ENDIF
IF NOT HAS_MODEL_LOADED(model_shooter)
REQUEST_MODEL(model_shooter)
PRINTSTRING("LOADING SHOOTER - UPDATE")
PRINTNL()
ENDIF
ENDPROC
PROC Shooter_Creator()
if HAS_MODEL_LOADED(model_shooter)
IF DOES_ENTITY_EXIST(pi_shooter_01)
IF NOT IS_ENTITY_DEAD(pi_shooter_01)
IF NOT DOES_BLIP_EXIST(bi_shooter_01)
bi_shooter_01 = ADD_BLIP_FOR_ENTITY(pi_shooter_01)
ENDIF
SET_PED_ACCURACY(pi_shooter_01,100)
GIVE_WEAPON_TO_PED(pi_shooter_01, wt_shooterGun, 100)
SET_PED_INFINITE_AMMO(pi_shooter_01,TRUE)
SET_ENTITY_INVINCIBLE(pi_shooter_01,TRUE)
SET_PED_SHOOT_RATE(pi_shooter_01,100)
SET_PED_CURRENT_WEAPON_VISIBLE(pi_shooter_01,TRUE)
setShooterTask()
b_shooter_ready = TRUE
ENDIF
ELSE
VECTOR v_new_shooter_pos = SHOOTER_GET_NEW_COORDS()
pi_shooter_01 = CREATE_PED( PEDTYPE_MISSION, model_shooter, v_new_shooter_pos,GetHeadingBetweenVectors(v_new_shooter_pos, v_player_pos))
ENDIF
ELSE
REQUEST_MODEL(model_shooter)
PRINTSTRING("LOADING SHOOTER (Creator)")
PRINTNL()
ENDIF
ENDPROC
FUNC WEAPON_TYPE getGunFromInt(INT k)
WEAPON_TYPE chosenGun
SWITCH k
CASE 0
chosenGun = WEAPONTYPE_PISTOL
BREAK
CASE 1
chosenGun = WEAPONTYPE_COMBATPISTOL
BREAK
CASE 2
chosenGun = WEAPONTYPE_APPISTOL
BREAK
CASE 3
chosenGun = WEAPONTYPE_MICROSMG
BREAK
CASE 4
chosenGun = WEAPONTYPE_SMG
BREAK
CASE 5
chosenGun = WEAPONTYPE_ASSAULTRIFLE
BREAK
CASE 6
chosenGun = WEAPONTYPE_CARBINERIFLE
BREAK
CASE 7
chosenGun = WEAPONTYPE_ADVANCEDRIFLE
BREAK
CASE 8
chosenGun = WEAPONTYPE_MG
BREAK
CASE 9
chosenGun = WEAPONTYPE_COMBATMG
BREAK
CASE 10
chosenGun = WEAPONTYPE_PUMPSHOTGUN
BREAK
CASE 11
chosenGun = WEAPONTYPE_SAWNOFFSHOTGUN
BREAK
CASE 12
chosenGun = WEAPONTYPE_ASSAULTSHOTGUN
BREAK
CASE 13
chosenGun = WEAPONTYPE_SNIPERRIFLE
BREAK
CASE 14
chosenGun = WEAPONTYPE_HEAVYSNIPER
BREAK
CASE 15
chosenGun = WEAPONTYPE_REMOTESNIPER
BREAK
CASE 16
chosenGun = WEAPONTYPE_GRENADELAUNCHER
BREAK
CASE 17
chosenGun = WEAPONTYPE_RPG
BREAK
CASE 18
chosenGun = WEAPONTYPE_MINIGUN
BREAK
CASE 19
chosenGun = WEAPONTYPE_GRENADE
BREAK
CASE 20
chosenGun = WEAPONTYPE_SMOKEGRENADE
BREAK
CASE 21
chosenGun = WEAPONTYPE_STICKYBOMB
BREAK
CASE 22
chosenGun = WEAPONTYPE_STUNGUN
BREAK
ENDSWITCH
RETURN chosenGun
ENDFUNC
PROC ShooterTest()
updateTheModel()
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
wt_shooterGun = getGunFromInt(i_shooter_gun_type)
IF HAS_MODEL_LOADED(model_shooter)
IF f_widget_product = getWidgetValues()
if not b_shooter_ready
Shooter_Creator()
ELSE
IF b_shooter_respot
IF NOT IS_ENTITY_DEAD(pi_shooter_01)
VECTOR v_new_shooter_pos = SHOOTER_GET_NEW_COORDS()
/*SET_ENTITY_COORDS*/ SET_PED_COORDS_KEEP_VEHICLE(pi_shooter_01, v_new_shooter_pos)
SET_ENTITY_HEADING(pi_shooter_01,GetHeadingBetweenVectors(v_new_shooter_pos,v_player_pos))
b_shooter_respot = FALSE
ENDIF
ENDIF
IF b_shooter_fire
IF NOT IS_ENTITY_DEAD(pi_shooter_01)
IF NOT IS_SHOOTING(pi_shooter_01)
//Reset task
SET_PED_SHOOT_RATE(pi_shooter_01, i_shoot_rate)
setShooterTask()
TASK_PERFORM_SEQUENCE(pi_shooter_01, si_shooter_tasks)
ENDIF
ENDIF
ELSE
IF NOT IS_ENTITY_DEAD(pi_shooter_01)
IF IS_SHOOTING(pi_shooter_01)
CLEAR_PED_TASKS(pi_shooter_01)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF IS_SHOOTING(pi_shooter_01)
CLEAR_PED_TASKS(pi_shooter_01)
ELSE
IF NOT IS_ENTITY_DEAD(pi_shooter_01)
Shooter_Creator()
TASK_PERFORM_SEQUENCE(pi_shooter_01, si_shooter_tasks)
f_widget_product = getWidgetValues()
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
FUNC WEAPON_TYPE GetAGunForGunMan()
BOOL NotAGoodGun = TRUE
INT TriesToGetAGoodGun = 0
INT i_temp
WHILE NotAGoodGun
i_temp = GET_RANDOM_INT_IN_RANGE(0,24)
IF b_weaponsAllowed[i_temp]
NotAGoodGun = FALSE
ELSE
IF TriesToGetAGoodGun > 10
//FALL BACK TO PISTOL
i_temp = 0
NotAGoodGun = FALSE
ENDIF
i_temp++
ENDIF
ENDWHILE
RETURN getGunFromInt(i_temp)
ENDFUNC
PROC makeMeAGunMan(INT k)
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
VECTOR v_new_shooter_pos = SHOOTER_GET_NEW_COORDS()
pi_GunMen[k] = CREATE_PED(PEDTYPE_CRIMINAL, model_shooter, v_new_shooter_pos,GetHeadingBetweenVectors(v_new_shooter_pos, v_player_pos))
b_GunMen_armed[k] = FALSE
ENDPROC
PROC MakeAGunMan()
IF DOES_ENTITY_EXIST(pi_GunMen[i_currentGunMan])
IF NOT IS_ENTITY_DEAD(pi_GunMen[i_currentGunMan])
bi_GunMen[i_currentGunMan] = ADD_BLIP_FOR_ENTITY(pi_GunMen[i_currentGunMan])
SET_PED_ACCURACY(pi_GunMen[i_currentGunMan],GET_RANDOM_INT_IN_RANGE(0,100))
GIVE_WEAPON_TO_PED(pi_GunMen[i_currentGunMan], wt_shooterGun, 100)
SET_PED_INFINITE_AMMO(pi_GunMen[i_currentGunMan],TRUE)
SET_PED_SHOOT_RATE(pi_GunMen[i_currentGunMan],100)
SET_PED_CURRENT_WEAPON_VISIBLE(pi_GunMen[i_currentGunMan],TRUE)
SET_PED_COMBAT_ABILITY(pi_GunMen[i_currentGunMan], CAL_PROFESSIONAL)
TASK_COMBAT_PED(pi_GunMen[i_currentGunMan],PLAYER_PED_ID())
i_currentGunMan = (i_currentGunMan + 1) % i_numberOfGunMen
IF DOES_ENTITY_EXIST(pi_GunMen[i_currentGunMan])
IF NOT IS_ENTITY_DEAD(pi_GunMen[i_currentGunMan])
ADD_EXPLOSION(GET_ENTITY_COORDS(pi_GunMen[i_currentGunMan]),EXP_TAG_GRENADE)
ELSE
ADD_EXPLOSION(/*WITH DEADCHECK=FALSE*/ GET_ENTITY_COORDS(pi_GunMen[i_currentGunMan]),EXP_TAG_GRENADE)
ENDIF
SET_PED_AS_NO_LONGER_NEEDED(pi_GunMen[i_currentGunMan])
ENDIF
IF DOES_BLIP_EXIST(bi_GunMen[i_currentGunMan])
REMOVE_BLIP(bi_GunMen[i_currentGunMan])
ENDIF
SETTIMERA(0)
ENDIF
ELSE
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
wt_shooterGun = GetAGunForGunMan()
VECTOR v_new_shooter_pos = SHOOTER_GET_NEW_COORDS()
pi_GunMen[i_currentGunMan] = CREATE_PED(PEDTYPE_CRIMINAL, model_shooter, v_new_shooter_pos,GetHeadingBetweenVectors(v_new_shooter_pos, v_player_pos))
ENDIF
ENDPROC
PROC removeDeadGunMenBlips()
FOR i = 0 to i_numberOfGunMen - 1
IF DOES_BLIP_EXIST(bi_GunMen[i])
IF IS_ENTITY_DEAD(pi_GunMen[i])
PRINTSTRING("PED ")
PRINTINT(i)
PRINTSTRING(" IS DEAD - REMOVING BLIP")
PRINTNL()
REMOVE_BLIP(bi_GunMen[i])
ENDIF
ENDIF
ENDFOR
ENDPROC
FUNC PED_INDEX getSafeCombatTarget(INT j)
INT i_fightTarget
INT i_guesses = 0
WHILE i_guesses < 10
i_fightTarget = GET_RANDOM_INT_IN_RANGE(0,COUNT_OF(pi_GunMen))
IF DOES_ENTITY_EXIST(pi_GunMen[i_fightTarget])
IF NOT(i_fightTarget = COUNT_OF(pi_GunMen) OR i_fightTarget = j OR IS_ENTITY_DEAD(pi_GunMen[i_fightTarget]))
RETURN pi_GunMen[i_fightTarget]
ENDIF
ENDIF
ENDWHILE
RETURN PLAYER_PED_ID()
ENDFUNC
PROC UpdateGunMen()
FOR i = 0 to i_numberOfGunMen - 1
IF DOES_ENTITY_EXIST(pi_GunMen[i])
IF IS_ENTITY_DEAD(pi_GunMen[i])
SET_PED_AS_NO_LONGER_NEEDED(pi_GunMen[i])
IF DOES_BLIP_EXIST(bi_GunMen[i])
REMOVE_BLIP(bi_GunMen[i])
ENDIF
makeMeAGunMan(i)
ELSE
IF NOT b_GunMen_armed[i]
wt_shooterGun = GetAGunForGunMan()
bi_GunMen[i] = ADD_BLIP_FOR_ENTITY(pi_GunMen[i])
SET_PED_ACCURACY(pi_GunMen[i],GET_RANDOM_INT_IN_RANGE(0,100))
GIVE_WEAPON_TO_PED(pi_GunMen[i], wt_shooterGun, 100)
SET_PED_INFINITE_AMMO(pi_GunMen[i],TRUE)
SET_PED_SHOOT_RATE(pi_GunMen[i],100)
SET_PED_CURRENT_WEAPON_VISIBLE(pi_GunMen[i],TRUE)
SET_PED_COMBAT_ABILITY(pi_GunMen[i], CAL_PROFESSIONAL)
TASK_COMBAT_PED_TIMED(pi_GunMen[i],getSafeCombatTarget(i),i_GunManTimeToNewTarget*1000)
b_GunMen_armed[i] = TRUE
ELSE
IF GET_SCRIPT_TASK_STATUS(pi_GunMen[i],SCRIPT_TASK_COMBAT)= FINISHED_TASK
TASK_COMBAT_PED_TIMED(pi_GunMen[i],getSafeCombatTarget(i),i_GunManTimeToNewTarget*1000)
ENDIF
ENDIF
ENDIF
ELSE
makeMeAGunMan(i)
ENDIF
ENDFOR
ENDPROC
PROC GunMenTest()
updateTheModel()
IF HAS_MODEL_LOADED(model_shooter)
IF b_shooter_respawning
IF TIMERA()>i_GunManRespawnTime*1000
MakeAGunMan()
ENDIF
removeDeadGunMenBlips()
ELSE
UpdateGunMen()
ENDIF
ENDIF
ENDPROC
PROC PoliceScannerTest()
IF b_toggleDisableScanner
IF b_disableScanner
//SET_POLICE_SCANNER_ACTIVE(FALSE)
b_disableScanner = FALSE
PRINTSTRING("SCANNER DISABLED! - SET FALSE")
PRINTNL()
ELSE
//SET_POLICE_SCANNER_ACTIVE(TRUE)
b_disableScanner = TRUE
PRINTSTRING("SCANNER ENABLED! - SET TRUE")
PRINTNL()
ENDIF
b_toggleDisableScanner = FALSE
ENDIF
IF b_toggleScannerScriptedOnly
IF b_scannerScriptedOnly
//SET_ONLY_ALLOW_SCRIPT_TRIGGERED_POLICE_SCANNER_ACTIVE(FALSE)
b_scannerScriptedOnly = FALSE
PRINTSTRING("ALL REPORTS ALLOWED - SET FALSE")
PRINTNL()
ELSE
//SET_ONLY_ALLOW_SCRIPT_TRIGGERED_POLICE_SCANNER_ACTIVE(TRUE)
b_scannerScriptedOnly = TRUE
PRINTSTRING("ONLY SCRIPTED REPORTS ALLOWED - SET TRUE")
PRINTNL()
ENDIF
b_toggleScannerScriptedOnly = FALSE
ENDIF
IF b_reportCrime
REPORT_CRIME(PLAYER_ID(),INT_TO_ENUM(CRIME_TYPE,i_crimeNumber),i_crimeValue)
b_reportCrime = FALSE
ENDIF
if b_playVigilanteCrime
PLAY_VIGILANTE_CRIME(i_crimeNumber, <<f_crimeX, f_crimeY, f_crimeZ>>)
b_playVigilanteCrime = FALSE
ENDIF
IF b_playScannerScriptedLine
s_scannerScriptedCrime = GET_CONTENTS_OF_TEXT_WIDGET(widget_scanner_scripted_report_name)
s_scannerScriptedCrime += GET_CONTENTS_OF_TEXT_WIDGET(widget_scanner_scripted_report_name_2)
IF b_scannerAutoInfo
//Set location
IF f_scannerPosX + f_scannerPosY + f_scannerPosZ = 0
//Use player coords if sliders are all unset
SET_POLICE_SCANNER_POSITION_INFO(GET_ENTITY_COORDS(PLAYER_PED_ID()))
ELSE
SET_POLICE_SCANNER_POSITION_INFO(<<f_scannerPosX, f_scannerPosY, f_scannerPosZ>>)
ENDIF
//Set unit
SET_POLICE_SCANNER_CAR_CODE_INFO(INT_TO_ENUM(POLICE_SCANNER_CAR_CODE,i_scannerUnitType),i_scannerUnitBeat)
//Set Crime
SET_POLICE_SCANNER_CRIME_INFO(i_crimeNumber)
ENDIF
PLAY_POLICE_REPORT(s_scannerScriptedCrime, f_scannerApplyValue)
b_playScannerScriptedLine = FALSE
ENDIF
IF b_updateScannerUnit
LOAD_STREAM("ARM_WRESTLING_CROWD_MASTER")
SET_POLICE_SCANNER_CAR_CODE_INFO(INT_TO_ENUM(POLICE_SCANNER_CAR_CODE,i_scannerUnitType),i_scannerUnitBeat)
b_updateScannerUnit = FALSE
ENDIF
IF b_updateScannerPos
SET_POLICE_SCANNER_POSITION_INFO(<<f_scannerPosX, f_scannerPosY, f_scannerPosZ>>)
b_updateScannerPos = FALSE
ENDIF
IF b_updateScannerCrime
SET_POLICE_SCANNER_CRIME_INFO(i_crimeNumber)
b_updateScannerCrime = FALSE
ENDIF
IF b_setScannerAudioScene
s_scannerAudioScene = GET_CONTENTS_OF_TEXT_WIDGET(widget_scanner_audio_scene_name)
if not IS_AUDIO_SCENE_ACTIVE("s_scannerAudioScene")
SET_POLICE_SCANNER_AUDIO_SCENE(s_scannerAudioScene)
ENDIF
b_setScannerAudioScene = FALSE
ENDIF
IF b_unsetScannerAudioScene
STOP_AND_REMOVE_POLICE_SCANNER_AUDIO_SCENE()
b_unsetScannerAudioScene = FALSE
ENDIF
ENDPROC
PROC setVarOnStream()
GET_POSITION_OF_ANALOGUE_STICKS(PAD1,LSX,LSY,RSX,RSY)
f_debug_sound_variable = ((TO_FLOAT(LSY+128)/255) * (f_debug_sound_variable_max - f_debug_sound_variable_min)) + f_debug_sound_variable_min
s_variable_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_variable_name)
IF f_debug_sound_variable_last != f_debug_sound_variable
PRINTSTRING("Setting ")
PRINTSTRING(s_variable_name)
PRINTSTRING(" to ")
PRINTFLOAT(f_debug_sound_variable)
if b_streamIsPlaying //WE ARE IN REGULAR MODE
PRINTSTRING(" NORMAL MODE")
SET_VARIABLE_ON_STREAM(s_variable_name,f_debug_sound_variable)
ELSE //WE ARE IN UW MODE
PRINTSTRING(" UNDERWATER MODE")
SET_VARIABLE_ON_UNDER_WATER_STREAM(s_variable_name, f_debug_sound_variable)
ENDIF
PRINTNL()
f_debug_sound_variable_last = f_debug_sound_variable
ENDIF
ENDPROC
PROC ScriptedStreamTest()
IF b_loadStream
//Load a stream
s_scriptedStreamName = GET_CONTENTS_OF_TEXT_WIDGET(widget_script_stream_name)
IF b_use_SoundSet
s_soundSet_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_soundSet_name)
ELSE
s_soundSet_name = NULL
ENDIF
IF (NOT LOAD_STREAM(s_scriptedStreamName,s_soundSet_name) AND (i_streamLoadTryCount < i_streamLoadTryCountLimit))
PRINTSTRING("LOADING ")
PRINTSTRING(s_scriptedStreamName)
PRINTINT(i_streamLoadTryCount)
PRINTNL()
++i_streamLoadTryCount
ELSE
IF i_streamLoadTryCount = i_streamLoadTryCountLimit
PRINTSTRING("Load of ")
PRINTSTRING(s_scriptedStreamName)
PRINTSTRING(" failed! Is name bad?")
PRINTNL()
ELSE
PRINTSTRING("Load of ")
PRINTSTRING(s_scriptedStreamName)
PRINTSTRING(" suceeded!")
PRINTNL()
ENDIF
b_loadStream = FALSE
i_streamLoadTryCount = 0
ENDIF
ENDIF
IF b_playStream
IF load_stream(s_scriptedStreamName,s_soundSet_name)
IF i_streamplaybackMode = 0
PLAY_STREAM_FROM_PED(PLAYER_PED_ID())
ELIF i_streamplaybackMode = 1
PLAY_STREAM_FROM_POSITION(GET_ENTITY_COORDS(GET_ENTITY_FROM_PED_OR_VEHICLE(PLAYER_PED_ID())))
ELIF i_streamplaybackMode = 1
PLAY_STREAM_FROM_VEHICLE( GET_CLOSEST_VEHICLE( GET_ENTITY_COORDS(PLAYER_PED_ID()),20,TAILGATER,0))
ELSE
PLAY_STREAM_FRONTEND()
ENDIF
IF b_bank_test_up_dbg_var_on_start
setVarOnStream()
ENDIF
b_streamIsPlaying = true
ELSE
PRINTSTRING("Need to load it first!")
PRINTNL()
ENDIF
b_playStream = FALSE
ENDIF
IF b_bank_test_update_debug_var AND b_streamIsPlaying
setVarOnStream()
ENDIF
IF b_stopStream
IF b_streamIsPlaying
STOP_STREAM()
ELSE
PRINTSTRING("Need to play it first!")
PRINTNL()
ENDIF
b_streamIsPlaying = FALSE
b_stopStream = FALSE
ENDIF
IF b_overrideUnderwaterStream
s_scriptedStreamName = GET_CONTENTS_OF_TEXT_WIDGET(widget_script_stream_name)
if not b_overrideUnderwaterStreamApplied
OVERRIDE_UNDERWATER_STREAM(s_scriptedStreamName, TRUE)
b_overrideUnderwaterStreamApplied = TRUE
PRINTSTRING("Overriding underwater stream with: ")
PRINTSTRING(s_scriptedStreamName)
PRINTNL()
endif
IF b_bank_test_update_debug_var
setVarOnStream()
ENDIF
ELSE
if b_overrideUnderwaterStreamApplied
OVERRIDE_UNDERWATER_STREAM(s_scriptedStreamName, FALSE)
b_overrideUnderwaterStreamApplied = FALSE
PRINTSTRING("Cancelling override of underwater stream with: ")
PRINTSTRING(s_scriptedStreamName)
PRINTNL()
ENDIF
endIF
ENDPROC
PROC DynamicMixerTest()
IF b_dynamicMixerStart
s_dynamicMixerName = GET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer)
IF IS_AUDIO_SCENE_ACTIVE(s_dynamicMixerName)
PRINTSTRING(s_dynamicMixerName)
PRINTSTRING(" is alread active!")
PRINTNL()
ELSE
START_AUDIO_SCENE(s_dynamicMixerName)
ENDIF
b_dynamicMixerStart = FALSE
ENDIF
IF b_dynamicMixerStop
s_dynamicMixerName = GET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer)
IF NOT IS_AUDIO_SCENE_ACTIVE(s_dynamicMixerName)
PRINTSTRING(s_dynamicMixerName)
PRINTSTRING(" can't stop - it isn't playing")
PRINTNL()
ELSE
STOP_AUDIO_SCENE(s_dynamicMixerName)
ENDIF
b_dynamicMixerStop = FALSE
ENDIF
IF IS_AUDIO_SCENE_ACTIVE(s_dynamicMixerName)
IF b_dynamicMixerUseVariable
s_dynamicMixerVariableName = GET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer_variable_name)
IF b_dynamicMixerApplyWithPad
GET_POSITION_OF_ANALOGUE_STICKS(PAD1,LSX,LSY,RSX,RSY)
f_dynamicMixerVariableValue = TO_FLOAT(LSY+128)/255
ENDIF
SET_AUDIO_SCENE_VARIABLE(s_dynamicMixerName,s_dynamicMixerVariableName,f_dynamicMixerVariableValue)
ENDIF
ENDIF
if b_dynamicMixerTestGroups
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
if b_dynamicMixerAddVehicleToMixGroup
ADD_ENTITY_TO_AUDIO_MIX_GROUP(GET_ENTITY_FROM_PED_OR_VEHICLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())), GET_CONTENTS_OF_TEXT_WIDGET(widget_dynamic_mixer_group_name))
PRINTSTRING("PLAYER VEHICLE ADDED TO MIX GROUP")
PRINTNL()
b_dynamicMixerAddVehicleToMixGroup = FALSE
ENDIF
IF b_dynamicMixerRemoveVehicleFromMixGroup
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(GET_ENTITY_FROM_PED_OR_VEHICLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())))
PRINTSTRING("PLAYER VEHICLE REMOVED FROM MIX GROUP")
PRINTNL()
b_dynamicMixerRemoveVehicleFromMixGroup = FALSE
ENDIF
ELSE
PRINTSTRING("PLAYER NOT IN A VEHICLE - This Mixgroup debug functionality needs you in a vehicle!")
PRINTNL()
b_dynamicMixerTestGroups = FALSE
ENDIF
ENDIF
ENDPROC
PROC do_custom_fn()
IF b_doCustomFunction
if not IS_AUDIO_SCENE_ACTIVE("EXILE_TEST")
START_AUDIO_SCENE("EXILE_TEST")
ENDIF
v_player_pos = GET_PLAYER_COORDS(GET_PLAYER_INDEX())
f_crimeZ = (v_player_pos.z-60)/(70-60)
if f_crimeZ > 1
f_crimeZ = 1
ENDIF
if f_crimeZ < 0
f_crimeZ = 0
ENDIF
if IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF IS_ENTITY_IN_AIR(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
SET_AUDIO_SCENE_VARIABLE("EXILE_TEST","apply",f_crimeZ)
PRINTSTRING("In the air! ")
PRINTFLOAT(f_crimeZ)
PRINTNL()
ELSE
PRINTSTRING("Not in air. ")
PRINTFLOAT(f_crimeZ)
PRINTNL()
SET_AUDIO_SCENE_VARIABLE("EXILE_TEST","apply",0)
ENDIF
ENDIF
ELIF IS_AUDIO_SCENE_ACTIVE("EXILE_TEST")
STOP_AUDIO_SCENE("EXILE_TEST")
ENDIF
/*
IF REQUEST_SCRIPT_AUDIO_BANK("FBI_03_Panic")
PLAY_SOUND_FROM_ENTITY(-1,"Party_Panic",PLAYER_PED_ID(),"FBI_03_Torture_Sounds")
SET_PED_WALLA_DENSITY(1,1)
FORCE_PED_PANIC_WALLA()
ENDIF
*/
/* SHOOTYSHOOTY
//VECTOR v_interpPos = GET_ENTITY_COORDS(PLAYER_PED_ID())*f_CustomFunction + GET_CAM_COORD(GET_DEBUG_CAM()) * (1 - f_CustomFunction)
PLAY_SOUND_FROM_COORD(-1, "SNIPER_HIT_SPLAT", GET_CAM_COORD(GET_DEBUG_CAM()),"DOCKS_HEIST_FINALE_2A_SOUNDS")
PLAY_SOUND_FROM_COORD(-1, "SNIPER_HIT_ZIP", GET_ENTITY_COORDS(PLAYER_PED_ID())* 0.05 + GET_CAM_COORD(GET_DEBUG_CAM()) * 0.95,"DOCKS_HEIST_FINALE_2A_SOUNDS")
PLAY_SOUND_FROM_COORD(-1, "SNIPER_HIT_SPRAY", GET_ENTITY_COORDS(PLAYER_PED_ID())* -0.05 + GET_CAM_COORD(GET_DEBUG_CAM()) * 1.05,"DOCKS_HEIST_FINALE_2A_SOUNDS")
*/
/* PAD DEBUG
INT i_customFunctionCount1 = 0
INT i_customFunctionCount2 = 0
INT i_customFunctionCount3 = 0
INT i_customFunctionCount4 = 0
//LEFT
if GET_BUTTON_VALUE(PAD1, DPADLEFT) > i_customFunctionCount1
PRINTSTRING("LEFT: ")
PRINTINT(GET_BUTTON_VALUE(PAD1, DPADLEFT))
PRINTNL()
i_customFunctionCount1 = GET_BUTTON_VALUE(PAD1, DPADLEFT)
ENDIF
//DOWN
if GET_BUTTON_VALUE(PAD1, DPADDOWN) > i_customFunctionCount2
PRINTSTRING("DOWN: ")
PRINTINT(GET_BUTTON_VALUE(PAD1, DPADDOWN))
PRINTNL()
i_customFunctionCount2 = GET_BUTTON_VALUE(PAD1, DPADDOWN)
ENDIF
//RIGHT
if GET_BUTTON_VALUE(PAD1, DPADRIGHT) > i_customFunctionCount3
PRINTSTRING("RIGHT: ")
PRINTINT(GET_BUTTON_VALUE(PAD1, DPADRIGHT))
PRINTNL()
i_customFunctionCount3 = GET_BUTTON_VALUE(PAD1, DPADRIGHT)
ENDIF
//UP
if GET_BUTTON_VALUE(PAD1, DPADUP) > i_customFunctionCount4
PRINTSTRING("UP: ")
PRINTINT(GET_BUTTON_VALUE(PAD1, DPADUP))
PRINTNL()
i_customFunctionCount4 = GET_BUTTON_VALUE(PAD1, DPADUP)
ENDIF
*/
/* PRINTSTRING("Warping up 1000m, giving chute")
PRINTNL()
REQUEST_WEAPON_ASSET(GADGETTYPE_PARACHUTE)
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),GADGETTYPE_PARACHUTE,1,TRUE)
VECTOR skydiveStart = GET_GAMEPLAY_CAM_COORD()
skydiveStart.z += 1000.0
SET_ENTITY_COORDS(PLAYER_PED_ID(),skydiveStart)
b_doCustomFunction = FALSE
*/
ENDPROC
PROC setupYankton()
IF b_loadYankton and not b_yanktonLoaded
b_yanktonLoaded = TRUE
VECTOR vPlayerStart = <<5311,-5212,86>>
//Interior
interior_Instance_Index intDepot = GET_INTERIOR_AT_COORDS_WITH_TYPE(vPlayerStart, "V_CashDepot")
PIN_INTERIOR_IN_MEMORY(intDepot)
WHILE NOT IS_INTERIOR_READY(intDepot)
WAIT(0)
ENDWHILE
//IPL Groups
REQUEST_IPL("prologue01")
REQUEST_IPL("prologue02")
REQUEST_IPL("prologue03")
REQUEST_IPL("prologue04")
REQUEST_IPL("prologue05")
REQUEST_IPL("prologue06")
REQUEST_IPL("prologuerd")
//Clear Area
CLEAR_AREA(vPlayerStart, 1000.0, TRUE)
//Minimap
SET_MINIMAP_IN_PROLOGUE(TRUE)
//Cellphone
g_Use_Prologue_Cellphone = TRUE
//WARP
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<5311,-5212,86>>)
ENDIF
ELIF not b_loadYankton and b_yanktonLoaded
//Minimap
SET_MINIMAP_IN_PROLOGUE(FALSE)
//Phone
g_Use_Prologue_Cellphone = FALSE
//IPL Groups
REMOVE_IPL("prologue01")
REMOVE_IPL("prologue02")
REMOVE_IPL("prologue03")
REMOVE_IPL("prologue04")
REMOVE_IPL("prologue05")
REMOVE_IPL("prologue06")
REMOVE_IPL("prologuerd")
ENDIF
ENDPROC
PROC setVarOnSound(INT i_soundID)
GET_POSITION_OF_ANALOGUE_STICKS(PAD1,LSX,LSY,RSX,RSY)
f_debug_sound_variable = ((TO_FLOAT(LSY+128)/255) * (f_debug_sound_variable_max - f_debug_sound_variable_min)) + f_debug_sound_variable_min
IF f_debug_sound_variable_last != f_debug_sound_variable
s_variable_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_variable_name)
PRINTSTRING("Setting ")
PRINTSTRING(s_variable_name)
PRINTSTRING(" to ")
PRINTFLOAT(f_debug_sound_variable)
PRINTNL()
SET_VARIABLE_ON_SOUND(i_soundID,s_variable_name,f_debug_sound_variable)
f_debug_sound_variable_last = f_debug_sound_variable
ENDIF
ENDPROC
PROC playTestSound(INT i_soundID, STRING soundName)
IF b_use_SoundSet
s_soundset_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_soundSet_name)
ELSE
s_soundSet_name = NULL
ENDIF
IF HAS_SOUND_FINISHED(i_soundID)
SWITCH i_bankTestPlayFrom
CASE 0
PLAY_SOUND_FROM_ENTITY(i_soundID,soundName,PLAYER_PED_ID(),s_soundSet_name)
BREAK
CASE 1
PLAY_SOUND_FROM_ENTITY(i_soundID,soundName,GET_ENTITY_FROM_PED_OR_VEHICLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())),s_soundSet_name)
BREAK
CASE 2
PLAY_SOUND_FRONTEND(i_soundID,soundName,s_soundSet_name)
BREAK
CASE 3
PLAY_SOUND_FROM_COORD(i_soundID,soundName,GET_CAM_COORD(GET_DEBUG_CAM()),s_soundSet_name)
BREAK
ENDSWITCH
IF b_bank_test_up_dbg_var_on_start
f_debug_sound_variable_last = f_debug_sound_variable + 1
setVarOnSound(i_soundID)
ENDIF
ELSE
STOP_SOUND(i_soundID)
ENDIF
ENDPROC
PROC BankSoundTest()
IF b_setScriptCleanupTimeout
SET_AUDIO_SCRIPT_CLEANUP_TIME(i_scriptCleanupTimeout)
b_setScriptCleanupTimeout = FALSE
PRINTSTRING("Script Cleanup Timeout set to ")
PRINTINT(i_scriptCleanupTimeout)
PRINTNL()
ENDIF
IF IS_PLAYER_PLAYING(PLAYER_ID())
IF b_lockControls
IF NOT b_bank_test_controls_locked
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
b_bank_test_controls_locked = TRUE
ENDIF
ELSE
IF b_bank_test_controls_locked
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDIF
ENDIF
ENDIF
IF b_releaseBank
if i_bank_to_release = -1
RELEASE_SCRIPT_AUDIO_BANK()
ELSE
SWITCH i_bank_to_release
CASE 0
s_bank_name = "SCRIPT\\"
s_bank_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name)
s_bank_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_1)
RELEASE_NAMED_SCRIPT_AUDIO_BANK(s_bank_name)
BREAK
CASE 1
s_bank_name_2 = "SCRIPT\\"
s_bank_name_2 += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_2)
RELEASE_NAMED_SCRIPT_AUDIO_BANK(s_bank_name_2)
BREAK
CASE 2
s_bank_name_3 = "SCRIPT\\"
s_bank_name_3 += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_3)
RELEASE_NAMED_SCRIPT_AUDIO_BANK(s_bank_name_3)
BREAK
CASE 3
s_bank_name_4 = "SCRIPT\\"
s_bank_name_4 += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_4)
RELEASE_NAMED_SCRIPT_AUDIO_BANK(s_bank_name_4)
BREAK
CASE 4
s_bank_name_5 = "SCRIPT\\"
s_bank_name_5 += GET_CONTENTS_OF_TEXT_WIDGET(widget_bank_name_5)
RELEASE_NAMED_SCRIPT_AUDIO_BANK(s_bank_name_5)
BREAK
ENDSWITCH
ENDIF
b_releaseBank = FALSE
ENDIF
IF b_reloadBank
IF LoadAllBanks()
b_reloadBank = FALSE
ENDIF
ENDIF
IF b_hint_banks
IF hintAllBanks()
b_hint_banks = FALSE
ENDIF
ENDIF
IF b_bank_test_update_debug_var
IF NOT HAS_SOUND_FINISHED(i_testSoundId0)
setVarOnSound(i_testSoundId0)
ENDIF
IF NOT HAS_SOUND_FINISHED(i_testSoundId1)
setVarOnSound(i_testSoundId1)
ENDIF
IF NOT HAS_SOUND_FINISHED(i_testSoundId2)
setVarOnSound(i_testSoundId2)
ENDIF
IF NOT HAS_SOUND_FINISHED(i_testSoundId3)
setVarOnSound(i_testSoundId3)
ENDIF
ENDIF
s_circle_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_circle_sound_name)
s_square_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_square_sound_name)
s_triangle_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_triangle_sound_name)
s_cross_sound_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_cross_sound_name)
if b_bank_test_controls_locked
IF IS_BUTTON_JUST_PRESSED(PAD1,SQUARE)
playTestSound(i_testSoundId0, s_square_sound_name)
ENDIF
IF IS_BUTTON_JUST_PRESSED(PAD1,CIRCLE)
playTestSound(i_testSoundId1, s_circle_sound_name)
ENDIF
IF IS_BUTTON_JUST_PRESSED(PAD1,TRIANGLE)
playTestSound(i_testSoundId2, s_triangle_sound_name)
ENDIF
IF IS_BUTTON_JUST_PRESSED(PAD1,CROSS)
playTestSound(i_testSoundId3, s_cross_sound_name)
ENDIF
ENDIF
ENDPROC
PROC wallaTest()
IF b_override_walla
SET_PED_WALLA_DENSITY(f_walla_density, f_walla_factor)
PRINTSTRING("Walla Ped Density set to: ")
PRINTFLOAT(f_walla_density)
PRINTSTRING(" Apply value: ")
PRINTFLOAT(f_walla_density)
PRINTNL()
b_override_walla = FALSE
ENDIF
ENDPROC
PROC zoneListTest()
//Zones / Zonelists have three states - on, off, default - when set by script temporarily
//Zones / Zonelists have two states (on / off) when set by script permanently
if b_zoneListApply
//Grab zone / list name
s_zoneListName = GET_CONTENTS_OF_TEXT_WIDGET(widget_zonelist_name)
PRINTSTRING(s_zoneListName)
SWITCH i_zoneListFunction
CASE 0
// Zone On Temp
PRINTSTRING(" - Zone On Temp")
PRINTNL()
SET_AMBIENT_ZONE_STATE(s_zoneListName, TRUE, b_zoneForceChange)
BREAK
CASE 1
// Zone Off Temp
PRINTSTRING(" - Zone Off Temp")
PRINTNL()
SET_AMBIENT_ZONE_STATE(s_zoneListName, FALSE, b_zoneForceChange)
BREAK
CASE 2
// Zone Reset Temp
PRINTSTRING(" - Zone Reset Temp")
PRINTNL()
CLEAR_AMBIENT_ZONE_STATE(s_zoneListName, b_zoneForceChange)
BREAK
CASE 3
// Zone On Persistent
PRINTSTRING(" - Zone On Persistent")
PRINTNL()
SET_AMBIENT_ZONE_STATE_PERSISTENT(s_zoneListName,TRUE, b_zoneForceChange)
BREAK
CASE 4
// Zone Off Persistent
PRINTSTRING(" - Zone Off Persistent")
PRINTNL()
SET_AMBIENT_ZONE_STATE_PERSISTENT(s_zoneListName,FALSE, b_zoneForceChange)
BREAK
CASE 5
// ZoneList On Temp
PRINTSTRING(" - ZoneList On Temp")
PRINTNL()
SET_AMBIENT_ZONE_LIST_STATE(s_zoneListName, TRUE, b_zoneForceChange)
BREAK
CASE 6
// ZoneList Off Temp
PRINTSTRING(" - ZoneList Off Temp")
PRINTNL()
SET_AMBIENT_ZONE_LIST_STATE(s_zoneListName, FALSE, b_zoneForceChange)
BREAK
CASE 7
// ZoneList Reset Temp
PRINTSTRING(" - ZoneList Reset Temp")
PRINTNL()
CLEAR_AMBIENT_ZONE_LIST_STATE(s_zoneListName, b_zoneForceChange)
BREAK
CASE 8
// ZoneList On Persistent
PRINTSTRING(" - ZoneList On Persistent")
PRINTNL()
SET_AMBIENT_ZONE_LIST_STATE_PERSISTENT(s_zoneListName, TRUE, b_zoneForceChange)
BREAK
CASE 9
// ZoneList Off Persistent
PRINTSTRING(" - ZoneList Off Persistent")
PRINTNL()
SET_AMBIENT_ZONE_LIST_STATE_PERSISTENT(s_zoneListName, FALSE, b_zoneForceChange)
BREAK
ENDSWITCH
b_zoneListApply = FALSE
ENDIF
ENDPROC
FUNC VECTOR SPEAKER_GET_NEW_COORDS()
FLOAT f_random_distance = GET_RANDOM_FLOAT_IN_RANGE(f_speaker_min_dist,f_speaker_max_dist)
FLOAT f_random_angle = GET_RANDOM_FLOAT_IN_RANGE(0,360)
VECTOR new_pos = v_player_pos + <<f_random_distance*SIN(f_random_angle),f_random_distance*COS(f_random_angle),0>>
GET_GROUND_Z_FOR_3D_COORD(new_pos,new_pos.z)
RETURN new_pos
ENDFUNC
PROC MakeSpeakers()
FOR i = 0 to i_numberOfSpeakers - 1
IF DOES_ENTITY_EXIST(pi_Speakers[i])
DELETE_PED(pi_Speakers[i])
ENDIF
ENDFOR
REQUEST_MODEL(model_shooter)
WHILE NOT HAS_MODEL_LOADED(model_shooter)
REQUEST_MODEL(model_shooter)
PRINTSTRING("Loading Models (init)")
PRINTNL()
WAIT(0)
ENDWHILE
FOR i = 0 to i_numberOfSpeakers - 1
PRINTSTRING("Creating ped") PRINTINT(i) PRINTNL()
IF NOT DOES_ENTITY_EXIST(pi_Speakers[i])
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
VECTOR v_new_speaker_pos = SHOOTER_GET_NEW_COORDS()
pi_Speakers[i] = CREATE_PED(PEDTYPE_CIVMALE, model_shooter, v_new_speaker_pos,GetHeadingBetweenVectors(v_new_speaker_pos, v_player_pos))
PRINTSTRING("Created ped") PRINTINT(i) PRINTNL()
ENDIF
ENDFOR
ENDPROC
PROC CleanupSpeakers()
STOP_SCRIPTED_CONVERSATION(FALSE)
FOR i = 0 to i_numberOfSpeakers - 1
IF DOES_ENTITY_EXIST(pi_Speakers[i])
DELETE_PED(pi_Speakers[i])
ENDIF
ENDFOR
SET_MODEL_AS_NO_LONGER_NEEDED(model_shooter)
ENDPROC
PROC conversationTest()
IF NOT b_speakers_made
MakeSpeakers()
b_speakers_made = TRUE
// KEITH 5/3/13: Removing CnC Globals - I can't find these referenced anywhere else so I've just commented them out. Hope that's ok.
// GlobalServerBD_CNC.CodeNames[NATIVE_TO_INT(GET_PLAYER_INDEX())].CodeName.iCodeUnit = 15
// GlobalServerBD_CNC.CodeNames[NATIVE_TO_INT(GET_PLAYER_INDEX())].CodeName.iFirstNumber = 4
//SET_PLAYER_FOR_CONVERSATION_CODE_NAME(GET_PLAYER_INDEX())
ENDIF
IF b_start_conversation
b_start_conversation = FALSE
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 0, pi_Speakers[0], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice0_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 1, pi_Speakers[1], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice1_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 2, pi_Speakers[2], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice2_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 3, pi_Speakers[3], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice3_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 4, pi_Speakers[4], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice4_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 5, pi_Speakers[5], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice5_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 6, pi_Speakers[6], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice6_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 7, pi_Speakers[7], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice7_name))
ADD_PED_FOR_DIALOGUE(conversationPedStruct, 8, pi_Speakers[8], GET_CONTENTS_OF_TEXT_WIDGET(widget_voice8_name))
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CREATE_CONVERSATION(conversationPedStruct, GET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_text_block_name),
GET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_name), CONV_PRIORITY_HIGH)
ENDIF
ENDIF
IF b_stop_conversation
STOP_SCRIPTED_CONVERSATION(FALSE)
ENDIF
ENDPROC
FUNC STRING IntToLetter(INT number)
SWITCH number
CASE 0
return "A"
CASE 1
return "B"
CASE 2
return "C"
CASE 3
return "D"
CASE 4
return "E"
CASE 5
return "F"
CASE 6
return "G"
CASE 7
return "H"
CASE 8
return "I"
CASE 9
return "J"
CASE 10
return "K"
CASE 11
return "L"
CASE 12
return "M"
CASE 13
return "N"
CASE 14
return "O"
CASE 15
return "P"
CASE 16
return "Q"
ENDSWITCH
//SHOULDNT GET HERE - RETURN Z IN CASE
RETURN "Z"
ENDFUNC
PROC REMOVE_ALL_ANIM_DICTS()
FOR i = 0 to i_numberOfConversationChunks
//Request all animations
s_anim_dict_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name)
s_anim_dict_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name_2)
s_anim_dict_name += IntToLetter(i)
REMOVE_ANIM_DICT(s_anim_dict_name)
ENDFOR
ENDPROC
PROC KillAnimConv
STOP_SCRIPTED_CONVERSATION(FALSE)
IF b_LoadAnims
STOP_ANIM_PLAYBACK(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
REMOVE_ALL_ANIM_DICTS()
REMOVE_ANIM_DICT(GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name))
ENDIF
ENDPROC
FUNC BOOL haveAllAnimsLoaded()
b_anim_HaveAllAnimsLoaded = TRUE
FOR i = 0 to i_numberOfConversationChunks
//Request all animations
s_anim_dict_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name)
s_anim_dict_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name_2)
s_anim_dict_name += IntToLetter(i)
IF NOT HAS_ANIM_DICT_LOADED(s_anim_dict_name)
b_anim_HaveAllAnimsLoaded = FALSE
ENDIF
ENDFOR
RETURN b_anim_HaveAllAnimsLoaded
ENDFUNC
PROC setCurrentAnimNameAndDict()
s_anim_dict_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name)
s_anim_dict_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name_2)
s_anim_dict_name += IntToLetter(i_animCurrentChunk)
s_anim_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_name)
s_anim_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_name2)
s_anim_name += "_"
s_anim_name += i_animCurrentChunk
ENDPROC
FUNC BOOL IS_ANIM_PLAYING_ON_PED()
IF ((GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PLAY_ANIM) <> PERFORMING_TASK)
AND (GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PLAY_ANIM) <> WAITING_TO_START_TASK))
return FALSE
ENDIF
return TRUE
ENDFUNC
PROC animLinkedConvTest()
if b_start_conversation
Switch i_anim_load_stage
CASE 0
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF b_LoadAnims
//Load dem anims:
i_animCurrentChunk = 0
FOR i = 0 to i_numberOfConversationChunks
//Request all animations
s_anim_dict_name = GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name)
s_anim_dict_name += GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name_2)
s_anim_dict_name += IntToLetter(i)
REQUEST_ANIM_DICT(s_anim_dict_name)
ENDFOR
ENDIF
START_AUDIO_SCENE("MAGDEMO_JESSE_SCENE")
IF b_LoadAnims
IF haveAllAnimsLoaded()
SETTIMERA(0)
PRINTSTRING("Anims Loaded")
PRINTNL()
SET_CONVERSATION_AUDIO_CONTROLLED_BY_ANIM(TRUE)
ADD_PED_FOR_DIALOGUE(conversationPedStruct,i_ped_number,PLAYER_PED_ID(),GET_CONTENTS_OF_TEXT_WIDGET(widget_voice0_name),FALSE)
ADD_ENTITY_TO_AUDIO_MIX_GROUP(PLAYER_PED_ID(),"MAGDEMO_JESSE_MIX_GROUP")
CREATE_CONVERSATION(conversationPedStruct, GET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_text_block_name), GET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_name), CONV_PRIORITY_HIGH)
PRINTSTRING("Conversation preparing! ")
PRINTINT(i_anim_load_stage)
PRINTNL()
i_anim_load_stage++
ELSE
PRINTSTRING("Waiting for Anim Dicts! ")
PRINTINT(i_anim_load_stage)
PRINTNL()
ENDIF
ELSE
SETTIMERA(0)
PRINTSTRING("Skipping Anim loading")
PRINTNL()
SET_CONVERSATION_AUDIO_CONTROLLED_BY_ANIM(TRUE)
ADD_PED_FOR_DIALOGUE(conversationPedStruct,i_ped_number,PLAYER_PED_ID(),GET_CONTENTS_OF_TEXT_WIDGET(widget_voice0_name),FALSE)
ADD_ENTITY_TO_AUDIO_MIX_GROUP(PLAYER_PED_ID(),"MAGDEMO_JESSE_MIX_GROUP")
CREATE_CONVERSATION(conversationPedStruct, GET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_text_block_name), GET_CONTENTS_OF_TEXT_WIDGET(widget_conversation_name), CONV_PRIORITY_HIGH)
PRINTSTRING("Conversation preparing! ")
PRINTINT(i_anim_load_stage)
PRINTNL()
i_anim_load_stage++
ENDIF
ENDIF
BREAK
CASE 1
IF TIMERA()>1000
IF b_LoadAnims
PRINTSTRING("TRIGGERING CONVERSATION! ")
PRINTINT(i_anim_load_stage)
PRINTNL()
//Get names for anim and dict for the current chunk
setCurrentAnimNameAndDict()
TASK_PLAY_ANIM(PLAYER_PED_ID(),s_anim_dict_name,s_anim_name)
ELSE
PRINTSTRING("Conversation preloaded - trigger first anim ")
PRINTINT(i_anim_load_stage)
PRINTNL()
ENDIF
i_anim_load_stage++
ENDIF
BREAK
CASE 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINTSTRING("Finished convo - turning off Anim Synched Dialogue ")
PRINTINT(i_anim_load_stage)
PRINTNL()
SET_CONVERSATION_AUDIO_CONTROLLED_BY_ANIM(FALSE)
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(PLAYER_PED_ID())
STOP_AUDIO_SCENE("MAGDEMO_JESSE_SCENE")
b_start_conversation = FALSE
i_anim_load_stage = 0
ELSE
if i_animCurrentChunk < i_numberOfConversationChunks
if not IS_ANIM_PLAYING_ON_PED()
i_animCurrentChunk++
setCurrentAnimNameAndDict()
TASK_PLAY_ANIM(PLAYER_PED_ID(),s_anim_dict_name,s_anim_name)
PRINTSTRING("Anim finished! Starting ")
PRINTINT(i_animCurrentChunk)
PRINTNL()
ENDIF
ELSE
PRINTSTRING("Anims all finished!")
PRINTNL()
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
IF b_stop_conversation
b_stop_conversation = FALSE
KillAnimConv()
ENDIF
ENDPROC
PROC floorGlassTest()
if b_glassToggle
if b_glassIsOn
//TURN OFF GLASS
PRINTSTRING("Clearing up!")
PRINTNL()
CLEAR_ALL_BROKEN_GLASS()
b_glassIsOn = FALSE
ELSE
RECORD_BROKEN_GLASS(GET_GAMEPLAY_CAM_COORD(),f_glassRadius)
b_glassIsOn = TRUE
ENDIF
b_glassToggle = FALSE
endif
ENDPROC
PROC alarmTest()
s_alarmName = GET_CONTENTS_OF_TEXT_WIDGET(widget_alarm_name)
b_alarmsArePlaying = IS_ALARM_PLAYING(s_alarmName)
IF b_alarmsOn
if not b_alarmsPlaying
IF PREPARE_ALARM(s_alarmName)
START_ALARM(s_alarmName,b_alarmsSkipToSustain)
b_alarmsPlaying = TRUE
PRINTSTRING("Alarm Started")
PRINTNL()
ELSE
PRINTSTRING("Alarm Preparing")
PRINTNL()
ENDIF
ENDIF
ELSE
if b_alarmsPlaying
STOP_ALARM(s_alarmName,b_alarmsForceState)
PRINTSTRING("Alarm Stopped")
PRINTNL()
b_alarmsPlaying = FALSE
endif
ENDIF
ENDPROC
PROC emitterTest()
//TEST EMITTERS
IF b_emitterOn and not(b_emitterStatus)
SET_STATIC_EMITTER_ENABLED(GET_CONTENTS_OF_TEXT_WIDGET(widget_emitter_name),TRUE)
b_emitterStatus = TRUE
b_emitterOn = FALSE
ELIF b_emitterOn and b_emitterStatus
SET_STATIC_EMITTER_ENABLED(GET_CONTENTS_OF_TEXT_WIDGET(widget_emitter_name),FALSE)
b_emitterStatus = FALSE
b_emitterOn = FALSE
ENDIF
IF b_emitterRetune
SET_EMITTER_RADIO_STATION(GET_CONTENTS_OF_TEXT_WIDGET(widget_emitter_name),GET_CONTENTS_OF_TEXT_WIDGET(widget_station_name))
b_emitterRetune = FALSE
ENDIF
IF b_emitterSpawnProp
if DOES_ENTITY_EXIST(obj_boombox)
DELETE_OBJECT(obj_boombox)
ENDIF
obj_boombox = CREATE_OBJECT(PROP_BOOMBOX_01, GET_PLAYER_COORDS(GET_PLAYER_INDEX()) + <<1,1,0>>)
b_emitterSpawnProp = FALSE
ENDIF
IF b_emitterLinkToProp
LINK_STATIC_EMITTER_TO_ENTITY(GET_CONTENTS_OF_TEXT_WIDGET(widget_emitter_name), obj_boombox)
b_emitterLinkToProp = FALSE
ENDIF
IF b_emitterToggleScore
IF PREPARE_MUSIC_EVENT(get_contents_of_Text_widget(widget_music_name))
PRINTSTRING("Triggering Music Event")
PRINTNL()
TRIGGER_MUSIC_EVENT(get_contents_of_Text_widget(widget_music_name))
b_emitterToggleScore = FALSE
i_loadTries = 0
ENDIF
if i_loadTries > 10
b_emitterToggleScore = FALSE
i_loadTries = 0
ELSE
i_loadTries += 1
ENDIF
ENDIF
ENDPROC
// ===========================================================================================================
// Termination
// ===========================================================================================================
// -----------------------------------------------------------------------------------------------------------
// Mission Cleanup
// -----------------------------------------------------------------------------------------------------------
PROC CleanupPanner()
IF i_sparklyEffect != NULL
STOP_PARTICLE_FX_LOOPED(i_sparklyEffect)
i_sparklyEffect = NULL
ENDIF
IF DOES_ENTITY_EXIST(obj_cursor)
DELETE_OBJECT(obj_cursor)
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("AMBISONIC_PANNING_TEST_SCENE")
STOP_AUDIO_SCENE("AMBISONIC_PANNING_TEST_SCENE")
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(model_cursor)
SET_OBJECT_AS_NO_LONGER_NEEDED(obj_cursor)
REMOVE_BLIP(bi_sound_source_blip)
ENDPROC
PROC CleanupShooter()
IF DOES_ENTITY_EXIST(pi_shooter_01)
DELETE_PED(pi_shooter_01)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(model_shooter)
SET_PED_AS_NO_LONGER_NEEDED(pi_shooter_01)
REMOVE_BLIP(bi_shooter_01)
b_shooter_ready = FALSE
ENDPROC
PROC CleanupGunMen()
FOR i = 0 to i_numberOfGunMen - 1
IF DOES_BLIP_EXIST(bi_GunMen[i])
REMOVE_BLIP(bi_GunMen[i])
ENDIF
IF DOES_ENTITY_EXIST(pi_GunMen[i])
DELETE_PED(pi_GunMen[i])
ENDIF
ENDFOR
SET_MODEL_AS_NO_LONGER_NEEDED(model_shooter)
ENDPROC
PROC CleanupPoliceScannerTest()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupBankSoundTest()
RELEASE_AMBIENT_AUDIO_BANK()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupDynamicMixerTest()
IF IS_AUDIO_SCENE_ACTIVE(s_dynamicMixerName)
PRINTSTRING("WARNING ")
PRINTSTRING(s_dynamicMixerName)
PRINTSTRING(" is still active")
PRINTNL()
//STOP_AUDIO_SCENE(s_dynamicMixerName)
ENDIF
IF IS_AUDIO_SCENE_ACTIVE(s_lastDynamicMixerName)
PRINTSTRING("WARNING ")
PRINTSTRING(s_lastDynamicMixerName)
PRINTSTRING(" is still active")
PRINTNL()
//STOP_AUDIO_SCENE(s_lastDynamicMixerName)
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupScriptedStreamTest()
STOP_STREAM()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupWallaTest()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupZoneListTest()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupConversationTest()
CleanupSpeakers()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupAnimConversationTest()
REMOVE_ANIM_DICT(GET_CONTENTS_OF_TEXT_WIDGET(widget_anim_dictionary_name))
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
b_bank_test_controls_locked = FALSE
ENDPROC
PROC CleanupGlass()
CLEAR_ALL_BROKEN_GLASS()
ENDPROC
PROC CleanupAlarms()
if b_alarmsPlaying
STOP_ALARM(s_alarmName,TRUE)
b_alarmsPlaying = FALSE
endif
ENDPROC
PROC CleanupEmitters()
//CLEANUP - NOTHING HERE
ENDPROC
PROC cleanupLastTestModeWidgets()
DELETE_WIDGET_GROUP(widgets_9)
ENDPROC
PROC cleanupAMode(int ModeToClean)
SWITCH ModeToClean
CASE 0
CleanupPanner()
BREAK
CASE 1
CleanupShooter()
BREAK
CASE 2
CleanupGunMen()
BREAK
CASE 3
CleanupBankSoundTest()
BREAK
CASE 4
CleanupPoliceScannerTest()
BREAK
CASE 5
CleanupDynamicMixerTest()
BREAK
CASE 6
CleanupScriptedStreamTest()
BREAK
CASE 7
CleanupWallaTest()
BREAK
CASE 8
CleanupZoneListTest()
BREAK
CASE 9
CleanupConversationTest()
BREAK
CASE 10
CleanupAnimConversationTest()
BREAK
CASE 11
CleanupGlass()
BREAK
CASE 12
CleanupAlarms()
BREAK
CASE 13
CleanupEmitters()
BREAK
ENDSWITCH
ENDPROC
PROC cleanupLastTestMode()
//Cleanup bits from last test mode
cleanupAMode(i_test_mode_last_frame)
//Remove last mode's widgets
cleanupLastTestModeWidgets()
//Create widgets for new mode
CREATE_WIDGETS()
ENDPROC
PROC Mission_Cleanup()
cleanupAMode(i_test_mode)
RELEASE_SOUND_ID(i_testSoundId0)
RELEASE_SOUND_ID(i_testSoundId1)
RELEASE_SOUND_ID(i_testSoundId2)
RELEASE_SOUND_ID(i_testSoundId3)
PRINTSTRING("...Placeholder Mission Cleanup")
PRINTNL()
UNREGISTER_SCRIPT_WITH_AUDIO()
DESTROY_WIDGETS()
TERMINATE_THIS_THREAD()
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Mission Pass
// -----------------------------------------------------------------------------------------------------------
PROC Mission_Passed()
PRINTSTRING("...Placeholder Mission Passed")
PRINTNL()
//Mission_Flow_Mission_Passed()
Mission_Cleanup()
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Mission Fail
// -----------------------------------------------------------------------------------------------------------
PROC Mission_Failed()
PRINTSTRING("...Placeholder Mission Failed")
PRINTNL()
//Mission_Flow_Mission_Failed()
Mission_Cleanup()
ENDPROC
// ===========================================================================================================
// Script Loop
// ===========================================================================================================
SCRIPT
PRINTSTRING("...Placeholder Mission Launched")
PRINTNL()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
MISSION_SETUP()
IF HAS_FORCE_CLEANUP_OCCURRED()
PRINTSTRING("...Placeholder Mission Force Cleanup")
PRINTNL()
Mission_Flow_Mission_Force_Cleanup()
Mission_Cleanup()
ENDIF
SET_MISSION_FLAG(TRUE)
WHILE (TRUE)
setupYankton()
do_custom_fn()
IF i_test_mode != i_test_mode_last_frame
PRINTLN("Setting new test mod", i_test_mode)
CleanupLastTestMode()
SetupTestMode()
i_test_mode_last_frame = i_test_mode
ENDIF
SWITCH i_test_mode
CASE 0
SoundPanningTest()
BREAK
CASE 1
ShooterTest()
BREAK
CASE 2
GunMenTest()
BREAK
CASE 3
BankSoundTest()
BREAK
CASE 4
PoliceScannerTest()
BREAK
CASE 5
DynamicMixerTest()
BREAK
CASE 6
ScriptedStreamTest()
BREAK
CASE 7
wallaTest()
BREAK
CASE 8
zoneListTest()
BREAK
CASE 9
conversationTest()
BREAK
CASE 10
animLinkedConvTest()
BREAK
CASE 11
floorGlassTest()
BREAK
CASE 12
alarmTest()
BREAK
CASE 13
emitterTest()
BREAK
ENDSWITCH
// Check for Pass
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
Mission_Passed()
ENDIF
// Check for Fail
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
Mission_Failed()
ENDIF
WAIT(0)
ENDWHILE
// Script should never reach here. Always terminate with cleanup function.
ENDSCRIPT
#ENDIF // IS_DEBUG_BUILD