doRankedMatch()
{
if(level.rankedmatch == false)
{
self thread updateMatchBonusScores();
self iPrintln("Ranked Match ^2[ON]");
//sessionmodeisonlinegame();
//gamemodeisusingxp();
//gamemodeisusingstats();
level.rankedmatch = true;
}
else if(level.rankedmatch == true)
{
self notify("stop_ranked");
self iPrintln("Ranked Match ^1[OFF]");
//sessionmodeisprivate();
level.rankedmatch = false;
}
}
updateMatchBonusScores( winner )
{
self endon("stop_ranked");
self endon("disconnect");
if ( !game["timepassed"] )
return;
if ( !level.rankedMatch )
return;
if ( level.teamBased && isDefined( winner ) )
{
if ( winner == "endregulation" )
return;
}
if ( !level.timeLimit || level.forcedEnd )
{
gameLength = maps\mp\gametypes\_globallogic_utils::getTimePassed() / 1000;
gameLength = min( gameLength, 1200 );
if ( level.gameType == "twar" && game["roundsplayed"] > 0 )
gameLength += level.timeLimit * 60;
}
else
{
gameLength = level.timeLimit * 60;
}
if ( level.teamBased )
{
winningTeam = "tie";
foreach ( team in level.teams )
{
if ( winner == team )
{
winningTeam = team;
break;
}
}
if ( winningTeam != "tie" )
{
winnerScale = 1.0;
loserScale = 0.5;
}
else
{
winnerScale = 0.75;
loserScale = 0.75;
}
players = level.players;
for( i = 0; i < players.size; i++ )
{
player = players[i];
if ( player.timePlayed["total"] < 1 || player.pers["participation"] < 1 )
{
player thread maps\mp\gametypes\_rank::endGameUpdate();
continue;
}
totalTimePlayed = player.timePlayed["total"];
if ( totalTimePlayed > gameLength )
{
totalTimePlayed = gameLength;
}
if ( level.hostForcedEnd && player IsHost() )
continue;
if ( player.pers["score"] < 0 )
continue;
spm = player maps\mp\gametypes\_rank::getSPM();
if ( winningTeam == "tie" )
{
playerScore = int( (winnerScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "tie", playerScore );
player.matchBonus = playerScore;
}
else if ( isDefined( player.pers["team"] ) && player.pers["team"] == winningTeam )
{
playerScore = int( (winnerScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "win", playerScore );
player.matchBonus = playerScore;
}
else if ( isDefined(player.pers["team"] ) && player.pers["team"] != "spectator" )
{
playerScore = int( (loserScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "loss", playerScore );
player.matchBonus = playerScore;
}
}
}
else
{
if ( isDefined( winner ) )
{
winnerScale = 1.0;
loserScale = 0.5;
}
else
{
winnerScale = 0.75;
loserScale = 0.75;
}
players = level.players;
for( i = 0; i < players.size; i++ )
{
player = players[i];
if ( player.timePlayed["total"] < 1 || player.pers["participation"] < 1 )
{
player thread maps\mp\gametypes\_rank::endGameUpdate();
continue;
}
totalTimePlayed = player.timePlayed["total"];
if ( totalTimePlayed > gameLength )
{
totalTimePlayed = gameLength;
}
spm = player maps\mp\gametypes\_rank::getSPM();
isWinner = false;
for ( pIdx = 0; pIdx < min( level.placement["all"][0].size, 3 ); pIdx++ )
{
if ( level.placement["all"][pIdx] != player )
continue;
isWinner = true;
}
if ( isWinner )
{
playerScore = int( (winnerScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "win", playerScore );
player.matchBonus = playerScore;
}
else
{
playerScore = int( (loserScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "loss", playerScore );
player.matchBonus = playerScore;
}
}
}
}
giveMatchBonus( scoreType, score )
{
self endon("stop_ranked");
self endon("disconnect");
level waittill ( "give_match_bonus" );
self AddRankXPValue( scoreType, score );
self maps\mp\gametypes\_rank::endGameUpdate();
}
doRankedMatch()
{
if(level.rankedmatch == false)
{
self thread updateMatchBonusScores();
self iPrintln("Ranked Match ^2[ON]");
//sessionmodeisonlinegame();
//gamemodeisusingxp();
//gamemodeisusingstats();
level.rankedmatch = true;
}
else if(level.rankedmatch == true)
{
self notify("stop_ranked");
self iPrintln("Ranked Match ^1[OFF]");
//sessionmodeisprivate();
level.rankedmatch = false;
}
}
updateMatchBonusScores( winner )
{
self endon("stop_ranked");
self endon("disconnect");
if ( !game["timepassed"] )
return;
if ( !level.rankedMatch )
return;
if ( level.teamBased && isDefined( winner ) )
{
if ( winner == "endregulation" )
return;
}
if ( !level.timeLimit || level.forcedEnd )
{
gameLength = maps\mp\gametypes\_globallogic_utils::getTimePassed() / 1000;
gameLength = min( gameLength, 1200 );
if ( level.gameType == "twar" && game["roundsplayed"] > 0 )
gameLength += level.timeLimit * 60;
}
else
{
gameLength = level.timeLimit * 60;
}
if ( level.teamBased )
{
winningTeam = "tie";
foreach ( team in level.teams )
{
if ( winner == team )
{
winningTeam = team;
break;
}
}
if ( winningTeam != "tie" )
{
winnerScale = 1.0;
loserScale = 0.5;
}
else
{
winnerScale = 0.75;
loserScale = 0.75;
}
players = level.players;
for( i = 0; i < players.size; i++ )
{
player = players[i];
if ( player.timePlayed["total"] < 1 || player.pers["participation"] < 1 )
{
player thread maps\mp\gametypes\_rank::endGameUpdate();
continue;
}
totalTimePlayed = player.timePlayed["total"];
if ( totalTimePlayed > gameLength )
{
totalTimePlayed = gameLength;
}
if ( level.hostForcedEnd && player IsHost() )
continue;
if ( player.pers["score"] < 0 )
continue;
spm = player maps\mp\gametypes\_rank::getSPM();
if ( winningTeam == "tie" )
{
playerScore = int( (winnerScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "tie", playerScore );
player.matchBonus = playerScore;
}
else if ( isDefined( player.pers["team"] ) && player.pers["team"] == winningTeam )
{
playerScore = int( (winnerScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "win", playerScore );
player.matchBonus = playerScore;
}
else if ( isDefined(player.pers["team"] ) && player.pers["team"] != "spectator" )
{
playerScore = int( (loserScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "loss", playerScore );
player.matchBonus = playerScore;
}
}
}
else
{
if ( isDefined( winner ) )
{
winnerScale = 1.0;
loserScale = 0.5;
}
else
{
winnerScale = 0.75;
loserScale = 0.75;
}
players = level.players;
for( i = 0; i < players.size; i++ )
{
player = players[i];
if ( player.timePlayed["total"] < 1 || player.pers["participation"] < 1 )
{
player thread maps\mp\gametypes\_rank::endGameUpdate();
continue;
}
totalTimePlayed = player.timePlayed["total"];
if ( totalTimePlayed > gameLength )
{
totalTimePlayed = gameLength;
}
spm = player maps\mp\gametypes\_rank::getSPM();
isWinner = false;
for ( pIdx = 0; pIdx < min( level.placement["all"][0].size, 3 ); pIdx++ )
{
if ( level.placement["all"][pIdx] != player )
continue;
isWinner = true;
}
if ( isWinner )
{
playerScore = int( (winnerScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "win", playerScore );
player.matchBonus = playerScore;
}
else
{
playerScore = int( (loserScale * ((gameLength/60) * spm)) * (totalTimePlayed / gameLength) );
player thread giveMatchBonus( "loss", playerScore );
player.matchBonus = playerScore;
}
}
}
}
giveMatchBonus( scoreType, score )
{
self endon("stop_ranked");
self endon("disconnect");
level waittill ( "give_match_bonus" );
self AddRankXPValue( scoreType, score );
self maps\mp\gametypes\_rank::endGameUpdate();
}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.