diff --git a/Classic/scripts/autoexec/zDarkTigerStats.cs b/Classic/scripts/autoexec/zDarkTigerStats.cs index d458f7b..658afde 100644 --- a/Classic/scripts/autoexec/zDarkTigerStats.cs +++ b/Classic/scripts/autoexec/zDarkTigerStats.cs @@ -9,6 +9,7 @@ //-----------Settings------------ +$dtStats::viewSelf = 0; //Only self client can see his own stats, any stat, unless admin //number of games to gather a running average, i would not make this too big of a number as its alot of data load/save //If you want a larger number of games make sure slowMode is on $dtStats::MaxNumOfGames = 10; @@ -17,14 +18,14 @@ $dtStats::skipZeros = 1; $dtStats::Enable = 1; //a way to disable the stats system with out haveing to remove it // Set to 1 for it to collect stats only on full games, the first game is ignored becuase its the game the player joined in at unless they meet the percentage requirement //With it off it records all even after the player has left it will save -$dtStats::fullGames["CTF"] = 0; +$dtStats::fullGames["CTF"] = 1; //if they are here for 75% of the game, count it as a full game, this percentage is calc from time and score limit -$dtStats::fgPercentage["CTF"] = 75; +$dtStats::fgPercentage["CTF"] = 25; //0 score based, 1 time based, 2 the closer one to finishing the game, 3 mix avg $dtStats::fgPercentageType["CTF"] = 2; -$dtStats::fullGames["LAK"] = 0; -$dtStats::fgPercentage["LAK"] = 70; +$dtStats::fullGames["LAK"] = 1; +$dtStats::fgPercentage["LAK"] = 25; $dtStats::fgPercentageType["LAK"] = 2; $dtStats::returnToMenuTimer = (30*1000)*1;// 1 min after not making an action reset @@ -297,287 +298,329 @@ package dtStats{ } } } - function CTFGame::updateScoreHud(%game, %client, %tag){ // out of evoPackage.cs{ - // error("CTFGame::updateScoreHud"); - if(%client.viewStats && $dtStats::enableRefresh){ - //echo("view stats"); - statsMenu(%client, %game.class); - return; - } - else if(%client.viewStats && !$dtStats::enableRefresh){ - return; - } - - %ShowScores = ( $Host::TournamentMode || $Host::ShowIngamePlayerScores ); - - if(Game.numTeams > 1) - { - // Send header: - messageClient(%client, 'SetScoreHudHeader', "", '\t%1%2\t%3%4', %game.getTeamName(1), $TeamScore[1], %game.getTeamName(2), $TeamScore[2]); - - if ( !$TeamRank[1, count] ) - { - $TeamRank[1, count] = 0; - } - - if ( !$TeamRank[2, count] ) - { - $TeamRank[2, count] = 0; - } - - if ( $Host::EvoAveragePings ) - { - for ( %count = 0; %count <= Game.numteams; %count++ ) - { - %Ping[%count] = 0; - %PingSq[%count] = 0; - %PingCount[%count] = 0; - } - - for ( %ClientCount = ClientGroup.getCount() -1 ; %ClientCount >= 0; - %ClientCount-- ) - { - %ThisClient = ClientGroup.getObject( %ClientCount ); - %Team = %ThisClient.team; - - %PingVal = %ThisClient.getPing(); - - %Ping[%Team] += %PingVal; - %PingSq[%Team] += ( %PingVal * %PingVal ); - %PingCount[%Team] ++; - } - - for ( %count = 0; %count <= %game.numteams; %count++ ) - { - if ( %PingCount[%count] ) - { - %Ping[%count] /= %PingCount[%count]; - %PingSq[%count] /= %PingCount[%count]; - - %PingSq[%count] = msqrt( %PingSq[%count] - ( %Ping[%count] * %Ping[%count] ) ); - - %Ping[%count] = mfloor( %Ping[%count] ); - %PingSq[%count] = mfloor( %PingSq[%count] ); - - %PingString[%count] = "PING: " @ %Ping[%count] @ " +/- " @ %PingSq[%count] @ "ms "; - } - } - } - messageClient( %client, 'SetScoreHudSubheader', "", - '\tPLAYERS (%1)%4%3\tPLAYERS (%2)%5%3', $TeamRank[1, count], $TeamRank[2, count], (%ShowScores?'SCORE':''),%PingString[1],%PingString[2]); - - %index = 0; - while(true) - { - - if(%index >= $TeamRank[1, count]+2 && %index >= $TeamRank[2, count]+2) - break; - - //get the team1 client info - %team1Client = ""; - %team1ClientScore = ""; - %col1Style = ""; - if(%index < $TeamRank[1, count]) - { - %team1Client = $TeamRank[1, %index]; - - if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores && %team1Client.score >= 0) - %team1ClientScore = 0; - else - %team1ClientScore = %team1Client.score $= "" ? 0 : %team1Client.score; - - %col1Style = %team1Client == %client ? "" : ""; - - if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) - %team1playersTotalScore = 0; - else - %team1playersTotalScore += %team1Client.score; - } - else if(%index == $teamRank[1, count] && $teamRank[1, count] != 0 && %game.class $= "CTFGame") - { - %team1ClientScore = "--------------"; - } - else if(%index == $teamRank[1, count]+1 && $teamRank[1, count] != 0 && %game.class $= "CTFGame") - { - if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) - %team1ClientScore = 0; - else - %team1ClientScore = %team1playersTotalScore != 0 ? %team1playersTotalScore : 0; - } - - //get the team2 client info - %team2Client = ""; - %team2ClientScore = ""; - %col2Style = ""; - if(%index < $TeamRank[2, count]) - { - %team2Client = $TeamRank[2, %index]; - - if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores && %team2Client.score >= 0) - %team2ClientScore = 0; - else - %team2ClientScore = %team2Client.score $= "" ? 0 : %team2Client.score; - - %col2Style = %team2Client == %client ? "" : ""; - - if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) - %team2playersTotalScore = 0; - else - %team2playersTotalScore += %team2Client.score; - } - else if(%index == $teamRank[2, count] && $teamRank[2, count] != 0 && %game.class $= "CTFGame") - { - %team2ClientScore = "--------------"; - } - else if(%index == $teamRank[2, count]+1 && $teamRank[2, count] != 0 && %game.class $= "CTFGame") - { - if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) - %team2ClientScore = 0; - else - %team2ClientScore = %team2playersTotalScore != 0 ? %team2playersTotalScore : 0; - } - - if (!%ShowScores) - { - %team1ClientScore = ''; - %team2ClientScore = ''; - } - - if(%client.team != 0){ //if the client is not an observer, send the message - if(%team1Client.name !$= "" && %team2Client.name !$= "") - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - else if(%team1Client.name !$= "" && %team2Client.name $= "") - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - else if(%team1Client.name $= "" && %team2Client.name !$= "") - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - else - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style); - - } - else{ //else for observers, create an anchor around the player name so they can be observed - //messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - - if(%team1Client.name !$= "" && %team2Client.name !$= "") - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - else if(%team1Client.name !$= "" && %team2Client.name $= "") - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - else if(%team1Client.name $= "" && %team2Client.name !$= "") - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); - else - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style); - - } - %index++; - } - } - else - { - //tricky stuff here... use two columns if we have more than 15 clients... - %numClients = $TeamRank[0, count]; - if(%numClients > $ScoreHudMaxVisible) - %numColumns = 2; - - // Clear header: - messageClient(%client, 'SetScoreHudHeader', "", ""); - - // Send header: - if(%numColumns == 2) - messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER%1\tPLAYER%1', (%ShowScores?'SCORE':'')); - else - messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER%1', (%ShowScores?'SCORE':'')); - - %countMax = %numClients; - if(%countMax > ( 2 * $ScoreHudMaxVisible )) - { - if(%countMax & 1) - %countMax++; - %countMax = %countMax / 2; - } - else if(%countMax > $ScoreHudMaxVisible) - %countMax = $ScoreHudMaxVisible; - - for(%index = 0; %index < %countMax; %index++) - { - //get the client info - %col1Client = $TeamRank[0, %index]; - %col1ClientScore = %col1Client.score $= "" ? 0 : %col1Client.score; - %col1Style = %col1Client == %client ? "" : ""; - - //see if we have two columns - if(%numColumns == 2) - { - %col2Client = ""; - %col2ClientScore = ""; - %col2Style = ""; - - //get the column 2 client info - %col2Index = %index + %countMax; - if(%col2Index < %numClients) - { - %col2Client = $TeamRank[0, %col2Index]; - %col2ClientScore = %col2Client.score $= "" ? 0 : %col2Client.score; - %col2Style = %col2Client == %client ? "" : ""; - } - } - - if ( !%ShowScores ) - { - %col1ClientScore = ""; - %col2ClientScore = ""; - } - - //if the client is not an observer, send the message - if(%client.team != 0) - { - if(%numColumns == 2) - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %col1Client.name, %col1ClientScore, %col2Client.name, %col2ClientScore, %col1Style, %col2Style); - else - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%3%1%2', %col1Client.name, %col1ClientScore, %col1Style); - } - //else for observers, create an anchor around the player name so they can be observed - else - { - if(%numColumns == 2) - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %col1Client.name, %col1ClientScore, %col2Client.name, %col2ClientScore, %col1Style, %col2Style, %col1Client, %col2Client); - else - messageClient( %client, 'SetLineHud', "", %tag, %index, '\t%3%1%2', %col1Client.name, %col1ClientScore, %col1Style, %col1Client); - } - } - - } - - // Tack on the list of observers: - %observerCount = 0; - for(%i = 0; %i < ClientGroup.getCount(); %i++) - { - %cl = ClientGroup.getObject(%i); - if(%cl.team == 0) - %observerCount++; - } - - if(%observerCount > 0) - { - messageClient(%client, 'SetLineHud', "", %tag, %index, ""); - %index++; - messageClient(%client, 'SetLineHud', "", %tag, %index, '\tOBSERVERS (%1)TIME', %observerCount); - %index++; - for(%i = 0; %i < ClientGroup.getCount(); %i++) - { - %cl = ClientGroup.getObject(%i); - //if this is an observer - if(%cl.team == 0) - { - %obsTime = getSimTime() - %cl.observerStartTime; - %obsTimeStr = %game.formatTime(%obsTime, false); - messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%1%2', %cl.name, %obsTimeStr); - %index++; - } - } - } - - //clear the rest of Hud so we don't get old lines hanging around... - messageClient(%client, 'ClearHud', "", %tag, %index); - } + function CTFGame::updateScoreHud(%game, %client, %tag){ + // error("CTFGame::updateScoreHud"); + if(%client.viewStats && $dtStats::enableRefresh){ + //echo("view stats"); + statsMenu(%client, %game.class); + return; + } + else if(%client.viewStats && !$dtStats::enableRefresh){ + return; + } + + %ShowScores = ( $Host::TournamentMode || $Host::ShowIngamePlayerScores ); + + if(Game.numTeams > 1) + { + // Send header: + messageClient(%client, 'SetScoreHudHeader', "", '\t%1%2\t%3%4', %game.getTeamName(1), $TeamScore[1], %game.getTeamName(2), $TeamScore[2]); + + if ( !$TeamRank[1, count] ) + { + $TeamRank[1, count] = 0; + } + + if ( !$TeamRank[2, count] ) + { + $TeamRank[2, count] = 0; + } + + if ( $Host::EvoAveragePings ) + { + for ( %count = 0; %count <= Game.numteams; %count++ ) + { + %Ping[%count] = 0; + %PingSq[%count] = 0; + %PingCount[%count] = 0; + } + + for ( %ClientCount = ClientGroup.getCount() -1 ; %ClientCount >= 0; + %ClientCount-- ) + { + %ThisClient = ClientGroup.getObject( %ClientCount ); + %Team = %ThisClient.team; + + %PingVal = %ThisClient.getPing(); + + %Ping[%Team] += %PingVal; + %PingSq[%Team] += ( %PingVal * %PingVal ); + %PingCount[%Team] ++; + } + + for ( %count = 0; %count <= %game.numteams; %count++ ) + { + if ( %PingCount[%count] ) + { + %Ping[%count] /= %PingCount[%count]; + %PingSq[%count] /= %PingCount[%count]; + + %PingSq[%count] = msqrt( %PingSq[%count] - ( %Ping[%count] * %Ping[%count] ) ); + + %Ping[%count] = mfloor( %Ping[%count] ); + %PingSq[%count] = mfloor( %PingSq[%count] ); + + %PingString[%count] = "PING: " @ %Ping[%count] @ " +/- " @ %PingSq[%count] @ "ms "; + } + } + } + messageClient( %client, 'SetScoreHudSubheader', "", + '\tPLAYERS (%1)%4%3\tPLAYERS (%2)%5%3', $TeamRank[1, count], $TeamRank[2, count], (%ShowScores?'SCORE':''),%PingString[1],%PingString[2]); + + %index = 0; + while(true) + { + + if(%index >= $TeamRank[1, count]+2 && %index >= $TeamRank[2, count]+2) + break; + + //get the team1 client info + %team1Client = ""; + %team1ClientScore = ""; + %col1Style = ""; + if(%index < $TeamRank[1, count]) + { + %team1Client = $TeamRank[1, %index]; + + if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores && %team1Client.score >= 0) + %team1ClientScore = 0; + else + %team1ClientScore = %team1Client.score $= "" ? 0 : %team1Client.score; + + %col1Style = %team1Client == %client ? "" : ""; + + if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) + %team1playersTotalScore = 0; + else + %team1playersTotalScore += %team1Client.score; + } + else if(%index == $teamRank[1, count] && $teamRank[1, count] != 0 && %game.class $= "CTFGame") + { + %team1ClientScore = "--------------"; + } + else if(%index == $teamRank[1, count]+1 && $teamRank[1, count] != 0 && %game.class $= "CTFGame") + { + if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) + %team1ClientScore = 0; + else + %team1ClientScore = %team1playersTotalScore != 0 ? %team1playersTotalScore : 0; + } + + //get the team2 client info + %team2Client = ""; + %team2ClientScore = ""; + %col2Style = ""; + if(%index < $TeamRank[2, count]) + { + %team2Client = $TeamRank[2, %index]; + + if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores && %team2Client.score >= 0) + %team2ClientScore = 0; + else + %team2ClientScore = %team2Client.score $= "" ? 0 : %team2Client.score; + + %col2Style = %team2Client == %client ? "" : ""; + + if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) + %team2playersTotalScore = 0; + else + %team2playersTotalScore += %team2Client.score; + } + else if(%index == $teamRank[2, count] && $teamRank[2, count] != 0 && %game.class $= "CTFGame") + { + %team2ClientScore = "--------------"; + } + else if(%index == $teamRank[2, count]+1 && $teamRank[2, count] != 0 && %game.class $= "CTFGame") + { + if(!$Host::TournamentMode && !$Host::ShowIngamePlayerScores) + %team2ClientScore = 0; + else + %team2ClientScore = %team2playersTotalScore != 0 ? %team2playersTotalScore : 0; + } + + if (!%ShowScores) + { + %team1ClientScore = ''; + %team2ClientScore = ''; + } + + if(%client.isAdmin || %client.isSuperAdmin || !$dtStats::viewSelf){ + if(%client.team != 0){ //if the client is not an observer, send the message + if(%team1Client.name !$= "" && %team2Client.name !$= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name !$= "" && %team2Client.name $= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name $= "" && %team2Client.name !$= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style); + + } + else{ //else for observers, create an anchor around the player name so they can be observed + //messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + + if(%team1Client.name !$= "" && %team2Client.name !$= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name !$= "" && %team2Client.name $= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name $= "" && %team2Client.name !$= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style); + + } + } + else{ + if(%client.team != 0){ + if(%team1Client.name $= %client.name && %team2Client.name !$= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name !$="" && %team2Client.name $= %client.name) + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name $= %client.name && %team2Client.name $= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name $= "" && %team2Client.name $= %client.name) + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style); + + } + else{ //else for observers, create an anchor around the player name so they can be observed + //messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + if(%team1Client.name $= %client.name && %team2Client.name !$= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name !$= "" && %team2Client.name $= %client.name) + mssageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name $= %client.name && %team2Client.name $= "") + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5+ %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else if(%team1Client.name $= "" && %team2Client.name $= %client.name) + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6+ %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style, %team1Client, %team2Client); + else + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5 %1%2\t%6 %3%4', %team1Client.name, %team1ClientScore, %team2Client.name, %team2ClientScore, %col1Style, %col2Style); + + } + + } + + %index++; + } + } + else + { + //tricky stuff here... use two columns if we have more than 15 clients... + %numClients = $TeamRank[0, count]; + if(%numClients > $ScoreHudMaxVisible) + %numColumns = 2; + + // Clear header: + messageClient(%client, 'SetScoreHudHeader', "", ""); + + // Send header: + if(%numColumns == 2) + messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER%1\tPLAYER%1', (%ShowScores?'SCORE':'')); + else + messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER%1', (%ShowScores?'SCORE':'')); + + %countMax = %numClients; + if(%countMax > ( 2 * $ScoreHudMaxVisible )) + { + if(%countMax & 1) + %countMax++; + %countMax = %countMax / 2; + } + else if(%countMax > $ScoreHudMaxVisible) + %countMax = $ScoreHudMaxVisible; + + for(%index = 0; %index < %countMax; %index++) + { + //get the client info + %col1Client = $TeamRank[0, %index]; + %col1ClientScore = %col1Client.score $= "" ? 0 : %col1Client.score; + %col1Style = %col1Client == %client ? "" : ""; + + //see if we have two columns + if(%numColumns == 2) + { + %col2Client = ""; + %col2ClientScore = ""; + %col2Style = ""; + + //get the column 2 client info + %col2Index = %index + %countMax; + if(%col2Index < %numClients) + { + %col2Client = $TeamRank[0, %col2Index]; + %col2ClientScore = %col2Client.score $= "" ? 0 : %col2Client.score; + %col2Style = %col2Client == %client ? "" : ""; + } + } + + if ( !%ShowScores ) + { + %col1ClientScore = ""; + %col2ClientScore = ""; + } + + //if the client is not an observer, send the message + if(%client.team != 0) + { + if(%numColumns == 2) + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %col1Client.name, %col1ClientScore, %col2Client.name, %col2ClientScore, %col1Style, %col2Style); + else + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%3%1%2', %col1Client.name, %col1ClientScore, %col1Style); + } + //else for observers, create an anchor around the player name so they can be observed + else + { + if(%numColumns == 2) + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%5%1%2\t%6%3%4', %col1Client.name, %col1ClientScore, %col2Client.name, %col2ClientScore, %col1Style, %col2Style, %col1Client, %col2Client); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '\t%3%1%2', %col1Client.name, %col1ClientScore, %col1Style, %col1Client); + } + } + + } + + // Tack on the list of observers: + %observerCount = 0; + for(%i = 0; %i < ClientGroup.getCount(); %i++) + { + %cl = ClientGroup.getObject(%i); + if(%cl.team == 0) + %observerCount++; + } + + if(%observerCount > 0) + { + messageClient(%client, 'SetLineHud', "", %tag, %index, ""); + %index++; + messageClient(%client, 'SetLineHud', "", %tag, %index, '\tOBSERVERS (%1)TIME', %observerCount); + %index++; + for(%i = 0; %i < ClientGroup.getCount(); %i++) + { + %cl = ClientGroup.getObject(%i); + //if this is an observer + if(%cl.team == 0) + { + %obsTime = getSimTime() - %cl.observerStartTime; + %obsTimeStr = %game.formatTime(%obsTime, false); + if(%client.isAdmin ||%client.isSuperAdmin || !$dtStats::viewSelf){ + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t+ %1%2', %cl.name, %obsTimeStr,%client); + + } + else if(%cl == %client){ + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t+ %1%2', %cl.name, %obsTimeStr,%client); + } + else{ + messageClient(%client, 'SetLineHud', "", %tag, %index, '\t%1%2', %cl.name, %obsTimeStr); + } + %index++; + } + } + } + + //clear the rest of Hud so we don't get old lines hanging around... + messageClient(%client, 'ClearHud', "", %tag, %index); + } function CTFGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation){ //error("CTFGame::onClientKilled"); parent::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation); @@ -715,271 +758,414 @@ package dtStats{ } } } - function LakRabbitGame::updateScoreHud(%game, %client, %tag){ - // error("LakRabbitGame::updateScoreHud"); - if(%client.viewStats && $dtStats::enableRefresh){ - //echo("view stats"); - statsMenu(%client, %game.class); - return; - } - else if(%client.viewStats && !$dtStats::enableRefresh){ - return; - } - - //tricky stuff here... use two columns if we have more than 15 clients... - %numClients = $TeamRank[0, count]; - if ( %numClients > $ScoreHudMaxVisible ) - %numColumns = 2; - - // Clear the header: - messageClient( %client, 'SetScoreHudHeader', "", "" ); - - // Send subheader: - if (%numColumns == 2) - messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER\tSCORE\tTIME\tPLAYER\tSCORE\tTIME'); - else - messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER\tSCORE\tTIME'); - - //recalc the score for whoever is holding the flag - if (isObject($AIRabbitFlag.carrier)) - %game.recalcScore($AIRabbitFlag.carrier.client); - - %countMax = %numClients; - if ( %countMax > ( 2 * $ScoreHudMaxVisible ) ) - { - if ( %countMax & 1 ) - %countMax++; - %countMax = %countMax / 2; - } - else if ( %countMax > $ScoreHudMaxVisible ) - %countMax = $ScoreHudMaxVisible; - - for (%index = 0; %index < %countMax; %index++) - { - //get the client info - %col1Client = $TeamRank[0, %index]; - %col1ClientScore = %col1Client.score $= "" ? 0 : %col1Client.score; - %col1Style = ""; - - if (isObject(%col1Client.player.holdingFlag)) - { - %col1ClientTimeMS = %col1Client.flagTimeMS + getSimTime() - %col1Client.startTime; - %col1Style = ""; - } - else - { - %col1ClientTimeMS = %col1Client.flagTimeMS; - if ( %col1Client == %client ) - %col1Style = ""; - } - - if (%col1ClientTimeMS <= 0) - %col1ClientTime = ""; - else - { - %minutes = mFloor(%col1ClientTimeMS / (60 * 1000)); - if (%minutes <= 0) - %minutes = "0"; - %seconds = mFloor(%col1ClientTimeMS / 1000) % 60; - if (%seconds < 10) - %seconds = "0" @ %seconds; - - %col1ClientTime = %minutes @ ":" @ %seconds; - } - - //see if we have two columns - if (%numColumns == 2) - { - %col2Client = ""; - %col2ClientScore = ""; - %col2ClientTime = ""; - %col2Style = ""; - - //get the column 2 client info - %col2Index = %index + %countMax; - if (%col2Index < %numClients) - { - %col2Client = $TeamRank[0, %col2Index]; - %col2ClientScore = %col2Client.score $= "" ? 0 : %col2Client.score; - - if (isObject(%col2Client.player.holdingFlag)) - { - %col2ClientTimeMS = %col2Client.flagTimeMS + getSimTime() - %col2Client.startTime; - %col2Style = ""; - } - else - { - %col2ClientTimeMS = %col2Client.flagTimeMS; - if ( %col2Client == %client ) - %col2Style = ""; - } - - if (%col2ClientTimeMS <= 0) - %col2ClientTime = ""; - else - { - %minutes = mFloor(%col2ClientTimeMS / (60 * 1000)); - if (%minutes <= 0) - %minutes = "0"; - %seconds = mFloor(%col2ClientTimeMS / 1000) % 60; - if (%seconds < 10) - %seconds = "0" @ %seconds; - - %col2ClientTime = %minutes @ ":" @ %seconds; - } - } - } - - //if the client is not an observer, send the message - if (%client.team != 0) - { - if ( %numColumns == 2 ){ - if(%col1Client.name !$= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%8+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); - else if(%col1Client.name !$= "" && %col2Client.name $= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%8%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); - else if(%col1Client.name $= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%8+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); - else - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%8%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); - - } - else{ - if(%col1Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t+ %1%2%3', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style); - else - messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t%1%2%3', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style ); - } - } - //else for observers, create an anchor around the player name so they can be observed - else - { - if ( %numColumns == 2 ) - { - //this is really crappy, but I need to save 1 tag - can only pass in up to %9, %10 doesn't work... - if (%col2Style $= "")//+ - { - if(%col1Client.name !$= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else if(%col1Client.name !$= "" && %col2Client.name $= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else if(%col1Client.name $= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - - } - else if (%col2Style $= "") - { - if(%col1Client.name !$= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else if(%col1Client.name !$= "" && %col2Client.name $= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else if(%col1Client.name $= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - } - else - { - if(%col1Client.name !$= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else if(%col1Client.name !$= "" && %col2Client.name $= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else if(%col1Client.name $= "" && %col2Client.name !$= "") - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - else - messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, - %col2Client.nameBase, %col2ClientScore, %col2ClientTime, - %col1Style, %col1Client, %col2Client ); - } - } - else{ - if(%col1Client.name !$= ""){ - messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t+ %1%2%3', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style, %col1Client ); - } - else{ - messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t%1%2%3', - %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style, %col1Client ); - } - } - } - } - - // Tack on the list of observers: - %observerCount = 0; - for (%i = 0; %i < ClientGroup.getCount(); %i++) - { - %cl = ClientGroup.getObject(%i); - if (%cl.team == 0) - %observerCount++; - } - - if (%observerCount > 0) - { - messageClient( %client, 'SetLineHud', "", %tag, %index, ""); - %index++; - messageClient(%client, 'SetLineHud', "", %tag, %index, '\tOBSERVERS (%1)TIME', %observerCount); - %index++; - for (%i = 0; %i < ClientGroup.getCount(); %i++) - { - %cl = ClientGroup.getObject(%i); - //if this is an observer - if (%cl.team == 0) - { - %obsTime = getSimTime() - %cl.observerStartTime; - %obsTimeStr = %game.formatTime(%obsTime, false); - messageClient( %client, 'SetLineHud', "", %tag, %index, '\t%1%2', - %cl.name, %obsTimeStr ); - %index++; - } - } - } - - //clear the rest of Hud so we don't get old lines hanging around... - messageClient( %client, 'ClearHud', "", %tag, %index ); - } + function LakRabbitGame::updateScoreHud(%game, %client, %tag){ + // error("LakRabbitGame::updateScoreHud"); + if(%client.viewStats && $dtStats::enableRefresh){ + //echo("view stats"); + statsMenu(%client, %game.class); + return; + } + else if(%client.viewStats && !$dtStats::enableRefresh){ + return; + } + + //tricky stuff here... use two columns if we have more than 15 clients... + %numClients = $TeamRank[0, count]; + if ( %numClients > $ScoreHudMaxVisible ) + %numColumns = 2; + + // Clear the header: + messageClient( %client, 'SetScoreHudHeader', "", "" ); + + // Send subheader: + if (%numColumns == 2) + messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER\tSCORE\tTIME\tPLAYER\tSCORE\tTIME'); + else + messageClient(%client, 'SetScoreHudSubheader', "", '\tPLAYER\tSCORE\tTIME'); + + //recalc the score for whoever is holding the flag + if (isObject($AIRabbitFlag.carrier)) + %game.recalcScore($AIRabbitFlag.carrier.client); + + %countMax = %numClients; + if ( %countMax > ( 2 * $ScoreHudMaxVisible ) ) + { + if ( %countMax & 1 ) + %countMax++; + %countMax = %countMax / 2; + } + else if ( %countMax > $ScoreHudMaxVisible ) + %countMax = $ScoreHudMaxVisible; + + for (%index = 0; %index < %countMax; %index++) + { + //get the client info + %col1Client = $TeamRank[0, %index]; + %col1ClientScore = %col1Client.score $= "" ? 0 : %col1Client.score; + %col1Style = ""; + + if (isObject(%col1Client.player.holdingFlag)) + { + %col1ClientTimeMS = %col1Client.flagTimeMS + getSimTime() - %col1Client.startTime; + %col1Style = ""; + } + else + { + %col1ClientTimeMS = %col1Client.flagTimeMS; + if ( %col1Client == %client ) + %col1Style = ""; + } + + if (%col1ClientTimeMS <= 0) + %col1ClientTime = ""; + else + { + %minutes = mFloor(%col1ClientTimeMS / (60 * 1000)); + if (%minutes <= 0) + %minutes = "0"; + %seconds = mFloor(%col1ClientTimeMS / 1000) % 60; + if (%seconds < 10) + %seconds = "0" @ %seconds; + + %col1ClientTime = %minutes @ ":" @ %seconds; + } + + //see if we have two columns + if (%numColumns == 2) + { + %col2Client = ""; + %col2ClientScore = ""; + %col2ClientTime = ""; + %col2Style = ""; + + //get the column 2 client info + %col2Index = %index + %countMax; + if (%col2Index < %numClients) + { + %col2Client = $TeamRank[0, %col2Index]; + %col2ClientScore = %col2Client.score $= "" ? 0 : %col2Client.score; + + if (isObject(%col2Client.player.holdingFlag)) + { + %col2ClientTimeMS = %col2Client.flagTimeMS + getSimTime() - %col2Client.startTime; + %col2Style = ""; + } + else + { + %col2ClientTimeMS = %col2Client.flagTimeMS; + if ( %col2Client == %client ) + %col2Style = ""; + } + + if (%col2ClientTimeMS <= 0) + %col2ClientTime = ""; + else + { + %minutes = mFloor(%col2ClientTimeMS / (60 * 1000)); + if (%minutes <= 0) + %minutes = "0"; + %seconds = mFloor(%col2ClientTimeMS / 1000) % 60; + if (%seconds < 10) + %seconds = "0" @ %seconds; + + %col2ClientTime = %minutes @ ":" @ %seconds; + } + } + } + + //if the client is not an observer, send the message + if (%client.team != 0) + { + if ( %numColumns == 2 ){ + if(%client.isAdmin || %client.isSuperAdmin || !$dtStats::viewSelf){ + if(%col1Client.name !$= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%8+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else if(%col1Client.name !$= "" && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%8%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else if(%col1Client.name $= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%8+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%8%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + + } + else{ + if(%col1Client.name $= %client.name && %col2Client.name !$= "")//+ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%8 %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else if(%col1Client.name !$= "" && %col2Client.name $= %client.name)//+ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t %1%2%3%8+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else if(%col1Client.name $= %client.name && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%8%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else if(%col1Client.name $= "" && %col2Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%8+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%8%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col2Client.nameBase, %col2ClientScore, %col2ClientTime, %col1Style, %col2Style); + + } + } + else{ + if(%client.isAdmin || %client.isSuperAdmin || !$dtStats::viewSelf){ + if(%col1Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t+ %1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t%1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style ); + } + else{ + if(%col1Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t+ %1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t%1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style ); + } + } + } + //else for observers, create an anchor around the player name so they can be observed + else + { + if ( %numColumns == 2 ) + { + if(%client.isAdmin || %client.isSuperAdmin || !$dtStats::viewSelf){ + //this is really crappy, but I need to save 1 tag - can only pass in up to %9, %10 doesn't work... + if (%col2Style $= "")//+ + { + if(%col1Client.name !$= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name !$= "" && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + + } + else if (%col2Style $= "") + { + if(%col1Client.name !$= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name !$= "" && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + } + else + { + if(%col1Client.name !$= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name !$= "" && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= "" && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + } + } + else{///////////////////////////////////////////////////////////////////// + if (%col2Style $= "")//++ + { + if(%col1Client.name $= %client.name && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3 %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name !$= "" && %col2Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t %1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= %client.name && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= "" && %col2Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + + } + else if (%col2Style $= "")//+ + { + if(%col1Client.name $= %client.name && %col2Client.name !$= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3 %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name !$= "" && %col2Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t %1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= %client.name && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= "" && %col2Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + } + else + { + if(%col1Client.name $= %client.name && %col2Client.name !$= "")//+ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3 %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name !$= "" && %col2Client.name $= %client.name)//+ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t %1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= %client.name && %col2Client.name $= "") + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t+ %1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else if(%col1Client.name $= "" && %col2Client.name $= %client.name) + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3+ %4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + else + messageClient( %client, 'SetLineHud', "", %tag, %index, '%7\t%1%2%3%4%5%6', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, + %col2Client.nameBase, %col2ClientScore, %col2ClientTime, + %col1Style, %col1Client, %col2Client ); + } + + } + } + else{ + if(%client.isAdmin || %client.isSuperAdmin || !$dtStats::viewSelf){ + if(%col1Client.name !$= ""){ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t+ %1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style, %col1Client ); + } + else{ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t%1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style, %col1Client ); + } + } + else{ + if(%col1Client.name $= %client.name){ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t+ %1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style, %col1Client ); + } + else{ + messageClient( %client, 'SetLineHud', "", %tag, %index, '%4\t%1%2%3', + %col1Client.nameBase, %col1ClientScore, %col1ClientTime, %col1Style, %col1Client ); + } + } + } + } + } + + // Tack on the list of observers: + %observerCount = 0; + for (%i = 0; %i < ClientGroup.getCount(); %i++) + { + %cl = ClientGroup.getObject(%i); + if (%cl.team == 0) + %observerCount++; + } + + if (%observerCount > 0) + { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""); + %index++; + messageClient(%client, 'SetLineHud', "", %tag, %index, '\tOBSERVERS (%1)TIME', %observerCount); + %index++; + for (%i = 0; %i < ClientGroup.getCount(); %i++) + { + %cl = ClientGroup.getObject(%i); + //if this is an observer + if (%cl.team == 0) + { + %obsTime = getSimTime() - %cl.observerStartTime; + %obsTimeStr = %game.formatTime(%obsTime, false);//+ + if(%client.isAdmin || %client.isSuperAdmin || !$dtStats::viewSelf){ + messageClient( %client, 'SetLineHud', "", %tag, %index, '\t+ %1%2', + %cl.name, %obsTimeStr,%cl.nameBase ); + } + else if(%client.name $= %cl.name){ + messageClient( %client, 'SetLineHud', "", %tag, %index, '\t+ %1%2', + %cl.name, %obsTimeStr,%cl.nameBase ); + } + else{ + messageClient( %client, 'SetLineHud', "", %tag, %index, '\t %1%2', + %cl.name, %obsTimeStr,%cl.nameBase ); + } + + %index++; + } + } + } + + //clear the rest of Hud so we don't get old lines hanging around... + messageClient( %client, 'ClearHud', "", %tag, %index ); + } function LakRabbitGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation){ //error("CTFGame::onClientKilled"); parent::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation); @@ -5338,20 +5524,20 @@ function statsMenu(%client,%game){ //messageClient( %client, 'SetLineHud', "", %tag, %index++, " Main Options Menu"); if(%game $= "CTFGame") { - messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + Current Match Stats',%vClient); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + CTF Match Stats',%vClient); if(%isTargetSelf || %isAdmin) { messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + CTF Weapon Stats',%vClient); messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + CTF Kills/Deaths',%vClient); //messageClient( %client, 'SetLineHud', "", %tag, %index++, '(CTF Games Played = %2) (CTF Running Average %3/%4) (OW %5)',%vClient,%vClient.dtStats.ctfTotalNumGames,%vClient.dtStats.ctfGameCount,$dtStats::MaxNumOfGames,%vClient.dtStats.ctfStatsOverWrite); - //messageClient( %client, 'SetLineHud', "", %tag, %index++, 'Stats update at the start of every new round.'); + } } //messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); if(%game $= "LakRabbitGame") { - messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + Current Match Stats',%vClient); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + Lak Match Stats',%vClient); if(%isTargetSelf || %isAdmin) { messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + Lak Weapon Stats',%vClient); @@ -5364,6 +5550,20 @@ function statsMenu(%client,%game){ messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + Previous CTF Games',%vClient); messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + Previous Lak Games',%vClient); } + + if(%game $= "LakRabbitGame") //CTF has extra line + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ""); + messageClient( %client, 'SetLineHud', "", %tag, %index++, 'Updates are at the start of every new map.'); + messageClient( %client, 'SetLineHud', "", %tag, %index++, "Based on the last" SPC $dtStats::MaxNumOfGames SPC "games."); case "LAKHIST": %game = %client.GlArg4; messageClient( %client, 'SetScoreHudHeader', "", "" @ %vClient.dtStats.lakStats["timeStamp",%game]); @@ -5448,20 +5648,20 @@ function statsMenu(%client,%game){ %timeDate = %vClient.dtStats.lakStats["timeStamp",%b]; // echo(%timeDate SPC %b SPC 1); if(%b == %vClient.dtStats.lakStatsOverWrite){ - messageClient( %client, 'SetLineHud', "", %tag, %index++, '%2 This game will be overwritten',%vClient,%timeDate,%b); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + %2 This game will be overwritten',%vClient,%timeDate,%b); } else{ - messageClient( %client, 'SetLineHud', "", %tag, %index++,'%2 ',%vClient,%timeDate,%b); + messageClient( %client, 'SetLineHud', "", %tag, %index++,' + %2 ',%vClient,%timeDate,%b); } } for(%z = 1; %z < %vClient.dtStats.lakStatsOverWrite; %z++){ %timeDate = %vClient.dtStats.lakStats["timeStamp",%z]; // echo(%timeDate SPC %b SPC 2); if(%z == %vClient.dtStats.lakStatsOverWrite){ - messageClient( %client, 'SetLineHud', "", %tag, %index++, '%2 This game will be overwritten',%vClient,%timeDate,%z); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + %2 This game will be overwritten',%vClient,%timeDate,%z); } else{ - messageClient( %client, 'SetLineHud', "", %tag, %index++,'%2 ',%vClient,%timeDate,%z); + messageClient( %client, 'SetLineHud', "", %tag, %index++,' + %2 ',%vClient,%timeDate,%z); } } } @@ -5472,7 +5672,7 @@ function statsMenu(%client,%game){ } } case "Lak": - messageClient( %client, 'SetScoreHudHeader', "", "" @ %vClient.namebase @ "'s Current Match Stats"); + messageClient( %client, 'SetScoreHudHeader', "", "" @ %vClient.namebase @ "'s Match Stats"); messageClient( %client, 'SetScoreHudSubheader', "", 'Back - Return To Score Screen',%vClient); %header = "StatsRunning AverageTotalsTotals Average"; messageClient( %client, 'SetLineHud', "", %tag, %index++, %header); @@ -5560,7 +5760,7 @@ function statsMenu(%client,%game){ messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%a1,%b2,%c3,%d4,%e5,%f6); case "CTF": - messageClient( %client, 'SetScoreHudHeader', "", "" @ %vClient.namebase @ "'s Current Match Stats"); + messageClient( %client, 'SetScoreHudHeader', "", "" @ %vClient.namebase @ "'s Match Stats"); messageClient( %client, 'SetScoreHudSubheader', "", 'Back - Return To Score Screen',%vClient); %header = "Stats Running AverageTotalsTotals Average"; messageClient( %client, 'SetLineHud', "", %tag, %index++, %header); @@ -5637,16 +5837,16 @@ function statsMenu(%client,%game){ %timeDate = %vClient.dtStats.ctfStats["timeStamp",%b]; // echo(%timeDate SPC %b); if(%b == %vClient.dtStats.ctfStatsOverWrite){ - messageClient( %client, 'SetLineHud', "", %tag, %index++, '%2 This game will be overwritten',%vClient,%timeDate,%b); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + %2 This game will be overwritten',%vClient,%timeDate,%b); } else{ - messageClient( %client, 'SetLineHud', "", %tag, %index++,'%2 ',%vClient,%timeDate,%b); + messageClient( %client, 'SetLineHud', "", %tag, %index++,' + %2 ',%vClient,%timeDate,%b); } } for(%z = 1; %z < %vClient.dtStats.ctfStatsOverWrite; %z++){ %timeDate = %vClient.dtStats.ctfStats["timeStamp",%z]; if(%z == %vClient.dtStats.ctfStatsOverWrite){ - messageClient( %client, 'SetLineHud', "", %tag, %index++, '%2 This game will be overwritten',%vClient,%timeDate,%z); + messageClient( %client, 'SetLineHud', "", %tag, %index++, ' + %2 This game will be overwritten',%vClient,%timeDate,%z); } else{ messageClient( %client, 'SetLineHud', "", %tag, %index++,'%2 ',%vClient,%timeDate,%z);