2965 lines
90 KiB
Python
Executable File
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
|