72 lines
1.9 KiB
C#
72 lines
1.9 KiB
C#
// Sends a handshake to new clients to obtain their duplicator version.
|
|
// -------------------------------------------------------------------
|
|
|
|
package NewDuplicator_Server
|
|
{
|
|
//Send handshake request to new client
|
|
function GameConnection::autoAdminCheck(%this)
|
|
{
|
|
%this.ndClient = false;
|
|
%this.ndVersion = "0.0.0";
|
|
|
|
commandToClient(%this, 'ndHandshake', $ND::Version);
|
|
return parent::autoAdminCheck(%this);
|
|
}
|
|
};
|
|
|
|
//Client responded, so he has new duplicator
|
|
function serverCmdNdHandshake(%this, %version)
|
|
{
|
|
cancel(%this.ndHandshakeTimeout);
|
|
|
|
%this.ndClient = true;
|
|
%this.ndVersion = %version;
|
|
|
|
//Inform client whether he has an outdated version
|
|
switch(ndCompareVersion($ND::Version, %version))
|
|
{
|
|
case 1:
|
|
%m = "\c6Your version of the \c3New Duplicator\c6 is outdated! Some features might not work. ";
|
|
%m = %m @ "(Server Version: \c3" @ $ND::Version @ "\c6 | Your Version: \c0" @ %version @ "\c6)";
|
|
//messageClient(%this, '', %m);
|
|
|
|
case 2:
|
|
//Hide this message on long-running dedicated servers
|
|
if($Sim::Time < 86400)
|
|
{
|
|
%m = "\c6Your version of the \c3New Duplicator\c6 is newer than the server's! Ask the host to update it! ";
|
|
%m = %m @ "(Server Version: \c0" @ $ND::Version @ "\c6 | Your Version: \c3" @ %version @ "\c6)";
|
|
//messageClient(%this, '', %m);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Compares two version numbers (major.minor.patch)
|
|
function ndCompareVersion(%ver1, %ver2)
|
|
{
|
|
%ver1 = strReplace(%ver1, ".", " ");
|
|
%ver2 = strReplace(%ver2, ".", " ");
|
|
|
|
%count = getMax(getWordCount(%ver1), getWordCount(%ver2));
|
|
|
|
for(%i = 0; %i < %count; %i ++)
|
|
{
|
|
%v1 = getWord(%ver1, %i);
|
|
%v2 = getWord(%ver2, %i);
|
|
|
|
if(%v1 > %v2)
|
|
return 1;
|
|
else if(%v1 < %v2)
|
|
return 2;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Send handshakes to all clients
|
|
function ndResendHandshakes()
|
|
{
|
|
for(%i = 0; %i < ClientGroup.getCount(); %i++)
|
|
commandToClient(ClientGroup.getObject(%i), 'ndHandshake', $ND::Version);
|
|
}
|