// ***************************************************************************************** // ***************************************************************************************** // // SCRIPT NAME : Ambient_Solomon.sc // AUTHOR : Aaron Gandaa // DESCRIPTION : Handles Gates For Before Solomon 1 // // ***************************************************************************************** // ***************************************************************************************** //Compile out Title Update changes to header functions. //Must be before includes. //CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R. //---------------------- // INCLUDES //---------------------- USING "rgeneral_include.sch" USING "RC_Helper_Functions.sch" USING "area_checks.sch" USING "script_launch_control.sch" //---------------------- // STRUCT //---------------------- STRUCT INVISIBLE_BIKE PED_INDEX mPed VEHICLE_INDEX mBike ENDSTRUCT //---------------------- // VARAIBLES //---------------------- structPedsForConversation convoMichael INT iNorthGateState = 0 INT iSouthGateState = 0 FLOAT fStopRange = 3.0 INT iStopTime = 2 INVISIBLE_BIKE bikeNorth INVISIBLE_BIKE bikeSouth BOOL bDebugNoCleanup = FALSE //VECTOR vNorthSecPed = <<-1052.0691, -475.6283, 35.6888>> //VECTOR vSouthSecPed = <<-1209.1813, -579.4733, 26.3182>> PED_INDEX mNorthSecPed PED_INDEX mSouthSecPed VECTOR vPlyrFwd MODEL_NAMES pedSecModel = S_M_M_SECURITY_01 //---------------------- // DEBUG VARIABLES //---------------------- #IF IS_DEBUG_BUILD WIDGET_GROUP_ID m_WidgetGroup BOOL bQuitScript = FALSE BOOL bUpdateWidgets = FALSE BOOL bFlowFlagState BOOL bShowDebug = FALSE BOOL bStopVehicle = FALSE BOOL bTestDialog = FALSE VECTOR vGateFwd = <<-0.37, -0.927, -0.053>> FLOAT fAngle = 0.0 FLOAT fDistToCenter #ENDIF //---------------------- // FUNCTION //---------------------- PROC SET_STUDIO_GATE_DOOR_STATE(DOOR_NAME_ENUM door, DOOR_STATE_ENUM state) SET_DOOR_STATE(door, state) SET_BIT(g_iOverrideDoorStateBitset[ENUM_TO_INT(door)/32], ENUM_TO_INT(door)%32) g_eOverrideDoorState[door] = state g_savedGlobals.sBuildingData.eDoorState[door] = state CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: DOOR:", ENUM_TO_INT(door), " State:", ENUM_TO_INT(state)) ENDPROC PROC LOCK_STUDIO_GATES(DOOR_STATE_ENUM state = DOORSTATE_LOCKED) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, FALSE) SET_ROADS_IN_ANGLED_AREA(<<-1039.504272,-477.787598,35.329666>>, <<-1062.444458,-469.568481,40.620861>>, 13.000000, FALSE, FALSE) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_NORTH_GATE_IN, state) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_NORTH_GATE_OUT, state) SET_ROADS_IN_ANGLED_AREA(<<-1039.504272,-477.787598,35.329666>>, <<-1062.444458,-469.568481,40.620861>>, 13.000000, FALSE, FALSE) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_SOUTH_GATE_IN, state) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_SOUTH_GATE_OUT, state) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: GATES LOCKED") ENDPROC PROC UNLOCK_STUDIO_GATES(DOOR_STATE_ENUM state = DOORSTATE_UNLOCKED) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<-1039.504272,-477.787598,35.329666>>, <<-1062.444458,-469.568481,40.620861>>, 13.000000) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_NORTH_GATE_IN, state) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_NORTH_GATE_OUT, state) SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<-1039.504272,-477.787598,35.329666>>, <<-1062.444458,-469.568481,40.620861>>, 13.000000) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_SOUTH_GATE_IN, state) SET_STUDIO_GATE_DOOR_STATE(DOORNAME_STUDIO_SOUTH_GATE_OUT, state) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: GATES UNLOCKED") ENDPROC //---------------------- // DEBUG FUNCTIONS //---------------------- #IF IS_DEBUG_BUILD /// PURPOSE: /// Setups Debug Widgets PROC SETUP_DEBUG_WIDGETS() m_WidgetGroup = START_WIDGET_GROUP("Ambient Solomon") ADD_WIDGET_BOOL("Quit Script", bQuitScript) ADD_WIDGET_BOOL("Update Widgets", bUpdateWidgets) ADD_WIDGET_BOOL("Draw Debug", bShowDebug) ADD_WIDGET_BOOL("Is Flag Set", bFlowFlagState) ADD_WIDGET_BOOL("bTestDialog", bTestDialog) ADD_WIDGET_BOOL("Stop Vehicle", bStopVehicle) ADD_WIDGET_FLOAT_SLIDER("Stop Distance", fStopRange, 0.0, 6.0, 0.05) ADD_WIDGET_INT_SLIDER("Stop Time", iStopTime, 0, 10, 1) ADD_WIDGET_INT_SLIDER("North Gate State", iNorthGateState, 0, 10, 1) ADD_WIDGET_INT_SLIDER("South Gate State", iSouthGateState, 0, 10, 1) ADD_WIDGET_VECTOR_SLIDER("vAmbSolLaunchCenter", vAmbSolLaunchCenter, -8000.0, 8000.0, 0.05) ADD_WIDGET_FLOAT_SLIDER("fAmbSolLaunchRadius", fAmbSolLaunchRadius, 0, 1000, 5) ADD_WIDGET_READ_ONLY_VECTOR("Player Forward", vPlyrFwd) ADD_WIDGET_FLOAT_READ_ONLY("Angle To Gate", fAngle) ADD_WIDGET_FLOAT_READ_ONLY("Dist To Studio", fDistToCenter) STOP_WIDGET_GROUP() ENDPROC /// PURPOSE: /// Removes Debug Widgets PROC CLEANUP_DEBUG_WIDGETS() IF DOES_WIDGET_GROUP_EXIST(m_WidgetGroup) DELETE_WIDGET_GROUP(m_WidgetGroup) ENDIF ENDPROC /// PURPOSE: /// Updates Debug Widgets PROC UPDATE_DEBUG_WIDGETS() IF NOT bUpdateWidgets EXIT ENDIF IF (bShowDebug) DRAW_DEBUG_AREA(<<-1055.046143,-469.334717,35.433327>>, <<-1057.439819,-474.977234,39.818699>>, 12.500000) // NORTH GATE - STOP CHECK - NO HEADING DRAW_DEBUG_AREA(<<-1049.317505,-473.747192,34.941956>>, <<-1059.483398,-468.760773,39.944832>>, 4.500000) // NORTH GATE - STOP CHECK - HEADING DRAW_DEBUG_AREA(<<-1210.236450,-579.875000,26.332148>>, <<-1204.725342,-586.357300,29.567726>>, 6.000000) // SOUTH GATE - STOP CHECK - NO HEADING DRAW_DEBUG_AREA(<<-1211.773926,-580.929932,26.330950>>, <<-1208.127197,-585.361694,29.660564>>, 4.500000) // SOUTH GATE - STOP CHECK - HEADING DRAW_DEBUG_SPHERE(vAmbSolLaunchCenter, fAmbSolLaunchRadius, 0, 0, 255, 64) DRAW_DEBUG_CIRCLE(vAmbSolLaunchCenter, fAmbSolLaunchRadius + 30.0, 0, 0, 255, 64) IF IS_PLAYER_PLAYING(PLAYER_ID()) DRAW_DEBUG_LINE(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(PLAYER_PED_ID()) + (vPlyrFwd * 4.0)) ENDIF IF IS_ENTITY_OK(bikeNorth.mBike) DRAW_DEBUG_LINE(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(bikeNorth.mBike)) ENDIF ENDIF IF (bStopVehicle) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()), fStopRange, 2) bStopVehicle = FALSE ENDIF ENDIF IF (bTestDialog) ADD_PED_FOR_DIALOGUE(convoMichael, ENUM_TO_INT(CHAR_MICHAEL), PLAYER_PED_ID(), "MICHAEL") IF CREATE_CONVERSATION(convoMichael, "AMSOLAU", "AMSOL_HERE", CONV_PRIORITY_HIGH, DISPLAY_SUBTITLES) bTestDialog = FALSE ENDIF ENDIF bFlowFlagState = GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN) fDistToCenter = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(), vAmbSolLaunchCenter) fAngle = ACOS(DOT_PRODUCT_XY(vPlyrFwd, vGateFwd)) ENDPROC #ENDIF //---------------------- // FUNCTIONS //---------------------- PROC CREATE_INVISIBLE_BIKE(INVISIBLE_BIKE &bike, VECTOR pos, FLOAT head) bike.mBike = CREATE_VEHICLE(AKUMA, pos, head) IF IS_ENTITY_OK(bike.mBike) FREEZE_ENTITY_POSITION(bike.mBike, TRUE) SET_ENTITY_COLLISION(bike.mBike, FALSE) SET_ENTITY_VISIBLE(bike.mBike, FALSE) SET_VEHICLE_ENGINE_ON(bike.mBike, FALSE, TRUE) bike.mPed = CREATE_PED_INSIDE_VEHICLE(bike.mBike, PEDTYPE_MISSION, GET_ENTITY_MODEL(PLAYER_PED_ID())) IF IS_ENTITY_OK(bike.mPed) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(bike.mPed, TRUE) SET_ENTITY_VISIBLE(bike.mPed, FALSE) STOP_PED_SPEAKING(bike.mPed, TRUE) ENDIF ENDIF ENDPROC PROC DESTROY_INVISIBLE_BIKE(INVISIBLE_BIKE &bike) SAFE_DELETE_PED(bike.mPed) SAFE_DELETE_VEHICLE(bike.mBike) ENDPROC //---------------------- // SCRIPT FUNCTIONS //---------------------- /// PURPOSE: /// Shutsdown the script PROC SCRIPT_CLEANUP() CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: SCRIPT CLEANUP") #IF IS_DEBUG_BUILD CLEANUP_DEBUG_WIDGETS() #ENDIF DESTROY_INVISIBLE_BIKE(bikeNorth) DESTROY_INVISIBLE_BIKE(bikeSouth) SAFE_RELEASE_PED(mNorthSecPed, FALSE) SAFE_RELEASE_PED(mSouthSecPed, FALSE) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_SECURITY_01) SET_MODEL_AS_NO_LONGER_NEEDED(AKUMA) TERMINATE_THIS_THREAD() ENDPROC PROC SCRIPT_WAIT() #IF IS_DEBUG_BUILD UPDATE_DEBUG_WIDGETS() IF (bQuitScript) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: DEBUG QUIT") SAFE_DELETE_PED(mNorthSecPed) SAFE_DELETE_PED(mSouthSecPed) SCRIPT_CLEANUP() ENDIF #ENDIF IS_ENTITY_OK(PLAYER_PED_ID()) // B*1318118 - If solomon 1 is running shut this down IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH (HASH("solomon1")) > 0 CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: SOLOMON 1 IS RUNNING - SHUT THIS SCRIPT DOWN") Remove_Script_From_Relaunch_List(LAUNCH_BIT_AMBIENT_SOLOMON) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) SCRIPT_CLEANUP() ENDIF // Immediately cleanup if this script has been completed via debug IF GET_MISSION_COMPLETE_STATE(SP_MISSION_SOLOMON_1) = TRUE CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: SOLOMON 1 HAS BEEN FINISHED BEFORE HAND") SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) Remove_Script_From_Relaunch_List(LAUNCH_BIT_AMBIENT_SOLOMON) SCRIPT_CLEANUP() ENDIF // check script exit conditions IF GET_MISSION_FLAG() CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: TERMINATING AS WE'RE ON A MISSION") SCRIPT_CLEANUP() ENDIF IF (GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: TERMINATING AS THE PLAYER ISN'T MICHAEL") SCRIPT_CLEANUP() ENDIF IF NOT IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vAmbSolLaunchCenter, fAmbSolLaunchRadius + 30.0) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: TERMINATING AS THE PLAYER IS FAR AWAY FROM MOVIE STUDIO") SCRIPT_CLEANUP() ENDIF WAIT(0) IS_ENTITY_OK(PLAYER_PED_ID()) ENDPROC FUNC PED_INDEX CREATE_GATE_SECURITY(VECTOR pos, FLOAT head) PED_INDEX pedID PED_INDEX pedArray[20] INT cnt INT i pedID = CREATE_PED(PEDTYPE_MISSION, pedSecModel, pos) IF IS_ENTITY_OK(pedID) SET_ENTITY_HEADING(pedID, head) SET_ENTITY_VISIBLE(pedID, FALSE) ENDIF //CLEAR_AREA_OF_PEDS(pos, 5.0) //RETURN pedID WAIT(0) IF IS_ENTITY_OK(pedID) cnt = GET_PED_NEARBY_PEDS(pedID, pedArray) REPEAT cnt i IF IS_ENTITY_OK(pedArray[i]) IF GET_DISTANCE_BETWEEN_PEDS(pedID, pedArray[i]) < 5.0 IF (GET_ENTITY_MODEL(pedArray[i]) = pedSecModel) SAFE_DELETE_PED(pedID) SET_ENTITY_AS_MISSION_ENTITY(pedArray[i]) RETURN pedArray[i] ENDIF ENDIF ENDIF ENDREPEAT SET_ENTITY_VISIBLE(pedID, TRUE) ENDIF RETURN pedID ENDFUNC FUNC BOOL IS_PED_IN_SECURITY_BOX_USE_PED_SCANNER(VECTOR secPos) INT cnt, i PED_INDEX pedArray[20] cnt = GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), pedArray) IF (cnt = 0) RETURN FALSE ENDIF REPEAT cnt i IF IS_ENTITY_OK(pedArray[i]) IF IS_PED_MODEL(pedArray[i], pedSecModel) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(pedArray[i], secPos) < 5.0 RETURN TRUE ENDIF ENDIF ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL IS_PED_IN_SECURITY_BOX(VECTOR secPos) PED_INDEX pedIndex IF NOT GET_CLOSEST_PED(secPos, 5.0, TRUE, TRUE, pedIndex, FALSE, TRUE) RETURN FALSE ENDIF IF NOT IS_ENTITY_OK(pedIndex) RETURN FALSE ENDIF RETURN IS_PED_MODEL(pedIndex, pedSecModel) ENDFUNC PROC UPDATE_NORTH_GATE(INT &iState) BOOL bOk FLOAT ang VEHICLE_INDEX veh SWITCH (iState) CASE 0 DESTROY_INVISIBLE_BIKE(bikeNorth) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, FALSE) SAFE_DELETE_PED(mNorthSecPed) /* mNorthSecPed = CREATE_GATE_SECURITY(vNorthSecPed, 68.0725) IF IS_ENTITY_OK(mNorthSecPed) IF NOT IS_PED_USING_ANY_SCENARIO(mNorthSecPed) CLEAR_PED_TASKS_IMMEDIATELY(mNorthSecPed) TASK_START_SCENARIO_AT_POSITION(mNorthSecPed, "PROP_HUMAN_CHAIR_SEAT_CHAIR_AND_COFFEE", <<-1050.7236, -476.6626, 36.0371>>, 164.01) ENDIF ENDIF */ iState ++ BREAK CASE 1 // if the player is in the close area on foot or on bike it's okay IF IS_ENTITY_IN_ANGLED_AREA_COMPLEX(PLAYER_PED_ID(), <<-1055.046143,-469.334717,35.433327>>, <<-1057.439819,-474.977234,39.818699>>, 12.500000) // NORTH GATE - STOP CHECK - NO HEADING fStopRange = 0.25 iState ++ EXIT ENDIF IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) veh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) ang = ACOS(DOT_PRODUCT_XY(vPlyrFwd, <<-0.37, -0.927, -0.053>>)) IF (ABSF(ang) < 45.0) IF IS_ENTITY_IN_ANGLED_AREA_COMPLEX(veh, <<-1049.317505,-473.747192,34.941956>>, <<-1059.483398,-468.760773,39.944832>>, 4.500000) //IF IS_ENTITY_IN_ANGLED_AREA_COMPLEX(veh, <<-1055.513672,-474.637115,35.627800>>, <<-1051.229736,-464.412628,39.914795>>, 9.500000) // NORTH GATE - STOP CHECK - HEADING fStopRange = 1.0 iState ++ ENDIF ENDIF ENDIF BREAK CASE 2 IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) veh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(veh, fStopRange, iStopTime) ELSE TASK_STAND_STILL(PLAYER_PED_ID(), -1) ENDIF IF IS_PED_IN_SECURITY_BOX_USE_PED_SCANNER(<<-1051.1, -476.1, 37.0>>) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: PED FOUND IN NORTH SECURITY BOX") ADD_PED_FOR_DIALOGUE(convoMichael, ENUM_TO_INT(CHAR_MICHAEL), PLAYER_PED_ID(), "MICHAEL") IF (GET_RANDOM_BOOL()) bOk = CREATE_CONVERSATION(convoMichael, "AMSOLAU", "AMSOL_HERE", CONV_PRIORITY_HIGH) ELSE bOk = CREATE_CONVERSATION(convoMichael, "AMSOLAU", "AMSOL_WORK", CONV_PRIORITY_HIGH) ENDIF IF (bOk) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: CONVERSATION STARTED WITH - PED FOUND IN NORTH SECURITY BOX") iState ++ ENDIF ELSE CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: NO PED FOUND IN NORTH SECURITY BOX") iState ++ ENDIF BREAK CASE 3 IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) veh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(veh, fStopRange, iStopTime) iState ++ ENDIF EXIT ENDIF iState ++ BREAK CASE 4 IF NOT IS_SCRIPTED_SPEECH_PLAYING(PLAYER_PED_ID()) AND NOT IS_SCRIPTED_CONVERSATION_ONGOING() CLEAR_PED_TASKS(PLAYER_PED_ID()) iState ++ ENDIF BREAK CASE 5 UNLOCK_STUDIO_GATES() iState ++ BREAK CASE 6 CREATE_INVISIBLE_BIKE(bikeNorth, <<-1051.9556, -472.0550, 35.5672>>, 161.4418) iState ++ BREAK CASE 7 IF NOT IS_ENTITY_IN_ANGLED_AREA_COMPLEX(PLAYER_PED_ID(), <<-1055.513672,-474.637115,35.627800>>, <<-1051.229736,-464.412628,39.914795>>, 9.500000) DESTROY_INVISIBLE_BIKE(bikeNorth) iState ++ ENDIF BREAK CASE 8 IF bDebugNoCleanup = FALSE SCRIPT_CLEANUP() ENDIF BREAK ENDSWITCH ENDPROC PROC UPDATE_SOUTH_GATE(INT &iState) BOOL bOk FLOAT ang VEHICLE_INDEX veh SWITCH (iState) CASE 0 DESTROY_INVISIBLE_BIKE(bikeSouth) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, FALSE) SAFE_DELETE_PED(mSouthSecPed) /* mSouthSecPed = CREATE_GATE_SECURITY(vSouthSecPed, 221.1277) IF IS_ENTITY_OK(mSouthSecPed) IF NOT IS_PED_USING_ANY_SCENARIO(mSouthSecPed) CLEAR_PED_TASKS_IMMEDIATELY(mSouthSecPed) TASK_START_SCENARIO_AT_POSITION(mSouthSecPed, "PROP_HUMAN_CHAIR_SEAT_CHAIR_AND_COFFEE", <<-1210.1525, -578.0859, 26.7238>>, -26.01) ENDIF ENDIF */ iState ++ BREAK CASE 1 // if the player is in the close area on foot or on bike it's okay IF IS_ENTITY_IN_ANGLED_AREA_COMPLEX(PLAYER_PED_ID(), <<-1210.236450,-579.875000,26.332148>>, <<-1204.725342,-586.357300,29.567726>>, 6.000000) // SOUTH GATE - STOP CHECK - NO HEADING fStopRange = 0.25 iState ++ EXIT ENDIF IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) veh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) ang = ACOS(DOT_PRODUCT_XY(vPlyrFwd, <<0.730, 0.683, -0.013>>)) IF (ABSF(ang) < 25.0) IF IS_ENTITY_IN_ANGLED_AREA_COMPLEX(veh, <<-1211.773926,-580.929932,26.330950>>, <<-1208.127197,-585.361694,29.660564>>, 4.500000) //IF IS_ENTITY_IN_ANGLED_AREA_COMPLEX(veh, <<-1206.386841,-579.894958,26.265524>>, <<-1212.553345,-585.332214,29.517256>>, 6.000000) // SOUTH GATE - STOP CHECK - HEADING fStopRange = 3.0 iState ++ ENDIF ENDIF ENDIF BREAK CASE 2 IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) veh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(veh, fStopRange, iStopTime) ELSE TASK_STAND_STILL(PLAYER_PED_ID(), -1) ENDIF IF IS_PED_IN_SECURITY_BOX_USE_PED_SCANNER(<<-1210.1525, -578.0859, 26.7238>>) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: PED FOUND IN SOUTH SECURITY BOX") ADD_PED_FOR_DIALOGUE(convoMichael, ENUM_TO_INT(CHAR_MICHAEL), PLAYER_PED_ID(), "MICHAEL") IF (GET_RANDOM_BOOL()) bOk = CREATE_CONVERSATION(convoMichael, "AMSOLAU", "AMSOL_HERE", CONV_PRIORITY_HIGH) ELSE bOk = CREATE_CONVERSATION(convoMichael, "AMSOLAU", "AMSOL_WORK", CONV_PRIORITY_HIGH) ENDIF IF (bOk) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: CONVERSATION STARTED WITH - PED FOUND IN SOUTH SECURITY BOX") iState ++ ENDIF ELSE CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: NO PED FOUND IN SOUTH SECURITY BOX") iState ++ ENDIF BREAK CASE 3 IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) veh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(veh, fStopRange, iStopTime) //SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) iState ++ EXIT ENDIF ENDIF iState ++ BREAK CASE 4 IF NOT IS_SCRIPTED_SPEECH_PLAYING(PLAYER_PED_ID()) AND NOT IS_SCRIPTED_CONVERSATION_ONGOING() CLEAR_PED_TASKS(PLAYER_PED_ID()) iState ++ ENDIF BREAK CASE 5 UNLOCK_STUDIO_GATES() iState ++ BREAK CASE 6 CREATE_INVISIBLE_BIKE(bikeSouth, <<-1206.8398, -583.2034, 26.1738>>, 311.4116) iState ++ BREAK CASE 7 IF NOT IS_ENTITY_IN_ANGLED_AREA_COMPLEX(PLAYER_PED_ID(), <<-1210.236450,-579.875000,26.332148>>, <<-1204.725342,-586.357300,29.567726>>, 6.000000) // SOUTH GATE - STOP CHECK - NO HEADING DESTROY_INVISIBLE_BIKE(bikeSouth) iState ++ ENDIF BREAK CASE 8 IF bDebugNoCleanup = FALSE SCRIPT_CLEANUP() ENDIF BREAK ENDSWITCH ENDPROC //---------------------- // MAIN SCRIPT //---------------------- SCRIPT BOOL bOk = FALSE CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: INIT SCRIPT 102") IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_DEBUG_MENU|FORCE_CLEANUP_FLAG_SP_TO_MP|FORCE_CLEANUP_FLAG_REPEAT_PLAY) SCRIPT_CLEANUP() ENDIF /* IF (GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN) = TRUE) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: GATES ARE ALL READY OPEN") SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) Remove_Script_From_Relaunch_List(LAUNCH_BIT_AMBIENT_SOLOMON) SCRIPT_CLEANUP() ENDIF IF (GET_MISSION_COMPLETE_STATE(SP_MISSION_SOLOMON_1) = TRUE) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: SOLOMON 1 HAS BEEN FINISHED BEFORE HAND") SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) Remove_Script_From_Relaunch_List(LAUNCH_BIT_AMBIENT_SOLOMON) SCRIPT_CLEANUP() ENDIF */ // Register the script so that it can be relaunched when loading from a savegame. Register_Script_To_Relaunch_List(LAUNCH_BIT_AMBIENT_SOLOMON) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: STUDIO FLOW FLAG - ", GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN)) #IF IS_DEBUG_BUILD SETUP_DEBUG_WIDGETS() #ENDIF CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: WAITING FOR PLAYER TO GET IN RANGE") IF IS_ENTITY_OK(PLAYER_PED_ID()) WHILE (bOK = FALSE) bOk = ((GET_MISSION_FLAG() = FALSE) AND (GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL) AND IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vAmbSolLaunchCenter, fAmbSolLaunchRadius)) SCRIPT_WAIT() ENDWHILE ENDIF CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: PLAYER IN RANGE") SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, FALSE) LOCK_STUDIO_GATES() SECURE_REQUEST_AND_LOAD_MODEL(AKUMA) SECURE_REQUEST_AND_LOAD_MODEL(pedSecModel) WHILE (TRUE) IS_ENTITY_OK(PLAYER_PED_ID()) vPlyrFwd = GET_ENTITY_FORWARD_VECTOR(PLAYER_PED_ID()) IF (GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) = 0) UPDATE_NORTH_GATE(iNorthGateState) UPDATE_SOUTH_GATE(iSouthGateState) IF IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), AC_MOVIE_STUDIO) CPRINTLN(DEBUG_AMBIENT, "[AMB_SOL]: PLAYER GOT IN A DIFFERENT WAY - CLEANUP") SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MOVIE_STUDIO_OPEN, TRUE) Remove_Script_From_Relaunch_List(LAUNCH_BIT_AMBIENT_SOLOMON) SCRIPT_CLEANUP() ENDIF ENDIF SCRIPT_WAIT() ENDWHILE ENDSCRIPT