Files
2025-09-29 00:52:08 +02:00

554 lines
19 KiB
Python
Executable File

//Commands
USING "rage_builtins.sch"
USING "commands_script.sch"
USING "commands_network.sch"
USING "commands_dlc.sch"
//Globals
USING "globals.sch"
//Common Helpers
USING "Bg_Common_Helpers.sch"
STRING sVersionNumber = "1.48.00"
BOOL bActivatedPrint
INT iActivatePrintProgress
PROC DISPLAY_TEXT_WITH_LITERAL_STRING_FOR_RELEASE_F9(FLOAT DisplayAtX, FLOAT DisplayAtY, STRING pTextLabel, STRING pLiteralString)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(pTextLabel)
ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY(pLiteralString)
END_TEXT_COMMAND_DISPLAY_TEXT(DisplayAtX, DisplayAtY)
ENDPROC
PROC MAINTAIN_CHECK_TO_ACTIVATE_PRINT()
IF (bActivatedPrint)
SET_TEXT_SCALE(0.0000, 0.23)
SET_TEXT_COLOUR(255,255,255, 255)
DISPLAY_TEXT_WITH_LITERAL_STRING_FOR_RELEASE_F9(0.69, 0.06, "STRING", sVersionNumber)
ENDIF
IF NOT (bActivatedPrint)
IF IS_PAUSE_MENU_ACTIVE()
SWITCH iActivatePrintProgress
CASE 0
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
iActivatePrintProgress++
SETTIMERA(0)
ENDIF
BREAK
CASE 1
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
iActivatePrintProgress++
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
CASE 2
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
iActivatePrintProgress++
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
CASE 3
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
iActivatePrintProgress++
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
CASE 4
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
bActivatedPrint = TRUE
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
ENDSWITCH
ENDIF
ELSE
IF IS_PAUSE_MENU_ACTIVE()
SWITCH iActivatePrintProgress
CASE 0
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
iActivatePrintProgress++
SETTIMERA(0)
ENDIF
BREAK
CASE 1
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
iActivatePrintProgress++
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
CASE 2
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
iActivatePrintProgress++
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
CASE 3
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
iActivatePrintProgress++
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
CASE 4
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
bActivatedPrint = FALSE
SETTIMERA(0)
ELIF TIMERA() > 2000
iActivatePrintProgress = 0
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDPROC
//url:bugstar:3290469 - BG Script that amends the tunable values for vehicle sales limiter
PROC FIX_FOR_3290469()
IF g_sMPTunables.iThreshold_no_of_minutes != 120
g_sMPTunables.iThreshold_no_of_minutes = 120
PRINTLN("FIX_FOR_3290469 - THRESHOLD_NO_OF_MINUTES set to 120 minutes")
ENDIF
ENDPROC
//url:bugstar:5092622 - [BG SCRIPT][PUBLIC] [EXPLOIT] Frozen money - Director mode, join friend, suspend app.
PROC FIX_FOR_5092622()
IF g_bDirectorModeRunning
AND (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("director_mode")) <= 0)
AND IS_SKYSWOOP_AT_GROUND()
PRINTLN("[FIX_FOR_5092622] - Detected MP launch with Director Mode not cleaned up properly, quitting to SP")
SHUTDOWN_AND_LAUNCH_SINGLE_PLAYER_GAME()
ENDIF
ENDPROC
//url:bugstar:3280561 - [BG SCRIPT][PUBLIC][REPORTED] "Insurance Fraud" Mod is causing players to be put into Bad Sport lobbies and lose GTA$
PROC FIX_FOR_3280561()
IF IS_PC_VERSION()
INT iPlayer
REPEAT COUNT_OF(GlobalplayerBD_FM) iPlayer
SET_BIT(GlobalplayerBD_FM[iPlayer].iPersonalVehicleFlagsBS, PERSONAL_VEHICLE_BD_FLAG_IN_VEHICLE_WITH_BOUNTY)
ENDREPEAT
ENDIF
ENDPROC
BOOL bDoneEnableDecreasingDupeValueCheck
//url:bugstar:3533670 - [BG SCRIPT ONLY] Decreasing dupe sell values for repeat offenders.
FUNC BOOL IS_REPEAT_OFFENDER_1()
INT iCurrentPeak = GET_MP_INT_PLAYER_STAT(MPPLY_CHAR_PEAK_EXPLOIT_LEVEL)
IF (iCurrentPeak < g_sMPTunables.iRepeatOffenderMinExploitLevel1)
RETURN(FALSE)
ENDIF
INT iPrevious[4]
INT i
iPrevious[0] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASONEXPLOITLEVEL)
iPrevious[1] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASON2EXPLOITLEVEL)
iPrevious[2] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASON3EXPLOITLEVEL)
iPrevious[3] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASON4EXPLOITLEVEL)
REPEAT (g_sMPTunables.iRepeatOffenderNumSeasons1-1) i
IF (iPrevious[i] < g_sMPTunables.iRepeatOffenderMinExploitLevel1)
RETURN(FALSE)
ENDIF
ENDREPEAT
RETURN(TRUE)
ENDFUNC
FUNC BOOL IS_REPEAT_OFFENDER_2()
INT iCurrentPeak = GET_MP_INT_PLAYER_STAT(MPPLY_CHAR_PEAK_EXPLOIT_LEVEL)
IF (iCurrentPeak < g_sMPTunables.iRepeatOffenderMinExploitLevel2)
RETURN(FALSE)
ENDIF
INT iPrevious[4]
INT i
iPrevious[0] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASONEXPLOITLEVEL)
iPrevious[1] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASON2EXPLOITLEVEL)
iPrevious[2] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASON3EXPLOITLEVEL)
iPrevious[3] = GET_MP_INT_PLAYER_STAT(MPPLY_PREVSEASON4EXPLOITLEVEL)
REPEAT (g_sMPTunables.iRepeatOffenderNumSeasons2-1) i
IF (iPrevious[i] < g_sMPTunables.iRepeatOffenderMinExploitLevel2)
RETURN(FALSE)
ENDIF
ENDREPEAT
RETURN(TRUE)
ENDFUNC
PROC FIX_FOR_3533670()
IF NOT (bDoneEnableDecreasingDupeValueCheck)
IF (g_FinishedFreemodeInit)
IF IS_REPEAT_OFFENDER_1()
OR IS_REPEAT_OFFENDER_2()
g_sMPTunables.bEnabled_GET_CARMOD_SELL_VALUE_apply_dupe_multiplier = TRUE
PRINTLN("ENABLE_DECREASING_DUPE_VALUES - repeat offender, activating.")
ELSE
g_sMPTunables.bEnabled_GET_CARMOD_SELL_VALUE_apply_dupe_multiplier = FALSE
PRINTLN("ENABLE_DECREASING_DUPE_VALUES - repeat offender, NOT activating.")
ENDIF
bDoneEnableDecreasingDupeValueCheck = TRUE
ENDIF
ELSE
IF NOT (g_FinishedFreemodeInit)
PRINTLN("ENABLE_DECREASING_DUPE_VALUES - resetting bDoneEnableDecreasingDupeValueCheck")
bDoneEnableDecreasingDupeValueCheck = FALSE
ENDIF
ENDIF
ENDPROC
//url:bugstar:3496271 - [BG SCRIPT] Custom plate option disabled for players with exploit level 4 or above.
BOOL bRunDisablePlatesCheck
PROC FIX_FOR_3496271()
IF NOT (bRunDisablePlatesCheck)
IF (g_FinishedFreemodeInit)
INT iCurrentExploitLevel = GET_MP_INT_PLAYER_STAT(MPPLY_CHAR_EXPLOIT_LEVEL)
IF (iCurrentExploitLevel >= 4)
g_sMPTunables.bDisable_SC_Number_Plate_Apply = TRUE
PRINTLN("DISABLE_PLATE_BASED_ON_EXPLOIT - disabling plates, exploit level ", iCurrentExploitLevel, " iTotalModValueThresholdLow = ", 4)
ELSE
// don't set tunable to false incase we have actually set the tunable world wide to stop a duping method.
//g_sMPTunables.bDisable_SC_Number_Plate_Apply = FALSE
ENDIF
bRunDisablePlatesCheck = TRUE
ENDIF
ELSE
IF NOT (g_FinishedFreemodeInit)
bRunDisablePlatesCheck = FALSE
PRINTLN("DISABLE_PLATE_BASED_ON_EXPLOIT - freemode not initialised, clearing bRunDisablePlatesCheck")
ENDIF
ENDIF
ENDPROC
/// START - CHILIADWAKEUP
/// PURPOSE:
/// Very efficient test for if two entities are with fRange metres of each other
/// Will be more efficient than doing IS_ENTITY_AT_ENTITY()
/// NOTE: This function doesn't do dead checks to keep it fast, make sure you do them yourself!
/// PARAMS:
/// e1 - First entity
/// e2 - Second entity
/// fRange - Test if the entities are this close to each other
FUNC BOOL IS_ENTITY_IN_RANGE_COORDS(ENTITY_INDEX e1, VECTOR vCoord, FLOAT fRange)
RETURN ( VDIST2(GET_ENTITY_COORDS(e1), vCoord) <= fRange*fRange )
ENDFUNC
OBJECT_INDEX oiChiliadWakeUp_ObjectId
BOOL bChiliadWakeUp_StartedWakeUp, bChiliadWakeUp_FinishedStationaryStage
SCRIPT_TIMER stChiliadWakeUp_ObjectTimer, stChiliadWakeUp_SpeedTimer, stChiliadWakeUp_SoundTimer, stChiliadWakeUp_CallTimer
VECTOR vChiliadWakeUp_PreviousEndCoord
INT iChiliadWakeUp_LerpStage
INT iChiliadWakeUp_ObjectSoundId = -1
INT iChiliadWakeUp_PlayerSoundId = -1
CONST_INT CHILIADWAKEUP_STATIONARY_TIME 4500
CONST_INT CHILIADWAKEUP_SECOND_LERP_TIME 2000
CONST_INT CHILIADWAKEUP_THIRD_LERP_TIME 1000
CONST_INT CHILIADWAKEUP_FOURTH_LERP_TIME 100
CONST_INT CHILIADWAKEUP_LAST_LERP_TIME 50
CONST_INT CHILIADWAKEUP_PLAYER_SOUND_DELAY 1000
CONST_INT CHILIADWAKEUP_PLAYER_SOUND_TIME 3000
CONST_INT CHILIADWAKEUP_PLAYER_CALL_DELAY 60000
CONST_INT CHILIADWAKEUP_RESUPPLY_COUNT 577
CONST_INT CHILIADWAKEUP_TATTOO_CHECK 5000
PROC CHILIADWAKEUP_ROTATE_OBJECT()
VECTOR vCurrentRot = GET_ENTITY_ROTATION(oiChiliadWakeUp_ObjectId)
vCurrentRot.x = 0.0
vCurrentRot.y = 0.0
vCurrentRot.z += 1.0
SET_ENTITY_ROTATION(oiChiliadWakeUp_ObjectId, vCurrentRot)
ENDPROC
FUNC VECTOR CHILIADWAKEUP_GET_LERP_END_COORD()
SWITCH iChiliadWakeUp_LerpStage
CASE 0 RETURN <<306.567,5652.283,785.594>>
CASE 1 RETURN <<-1082.8652, 6390.5195, 924.2493>>
CASE 2 RETURN <<-2542.8740, 7217.5137, 1051.3335>>
CASE 3 RETURN <<-4139.1064, 8143.3022, 1412.6940>>
ENDSWITCH
RETURN <<0.0, 0.0, 0.0>>
ENDFUNC
FUNC INT CHILIADWAKEUP_GET_TOTAL_LERP()
RETURN CHILIADWAKEUP_SECOND_LERP_TIME+CHILIADWAKEUP_THIRD_LERP_TIME+CHILIADWAKEUP_FOURTH_LERP_TIME+CHILIADWAKEUP_LAST_LERP_TIME
ENDFUNC
FUNC INT CHILIADWAKEUP_GET_LERP_TIME()
SWITCH iChiliadWakeUp_LerpStage
CASE 0 RETURN CHILIADWAKEUP_SECOND_LERP_TIME
CASE 1 RETURN CHILIADWAKEUP_THIRD_LERP_TIME
CASE 2 RETURN CHILIADWAKEUP_FOURTH_LERP_TIME
CASE 3 RETURN CHILIADWAKEUP_LAST_LERP_TIME
ENDSWITCH
RETURN -1
ENDFUNC
FUNC BOOL CHILIADWAKEUP_IS_WEATHER_SUITABLE()
INT iPrevWeather, iNextWeather
FLOAT fInterp
GET_CURR_WEATHER_STATE(iPrevWeather, iNextWeather, fInterp)
IF fInterp < 0.5
IF iPrevWeather = HASH("RAIN")
OR iPrevWeather = HASH("THUNDER")
OR iNextWeather = HASH("XMAS")
RETURN TRUE
ENDIF
ELSE
IF iNextWeather = HASH("RAIN")
OR iNextWeather = HASH("THUNDER")
OR iNextWeather = HASH("XMAS")
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL CHILIADWAKEUP_MET_REQUIREMENTS()
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SEEN_CS)
AND GET_MP_INT_CHARACTER_STAT(MP_STAT_LFETIME_BIKER_BUY_COMPLET5 ,GET_ACTIVE_CHARACTER_SLOT()) > CHILIADWAKEUP_RESUPPLY_COUNT
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL CHILIADWAKEUP_CAN_LAUNCH()
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NIGHTCLUB_DRUNK_SPAWN_CHILIAD_UNLOCK)
AND g_TransitionSpawnData.iSpawnActivity = ENUM_TO_INT(SPAWN_ACTIVITY_DRUNK_AWAKEN)
AND NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
AND IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), <<426.433,5614.172,766.414>>, 1.0)
AND g_TransitionSessionNonResetVars.sMagnateGangBossData.iClockHours >= 1
AND g_TransitionSessionNonResetVars.sMagnateGangBossData.iClockHours < 4
AND CHILIADWAKEUP_IS_WEATHER_SUITABLE()
AND CHILIADWAKEUP_MET_REQUIREMENTS()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC CHILIADWAKEUP_MAINTAIN()
// Prevent phone calls during egg
IF HAS_NET_TIMER_STARTED(stChiliadWakeUp_CallTimer)
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CELLPHONE_THIS_FRAME)
IF HAS_NET_TIMER_EXPIRED(stChiliadWakeUp_CallTimer, CHILIADWAKEUP_PLAYER_CALL_DELAY)
REINIT_NET_TIMER(stChiliadWakeUp_CallTimer)
RESET_NET_TIMER(stChiliadWakeUp_CallTimer)
ENDIF
ENDIF
// Finish sounds afterwards
IF HAS_NET_TIMER_STARTED(stChiliadWakeUp_SoundTimer)
AND HAS_NET_TIMER_EXPIRED(stChiliadWakeUp_SoundTimer, CHILIADWAKEUP_PLAYER_SOUND_DELAY)
IF iChiliadWakeUp_PlayerSoundId = (-1)
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
iChiliadWakeUp_PlayerSoundId = GET_SOUND_ID()
PLAY_SOUND_FROM_ENTITY(iChiliadWakeUp_PlayerSoundId, "05", PLAYER_PED_ID(), "DLC_GR_CS2_Sounds") // Geiger
ENDIF
ELIF HAS_NET_TIMER_EXPIRED(stChiliadWakeUp_SoundTimer, (CHILIADWAKEUP_PLAYER_SOUND_DELAY+CHILIADWAKEUP_PLAYER_SOUND_TIME))
IF NOT HAS_SOUND_FINISHED(iChiliadWakeUp_PlayerSoundId)
STOP_SOUND(iChiliadWakeUp_PlayerSoundId)
ENDIF
RELEASE_SOUND_ID(iChiliadWakeUp_PlayerSoundId)
iChiliadWakeUp_PlayerSoundId = -1
STOP_AUDIO_SCENE("DLC_GR_CS2_General_Scene")
REINIT_NET_TIMER(stChiliadWakeUp_SoundTimer)
RESET_NET_TIMER(stChiliadWakeUp_SoundTimer)
PRINTLN("[CHILIADWAKEUP] CHILIADWAKEUP_MAINTAIN - Finished player sound after ", (CHILIADWAKEUP_PLAYER_SOUND_DELAY+CHILIADWAKEUP_PLAYER_SOUND_TIME), "ms.")
ENDIF
ENDIF
// Check if event should trigger
IF NOT bChiliadWakeUp_StartedWakeUp
AND NOT CHILIADWAKEUP_CAN_LAUNCH()
EXIT
ENDIF
bChiliadWakeUp_StartedWakeUp = TRUE
// Prevent phone calls during egg
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CELLPHONE_THIS_FRAME)
// Create object and apply reward
IF NOT DOES_ENTITY_EXIST(oiChiliadWakeUp_ObjectId)
MODEL_NAMES eModel = INT_TO_ENUM(MODEL_NAMES, HASH("imp_prop_ship_01a"))
REQUEST_MODEL(eModel)
IF HAS_MODEL_LOADED(eModel)
oiChiliadWakeUp_ObjectId = CREATE_OBJECT_NO_OFFSET(eModel, <<360.8759, 5623.4272, 780.1747>>, FALSE, FALSE, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(eModel)
FREEZE_ENTITY_POSITION(oiChiliadWakeUp_ObjectId, TRUE)
SET_ENTITY_LOD_DIST(oiChiliadWakeUp_ObjectId, 8000)
INT iStatBackMark = GET_MP_INT_CHARACTER_STAT(MP_STAT_BACK_MARK)
SET_MP_INT_CHARACTER_STAT(MP_STAT_BACK_MARK, iStatBackMark+1)
STRUCT_GUNRUNNING_MISSION_END sGUN_Telemetry_dataTemp
sGUN_Telemetry_dataTemp.m_missionTypeId = ENUM_TO_INT(eGUNRUN_TYPE_STEAL)
sGUN_Telemetry_dataTemp.m_missionId = 24
PLAYSTATS_GUNRUNNING_MISSION_ENDED(sGUN_Telemetry_dataTemp)
vChiliadWakeUp_PreviousEndCoord = GET_ENTITY_COORDS(oiChiliadWakeUp_ObjectId, FALSE)
iChiliadWakeUp_LerpStage = 0
PRINTLN("[CHILIADWAKEUP] CHILIADWAKEUP_MAINTAIN - Created object and applied reward. Stat: ", iStatBackMark+1)
ELSE
PRINTLN("[CHILIADWAKEUP] CHILIADWAKEUP_MAINTAIN - Model is loading.")
ENDIF
// Handle object movement, acceleration and audio
ELSE
CHILIADWAKEUP_ROTATE_OBJECT()
IF IS_SCREEN_FADED_IN()
OR IS_SCREEN_FADING_IN()
IF iChiliadWakeUp_ObjectSoundId = (-1)
START_AUDIO_SCENE("DLC_GR_CS2_General_Scene")
iChiliadWakeUp_ObjectSoundId = GET_SOUND_ID()
PLAY_SOUND_FROM_ENTITY(iChiliadWakeUp_ObjectSoundId, "07", oiChiliadWakeUp_ObjectId, "DLC_GR_CS2_Sounds") // Loud collect sound
ENDIF
IF NOT bChiliadWakeUp_FinishedStationaryStage
IF HAS_NET_TIMER_EXPIRED(stChiliadWakeUp_ObjectTimer, CHILIADWAKEUP_STATIONARY_TIME) // 2 seconds past, ufo starts to speed off
FREEZE_ENTITY_POSITION(oiChiliadWakeUp_ObjectId, FALSE)
REINIT_NET_TIMER(stChiliadWakeUp_ObjectTimer)
RESET_NET_TIMER(stChiliadWakeUp_ObjectTimer)
START_NET_TIMER(stChiliadWakeUp_SpeedTimer)
bChiliadWakeUp_FinishedStationaryStage = TRUE
PRINTLN("[CHILIADWAKEUP] CHILIADWAKEUP_MAINTAIN - Finished stationary stage after ", CHILIADWAKEUP_STATIONARY_TIME, "ms.")
ENDIF
ELSE
FLOAT fSpeedValue = TO_FLOAT(GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(stChiliadWakeUp_SpeedTimer)) / TO_FLOAT(CHILIADWAKEUP_GET_TOTAL_LERP())
FLOAT fLerpValue = TO_FLOAT(GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(stChiliadWakeUp_ObjectTimer)) / TO_FLOAT(CHILIADWAKEUP_GET_LERP_TIME())
fLerpValue = fLerpValue * fSpeedValue
VECTOR vLerpVector = LERP_VECTOR(vChiliadWakeUp_PreviousEndCoord, CHILIADWAKEUP_GET_LERP_END_COORD(), fLerpValue)
SET_ENTITY_COORDS(oiChiliadWakeUp_ObjectId, vLerpVector)
IF fLerpValue >= 1.0
iChiliadWakeUp_LerpStage++
vChiliadWakeUp_PreviousEndCoord = GET_ENTITY_COORDS(oiChiliadWakeUp_ObjectId, FALSE)
REINIT_NET_TIMER(stChiliadWakeUp_ObjectTimer)
RESET_NET_TIMER(stChiliadWakeUp_ObjectTimer)
IF CHILIADWAKEUP_GET_LERP_TIME() = -1
DELETE_OBJECT(oiChiliadWakeUp_ObjectId)
FORCE_LIGHTNING_FLASH()
IF NOT HAS_SOUND_FINISHED(iChiliadWakeUp_ObjectSoundId)
STOP_SOUND(iChiliadWakeUp_ObjectSoundId)
ENDIF
RELEASE_SOUND_ID(iChiliadWakeUp_ObjectSoundId)
iChiliadWakeUp_ObjectSoundId = -1
START_NET_TIMER(stChiliadWakeUp_SoundTimer)
START_NET_TIMER(stChiliadWakeUp_CallTimer)
REINIT_NET_TIMER(stChiliadWakeUp_SpeedTimer)
RESET_NET_TIMER(stChiliadWakeUp_SpeedTimer)
vChiliadWakeUp_PreviousEndCoord = <<0.0, 0.0, 0.0>>
iChiliadWakeUp_LerpStage = 0
bChiliadWakeUp_StartedWakeUp = FALSE
bChiliadWakeUp_FinishedStationaryStage = FALSE
PRINTLN("[CHILIADWAKEUP] CHILIADWAKEUP_MAINTAIN - Finished all lerp stages. Deleted object and starting player sound delay.")
ELSE
PRINTLN("[CHILIADWAKEUP] CHILIADWAKEUP_MAINTAIN - Finished lerp stage. Moving onto stage ", iChiliadWakeUp_LerpStage)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
/// END - CHILIADWAKEUP
//Main loop
SCRIPT(launch_Data launchData)
SET_THIS_SCRIPT_CAN_BE_PAUSED(FALSE)
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
IF launchData.iD = launchData.iD
ENDIF
PRINTLN("[BGSCRIPT] - Launching - ", sVersionNumber)
g_iBGScriptVersion = GET_HASH_KEY(sVersionNumber) // this is required to be set for the bg script kick system.
PRINTLN("[BGSCRIPT] g_iBGScriptVersion = ", g_iBGScriptVersion)
//Wait 10s afterbooting
INT iTime = GET_GAME_TIMER() + 10000
WHILE GET_GAME_TIMER() < iTime
WAIT(0)
ENDWHILE
//Main Loops
WHILE TRUE
// cheat for rockstar dev's to display which bg script is running.
IF IS_ROCKSTAR_DEV()
#IF IS_DEBUG_BUILD
OR TRUE
#ENDIF
MAINTAIN_CHECK_TO_ACTIVATE_PRINT()
ENDIF
IF NETWORK_IS_GAME_IN_PROGRESS()
AND (g_sCURRENT_UGC_STATUS.g_bUgcGlobalsBlockLoaded)
//url:bugstar:3290469 - BG Script that amends the tunable values for vehicle sales limiter
FIX_FOR_3290469()
//url:bugstar:3280561 - [BG SCRIPT][PUBLIC][REPORTED] "Insurance Fraud" Mod is causing players to be put into Bad Sport lobbies and lose GTA$
FIX_FOR_3280561()
//url:bugstar:3533670 - [BG SCRIPT ONLY] Decreasing dupe sell values for repeat offenders.
FIX_FOR_3533670()
//url:bugstar:3496271 - [BG SCRIPT] Custom plate option disabled for players with exploit level 4 or above.
FIX_FOR_3496271()
//url:bugstar:5092622 - [BG SCRIPT][PUBLIC] [EXPLOIT] Frozen money - Director mode, join friend, suspend app.
FIX_FOR_5092622()
//CHILIADWAKEUP
CHILIADWAKEUP_MAINTAIN()
ENDIF
IF NETWORK_IS_ACTIVITY_SESSION()
ENDIF
//The one wait
WAIT(0)
ENDWHILE
PRINTLN("[BGSCRIPT] BG_IS_EXITFLAG_SET() = TRUE, cleaning up")
//BG_SET_EXITFLAG_RESPONSE()
TERMINATE_THIS_THREAD()
ENDSCRIPT