290 lines
8.1 KiB
Python
Executable File
290 lines
8.1 KiB
Python
Executable File
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
//
|
|
// MISSION NAME : FairgroundHub.sc
|
|
// AUTHOR : Aaron Gandaa
|
|
// DESCRIPTION : This Controls Entry and Exit of Fairground
|
|
//
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
|
|
//----------------------
|
|
// INCLUDES
|
|
//----------------------
|
|
USING "cost_halo.sch"
|
|
USING "Fairground_Shared.sch"
|
|
|
|
//----------------------
|
|
// ENUM
|
|
//----------------------
|
|
|
|
//----------------------
|
|
// CONSTANTS
|
|
//----------------------
|
|
CONST_INT RIDE_BIGWHEEL 0
|
|
CONST_INT RIDE_RCOASTER 1
|
|
CONST_INT MAX_RIDES 2
|
|
|
|
CONST_FLOAT RIDE_TRIGGER_DIST 2.0
|
|
CONST_FLOAT RIDE_TRIGGER_PLUS 0.25
|
|
|
|
//----------------------
|
|
// STRUCT
|
|
//----------------------
|
|
|
|
//----------------------
|
|
// VARIABLES
|
|
//----------------------
|
|
COSTHALO_HANDLER levHandler
|
|
COSTHALO_HANDLER bigHandler
|
|
COST_HALO ridelev[1]
|
|
COST_HALO ridebig[1]
|
|
|
|
//----------------------
|
|
// DEBUG VARIABLES
|
|
//----------------------
|
|
#IF IS_DEBUG_BUILD
|
|
WIDGET_GROUP_ID m_WidgetGroup
|
|
BOOL bQuitScript = FALSE
|
|
BOOL bWarpToFairground = FALSE
|
|
#ENDIF
|
|
|
|
//----------------------
|
|
// DEBUG FUNCTIONS
|
|
//----------------------
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
/// PURPOSE:
|
|
/// Setups Debug Widgets
|
|
PROC SETUP_DEBUG_WIDGETS()
|
|
//SET_PROFILING_OF_THIS_SCRIPT(TRUE)
|
|
m_WidgetGroup = START_WIDGET_GROUP("Fairground")
|
|
ADD_WIDGET_BOOL("Quit Script", bQuitScript)
|
|
ADD_WIDGET_BOOL("Warp To Fairground", bWarpToFairground)
|
|
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
|
|
|
|
#ENDIF
|
|
|
|
//----------------------
|
|
// SCRIPT FUNCTIONS
|
|
//----------------------
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Setups up the script
|
|
PROC SCRIPT_SETUP()
|
|
|
|
//IF in director mode, don't charge for rides.
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
SETUP_COST_HALO(ridebig[0],
|
|
HALO_PED,
|
|
"Bigwheel",
|
|
GET_POSITION_FROM_STATIC_BLIP(STATIC_BLIP_AMBIENT_FGROUND_BIGWHEEL),
|
|
0,
|
|
"",
|
|
FALSE,
|
|
6.2)
|
|
SETUP_COST_AREA(ridelev[0],
|
|
HALO_PED,
|
|
"Rollercoaster",
|
|
<<-1651.641113,-1134.324951,21.903982>>,
|
|
<<-1640.984497,-1121.590332,16.503132>>,
|
|
6.750000,
|
|
0,
|
|
"",
|
|
FALSE)
|
|
ELSE
|
|
SETUP_COST_HALO(ridebig[0],
|
|
HALO_PED,
|
|
"Bigwheel",
|
|
GET_POSITION_FROM_STATIC_BLIP(STATIC_BLIP_AMBIENT_FGROUND_BIGWHEEL),
|
|
COST_BIGWHEEL,
|
|
"",
|
|
FALSE,
|
|
6.2)
|
|
SETUP_COST_AREA(ridelev[0],
|
|
HALO_PED,
|
|
"Rollercoaster",
|
|
<<-1651.641113,-1134.324951,21.903982>>,
|
|
<<-1640.984497,-1121.590332,16.503132>>,
|
|
6.750000,
|
|
COST_ROLLERCOASTER,
|
|
"",
|
|
FALSE)
|
|
ENDIF
|
|
|
|
levHandler.sActivateString = "LEV_RIDEHLP"
|
|
levHandler.sBrokenString = "LEV_BROKEN"
|
|
levHandler.sPoorString = "LEV_NOMONEY"
|
|
levHandler.sWantedString = "LEV_WANTED"
|
|
levHandler.sNoWayString = NULL
|
|
levHandler.bAllowOnMission = TRUE
|
|
|
|
|
|
bigHandler.sActivateString = "BIGW_RIDEHLP"
|
|
bigHandler.sBrokenString = "BIGW_BROKEN"
|
|
bigHandler.sPoorString = "BIGW_NOMONEY"
|
|
bigHandler.sWantedString = "BIGW_WANTED"
|
|
bigHandler.sNoWayString = NULL
|
|
levHandler.bAllowOnMission = TRUE
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Cleanups Script and terminates thread - this should be the last function called
|
|
PROC SCRIPT_CLEANUP()
|
|
#IF IS_DEBUG_BUILD
|
|
CLEANUP_DEBUG_WIDGETS()
|
|
#ENDIF
|
|
|
|
SHUTDOWN_COST_HALO(ridebig[0])
|
|
SHUTDOWN_COST_HALO(ridelev[0])
|
|
CLEAR_COSTHALO_HANDLER_HELP(levHandler)
|
|
CLEAR_COSTHALO_HANDLER_HELP(bigHandler)
|
|
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Cleanup")
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
//----------------------
|
|
// UPDATE FUNCTIONS
|
|
//----------------------
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
/// PURPOSE:
|
|
/// Updates Debug Widgets and draw debug stuff
|
|
PROC UPDATE_DEBUG_WIDGETS()
|
|
IF (bQuitScript)
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
IF (bWarpToFairground)
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-1658.7, -1101.7, 13.5>>)
|
|
bWarpToFairground = FALSE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
//----------------------
|
|
// MAIN SCRIPT
|
|
//----------------------
|
|
SCRIPT(coords_struct in_coords)
|
|
INT i
|
|
VECTOR vInCoords = in_coords.vec_coord[0] // Update world point
|
|
OBJECT_INDEX rollerCarTurnOffProp[4]
|
|
// just to stop asserts
|
|
IS_VECTOR_ZERO(vInCoords)
|
|
|
|
CPRINTLN(DEBUG_AMBIENT, "FAIRGROUND SETUP - 101")
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS | FORCE_CLEANUP_FLAG_REPEAT_PLAY|FORCE_CLEANUP_FLAG_DIRECTOR)
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH (HASH("fairgroundhub")) > 1
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground is attempting to launch with an instance already active.")
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
|
|
// Load Clifford Version
|
|
IF g_bLoadedClifford
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("fairgroundhubCLF")) = 0
|
|
REQUEST_SCRIPT_WITH_NAME_HASH(HASH("fairgroundhubCLF"))
|
|
WHILE NOT HAS_SCRIPT_WITH_NAME_HASH_LOADED(HASH("fairgroundhubCLF"))
|
|
WAIT(0)
|
|
ENDWHILE
|
|
START_NEW_SCRIPT_WITH_NAME_HASH_AND_ARGS(HASH("fairgroundhubCLF"),in_coords, SIZE_OF(in_coords),DEFAULT_STACK_SIZE)
|
|
ENDIF
|
|
|
|
//Shutdown bed save script since we're switching to AGT
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
|
|
SCRIPT_SETUP()
|
|
WAIT(3000)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SETUP_DEBUG_WIDGETS()
|
|
#ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(rollerCarTurnOffProp[0])
|
|
rollerCarTurnOffProp[0] = GET_CLOSEST_OBJECT_OF_TYPE(<<-1643.5242, -1124.6805, 17.4326>>, 0.3, PROP_ROLLER_CAR_01)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(rollerCarTurnOffProp[1])
|
|
rollerCarTurnOffProp[1] = GET_CLOSEST_OBJECT_OF_TYPE(<<-1645.1455, -1126.6127, 17.4326>>, 0.3, PROP_ROLLER_CAR_02)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(rollerCarTurnOffProp[2])
|
|
rollerCarTurnOffProp[2] = GET_CLOSEST_OBJECT_OF_TYPE(<<-1646.7676, -1128.5453, 17.4326>>, 0.3, PROP_ROLLER_CAR_02)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(rollerCarTurnOffProp[3])
|
|
rollerCarTurnOffProp[3] = GET_CLOSEST_OBJECT_OF_TYPE(<<-1648.3896, -1130.4784, 17.4326>>, 0.3, PROP_ROLLER_CAR_02)
|
|
ENDIF
|
|
|
|
i = 0
|
|
REPEAT COUNT_OF(rollerCarTurnOffProp) i
|
|
IF DOES_ENTITY_EXIST(rollerCarTurnOffProp[i])
|
|
FREEZE_ENTITY_POSITION(rollerCarTurnOffProp[i], TRUE)
|
|
SET_ENTITY_INVINCIBLE(rollerCarTurnOffProp[i], TRUE)
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Roller Car Get:", i)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
|
|
WHILE (TRUE)
|
|
IS_ENTITY_OK(PLAYER_PED_ID())
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_DEBUG_WIDGETS()
|
|
#ENDIF
|
|
|
|
IF (GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(), vInCoords, FALSE) > (RC_BRAIN_ACTIVATION_RANGE_NORMAL + 20.0))
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Terminating Out Of Range")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
IF IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE()
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Terminating as we are on a mission")
|
|
SCRIPT_CLEANUP()
|
|
ELIF ridelev[0].iCost = 0
|
|
ridelev[0].iCost = COST_ROLLERCOASTER
|
|
ridebig[0].iCost = COST_BIGWHEEL
|
|
levHandler.bTriggerHelpShown = FALSE
|
|
bigHandler.bTriggerHelpShown = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (GET_BUILDING_STATE(BUILDINGNAME_IPL_FERRIS_WHEEL) <> BUILDINGSTATE_NORMAL)
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Restoring Ferris Wheel IPL")
|
|
SET_BUILDING_STATE(BUILDINGNAME_IPL_FERRIS_WHEEL, BUILDINGSTATE_NORMAL)
|
|
ENDIF
|
|
|
|
// update halos
|
|
IF UPDATE_COSTHALO_HANDLER(rideLev, levHandler, DEFAULT, DEFAULT, DEFAULT, FRIEND_STACK_SIZE)
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Terminating - Running Ride - Leviathan")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
// update halos
|
|
IF UPDATE_COSTHALO_HANDLER(rideBig, bigHandler, DEFAULT, DEFAULT, DEFAULT, FRIEND_STACK_SIZE)
|
|
CPRINTLN(DEBUG_AMBIENT, "Fairground - Terminating - Running Ride - Big Wheel")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|
|
|
|
|
|
|
|
|