1083 lines
30 KiB
Python
Executable File
1083 lines
30 KiB
Python
Executable File
//////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// SCRIPT NAME : celebration_editor.sc //
|
|
// AUTHOR : William Kennedy //
|
|
// DESCRIPTION : Allows editing of MP celebrations //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Include the standard headers (which also ensures the correct #DEFINEs are recognised)
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "ped_component_public.sch"
|
|
|
|
// Do nothing in release mode
|
|
#IF IS_FINAL_BUILD
|
|
SCRIPT
|
|
ENDSCRIPT
|
|
#ENDIF
|
|
|
|
// Only include in debug mode
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
USING "commands_script.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "script_player.sch"
|
|
USING "script_bugstar.sch"
|
|
USING "shared_debug.sch"
|
|
USING "net_include.sch"
|
|
USING "net_wait_zero.sch"
|
|
|
|
// Variables
|
|
CONST_INT MAX_NUM_CELEBRATION_PEDS 15
|
|
CONST_INT MAX_NUM_CELEBRATION_VEHICLES 4
|
|
|
|
CONST_INT CELEBRATION_VEHICLE_MONSTER 0
|
|
CONST_INT CELEBRATION_VEHICLE_ZENTORNO 1
|
|
CONST_INT CELEBRATION_VEHICLE_MOTORBIKE 2
|
|
CONST_INT CELEBRATION_VEHICLE_CYCLE 3
|
|
|
|
BOOL bPlayPairedAnim
|
|
VECTOR vPairedAnimWorldPosition
|
|
FLOAT fPairedAnimHeading
|
|
|
|
STRUCT STRUCT_PLAYER_NAME_DATA
|
|
|
|
VECTOR vPos
|
|
VECTOR vRotation
|
|
VECTOR vScale
|
|
VECTOR vWorldSize
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT STRUCT_CELEBRATION_PED
|
|
|
|
PED_INDEX pedId
|
|
VECTOR vWorldPosition
|
|
FLOAT fRotation
|
|
MODEL_NAMES eModel
|
|
BOOL bActive
|
|
BOOL bPlayAnim
|
|
INT iPlayAnimStage
|
|
INT iAnimSceneId
|
|
FLOAT fAnimLength
|
|
SCRIPT_TIMER stTimer
|
|
VECTOR vPairedAnimOffset
|
|
STRUCT_PLAYER_NAME_DATA sPlayerNameData
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT STRUCT_CELEBRATION_VEHICLE
|
|
|
|
VEHICLE_INDEX vehicleId
|
|
VECTOR vWorldPosition
|
|
FLOAT fRotation
|
|
MODEL_NAMES eModel
|
|
BOOL bActive
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT STRUCT_CELEBRATION_CAMERA
|
|
|
|
CAMERA_INDEX camId
|
|
VECTOR vWorldPosition
|
|
VECTOR vWorldRotation
|
|
FLOAT fFov
|
|
BOOL bActive
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT_CELEBRATION_PED sPed[MAX_NUM_CELEBRATION_PEDS]
|
|
STRUCT_CELEBRATION_VEHICLE sVehicle[MAX_NUM_CELEBRATION_VEHICLES]
|
|
STRUCT_CELEBRATION_CAMERA sCamera
|
|
|
|
BOOL bTerminateEditor
|
|
BOOL bEditingEnabled = TRUE
|
|
INT iEditingStage
|
|
BOOL bPrintData
|
|
INTERIOR_INSTANCE_INDEX interiorId
|
|
SCALEFORM_INDEX playerNameMovies[MAX_NUM_CELEBRATION_PEDS]
|
|
INT iDrawNamesStage
|
|
BOOL bEditNAmes
|
|
|
|
// Functions
|
|
PROC ADD_WIDGETS()
|
|
|
|
INT i
|
|
TEXT_LABEL_63 tl63Temp
|
|
|
|
START_WIDGET_GROUP("Celebration Editor")
|
|
|
|
ADD_WIDGET_BOOL("Terminate Editor", bTerminateEditor)
|
|
ADD_WIDGET_BOOL("Enable Editing", bEditingEnabled)
|
|
ADD_WIDGET_BOOL("Print Scene Data", bPrintData)
|
|
ADD_WIDGET_BOOL("Edit Names", bEditNAmes)
|
|
|
|
START_WIDGET_GROUP("Create Entities")
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Active"
|
|
ADD_WIDGET_BOOL(tl63Temp, sPed[i].bActive)
|
|
ENDREPEAT
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_VEHICLES i
|
|
SWITCH i
|
|
CASE CELEBRATION_VEHICLE_MONSTER tl63Temp = "Monster Active" BREAK
|
|
CASE CELEBRATION_VEHICLE_ZENTORNO tl63Temp = "Zentorno Active" BREAK
|
|
CASE CELEBRATION_VEHICLE_MOTORBIKE tl63Temp = "Motorbike Active" BREAK
|
|
CASE CELEBRATION_VEHICLE_CYCLE tl63Temp = "Cycle Active" BREAK
|
|
ENDSWITCH
|
|
ADD_WIDGET_BOOL(tl63Temp, sVehicle[i].bActive)
|
|
ENDREPEAT
|
|
|
|
tl63Temp = ""
|
|
tl63Temp = "Camera Active"
|
|
ADD_WIDGET_BOOL(tl63Temp, sCamera.bActive)
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Entity Properties")
|
|
|
|
tl63Temp = "Play Paired Anims On Ped 0 and 1"
|
|
ADD_WIDGET_BOOL(tl63Temp, bPlayPairedAnim)
|
|
ADD_WIDGET_VECTOR_SLIDER("Paired Anim Pos", vPairedAnimWorldPosition, -10000.0, 10000.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Paired Anim Rot", fPairedAnimHeading, -10000.0, 10000.0, 0.01)
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Position"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sPed[i].vWorldPosition, -10000.0, 10000.0, 0.01)
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Heading"
|
|
ADD_WIDGET_FLOAT_SLIDER(tl63Temp, sPed[i].fRotation, -10000.0, 10000.0, 0.1)
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Play Celebration"
|
|
ADD_WIDGET_BOOL(tl63Temp, sPed[i].bPlayAnim)
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Paired Offset"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sPed[i].vPairedAnimOffset, -10000.0, 10000.0, 0.01)
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Name Scale"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sPed[i].sPlayerNameData.vScale, -10000.0, 10000.0, 0.01)
|
|
tl63Temp = "Ped "
|
|
tl63Temp += i
|
|
tl63Temp += " Name World Scale"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sPed[i].sPlayerNameData.vWorldSize, -10000.0, 10000.0, 0.01)
|
|
ENDREPEAT
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_VEHICLES i
|
|
SWITCH i
|
|
CASE CELEBRATION_VEHICLE_MONSTER tl63Temp = "Monster Position" BREAK
|
|
CASE CELEBRATION_VEHICLE_ZENTORNO tl63Temp = "ZENTORNO Position" BREAK
|
|
CASE CELEBRATION_VEHICLE_MOTORBIKE tl63Temp = "Motorbike Position" BREAK
|
|
CASE CELEBRATION_VEHICLE_CYCLE tl63Temp = "Cycle Position" BREAK
|
|
ENDSWITCH
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sVehicle[i].vWorldPosition, -10000.0, 10000.0, 0.01)
|
|
SWITCH i
|
|
CASE CELEBRATION_VEHICLE_MONSTER tl63Temp = "Monster Rotation" BREAK
|
|
CASE CELEBRATION_VEHICLE_ZENTORNO tl63Temp = "ZENTORNO Rotation" BREAK
|
|
CASE CELEBRATION_VEHICLE_MOTORBIKE tl63Temp = "Motorbike Rotation" BREAK
|
|
CASE CELEBRATION_VEHICLE_CYCLE tl63Temp = "Cycle Rotation" BREAK
|
|
ENDSWITCH
|
|
ADD_WIDGET_FLOAT_SLIDER(tl63Temp, sVehicle[i].fRotation, -10000.0, 10000.0, 0.01)
|
|
ENDREPEAT
|
|
|
|
tl63Temp = "Camera "
|
|
tl63Temp += i
|
|
tl63Temp += " Position"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sCamera.vWorldPosition, -10000.0, 10000.0, 0.01)
|
|
tl63Temp = "Camera "
|
|
tl63Temp += i
|
|
tl63Temp += " Rotation"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63Temp, sCamera.vWorldRotation, -10000.0, 10000.0, 0.01)
|
|
tl63Temp = "Camera "
|
|
tl63Temp += i
|
|
tl63Temp += " FOV"
|
|
ADD_WIDGET_FLOAT_SLIDER(tl63Temp, sCamera.fFov, -10000.0, 10000.0, 0.01)
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_VEHICLE_DATA(INT iVehicle, BOOL bForceInitialiseAsInactive = FALSE)
|
|
|
|
SWITCH iVehicle
|
|
CASE CELEBRATION_VEHICLE_MONSTER
|
|
sVehicle[iVehicle].vWorldPosition = <<413.179, -974.422, -100.004>>
|
|
sVehicle[iVehicle].fRotation = 158.368
|
|
sVehicle[iVehicle].eModel = MONSTER
|
|
IF bForceInitialiseAsInactive
|
|
sVehicle[iVehicle].bActive = FALSE
|
|
ENDIF
|
|
BREAK
|
|
CASE CELEBRATION_VEHICLE_ZENTORNO
|
|
sVehicle[iVehicle].vWorldPosition = <<413.8590, -974.6100, -100.0042>>
|
|
sVehicle[iVehicle].fRotation = 149.8085
|
|
sVehicle[iVehicle].eModel = ZENTORNO
|
|
IF bForceInitialiseAsInactive
|
|
sVehicle[iVehicle].bActive = FALSE
|
|
ENDIF
|
|
BREAK
|
|
CASE CELEBRATION_VEHICLE_MOTORBIKE
|
|
sVehicle[iVehicle].vWorldPosition = <<414.7016, -975.6291, -100.0042>>
|
|
sVehicle[iVehicle].fRotation = 237.3050
|
|
sVehicle[iVehicle].eModel = AKUMA
|
|
IF bForceInitialiseAsInactive
|
|
sVehicle[iVehicle].bActive = FALSE
|
|
ENDIF
|
|
BREAK
|
|
CASE CELEBRATION_VEHICLE_CYCLE
|
|
sVehicle[iVehicle].vWorldPosition = <<415.1816, -976.0641, -100.0042>>
|
|
sVehicle[iVehicle].fRotation = 139.7340
|
|
sVehicle[iVehicle].eModel = FIXTER
|
|
IF bForceInitialiseAsInactive
|
|
sVehicle[iVehicle].bActive = FALSE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_PED_DATA(INT iPed, BOOL bForceInitialiseAsInactive = FALSE)
|
|
|
|
SWITCH iPed
|
|
|
|
CASE 0
|
|
sPed[0].vWorldPosition = <<414.4000, -977.6000, -99.0>>
|
|
sPed[0].fRotation = 200.0000
|
|
sPed[0].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[0].eModel = A_F_Y_HIPSTER_01
|
|
sPed[0].bActive = TRUE
|
|
sPed[0].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[0].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
IF bForceInitialiseAsInactive
|
|
sPed[0].bActive = FALSE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 1
|
|
sPed[1].vWorldPosition = <<413.0202, -976.6559, -99.0>>
|
|
sPed[1].fRotation = 225.3750
|
|
sPed[1].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[1].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[1].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[1].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 2
|
|
sPed[2].vWorldPosition = <<414.9879, -975.4411, -99.0>>
|
|
sPed[2].fRotation = 183.6250
|
|
sPed[2].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[2].eModel = A_F_Y_HIPSTER_01
|
|
sPed[2].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[2].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 3
|
|
sPed[3].vWorldPosition = <<416.2123, -975.5722, -99.0>>
|
|
sPed[3].fRotation = 155.3000
|
|
sPed[3].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[3].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[3].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[3].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 4
|
|
sPed[4].vWorldPosition = <<410.7824, -976.5933, -99.0>>
|
|
sPed[4].fRotation = 240.9000
|
|
sPed[4].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[4].eModel = A_F_Y_HIPSTER_01
|
|
sPed[4].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[4].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 5
|
|
sPed[5].vWorldPosition = <<411.1806, -975.8190, -99.0>>
|
|
sPed[5].fRotation = 227.5000
|
|
sPed[5].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[5].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[5].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[5].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 6
|
|
sPed[6].vWorldPosition = <<414.0178, -974.6259, -99.0>>
|
|
sPed[6].fRotation = 206.6500
|
|
sPed[6].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[6].eModel = A_F_Y_HIPSTER_01
|
|
sPed[6].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[6].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 7
|
|
sPed[7].vWorldPosition = <<415.7338, -972.9619, -99.0>>
|
|
sPed[7].fRotation = 170.7750
|
|
sPed[7].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[7].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[7].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[7].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 8
|
|
sPed[8].vWorldPosition = <<412.1275, -974.0275, -99.0>>
|
|
sPed[8].fRotation = 200.0000
|
|
sPed[8].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[8].eModel = A_F_Y_HIPSTER_01
|
|
sPed[8].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[8].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 9
|
|
sPed[9].vWorldPosition = <<417.3252, -970.7984, -99.0>>
|
|
sPed[9].fRotation = 160.0250
|
|
sPed[9].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[9].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[9].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[9].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 10
|
|
sPed[10].vWorldPosition = <<409.8050, -975.0361, -99.0>>
|
|
sPed[10].fRotation = 240.6500
|
|
sPed[10].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[10].eModel = A_F_Y_HIPSTER_01
|
|
sPed[10].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[10].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 11
|
|
sPed[11].vWorldPosition = <<410.6598, -974.3722, -99.0>>
|
|
sPed[11].fRotation = 222.1500
|
|
sPed[11].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[11].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[11].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[11].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 12
|
|
sPed[12].vWorldPosition = <<407.5374, -974.3933, -99.0>>
|
|
sPed[12].fRotation = 258.1750
|
|
sPed[12].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[12].eModel = A_F_Y_HIPSTER_01
|
|
sPed[12].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[12].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 13
|
|
sPed[13].vWorldPosition = <<413.1881, -969.0190, -99.0>>
|
|
sPed[13].fRotation = 204.0250
|
|
sPed[13].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[13].eModel = A_M_Y_VINEWOOD_01
|
|
sPed[13].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[13].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
CASE 14
|
|
sPed[14].vWorldPosition = <<415.0103, -969.1959, -99.0>>
|
|
sPed[14].fRotation = 182.3500
|
|
sPed[14].vPairedAnimOffset = << 0.0, 0.0, 90.0 >>
|
|
sPed[14].eModel = A_F_Y_HIPSTER_01
|
|
sPed[14].sPlayerNameData.vScale = << 0.75, 0.5, 0.375 >>
|
|
sPed[14].sPlayerNameData.vWorldSize = << 0.75, 0.5, 0.375 >>
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_ALL_PEDS_DATA()
|
|
|
|
INT i
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
INITIALISE_PED_DATA(i)
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_ALL_VEHICLES_DATA()
|
|
|
|
INT i
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_VEHICLES i
|
|
INITIALISE_VEHICLE_DATA(i)
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_CAMERA_DATA(BOOL bResetAsInactive = FALSE)
|
|
|
|
sCamera.vWorldPosition = <<415.6, -980.4, -99.4>>
|
|
sCamera.vWorldRotation = <<10.1, -0.2, 21.0>>
|
|
sCamera.fFov = 48.0
|
|
sCamera.bActive = TRUE
|
|
|
|
IF bResetAsInactive
|
|
sCamera.bActive = FALSE
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_DATA()
|
|
|
|
vPairedAnimWorldPosition = << 414.650, -978.460, -100.004 >>
|
|
fPairedAnimHeading = 200.000
|
|
|
|
INITIALISE_ALL_PEDS_DATA()
|
|
INITIALISE_ALL_VEHICLES_DATA()
|
|
INITIALISE_CAMERA_DATA()
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL LOAD_CELEBRATION_INTERIOR()
|
|
|
|
IF NOT IS_VALID_INTERIOR(interiorId)
|
|
|
|
interiorId = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPed[0].vWorldPosition,"v_winningroom")
|
|
|
|
ELSE
|
|
|
|
IF IS_INTERIOR_DISABLED(interiorId)
|
|
DISABLE_INTERIOR(interiorId, FALSE)
|
|
ENDIF
|
|
|
|
PIN_INTERIOR_IN_MEMORY(interiorId)
|
|
|
|
RETURN IS_INTERIOR_READY(interiorId)
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
PROC CLEANUP_CELEBRATIONS_PEDS()
|
|
|
|
INT i
|
|
STRUCT_CELEBRATION_PED sPedTemp
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
|
|
IF DOES_ENTITY_EXIST(sPed[i].pedId)
|
|
DELETE_PED(sPed[i].pedId)
|
|
ENDIF
|
|
|
|
sPed[i] = sPedTemp
|
|
INITIALISE_PED_DATA(i)
|
|
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC CLEANUP_CELEBRATION_VEHICLES()
|
|
|
|
INT i
|
|
STRUCT_CELEBRATION_VEHICLE sVehicleTemp
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_VEHICLES i
|
|
|
|
IF DOES_ENTITY_EXIST(sVehicle[i].vehicleId)
|
|
DELETE_VEHICLE(sVehicle[i].vehicleId)
|
|
ENDIF
|
|
|
|
sVehicle[i] = sVehicleTemp
|
|
INITIALISE_VEHICLE_DATA(i)
|
|
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC CLEANUP_CELEBRATION_CAMERA()
|
|
|
|
STRUCT_CELEBRATION_CAMERA sCameraTemp
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
|
|
sCamera = sCameraTemp
|
|
INITIALISE_CAMERA_DATA()
|
|
|
|
ENDPROC
|
|
|
|
PROC CLEANUP_CELEBRATION_EDITOR()
|
|
|
|
CLEANUP_CELEBRATIONS_PEDS()
|
|
CLEANUP_CELEBRATION_VEHICLES()
|
|
CLEANUP_CELEBRATION_CAMERA()
|
|
|
|
ENDPROC
|
|
|
|
PROC RESET_PLAY_ANIM_DATA(INT iPed, TEXT_LABEL_63 tl63_AnimDict)
|
|
|
|
RESET_NET_TIMER(sPed[iPed].stTimer)
|
|
CLEAR_PED_TASKS_IMMEDIATELY(sPed[iPed].pedId)
|
|
sPed[iPed].iAnimSceneId = 0
|
|
REMOVE_ANIM_DICT(tl63_AnimDict)
|
|
sPed[iPed].bPlayAnim = FALSE
|
|
sPed[iPed].iPlayAnimStage = 0
|
|
sPed[iPed].fAnimLength = 0
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_PLAY_CELEBRATION_ANIM(INT iPed)
|
|
|
|
TEXT_LABEL_63 tl63_AnimDict, tl63_AnimName, tl63_PairedAnimDict, tl63_PairedAnimName[2]
|
|
VECTOR vPedPairedPos, vPedPairedRot, vPairedScenePos, vPairedSceneRot
|
|
|
|
IF IS_PED_MALE(sPed[iPed].pedId)
|
|
tl63_AnimDict = "anim@mp_player_intcelebrationmale@finger"
|
|
tl63_AnimName = "finger"
|
|
ELSE
|
|
tl63_AnimDict = "anim@mp_player_intcelebrationfemale@finger"
|
|
tl63_AnimName = "finger"
|
|
ENDIF
|
|
|
|
tl63_PairedAnimDict = "anim@mp_player_intcelebrationpaired@f_m_manly_handshake"
|
|
tl63_PairedAnimName[0] = "MANLY_HANDSHAKE_LEFT"
|
|
tl63_PairedAnimName[1] = "MANLY_HANDSHAKE_RIGHT"
|
|
|
|
SWITCH sPed[iPed].iPlayAnimStage
|
|
|
|
CASE 0
|
|
|
|
IF sPed[iPed].bPlayAnim
|
|
|
|
REQUEST_ANIM_DICT(tl63_AnimDict)
|
|
|
|
IF HAS_ANIM_DICT_LOADED(tl63_AnimDict)
|
|
|
|
sPed[iPed].iAnimSceneId = CREATE_SYNCHRONIZED_SCENE(GET_ENTITY_COORDS(sPed[iPed].pedId), GET_ENTITY_ROTATION(sPed[iPed].pedId))
|
|
|
|
IF sPed[iPed].fAnimLength = 0
|
|
sPed[iPed].fAnimLength = GET_ANIM_DURATION(tl63_AnimDict, tl63_AnimName)
|
|
ENDIF
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(sPed[iPed].stTimer)
|
|
START_NET_TIMER(sPed[iPed].stTimer, TRUE)
|
|
ENDIF
|
|
|
|
TASK_SYNCHRONIZED_SCENE( sPed[iPed].pedId,
|
|
sPed[iPed].iAnimSceneId,
|
|
tl63_AnimDict, tl63_AnimName,
|
|
INSTANT_BLEND_IN, NORMAL_BLEND_OUT,
|
|
SYNCED_SCENE_NONE, RBF_NONE, INSTANT_BLEND_IN,
|
|
AIK_DISABLE_LEG_IK |
|
|
AIK_DISABLE_ARM_IK |
|
|
AIK_DISABLE_HEAD_IK |
|
|
AIK_DISABLE_TORSO_IK |
|
|
AIK_DISABLE_TORSO_REACT_IK )
|
|
|
|
sPed[iPed].iPlayAnimStage++
|
|
|
|
ENDIF
|
|
|
|
ELIF bPlayPairedAnim
|
|
|
|
IF iPed >= 0
|
|
AND iPed <= 1
|
|
|
|
REQUEST_ANIM_DICT(tl63_PairedAnimDict)
|
|
|
|
IF HAS_ANIM_DICT_LOADED(tl63_PairedAnimDict)
|
|
|
|
vPairedScenePos = vPairedAnimWorldPosition
|
|
vPairedSceneRot = << 0.0, 0.0, fPairedAnimHeading >>
|
|
|
|
vPairedSceneRot += sPed[iPed].vPairedAnimOffset
|
|
|
|
sPed[iPed].iAnimSceneId = CREATE_SYNCHRONIZED_SCENE(vPairedScenePos, vPairedSceneRot)
|
|
|
|
IF sPed[iPed].fAnimLength = 0
|
|
sPed[iPed].fAnimLength = GET_ANIM_DURATION(tl63_PairedAnimDict, tl63_PairedAnimName[iPed])
|
|
ENDIF
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(sPed[iPed].stTimer)
|
|
START_NET_TIMER(sPed[iPed].stTimer, TRUE)
|
|
ENDIF
|
|
|
|
vPedPairedPos = GET_ANIM_INITIAL_OFFSET_POSITION(tl63_PairedAnimDict, tl63_PairedAnimName[iPed], vPairedScenePos, vPairedSceneRot)
|
|
vPedPairedRot = GET_ANIM_INITIAL_OFFSET_ROTATION(tl63_PairedAnimDict, tl63_PairedAnimName[iPed], vPairedScenePos, vPairedSceneRot)
|
|
|
|
IF DOES_ENTITY_EXIST(sPed[iPed].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sPed[iPed].pedId)
|
|
SET_ENTITY_COORDS_NO_OFFSET(sPed[iPed].pedId, vPedPairedPos)
|
|
SET_ENTITY_ROTATION(sPed[iPed].pedId, vPedPairedRot)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
TASK_SYNCHRONIZED_SCENE( sPed[iPed].pedId,
|
|
sPed[iPed].iAnimSceneId,
|
|
tl63_PairedAnimDict, tl63_PairedAnimName[iPed],
|
|
INSTANT_BLEND_IN, NORMAL_BLEND_OUT,
|
|
SYNCED_SCENE_NONE, RBF_NONE, INSTANT_BLEND_IN,
|
|
AIK_DISABLE_LEG_IK |
|
|
AIK_DISABLE_ARM_IK |
|
|
AIK_DISABLE_HEAD_IK |
|
|
AIK_DISABLE_TORSO_IK |
|
|
AIK_DISABLE_TORSO_REACT_IK )
|
|
|
|
sPed[iPed].iPlayAnimStage++
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
RESET_PLAY_ANIM_DATA(iPed, tl63_AnimDict)
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE 1
|
|
|
|
IF IS_SYNCHRONIZED_SCENE_RUNNING(sPed[iPed].iAnimSceneId)
|
|
sPed[iPed].iPlayAnimStage++
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE 2
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(sPed[iPed].stTimer, (CEIL(sPed[iPed].fAnimLength + 1)*1000), TRUE)
|
|
RESET_PLAY_ANIM_DATA(iPed, tl63_AnimDict)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
FUNC VECTOR GET_PLAYER_NAME_OFFSET_NG_DEBUG(PED_INDEX &peds, INT iIndex)
|
|
|
|
FLOAT x, y, z
|
|
|
|
x = 0.0
|
|
y = 0.5
|
|
|
|
IF iIndex = 5 // Put the fifth peds offset slightly higher to balance out scene.
|
|
IF IS_PED_WEARING_HIGH_HEELS(peds)
|
|
z = 0.10
|
|
ELSE
|
|
z = 0.05
|
|
ENDIF
|
|
ELSE
|
|
IF IS_PED_WEARING_HIGH_HEELS(peds)
|
|
z = 0.10
|
|
ELSE
|
|
z = 0.05
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN << x, y, z >>
|
|
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR GET_MISSION_LOCATE_ROTATION_VECTOR_DEBUG(VECTOR paramLocatePos, VECTOR paramPointAtPos)
|
|
|
|
//If the vector is ZERO then Return Zero
|
|
IF IS_VECTOR_ZERO(paramPointAtPos)
|
|
RETURN <<0.0, 0.0, 0.0>>
|
|
ENDIF
|
|
|
|
//Get the heading and flip it by 180
|
|
VECTOR returnRotation
|
|
returnRotation.z = 180 - GET_HEADING_FROM_VECTOR_2D(paramPointAtPos.x - paramLocatePos.x, paramPointAtPos.y - paramLocatePos.y)
|
|
//remove the x and y
|
|
returnRotation.x = 0.0
|
|
returnRotation.y = 0.0
|
|
|
|
//return the correct rotational vector
|
|
RETURN returnRotation
|
|
|
|
ENDFUNC
|
|
|
|
PROC MAINTAIN_NAMES()
|
|
|
|
INT i
|
|
TEXT_LABEL_63 tl63Temp
|
|
BOOL bAllMoviesLoaded = TRUE
|
|
VECTOR vRotation, vPedCoords
|
|
|
|
SWITCH iDrawNamesStage
|
|
|
|
CASE 0
|
|
|
|
IF bEditNAmes
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
|
|
IF i <= 7 // Limited to 8 scalform movies at the moment.
|
|
|
|
tl63Temp = "PLAYER_NAME_0"
|
|
tl63Temp += (i + 1)
|
|
|
|
playerNameMovies[i] = REQUEST_SCALEFORM_MOVIE(tl63Temp)
|
|
|
|
IF NOT HAS_SCALEFORM_MOVIE_LOADED(playerNameMovies[i])
|
|
bAllMoviesLoaded = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
|
|
IF bAllMoviesLoaded
|
|
iDrawNamesStage++
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE 1
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
|
|
IF i <= 7 // Limited to 8 scalform movies at the moment.
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(playerNameMovies[i],"SET_PLAYER_NAME")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME("WWWWWWWWW")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
|
|
iDrawNamesStage++
|
|
|
|
BREAK
|
|
|
|
CASE 2
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
|
|
IF i <= 7 // Limited to 8 scalform movies at the moment.
|
|
|
|
IF DOES_ENTITY_EXIST(sPed[i].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sPed[i].pedId)
|
|
VECTOR vOffset
|
|
vOffset = GET_PLAYER_NAME_OFFSET_NG_DEBUG(sPed[i].pedId, i)
|
|
vPedCoords = GET_PED_BONE_COORDS(sPed[i].pedId, BONETAG_SPINE3, <<0,0,0>>)
|
|
VECTOR vRelativeOffset
|
|
vRelativeOffset = (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(sPed[i].pedId, vOffset) - GET_ENTITY_COORDS(sPed[i].pedId))
|
|
VECTOR vTextCoords
|
|
vTextCoords = (vPedCoords + vRelativeOffset)
|
|
vRotation = GET_MISSION_LOCATE_ROTATION_VECTOR_DEBUG(vPedCoords, GET_FINAL_RENDERED_CAM_COORD())
|
|
DRAW_SCALEFORM_MOVIE_3D_SOLID(playerNameMovies[i], vTextCoords, vRotation, sPed[i].sPlayerNameData.vScale, sPed[i].sPlayerNameData.vWorldSize)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_PEDS()
|
|
|
|
INT i
|
|
FLOAT fZcoord
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
|
|
IF sPed[i].bActive
|
|
|
|
IF NOT DOES_ENTITY_EXIST(sPed[i].pedId)
|
|
|
|
IF REQUEST_LOAD_MODEL(sPed[i].eModel)
|
|
sPed[i].pedId = CREATE_PED(PEDTYPE_MISSION, sPed[i].eModel, sPed[i].vWorldPosition, sPed[i].fRotation)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPed[i].pedId, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPed[i].pedId, TRUE)
|
|
SET_ENTITY_INVINCIBLE(sPed[i].pedId, TRUE)
|
|
IF GET_GROUND_Z_FOR_3D_COORD(sPed[i].vWorldPosition, fZcoord)
|
|
sPed[i].vWorldPosition.z = fZcoord
|
|
ELSE
|
|
sPed[i].vWorldPosition.z -= 1.0
|
|
ENDIF
|
|
SET_ENTITY_COORDS(sPed[i].pedId, sPed[i].vWorldPosition)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(sPed[i].eModel)
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF DOES_ENTITY_EXIST(sPed[i].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sPed[i].pedId)
|
|
IF NOT bPlayPairedAnim
|
|
SET_ENTITY_COORDS(sPed[i].pedId, sPed[i].vWorldPosition)
|
|
SET_ENTITY_HEADING(sPed[i].pedId, sPed[i].fRotation)
|
|
ELSE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
MAINTAIN_PLAY_CELEBRATION_ANIM(i)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF DOES_ENTITY_EXIST(sPed[i].pedId)
|
|
DELETE_PED(sPed[i].pedId)
|
|
INITIALISE_PED_DATA(i, TRUE)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_VEHICLES()
|
|
|
|
INT i
|
|
FLOAT fZcoord
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_VEHICLES i
|
|
|
|
IF sVehicle[i].bActive
|
|
|
|
IF NOT DOES_ENTITY_EXIST(sVehicle[i].vehicleId)
|
|
|
|
IF REQUEST_LOAD_MODEL(sVehicle[i].eModel)
|
|
sVehicle[i].vehicleId = CREATE_VEHICLE(sVehicle[i].eModel, sVehicle[i].vWorldPosition, sVehicle[i].fRotation)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sVehicle[i].vehicleId, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sVehicle[i].vehicleId, TRUE)
|
|
SET_ENTITY_INVINCIBLE(sVehicle[i].vehicleId, TRUE)
|
|
IF GET_GROUND_Z_FOR_3D_COORD(sVehicle[i].vWorldPosition, fZcoord)
|
|
sVehicle[i].vWorldPosition.z = fZcoord
|
|
ENDIF
|
|
SET_ENTITY_COORDS(sVehicle[i].vehicleId, sVehicle[i].vWorldPosition)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(sVehicle[i].eModel)
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF DOES_ENTITY_EXIST(sVehicle[i].vehicleId)
|
|
IF IS_VEHICLE_DRIVEABLE(sVehicle[i].vehicleId)
|
|
SET_ENTITY_COORDS(sVehicle[i].vehicleId, sVehicle[i].vWorldPosition)
|
|
SET_ENTITY_HEADING(sVehicle[i].vehicleId, sVehicle[i].fRotation)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF DOES_ENTITY_EXIST(sVehicle[i].vehicleId)
|
|
DELETE_VEHICLE(sVehicle[i].vehicleId)
|
|
INITIALISE_VEHICLE_DATA(i, TRUE)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_CAMERA()
|
|
|
|
IF sCamera.bActive
|
|
|
|
IF NOT DOES_CAM_EXIST(sCamera.camId)
|
|
|
|
sCamera.camId = CREATE_CAMERA(CAMTYPE_SCRIPTED)
|
|
SET_CAM_ACTIVE(sCamera.camId, TRUE)
|
|
SET_CAM_PARAMS(sCamera.camId, sCamera.vWorldPosition, sCamera.vWorldRotation, sCamera.fFov)
|
|
SET_CAM_NEAR_CLIP(sCamera.camId, 0.01)
|
|
SHAKE_CAM(sCamera.camId, "HAND_SHAKE", 0.3)
|
|
SET_CAM_DOF_FNUMBER_OF_LENS(sCamera.camId, 250.0)
|
|
SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE(sCamera.camId, 0.0)
|
|
SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(sCamera.camId, 1.0)
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
|
|
ELSE
|
|
|
|
SET_CAM_PARAMS(sCamera.camId, sCamera.vWorldPosition, sCamera.vWorldRotation, sCamera.fFov)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF DOES_CAM_EXIST(sCamera.camId)
|
|
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
SET_CAM_ACTIVE(sCamera.camId, FALSE)
|
|
DESTROY_CAM(sCamera.camId, TRUE)
|
|
INITIALISE_CAMERA_DATA(TRUE)
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC PRINT_CELEBRATION_DATA()
|
|
|
|
INT i
|
|
|
|
PRINTNL()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("--- CELEBRATION EDITOR SCENE DATA ---") SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_PEDS i
|
|
IF sPed[i].bActive
|
|
SAVE_STRING_TO_DEBUG_FILE("Ped ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" coords = ") SAVE_VECTOR_TO_DEBUG_FILE(sPed[i].vWorldPosition) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Ped ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" heading = ") SAVE_FLOAT_TO_DEBUG_FILE(sPed[i].fRotation) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Ped ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" paired rotation offset = ") SAVE_VECTOR_TO_DEBUG_FILE(sPed[i].vPairedAnimOffset) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
REPEAT MAX_NUM_CELEBRATION_VEHICLES i
|
|
IF sVehicle[i].bActive
|
|
SAVE_STRING_TO_DEBUG_FILE("Vehicle ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" coords = ") SAVE_VECTOR_TO_DEBUG_FILE(sVehicle[i].vWorldPosition) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Vehcile ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" heading = ") SAVE_FLOAT_TO_DEBUG_FILE(sVehicle[i].fRotation) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF sCamera.bActive
|
|
SAVE_STRING_TO_DEBUG_FILE("Camera ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" coords = ") SAVE_VECTOR_TO_DEBUG_FILE(sCamera.vWorldPosition) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Camera ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" rotation = ") SAVE_VECTOR_TO_DEBUG_FILE(sCamera.vWorldRotation) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Camera ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" FOV = ") SAVE_FLOAT_TO_DEBUG_FILE(sCamera.fFov) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE("Paired Anim Pos ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" coords = ") SAVE_VECTOR_TO_DEBUG_FILE(vPairedAnimWorldPosition) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("Paired Anim Rot ") SAVE_INT_TO_DEBUG_FILE(i) SAVE_STRING_TO_DEBUG_FILE(" heading = ") SAVE_FLOAT_TO_DEBUG_FILE(fPairedAnimHeading) SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_PLAYER_FOR_CELEBRATION_EDITING(BOOL bSetForEditing)
|
|
|
|
VECTOR vWarpPos
|
|
|
|
IF bSetForEditing
|
|
vWarpPos = sPed[0].vWorldPosition
|
|
ELSE
|
|
vWarpPos = << 189.7, -1255.7, 29.2 >>
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vWarpPos)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), bSetForEditing)
|
|
SET_ENTITY_DYNAMIC(PLAYER_PED_ID(), (NOT bSetForEditing))
|
|
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), (NOT bSetForEditing))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC RESET_CELEBRATION_EDITOR(BOOL bTerminateThread = FALSE)
|
|
|
|
SET_PLAYER_FOR_CELEBRATION_EDITING(FALSE)
|
|
CLEANUP_CELEBRATION_EDITOR()
|
|
iEditingStage = 0
|
|
PRINTLN("[Celebration Editor] - Going to stage ", iEditingStage)
|
|
|
|
IF bTerminateThread
|
|
PRINTLN("[Celebration Editor] - RESET_CELEBRATION_EDITOR - bTerminateThread = TRUE. Calling TERMINATE_THIS_THREAD().")
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_CELEBRATION_EDITOR()
|
|
|
|
IF bTerminateEditor
|
|
RESET_CELEBRATION_EDITOR(TRUE)
|
|
ENDIF
|
|
|
|
IF bPrintData
|
|
PRINT_CELEBRATION_DATA()
|
|
bPrintData = FALSE
|
|
ENDIF
|
|
|
|
SWITCH iEditingStage
|
|
|
|
CASE 0
|
|
// IF bEditingEnabled
|
|
// DO_SCREEN_FADE_OUT(500)
|
|
iEditingStage++
|
|
PRINTLN("[Celebration Editor] - Going to stage ", iEditingStage)
|
|
// ENDIF
|
|
BREAK
|
|
|
|
CASE 1
|
|
// IF IS_SCREEN_FADED_OUT()
|
|
ANIMPOSTFX_STOP_ALL()
|
|
SET_PLAYER_FOR_CELEBRATION_EDITING(TRUE)
|
|
iEditingStage++
|
|
PRINTLN("[Celebration Editor] - Going to stage ", iEditingStage)
|
|
// ENDIF
|
|
BREAK
|
|
|
|
CASE 2
|
|
IF LOAD_CELEBRATION_INTERIOR()
|
|
// DO_SCREEN_FADE_IN(500)
|
|
iEditingStage++
|
|
PRINTLN("[Celebration Editor] - Going to stage ", iEditingStage)
|
|
ELSE
|
|
PRINTLN("[Celebration Editor] - LOAD_CELEBRATION_INTERIOR = FALSE.")
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 3
|
|
HIDE_HUD_AND_RADAR_THIS_FRAME()
|
|
MAINTAIN_PEDS()
|
|
MAINTAIN_VEHICLES()
|
|
MAINTAIN_CAMERA()
|
|
MAINTAIN_NAMES()
|
|
IF NOT bEditingEnabled
|
|
iEditingStage++
|
|
PRINTLN("[Celebration Editor] - Going to stage ", iEditingStage)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 4
|
|
RESET_CELEBRATION_EDITOR()
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
// Main
|
|
SCRIPT
|
|
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
|
|
INITIALISE_DATA()
|
|
ADD_WIDGETS()
|
|
|
|
WHILE TRUE
|
|
|
|
MP_LOOP_WAIT_ZERO()
|
|
MAINTAIN_CELEBRATION_EDITOR()
|
|
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|
|
|
|
#ENDIF
|