912 lines
31 KiB
Plaintext
912 lines
31 KiB
Plaintext
#using scripts\codescripts\struct;
|
|
|
|
#using scripts\shared\callbacks_shared;
|
|
#using scripts\shared\flag_shared;
|
|
#using scripts\shared\hud_message_shared;
|
|
#using scripts\shared\medals_shared;
|
|
#using scripts\shared\persistence_shared;
|
|
#using scripts\shared\rank_shared;
|
|
#using scripts\shared\system_shared;
|
|
#using scripts\shared\util_shared;
|
|
#using scripts\shared\weapons_shared;
|
|
#using scripts\shared\weapons\_weapons;
|
|
|
|
|
|
|
|
|
|
#precache( "string", "KILLSTREAK_DESTROYED_UAV" );
|
|
#precache( "string", "KILLSTREAK_DESTROYED_COUNTERUAV" );
|
|
#precache( "string", "KILLSTREAK_DESTROYED_REMOTE_MORTAR" );
|
|
#precache( "string", "KILLSTREAK_MP40_INBOUND" );
|
|
#precache( "string", "KILLSTREAK_M220_TOW_INBOUND" );
|
|
#precache( "string", "KILLSTREAK_MINIGUN_INBOUND" );
|
|
#precache( "string", "KILLSTREAK_M202_FLASH_INBOUND" );
|
|
#precache( "string", "KILLSTREAK_M32_INBOUND");
|
|
#precache( "string", "MP_CAPTURED_THE_FLAG" );
|
|
#precache( "string", "MP_KILLED_FLAG_CARRIER" );
|
|
#precache( "string", "MP_FRIENDLY_FLAG_DROPPED" );
|
|
#precache( "string", "MP_ENEMY_FLAG_DROPPED" );
|
|
#precache( "string", "MP_FRIENDLY_FLAG_RETURNED" );
|
|
#precache( "string", "MP_ENEMY_FLAG_RETURNED" );
|
|
#precache( "string", "MP_FRIENDLY_FLAG_TAKEN" );
|
|
#precache( "string", "MP_ENEMY_FLAG_TAKEN" );
|
|
#precache( "string", "MP_ENEMY_FLAG_CAPTURED" );
|
|
#precache( "string", "MP_FRIENDLY_FLAG_CAPTURED" );
|
|
#precache( "string", "MP_EXPLOSIVES_BLOWUP_BY" );
|
|
#precache( "string", "MP_EXPLOSIVES_DEFUSED_BY" );
|
|
#precache( "string", "MP_EXPLOSIVES_PLANTED_BY" );
|
|
#precache( "string", "MP_HQ_DESTROYED_BY" );
|
|
#precache( "string", "KILLSTREAK_DESTROYED_HELICOPTER" );
|
|
|
|
#namespace popups;
|
|
|
|
// some common functions between all the air kill streaks
|
|
|
|
function autoexec __init__sytem__() { system::register("popups",&__init__,undefined,undefined); }
|
|
|
|
function __init__()
|
|
{
|
|
callback::on_start_gametype( &init );
|
|
}
|
|
|
|
function init()
|
|
{
|
|
// if the column changes in the medalTable.csv
|
|
// these need to be changed too
|
|
level.contractSettings = spawnstruct();
|
|
level.contractSettings.waitTime = 4.2;
|
|
level.killstreakSettings = spawnstruct();
|
|
level.killstreakSettings.waitTime = 3;
|
|
level.rankSettings = spawnstruct();
|
|
level.rankSettings.waitTime = 3;
|
|
level.startMessage = spawnstruct();
|
|
level.startMessageDefaultDuration = 2.0;
|
|
level.endMessageDefaultDuration = 2.0;
|
|
level.challengeSettings = spawnstruct();
|
|
level.challengeSettings.waitTime = 3;
|
|
level.teamMessage = spawnstruct();
|
|
level.teamMessage.waittime = 3;
|
|
level.regularGameMessages = spawnstruct();
|
|
level.regularGameMessages.waittime = 6;
|
|
level.wagerSettings = spawnstruct();
|
|
level.wagerSettings.waittime = 3;
|
|
level.momentumNotifyWaitTime = 0;
|
|
level.momentumNotifyWaitLastTime = 0;
|
|
level.teamMessageQueueMax = 8;
|
|
|
|
/#
|
|
level thread popupsFromConsole();
|
|
// level thread devgui_notif_init(); // do not init here, currently creates 2307 devgui menus
|
|
level thread devgui_notif_create_menu_think();
|
|
#/
|
|
|
|
callback::on_connecting( &on_player_connect );
|
|
}
|
|
|
|
function on_player_connect()
|
|
{
|
|
self.resetGameOverHudRequired = false;
|
|
self thread displayPopupsWaiter();
|
|
if ( !level.hardcoreMode )
|
|
{
|
|
self thread displayTeamMessageWaiter();
|
|
}
|
|
}
|
|
|
|
/#
|
|
//---------------------------------------------------------
|
|
// DEVGUI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function devgui_notif_getGunLevelTableName()
|
|
{
|
|
if ( SessionModeIsCampaignGame() )
|
|
{
|
|
return "gamedata/weapons/cp/cp_gunlevels.csv";
|
|
}
|
|
else if ( SessionModeIsZombiesGame() )
|
|
{
|
|
return "gamedata/weapons/zm/zm_gunlevels.csv";
|
|
}
|
|
else
|
|
{
|
|
return "gamedata/weapons/mp/mp_gunlevels.csv";
|
|
}
|
|
}
|
|
|
|
function devgui_notif_getChallengesTableCount()
|
|
{
|
|
if ( SessionModeIsCampaignGame() )
|
|
{
|
|
return 4;
|
|
}
|
|
else if ( SessionModeIsZombiesGame() )
|
|
{
|
|
return 4;
|
|
}
|
|
else
|
|
{
|
|
return 6;
|
|
}
|
|
}
|
|
|
|
function devgui_notif_getChallengesTableName( tableId )
|
|
{
|
|
if ( SessionModeIsCampaignGame() )
|
|
{
|
|
return "gamedata/stats/cp/statsmilestones" + tableId + ".csv";
|
|
}
|
|
else if ( SessionModeIsZombiesGame() )
|
|
{
|
|
return "gamedata/stats/zm/statsmilestones" + tableId + ".csv";
|
|
}
|
|
else
|
|
{
|
|
return "gamedata/stats/mp/statsmilestones" + tableId + ".csv";
|
|
}
|
|
}
|
|
|
|
function set_statstable_id()
|
|
{
|
|
if ( !isdefined( level.statsTableID ) )
|
|
{
|
|
level.statsTableID = TableLookupFindCoreAsset( util::getStatsTableName() );
|
|
}
|
|
}
|
|
|
|
function devgui_create_weapon_levels_table()
|
|
{
|
|
level.tbl_weaponIDs = [];
|
|
|
|
set_statstable_id();
|
|
|
|
if( !IsDefined( level.statsTableID ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
for( i = 0; i < 256; i++ )
|
|
{
|
|
itemRow = tableLookupRowNum( level.statsTableID, 0, i );
|
|
|
|
if ( itemRow > -1 )
|
|
{
|
|
group_s = tableLookupColumnForRow( level.statsTableID, itemRow, 2 );
|
|
|
|
if ( isSubStr( group_s, "weapon_" ) || group_s == "hero" )
|
|
{
|
|
reference_s = tableLookupColumnForRow( level.statsTableID, itemRow, 4 );
|
|
if( reference_s != "" )
|
|
{
|
|
weapon = GetWeapon( reference_s );
|
|
|
|
level.tbl_weaponIDs[i]["reference"] = reference_s;
|
|
level.tbl_weaponIDs[i]["group"] = group_s;
|
|
level.tbl_weaponIDs[i]["count"] = int( tableLookupColumnForRow( level.statsTableID, itemRow, 5 ) );
|
|
level.tbl_weaponIDs[i]["attachment"] = tableLookupColumnForRow( level.statsTableID, itemRow, 8 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function devgui_notif_create_menu_think()
|
|
{
|
|
if ( IsDedicated() )
|
|
return;
|
|
|
|
if ( GetDvarInt( "scr_notif_devgui_create_menu", -999 ) == -999 )
|
|
SetDvar( "scr_notif_devgui_create_menu", 0 );
|
|
|
|
menu_base_path = "UI/Notifications";
|
|
|
|
util::add_devgui( menu_base_path + "/Add DevGui Cmds", "set " + "scr_notif_devgui_create_menu" + " 1" );
|
|
|
|
while( 1 )
|
|
{
|
|
if ( GetDvarInt( "scr_notif_devgui_create_menu", 0 ) > 0 )
|
|
{
|
|
util::remove_devgui( menu_base_path );
|
|
level thread devgui_notif_init();
|
|
break;
|
|
}
|
|
|
|
wait 1.0;
|
|
}
|
|
}
|
|
|
|
function devgui_notif_init()
|
|
{
|
|
SetDvar( "scr_notif_devgui_rank", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_xp", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_attachment_index", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_item_index", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_rank_id", 0 );
|
|
|
|
if( IsDedicated() )
|
|
{
|
|
return;
|
|
}
|
|
|
|
level thread notif_devgui_rank();
|
|
level thread notif_devgui_gun_rank();
|
|
|
|
if ( !SessionModeIsCampaignGame() )
|
|
{
|
|
level thread notif_devgui_challenges();
|
|
}
|
|
}
|
|
|
|
function notif_devgui_rank()
|
|
{
|
|
if( !IsDefined( level.rankTable ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
notif_rank_devgui_base = "devgui_cmd \"UI/Notifications/Rank/Level ";
|
|
for( i = 1; i < level.rankTable.size; i++ )
|
|
{
|
|
display_level = i + 1;
|
|
if( display_level < 10 )
|
|
{
|
|
display_level = "0" + display_level;
|
|
}
|
|
|
|
AddDebugCommand( notif_rank_devgui_base + display_level + "\" " + "\"" + "scr_notif_devgui_rank" + " " + i + "\" \n" );
|
|
|
|
if ( ( i % 10 ) == 0 )
|
|
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
|
|
}
|
|
|
|
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
|
|
|
|
level thread notif_devgui_rank_up_think();
|
|
}
|
|
|
|
function notif_devgui_rank_up_think()
|
|
{
|
|
for( ;; )
|
|
{
|
|
rank_number = GetDvarInt( "scr_notif_devgui_rank" );
|
|
|
|
if( rank_number == 0 )
|
|
{
|
|
{wait(.05);};
|
|
continue;
|
|
}
|
|
|
|
level.players[0] rank::CodeCallback_RankUp( rank_number , 0, 1 );
|
|
|
|
SetDvar( "scr_notif_devgui_rank", 0 );
|
|
wait( 1 );
|
|
}
|
|
}
|
|
|
|
function notif_devgui_gun_rank()
|
|
{
|
|
notif_gun_rank_devgui_base = "devgui_cmd \"UI/Notifications/Gun Level/";
|
|
GUNLEVEL_RANKID_COL = 0;
|
|
GUNLEVEL_GUNREF_COL = 2;
|
|
GUNLEVEL_ATTACHMENT_UNLOCK_COL = 3;
|
|
GUNLEVEL_XPGAINED_COL = 4;
|
|
|
|
level flag::wait_till( "all_players_spawned" );
|
|
|
|
if( !IsDefined( level.tbl_weaponIDs ) )
|
|
{
|
|
devgui_create_weapon_levels_table();
|
|
}
|
|
|
|
if( !IsDefined( level.tbl_weaponIDs ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
a_weapons = [];
|
|
a_weapons["assault"] = [];
|
|
a_weapons["smg"] = [];
|
|
a_weapons["lmg"] = [];
|
|
a_weapons["shotgun"] = [];
|
|
a_weapons["sniper"] = [];
|
|
a_weapons["pistol"] = [];
|
|
a_weapons["launcher"] = [];
|
|
a_weapons["knife"] = [];
|
|
|
|
gun_levels_table = devgui_notif_getGunLevelTableName();
|
|
|
|
foreach( weapon in level.tbl_weaponIDs )
|
|
{
|
|
gun = [];
|
|
gun["ref"] = weapon["reference"];
|
|
gun["itemIndex"] = GetItemIndexFromRef( weapon["reference"] );
|
|
gun["attachments"] = [];
|
|
|
|
gun_weapon_attachments = StrTok( weapon["attachment"], " " );
|
|
foreach( index, attachment in gun_weapon_attachments )
|
|
{
|
|
gun["attachments"][attachment] = [];
|
|
gun["attachments"][attachment]["itemIndex"] = GetAttachmentTableIndex( attachment );
|
|
gun["attachments"][attachment]["rankID"] = TableLookup( gun_levels_table, GUNLEVEL_GUNREF_COL, gun["ref"], GUNLEVEL_ATTACHMENT_UNLOCK_COL, attachment, GUNLEVEL_RANKID_COL );
|
|
gun["attachments"][attachment]["xp"] = TableLookup( gun_levels_table, GUNLEVEL_GUNREF_COL, gun["ref"], GUNLEVEL_ATTACHMENT_UNLOCK_COL, attachment, GUNLEVEL_XPGAINED_COL );
|
|
}
|
|
|
|
switch( weapon["group"] )
|
|
{
|
|
case "weapon_pistol":
|
|
if( weapon["reference"] != "weapon_null" )
|
|
{
|
|
ArrayInsert( a_weapons["pistol"], gun, 0 );
|
|
}
|
|
break;
|
|
case "weapon_launcher":
|
|
ArrayInsert( a_weapons["launcher"], gun, 0 );
|
|
break;
|
|
case "weapon_assault":
|
|
ArrayInsert( a_weapons["assault"], gun, 0 );
|
|
break;
|
|
case "weapon_smg":
|
|
ArrayInsert( a_weapons["smg"], gun, 0 );
|
|
break;
|
|
case "weapon_lmg":
|
|
ArrayInsert( a_weapons["lmg"], gun, 0 );
|
|
break;
|
|
case "weapon_cqb":
|
|
ArrayInsert( a_weapons["shotgun"], gun, 0 );
|
|
break;
|
|
case "weapon_sniper":
|
|
ArrayInsert( a_weapons["sniper"], gun, 0 );
|
|
break;
|
|
case "weapon_knife":
|
|
ArrayInsert( a_weapons["knife"], gun, 0 );
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
foreach( group_name, gun_group in a_weapons )
|
|
{
|
|
foreach( gun, attachment_group in gun_group )
|
|
{
|
|
foreach( attachment, attachment_data in attachment_group["attachments"] )
|
|
{
|
|
devgui_cmd_gun_path = notif_gun_rank_devgui_base + group_name + "/" + gun_group[gun]["ref"] + "/" + attachment;
|
|
AddDebugCommand( devgui_cmd_gun_path + "\" " + "\"" +
|
|
";set " + "scr_notif_devgui_gun_lvl_xp" + " " + attachment_data["xp"] +
|
|
";set " + "scr_notif_devgui_gun_lvl_attachment_index" + " " + attachment_data["itemIndex"] +
|
|
";set " + "scr_notif_devgui_gun_lvl_item_index" + " " + gun_group[gun]["itemIndex"] +
|
|
";set " + "scr_notif_devgui_gun_lvl_rank_id" + " " + attachment_data["rankID"] + "\" \n" );
|
|
|
|
}
|
|
}
|
|
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
|
|
}
|
|
|
|
level thread notif_devgui_gun_level_think();
|
|
}
|
|
|
|
function notif_devgui_gun_level_think()
|
|
{
|
|
for( ;; )
|
|
{
|
|
weapon_item_index = GetDvarInt( "scr_notif_devgui_gun_lvl_item_index" );
|
|
|
|
if( weapon_item_index == 0 )
|
|
{
|
|
{wait(.05);};
|
|
continue;
|
|
}
|
|
|
|
xp_reward = GetDvarInt( "scr_notif_devgui_gun_lvl_xp" );
|
|
attachment_index = GetDvarInt( "scr_notif_devgui_gun_lvl_attachment_index" );
|
|
rank_id = GetDvarInt( "scr_notif_devgui_gun_lvl_rank_id" );
|
|
|
|
level.players[0] persistence::CodeCallback_GunChallengeComplete( xp_reward, attachment_index, weapon_item_index, rank_id );
|
|
|
|
SetDvar( "scr_notif_devgui_gun_lvl_xp", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_attachment_index", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_item_index", 0 );
|
|
SetDvar( "scr_notif_devgui_gun_lvl_rank_id", 0 );
|
|
|
|
wait( 1 );
|
|
}
|
|
}
|
|
|
|
function notif_devgui_challenges()
|
|
{
|
|
notif_challenges_devgui_base = "devgui_cmd \"UI/Notifications/Challenges/";
|
|
for( i = 1; i <= devgui_notif_getChallengesTableCount(); i++ )
|
|
{
|
|
tableName = devgui_notif_getChallengesTableName(i);
|
|
rows = tableLookupRowCount( tableName );
|
|
for( j = 1; j < rows; j++ )
|
|
{
|
|
// only allow valid challenge ids
|
|
challengeId = tableLookupColumnForRow( tableName, j, 0 );
|
|
if ( challengeId != "" && StrIsInt( tableLookupColumnForRow( tableName, j, 0 ) ) )
|
|
{
|
|
challengeString = tableLookupColumnForRow( tableName, j, 5 );
|
|
type = tableLookupColumnForRow( tableName, j, 3 );
|
|
challengeTier = int( tableLookupColumnForRow( tableName, j, 1 ) );
|
|
challengeTierString = "" + challengeTier;
|
|
if ( challengeTier < 10 )
|
|
{
|
|
challengeTierString = "0" + challengeTier;
|
|
}
|
|
|
|
name = tableLookupColumnForRow( tableName, j, 5 );
|
|
devgui_cmd_challenge_path = notif_challenges_devgui_base + type + "/" + MakeLocalizedString( name ) + "/" + challengeTierString + " - id" + challengeId;
|
|
AddDebugCommand( devgui_cmd_challenge_path + "\" " + "\"" +
|
|
";set " + "scr_notif_devgui_challenge_row" + " " + j +
|
|
";set " + "scr_notif_devgui_challenge_table" + " " + i + "\" \n" );
|
|
|
|
if ( ( int( challengeId ) % 10 ) == 0 )
|
|
{
|
|
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
level thread notif_devgui_challenges_think();
|
|
}
|
|
|
|
function notif_devgui_challenges_think()
|
|
{
|
|
SetDvar( "scr_notif_devgui_challenge_row", 0 );
|
|
SetDvar( "scr_notif_devgui_challenge_table", 0 );
|
|
|
|
for( ;; )
|
|
{
|
|
row = GetDvarInt( "scr_notif_devgui_challenge_row" );
|
|
table = GetDvarInt( "scr_notif_devgui_challenge_table" );
|
|
|
|
if ( table < 1 || table > devgui_notif_getChallengesTableCount() )
|
|
{
|
|
{wait(.05);};
|
|
continue;
|
|
}
|
|
|
|
tableName = devgui_notif_getChallengesTableName(table);
|
|
if ( row < 1 || row > tableLookupRowCount( tableName ) )
|
|
{
|
|
{wait(.05);};
|
|
continue;
|
|
}
|
|
|
|
type = tableLookupColumnForRow( tableName, row, 3 );
|
|
itemIndex = 0;
|
|
if ( type == "global" )
|
|
{
|
|
type = 0;
|
|
}
|
|
else if ( type == "group" )
|
|
{
|
|
itemIndex = 4; // ITEMGROUP_SNIPER
|
|
type = 3;
|
|
}
|
|
else if ( type == "attachment" )
|
|
{
|
|
itemIndex = 1; // dual optic
|
|
type = 4;
|
|
}
|
|
else if ( type == "gamemode" )
|
|
{
|
|
type = 2;
|
|
}
|
|
else if ( type == "specialist" )
|
|
{
|
|
type = 5;
|
|
}
|
|
else
|
|
{
|
|
itemIndex = 23; // arak
|
|
type = 1;
|
|
}
|
|
|
|
xpReward = int( tableLookupColumnForRow( tableName, row, 6 ) );
|
|
challengeId = int( tableLookupColumnForRow( tableName, row, 0 ) );
|
|
maxValue = int( tableLookupColumnForRow( tableName, row, 2 ) );
|
|
level.players[0] persistence::CodeCallback_ChallengeComplete( xpReward, maxValue, row, table-1, type, itemIndex, challengeId );
|
|
|
|
SetDvar( "scr_notif_devgui_challenge_row", 0 );
|
|
SetDvar( "scr_notif_devgui_challenge_table", 0 );
|
|
wait( 1 );
|
|
}
|
|
}
|
|
|
|
function popupsFromConsole()
|
|
{
|
|
while (1)
|
|
{
|
|
timeout = GetDvarFloat( "scr_popuptime", 1.0 );
|
|
if ( timeout == 0 )
|
|
timeout = 1;
|
|
wait (timeout);
|
|
medal = GetDvarInt( "scr_popupmedal", 0 );
|
|
challenge = GetDvarInt( "scr_popupchallenge", 0 );
|
|
rank = GetDvarInt( "scr_popuprank", 0 );
|
|
gun = GetDvarInt( "scr_popupgun", 0 );
|
|
contractPass = GetDvarInt( "scr_popupcontractpass", 0 ); //sting 01
|
|
contractFail = GetDvarInt( "scr_popupcontractfail", 0 ); // Stinger_02
|
|
gameModeMsg = GetDvarInt( "scr_gamemodeslideout", 0 );
|
|
teamMsg = GetDvarInt( "scr_teamslideout", 0 );
|
|
|
|
challengeIndex = GetDvarInt( "scr_challengeIndex", 1 );
|
|
|
|
for ( i = 0 ; i < medal; i++ )
|
|
{
|
|
level.players[0] medals::CodeCallback_Medal( 86 );
|
|
}
|
|
for ( i = 0 ; i < challenge; i++ )
|
|
{
|
|
level.players[0] persistence::CodeCallback_ChallengeComplete( 1000, 10, 19, 0, 0, 0, 18 ); //kill_while_underwater
|
|
level.players[0] persistence::CodeCallback_ChallengeComplete( 1000, 1, 21, 0, 0, 0, 20 ); //kill_after_doublejump_out_of_water
|
|
|
|
//function CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex )
|
|
//self LUINotifyEvent( &"challenge_complete", 7, challengeIndex, itemIndex, challengeType, tableNumber, row, maxVal, rewardXP );
|
|
|
|
//hero weapon kills
|
|
rewardXP = 500;
|
|
maxVal = 1;
|
|
row = 1;
|
|
tableNumber = 0;
|
|
challengeType = 1;
|
|
itemIndex = 111;
|
|
challengeIndex = 0;
|
|
//level.players[0] persistence::CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex );
|
|
|
|
//camo unlock
|
|
maxVal = 50;
|
|
row = 1;
|
|
tableNumber = 2;
|
|
challengeType = 1;
|
|
itemIndex = 20;
|
|
challengeIndex = 512;
|
|
//level.players[0] persistence::CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex );
|
|
|
|
//reticle unlock
|
|
maxVal = 150;
|
|
row = 100;
|
|
tableNumber = 2;
|
|
challengeType = 4;
|
|
itemIndex = 1;
|
|
challengeIndex = 611;
|
|
level.players[0] persistence::CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex );
|
|
}
|
|
for ( i = 0 ; i < rank; i++ )
|
|
{
|
|
level.players[0] rank::CodeCallback_RankUp( 4, 0, 1 );
|
|
}
|
|
for ( i = 0 ; i < gun; i++ )
|
|
{
|
|
level.players[0] persistence::CodeCallback_GunChallengeComplete( 0, 20, 25, 0 );
|
|
}
|
|
for ( i = 0 ; i < contractPass; i++ )
|
|
{
|
|
level.players[0] persistence::add_contract_to_queue( 12, 1 );
|
|
}
|
|
for ( i = 0 ; i < contractFail; i++ )
|
|
{
|
|
level.players[0] persistence::add_contract_to_queue( 12, 0 );
|
|
}
|
|
for ( i = 0 ; i < teamMsg; i++ )
|
|
{
|
|
player = level.players[0];
|
|
if ( isdefined ( level.players[1] ) )
|
|
player = level.players[1];
|
|
level.players[0] DisplayTeamMessageToAll( &"KILLSTREAK_DESTROYED_HELICOPTER", player );
|
|
}
|
|
|
|
reset = GetDvarInt( "scr_popupreset", 1 );
|
|
if ( reset )
|
|
{
|
|
if ( medal )
|
|
SetDvar( "scr_popupmedal", 0 );
|
|
if ( challenge )
|
|
SetDvar( "scr_popupchallenge", 0 );
|
|
if ( gun )
|
|
SetDvar( "scr_popupgun", 0 );
|
|
if ( rank )
|
|
SetDvar( "scr_popuprank", 0 );
|
|
if ( contractPass )
|
|
SetDvar( "scr_popupcontractpass", 0 );
|
|
if ( contractFail )
|
|
SetDvar( "scr_popupcontractfail", 0 );
|
|
if ( gameModeMsg )
|
|
SetDvar( "scr_gamemodeslideout", 0 );
|
|
if ( teamMsg )
|
|
SetDvar( "scr_teamslideout", 0 );
|
|
}
|
|
}
|
|
}
|
|
#/
|
|
|
|
function DisplayKillstreakTeamMessageToAll( killstreak, player )
|
|
{
|
|
if ( !isdefined ( level.killstreaks[killstreak] ) )
|
|
return;
|
|
if ( !isdefined ( level.killstreaks[killstreak].inboundText ) )
|
|
return;
|
|
|
|
message = level.killstreaks[killstreak].inboundText;
|
|
self DisplayTeamMessageToAll( message, player );
|
|
}
|
|
|
|
function DisplayKillstreakHackedTeamMessageToAll( killstreak, player )
|
|
{
|
|
if ( !isdefined ( level.killstreaks[killstreak] ) )
|
|
return;
|
|
if ( !isdefined ( level.killstreaks[killstreak].hackedText ) )
|
|
return;
|
|
|
|
message = level.killstreaks[killstreak].hackedText;
|
|
self DisplayTeamMessageToAll( message, player );
|
|
}
|
|
|
|
function shouldDisplayTeamMessages()
|
|
{
|
|
// level.splitscreen is the local splitscreen mode only
|
|
if ( level.hardcoreMode == true || level.splitscreen == true )
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
function DisplayTeamMessageToAll( message, player )
|
|
{
|
|
if ( !shouldDisplayTeamMessages() )
|
|
return;
|
|
|
|
for ( i = 0; i < level.players.size; i++ )
|
|
{
|
|
cur_player = level.players[i];
|
|
|
|
if ( cur_player IsEMPJammed() )
|
|
continue;
|
|
|
|
size = cur_player.teamMessageQueue.size;
|
|
|
|
if ( size >= level.teamMessageQueueMax )
|
|
continue;
|
|
|
|
cur_player.teamMessageQueue[size] = spawnStruct();
|
|
cur_player.teamMessageQueue[size].message = message;
|
|
cur_player.teamMessageQueue[size].player = player;
|
|
|
|
cur_player notify ( "received teammessage" );
|
|
}
|
|
}
|
|
|
|
function DisplayTeamMessageToTeam( message, player, team )
|
|
{
|
|
if ( !shouldDisplayTeamMessages() )
|
|
return;
|
|
|
|
for ( i = 0; i < level.players.size; i++ )
|
|
{
|
|
cur_player = level.players[i];
|
|
|
|
if ( cur_player.team != team )
|
|
continue;
|
|
|
|
if ( cur_player IsEMPJammed() )
|
|
continue;
|
|
|
|
size = cur_player.teamMessageQueue.size;
|
|
|
|
if ( size >= level.teamMessageQueueMax )
|
|
continue;
|
|
|
|
cur_player.teamMessageQueue[size] = spawnStruct();
|
|
cur_player.teamMessageQueue[size].message = message;
|
|
cur_player.teamMessageQueue[size].player = player;
|
|
|
|
cur_player notify ( "received teammessage" );
|
|
}
|
|
}
|
|
|
|
function displayTeamMessageWaiter()
|
|
{
|
|
if ( !shouldDisplayTeamMessages() )
|
|
return;
|
|
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
self.teamMessageQueue = [];
|
|
|
|
for ( ;; )
|
|
{
|
|
if ( self.teamMessageQueue.size == 0 )
|
|
self waittill( "received teammessage" );
|
|
|
|
if ( self.teamMessageQueue.size > 0 )
|
|
{
|
|
nextNotifyData = self.teamMessageQueue[0];
|
|
ArrayRemoveIndex( self.teamMessageQueue, 0, false );
|
|
|
|
if ( !isdefined( nextNotifyData.player ) || !isplayer( nextNotifyData.player ) )
|
|
continue;
|
|
|
|
if ( self IsEMPJammed() )
|
|
continue;
|
|
|
|
self LUINotifyEvent( &"player_callout", 2, nextNotifyData.message, nextNotifyData.player.entnum );
|
|
}
|
|
wait ( level.teamMessage.waittime );
|
|
}
|
|
}
|
|
|
|
|
|
function displayPopUpsWaiter()
|
|
{
|
|
self endon( "disconnect" );
|
|
|
|
self.rankNotifyQueue = [];
|
|
if ( !isdefined( self.pers["challengeNotifyQueue"] ) )
|
|
{
|
|
self.pers["challengeNotifyQueue"] = [];
|
|
}
|
|
if ( !isdefined( self.pers["contractNotifyQueue"] ) )
|
|
{
|
|
self.pers["contractNotifyQueue"] = [];
|
|
}
|
|
|
|
self.messageNotifyQueue = [];
|
|
self.startMessageNotifyQueue = [];
|
|
self.wagerNotifyQueue = [];
|
|
|
|
while( isdefined( level ) && isdefined( level.gameEnded ) && !level.gameEnded )
|
|
{
|
|
if ( !isdefined( self ) || !isdefined( self.startMessageNotifyQueue ) || !isdefined( self.messageNotifyQueue ) )
|
|
break;
|
|
|
|
if ( self.startMessageNotifyQueue.size == 0 && self.messageNotifyQueue.size == 0 )
|
|
self waittill( "received award" );
|
|
|
|
waittillframeend;
|
|
|
|
if ( !isdefined( level ) )
|
|
break;
|
|
|
|
if ( !isdefined( level.gameEnded ) )
|
|
break;
|
|
|
|
if ( level.gameEnded )
|
|
break;
|
|
|
|
if ( self.startMessageNotifyQueue.size > 0 )
|
|
{
|
|
nextNotifyData = self.startMessageNotifyQueue[0];
|
|
ArrayRemoveIndex( self.startMessageNotifyQueue, 0, false );
|
|
|
|
if ( isdefined( nextNotifyData.duration ) )
|
|
duration = nextNotifyData.duration;
|
|
else
|
|
duration = level.startMessageDefaultDuration;
|
|
|
|
self hud_message::showNotifyMessage( nextNotifyData, duration );
|
|
wait ( duration );
|
|
}
|
|
else if ( self.messageNotifyQueue.size > 0 )
|
|
{
|
|
nextNotifyData = self.messageNotifyQueue[0];
|
|
ArrayRemoveIndex( self.messageNotifyQueue, 0, false );
|
|
|
|
if ( isdefined( nextNotifyData.duration ) )
|
|
duration = nextNotifyData.duration;
|
|
else
|
|
duration = level.regularGameMessages.waittime;
|
|
|
|
self hud_message::showNotifyMessage( nextNotifyData, duration );
|
|
}
|
|
else
|
|
{
|
|
//assertmsg( "displayPopUpsWaiter not handling case" );
|
|
wait( 1 );
|
|
}
|
|
}
|
|
}
|
|
|
|
//displayEndGamePopUps()
|
|
//{
|
|
// self.postGamePromotion = false;
|
|
// self.postGameMilestones = 0;
|
|
// self.postGameContracts = 0;
|
|
// promoted = 0;
|
|
// contract0 = -1;
|
|
// contract1 = -1;
|
|
// contract2 = -1;
|
|
// sendMessage = false;
|
|
//
|
|
// // This is to display end of game notifications, this will show in the endgame menu after the final kill cam
|
|
// if ( self.rankNotifyQueue.size > 0 )
|
|
// {
|
|
// self.postGamePromotion = true;
|
|
// promoted = 1; // endgame promotion
|
|
// sendMessage = true;
|
|
// }
|
|
//
|
|
// if ( self.pers["contractNotifyQueue"].size > 0 )
|
|
// {
|
|
// for( i = 0; i < self.pers["contractNotifyQueue"].size; i++ )
|
|
// {
|
|
// if ( self.pers["contractNotifyQueue"][0]["passed"] == false )
|
|
// {
|
|
// for ( i = 1; i < self.pers["contractNotifyQueue"].size; i++ )
|
|
// self.pers["contractNotifyQueue"][i-1] = self.pers["contractNotifyQueue"][i];
|
|
//
|
|
// self.pers["contractNotifyQueue"][i-1] = undefined;
|
|
// }
|
|
// }
|
|
//
|
|
// self.postGameContracts = self.pers["contractNotifyQueue"].size;
|
|
// if ( isdefined( self.pers["contractNotifyQueue"].size > 0 ) )
|
|
// {
|
|
// if ( isdefined (self.pers["contractNotifyQueue"][0] ) )
|
|
// {
|
|
// contract0 = self.pers["contractNotifyQueue"][0]["index"];
|
|
// sendMessage = true;
|
|
// }
|
|
// }
|
|
// if ( isdefined( self.pers["contractNotifyQueue"].size > 1 ) )
|
|
// {
|
|
// if ( isdefined (self.pers["contractNotifyQueue"][1] ) )
|
|
// {
|
|
// contract1 = self.pers["contractNotifyQueue"][1]["index"];
|
|
// sendMessage = true;
|
|
// }
|
|
// }
|
|
// if ( isdefined( self.pers["contractNotifyQueue"].size > 2 ) )
|
|
// {
|
|
// if ( isdefined (self.pers["contractNotifyQueue"][2] ) )
|
|
// {
|
|
// contract2 = self.pers["contractNotifyQueue"][2]["index"];
|
|
// sendMessage = true;
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// for ( challengeNotifyCount = 0; challengeNotifyCount < self.pers["challengeNotifyQueue"].size && challengeNotifyCount < 3; challengeNotifyCount++ )
|
|
// {
|
|
// self.postGameMilestones++;
|
|
// tier = self.pers["challengeNotifyQueue"][challengeNotifyCount]["tier"];
|
|
// index = self.pers["challengeNotifyQueue"][challengeNotifyCount]["index"];
|
|
// itemIndex = self.pers["challengeNotifyQueue"][challengeNotifyCount]["itemIndex"];
|
|
// type = self.pers["challengeNotifyQueue"][challengeNotifyCount]["type"];
|
|
// self DisplayEndGameMilestone( challengeNotifyCount, tier, index, itemIndex, type );
|
|
// }
|
|
//}
|
|
|
|
function milestoneNotify( index, itemIndex, type, tier )
|
|
{
|
|
level.globalChallenges++;
|
|
|
|
if ( !isdefined( type ) )
|
|
{
|
|
type = "global";
|
|
}
|
|
size = self.pers["challengeNotifyQueue"].size;
|
|
self.pers["challengeNotifyQueue"][size] = [];
|
|
self.pers["challengeNotifyQueue"][size]["tier"] = tier;
|
|
self.pers["challengeNotifyQueue"][size]["index"] = index;
|
|
self.pers["challengeNotifyQueue"][size]["itemIndex"] = itemIndex;
|
|
self.pers["challengeNotifyQueue"][size]["type"] = type;
|
|
|
|
self notify( "received award" );
|
|
}
|
|
|