mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-10 10:47:58 -05:00
394 lines
9.3 KiB
Plaintext
394 lines
9.3 KiB
Plaintext
#include maps/mp/gametypes/_hud_message;
|
|
#include maps/mp/gametypes/_rank;
|
|
#include maps/mp/gametypes/_persistence;
|
|
#include maps/mp/_medals;
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_utility;
|
|
|
|
init()
|
|
{
|
|
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;
|
|
level.endmessagedefaultduration = 2;
|
|
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;
|
|
precachestring( &"KILLSTREAK_DESTROYED_UAV" );
|
|
precachestring( &"KILLSTREAK_DESTROYED_COUNTERUAV" );
|
|
precachestring( &"KILLSTREAK_DESTROYED_REMOTE_MORTAR" );
|
|
precachestring( &"KILLSTREAK_MP40_INBOUND" );
|
|
precachestring( &"KILLSTREAK_M220_TOW_INBOUND" );
|
|
precachestring( &"KILLSTREAK_MINIGUN_INBOUND" );
|
|
precachestring( &"KILLSTREAK_M202_FLASH_INBOUND" );
|
|
precachestring( &"KILLSTREAK_M32_INBOUND" );
|
|
precachestring( &"MP_CAPTURED_THE_FLAG" );
|
|
precachestring( &"MP_KILLED_FLAG_CARRIER" );
|
|
precachestring( &"MP_FRIENDLY_FLAG_DROPPED" );
|
|
precachestring( &"MP_ENEMY_FLAG_DROPPED" );
|
|
precachestring( &"MP_FRIENDLY_FLAG_RETURNED" );
|
|
precachestring( &"MP_ENEMY_FLAG_RETURNED" );
|
|
precachestring( &"MP_FRIENDLY_FLAG_TAKEN" );
|
|
precachestring( &"MP_ENEMY_FLAG_TAKEN" );
|
|
precachestring( &"MP_ENEMY_FLAG_CAPTURED" );
|
|
precachestring( &"MP_FRIENDLY_FLAG_CAPTURED" );
|
|
precachestring( &"MP_EXPLOSIVES_BLOWUP_BY" );
|
|
precachestring( &"MP_EXPLOSIVES_DEFUSED_BY" );
|
|
precachestring( &"MP_EXPLOSIVES_PLANTED_BY" );
|
|
precachestring( &"MP_HQ_DESTROYED_BY" );
|
|
precachestring( &"KILLSTREAK_DESTROYED_HELICOPTER" );
|
|
/#
|
|
level thread popupsfromconsole();
|
|
#/
|
|
level thread onplayerconnect();
|
|
}
|
|
|
|
popupsfromconsole()
|
|
{
|
|
/#
|
|
while ( 1 )
|
|
{
|
|
timeout = getdvarintdefault( "scr_popuptime", 1 );
|
|
if ( timeout == 0 )
|
|
{
|
|
timeout = 1;
|
|
}
|
|
wait timeout;
|
|
medal = getdvarintdefault( "scr_popupmedal", 0 );
|
|
challenge = getdvarintdefault( "scr_popupchallenge", 0 );
|
|
rank = getdvarintdefault( "scr_popuprank", 0 );
|
|
gun = getdvarintdefault( "scr_popupgun", 0 );
|
|
contractpass = getdvarintdefault( "scr_popupcontractpass", 0 );
|
|
contractfail = getdvarintdefault( "scr_popupcontractfail", 0 );
|
|
gamemodemsg = getdvarintdefault( "scr_gamemodeslideout", 0 );
|
|
teammsg = getdvarintdefault( "scr_teamslideout", 0 );
|
|
challengeindex = getdvarintdefault( "scr_challengeIndex", 1 );
|
|
i = 0;
|
|
while ( i < medal )
|
|
{
|
|
level.players[ 0 ] maps/mp/_medals::codecallback_medal( 4 );
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while ( i < challenge )
|
|
{
|
|
level.players[ 0 ] maps/mp/gametypes/_persistence::codecallback_challengecomplete( 2500, 1, 84, 3, 0, 0, 851 );
|
|
level.players[ 0 ] maps/mp/gametypes/_persistence::codecallback_challengecomplete( 500, 1, 22, 2, 0, 0, 533 );
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while ( i < rank )
|
|
{
|
|
level.players[ 0 ] maps/mp/gametypes/_rank::codecallback_rankup( 4, 0, 0 );
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while ( i < gun )
|
|
{
|
|
level.players[ 0 ] maps/mp/gametypes/_persistence::codecallback_gunchallengecomplete( 0, 20, 25, 0 );
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while ( i < contractpass )
|
|
{
|
|
level.players[ 0 ] maps/mp/gametypes/_persistence::addcontracttoqueue( 12, 1 );
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while ( i < contractfail )
|
|
{
|
|
level.players[ 0 ] maps/mp/gametypes/_persistence::addcontracttoqueue( 12, 0 );
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while ( i < teammsg )
|
|
{
|
|
player = level.players[ 0 ];
|
|
if ( isDefined( level.players[ 1 ] ) )
|
|
{
|
|
player = level.players[ 1 ];
|
|
}
|
|
level.players[ 0 ] displayteammessagetoall( &"KILLSTREAK_DESTROYED_HELICOPTER", player );
|
|
i++;
|
|
}
|
|
reset = getdvarintdefault( "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 );
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
}
|
|
|
|
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 );
|
|
}
|
|
|
|
shoulddisplayteammessages()
|
|
{
|
|
if ( level.hardcoremode == 1 || level.splitscreen == 1 )
|
|
{
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
displayteammessagetoall( message, player )
|
|
{
|
|
if ( !shoulddisplayteammessages() )
|
|
{
|
|
return;
|
|
}
|
|
i = 0;
|
|
while ( i < level.players.size )
|
|
{
|
|
cur_player = level.players[ i ];
|
|
if ( cur_player isempjammed() )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
else size = cur_player.teammessagequeue.size;
|
|
if ( size >= level.teammessagequeuemax )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
cur_player.teammessagequeue[ size ] = spawnstruct();
|
|
cur_player.teammessagequeue[ size ].message = message;
|
|
cur_player.teammessagequeue[ size ].player = player;
|
|
cur_player notify( "received teammessage" );
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
displayteammessagetoteam( message, player, team )
|
|
{
|
|
if ( !shoulddisplayteammessages() )
|
|
{
|
|
return;
|
|
}
|
|
i = 0;
|
|
while ( i < level.players.size )
|
|
{
|
|
cur_player = level.players[ i ];
|
|
if ( cur_player.team != team )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
else if ( cur_player isempjammed() )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
else size = cur_player.teammessagequeue.size;
|
|
if ( size >= level.teammessagequeuemax )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
cur_player.teammessagequeue[ size ] = spawnstruct();
|
|
cur_player.teammessagequeue[ size ].message = message;
|
|
cur_player.teammessagequeue[ size ].player = player;
|
|
cur_player notify( "received teammessage" );
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
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, 0 );
|
|
if ( !isDefined( nextnotifydata.player ) || !isplayer( nextnotifydata.player ) )
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
if ( self isempjammed() )
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
self luinotifyevent( &"player_callout", 2, nextnotifydata.message, nextnotifydata.player.entnum );
|
|
}
|
|
wait level.teammessage.waittime;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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 ( !level.gameended )
|
|
{
|
|
if ( self.startmessagenotifyqueue.size == 0 && self.messagenotifyqueue.size == 0 )
|
|
{
|
|
self waittill( "received award" );
|
|
}
|
|
waittillframeend;
|
|
if ( level.gameended )
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if ( self.startmessagenotifyqueue.size > 0 )
|
|
{
|
|
nextnotifydata = self.startmessagenotifyqueue[ 0 ];
|
|
arrayremoveindex( self.startmessagenotifyqueue, 0, 0 );
|
|
if ( isDefined( nextnotifydata.duration ) )
|
|
{
|
|
duration = nextnotifydata.duration;
|
|
}
|
|
else
|
|
{
|
|
duration = level.startmessagedefaultduration;
|
|
}
|
|
self maps/mp/gametypes/_hud_message::shownotifymessage( nextnotifydata, duration );
|
|
wait duration;
|
|
continue;
|
|
}
|
|
else if ( self.messagenotifyqueue.size > 0 )
|
|
{
|
|
nextnotifydata = self.messagenotifyqueue[ 0 ];
|
|
arrayremoveindex( self.messagenotifyqueue, 0, 0 );
|
|
if ( isDefined( nextnotifydata.duration ) )
|
|
{
|
|
duration = nextnotifydata.duration;
|
|
}
|
|
else
|
|
{
|
|
duration = level.regulargamemessages.waittime;
|
|
}
|
|
self maps/mp/gametypes/_hud_message::shownotifymessage( nextnotifydata, duration );
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
wait 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
onplayerconnect()
|
|
{
|
|
for ( ;; )
|
|
{
|
|
level waittill( "connecting", player );
|
|
player.resetgameoverhudrequired = 0;
|
|
player thread displaypopupswaiter();
|
|
if ( !level.hardcoremode )
|
|
{
|
|
player thread displayteammessagewaiter();
|
|
}
|
|
}
|
|
}
|
|
|
|
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" );
|
|
}
|