476 lines
13 KiB
Python
Executable File
476 lines
13 KiB
Python
Executable File
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_script.sch"
|
|
USING "mission_stat_public.sch"
|
|
/// Support script that displays mid mission mission stat alerts
|
|
// http://rsgediwiki1/wiki/index.php/Scaleform_Mission_Target_Complete
|
|
|
|
|
|
SCALEFORM_INDEX mov = NULL
|
|
|
|
FUNC BOOL CHECK_TRACKED_STAT_FOR_SUCCESS(INT index)
|
|
|
|
|
|
|
|
IF g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].less_than_threshold = true
|
|
RETURN FALSE//no mid mission tracking for less than threshold stats, because they would trigger immediatly
|
|
ENDIF
|
|
|
|
IF g_MissionStatTrackingArray[index].successshown
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
SWITCH g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].type
|
|
CASE MISSION_STAT_TYPE_SINGLE_ENTITY_SPEED_THRESHOLD
|
|
IF FLOOR(g_MissionStatTrackingArray[index].fvalue) >= g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].success_threshold
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
CASE MISSION_STAT_TYPE_ACTION_CAM_USE
|
|
CASE MISSION_STAT_TYPE_UNIQUE_BOOL
|
|
CASE MISSION_STAT_TYPE_SINGLE_ENTITY_DAMAGE_THRESHOLD
|
|
CASE MISSION_STAT_TYPE_HEADSHOTS
|
|
CASE MISSION_STAT_TYPE_FRACTION
|
|
CASE MISSION_STAT_TYPE_PURE_COUNT
|
|
CASE MISSION_STAT_TYPE_PURE_COUNT_PERCENTAGE
|
|
CASE MISSION_STAT_TYPE_FINANCE_TABLE
|
|
CASE MISSION_STAT_TYPE_FINANCE_DIRECT
|
|
CASE MISSION_STAT_TYPE_PURE_COUNT_DISTANCE
|
|
|
|
|
|
IF g_MissionStatTrackingArray[index].ivalue >= g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].success_threshold
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
|
|
RETURN FALSE
|
|
CASE MISSION_STAT_TYPE_WINDOWED_TIMER
|
|
|
|
IF g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].less_than_threshold
|
|
//less than success
|
|
IF g_bMissionStatTimeWindowClosedForGood
|
|
IF g_MissionStatTrackingArray[index].ivalue <= g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].success_threshold
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//normal greater than success
|
|
IF g_MissionStatTrackingArray[index].ivalue >= g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].success_threshold
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
|
|
|
|
|
|
DEFAULT
|
|
RETURN FALSE
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC UPLOAD_DATA_FOR_SUCCEEDED_TRACKED_STAT(INT index)
|
|
|
|
//upload the success string for the given entry in g_MissionStatTrackingArray
|
|
|
|
//use raw current value for now
|
|
//INT i = index
|
|
//i = i
|
|
|
|
SWITCH g_MissionStatTrackingPrototypes[g_MissionStatTrackingArray[index].target].type
|
|
|
|
//SET_DATA_SLOT(0, 2, "Sharpshooter", "Rank");
|
|
|
|
CASE MISSION_STAT_TYPE_TOTALTIME
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
MISSION_TIME_STAT_NAME(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(MISSION_TIME_STAT_NAME(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_ACTION_CAM_USE
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
ACTION_CAM_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(ACTION_CAM_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_UNIQUE_BOOL
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
UNIQUE_BOOLEAN_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(UNIQUE_BOOLEAN_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_WINDOWED_TIMER
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
TIME_WINDOW_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(TIME_WINDOW_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_SINGLE_ENTITY_SPEED_THRESHOLD
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
SINGLE_ENTITY_SPEED_STRING())
|
|
*/
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(SINGLE_ENTITY_SPEED_STRING())
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_SINGLE_ENTITY_DAMAGE_THRESHOLD
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
SINGLE_ENTITY_DAMAGE_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(SINGLE_ENTITY_DAMAGE_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_HEADSHOTS
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
HEADSHOT_DAMAGE_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(HEADSHOT_DAMAGE_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_FRACTION
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
FRACTION_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(FRACTION_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_ACCURACY
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
"ACCUMIS")
|
|
*/
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ACCUMIS")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
BREAK
|
|
CASE MISSION_STAT_TYPE_PURE_COUNT
|
|
CASE MISSION_STAT_TYPE_PURE_COUNT_PERCENTAGE
|
|
CASE MISSION_STAT_TYPE_BULLETS_FIRED
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
PURE_COUNT_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(PURE_COUNT_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
CASE MISSION_STAT_TYPE_FINANCE_DIRECT
|
|
CASE MISSION_STAT_TYPE_FINANCE_TABLE
|
|
/*
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(mov,"SET_DATA_SLOT",
|
|
1,
|
|
2,
|
|
INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,INVALID_SCALEFORM_PARAM,
|
|
"",
|
|
DOLLAR_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
*/
|
|
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(DOLLAR_STAT_NAMES(g_MissionStatTrackingArray[index].target))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BREAK
|
|
DEFAULT
|
|
SCRIPT_ASSERT("mission_stat_alerter: Unimplemented stat type!")
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCRIPT
|
|
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP|FORCE_CLEANUP_FLAG_MAGDEMO)
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
/* this feature is disabled for now as per bug 274883
|
|
WHILE TRUE //is currently fired and forgotten
|
|
//PRINTSTRING("Mission stat alerter running!\n")
|
|
|
|
IF g_iMissionStatsBeingTracked > 0
|
|
//check the list for succeeded metrics and display them if this is the case
|
|
|
|
|
|
INT i = 0
|
|
BOOL bLoaded = FALSE
|
|
REPEAT g_iMissionStatsBeingTracked i
|
|
|
|
BOOL bSuccess = FALSE
|
|
//g_MissionStatTrackingArray
|
|
|
|
//has already been displayed?
|
|
//check for success
|
|
|
|
|
|
bSuccess = CHECK_TRACKED_STAT_FOR_SUCCESS(i)
|
|
|
|
|
|
|
|
IF (NOT g_MissionStatTrackingArray[i].successshown) AND bSuccess
|
|
|
|
//check for success
|
|
//start showing this success
|
|
|
|
//load the UI
|
|
//mission_target_complete
|
|
BOOL doLoad = FALSE
|
|
|
|
|
|
IF mov = NULL
|
|
doLoad = TRUE
|
|
ELSE
|
|
IF(NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
|
|
doLoad = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF doLoad
|
|
mov = REQUEST_SCALEFORM_MOVIE("mission_target_complete")
|
|
|
|
REQUEST_ADDITIONAL_TEXT("MISHSTA", MINIGAME_TEXT_SLOT)
|
|
|
|
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
|
|
PRINTSTRING("mission_target_complete.gfx loading\n")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
bLoaded = TRUE
|
|
ENDIF
|
|
|
|
|
|
//upload data
|
|
UPLOAD_DATA_FOR_SUCCEEDED_TRACKED_STAT(i)
|
|
|
|
|
|
//show metric for however long
|
|
CALL_SCALEFORM_MOVIE_METHOD(mov,"SHOW")
|
|
|
|
BOOL bDisplaying = TRUE
|
|
|
|
SETTIMERA(0)
|
|
|
|
INT timertracker = 0
|
|
|
|
WHILE bDisplaying
|
|
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
DRAW_SCALEFORM_MOVIE(mov, 0.155,0.115,0.1875 ,0.0569 ,255,255,255,0)
|
|
timertracker += TIMERA()
|
|
SETTIMERA(0)
|
|
IF timertracker > 8000
|
|
bDisplaying = FALSE
|
|
ENDIF
|
|
ELSE
|
|
SETTIMERA(0)
|
|
ENDIF
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
g_MissionStatTrackingArray[i].successshown = TRUE
|
|
|
|
//delay before next
|
|
WAIT(2000)
|
|
ENDIF
|
|
|
|
|
|
ENDREPEAT
|
|
|
|
//release UI
|
|
IF bLoaded
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(mov)
|
|
ENDIF
|
|
|
|
ELSE
|
|
//no stats to track, sleeeep
|
|
WAIT(9999)
|
|
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
*/
|
|
ENDSCRIPT
|