mirror of
https://github.com/Ragora/T2-BoL.git
synced 2026-04-28 05:45:03 +00:00
Initial commit.
This commit is contained in:
commit
9a05e8d86c
652 changed files with 154587 additions and 0 deletions
131
scripts/scoreList.cs
Normal file
131
scripts/scoreList.cs
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// scoreList.cs
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Server side functions:
|
||||
//------------------------------------------------------------------------------
|
||||
$lastScoreUpdate = 0;
|
||||
|
||||
function updateScores()
|
||||
{
|
||||
if ( !isObject( Game ) )
|
||||
return;
|
||||
|
||||
%numTeams = Game.numTeams;
|
||||
|
||||
// Initialize the team counts:
|
||||
for ( %teamIndex = 0; %teamIndex <= %numTeams; %teamIndex++ )
|
||||
Game.teamCount[%teamIndex] = 0;
|
||||
|
||||
%count = ClientGroup.getCount();
|
||||
for ( %clientIndex = 0; %clientIndex < %count; %clientIndex++ )
|
||||
{
|
||||
%cl = ClientGroup.getObject( %clientIndex );
|
||||
%team = %cl.getSensorGroup();
|
||||
if ( %numTeams == 1 && %team != 0 )
|
||||
%team = 1;
|
||||
Game.teamScores[%team, Game.teamCount[%team], 0] = %cl.name;
|
||||
if ( %cl.score $= "" )
|
||||
Game.teamScores[%team, Game.teamCount[%team], 1] = 0;
|
||||
else
|
||||
Game.teamScores[%team, Game.teamCount[%team], 1] = %cl.score;
|
||||
Game.teamCount[%team]++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function serverCmdGetScores( %client )
|
||||
{
|
||||
// Client has requested the score list, so give it to 'em...
|
||||
if (isObject(Game))
|
||||
{
|
||||
updateScores();
|
||||
%teamCount = Game.numTeams;
|
||||
|
||||
if (%teamCount > 1)
|
||||
{
|
||||
// Send team messages:
|
||||
for (%team = 1; %team <= %teamCount; %team++)
|
||||
messageClient(%client, 'MsgTeamScore', "", %team, $teamScore[%team]);
|
||||
|
||||
//send the player scores in order of their team rank...
|
||||
for (%team = 1; %team <= %teamCount; %team++)
|
||||
{
|
||||
for (%i = 0; %i < $TeamRank[%team, count]; %i++)
|
||||
{
|
||||
%cl = $TeamRank[%team, %i];
|
||||
if (IsObject(%cl))
|
||||
messageClient( %client, 'MsgPlayerScore', "", %cl, %cl.score, %cl.getPing(), %cl.getPacketLoss());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//send the player scores in order of their rank...
|
||||
for (%i = 0; %i < $TeamRank[0, count]; %i++)
|
||||
{
|
||||
%cl = $TeamRank[0, %i];
|
||||
if (isObject(%cl))
|
||||
messageClient( %client, 'MsgPlayerScore', "", %cl, %cl.score, %cl.getPing(), %cl.getPacketLoss());
|
||||
}
|
||||
}
|
||||
|
||||
//now send the observers over
|
||||
%count = ClientGroup.getCount();
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
%cl = ClientGroup.getObject(%i);
|
||||
if (%cl.team <= 0)
|
||||
messageClient( %client, 'MsgPlayerScore', "", %cl, %cl.score, %cl.getPing(), %cl.getPacketLoss());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Client side functions:
|
||||
//------------------------------------------------------------------------------
|
||||
addMessageCallback( 'MsgTeamScore', handleTeamScore );
|
||||
addMessageCallback( 'MsgPlayerScore', handlePlayerScore );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// client team score list is called $clTeamScore
|
||||
// number of teams is $clTeamCount
|
||||
$clTeamCount = 0;
|
||||
|
||||
function handleTeamScore( %msgType, %msgString, %team, %teamScore )
|
||||
{
|
||||
if ( %teamScore $= "" )
|
||||
%score = "0";
|
||||
else
|
||||
%score = %teamScore;
|
||||
|
||||
// Add the new entry:
|
||||
$clTeamScore[%team, 1] = %score;
|
||||
|
||||
if ( %team > $clTeamCount )
|
||||
$clTeamCount = %team;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Store the player score on the client-side player object:
|
||||
function handlePlayerScore( %msgType, %msgString, %clientId, %score, %ping, %packetLoss )
|
||||
{
|
||||
%player = $PlayerList[%clientId];
|
||||
if ( %player )
|
||||
{
|
||||
%player.score = %score;
|
||||
%player.ping = %ping;
|
||||
%player.packetLoss = %packetLoss;
|
||||
lobbyUpdatePlayer( %clientId );
|
||||
}
|
||||
else
|
||||
warn( "Received score for client that hasn't joined!" );
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue