Skip to content

OfflinePlayers Service

Ken Anderson edited this page May 5, 2013 · 7 revisions

This service exposes the offline player information (available only in versions 1.1.0 and greater). Note that a player must have logged into the server at least once before he or she will appear as an offline player.

Details

These are the properties that are available from this service:

  • Total number of offline players.
  • Offline player's name.
  • Offline player's last online time formatted.
  • Offline player's last online time in number of milliseconds.
  • Offline player's operator status.
  • Offline Player's status if he or she has played on the server.

API

You can query the offline players service by invoking the service name offlinePlayers.

Example

The following is an example of how to invoke the service.

var ws = new WebSocket('ws://192.168.1.1:25564' );
ws.onopen = function() {
	ws.send('offlinePlayers');
};

JSON Response Format

The following is the format of the response generated by the service.

{
	OfflinePlayers: 
	[
		{
			name(0): string,
			isOnline(0): boolean,
			lastPlayed(0): string,
			lastPlayedTimeSpan(0): long,
			isOperator(0): boolean,
			hasPlayed(0): boolean
		},
		
		...
		
		{
			name(n): string,
			isOnline(n): boolean,
			lastPlayed(n): string,
			lastPlayedTimeSpan(n): long,
			isOperator(n): boolean,
			hasPlayed(n): boolean
		},
	],
	Status: string
}

Example of a JSON response

The following is an example of the JSON data that is returned by this service.

{
	"OfflinePlayers": 
	[
        {
            "name": "caffeinatedrat",
            "isOnline": true,
            "lastPlayed": "Now",
            "lastPlayedTimeSpan": 0,
            "isOperator": true,
			"hasPlayed": true
        },
        {
            "name": "euske",
            "isOnline": false,
            "lastPlayed": "149d 38h 19m 57s",
            "lastPlayedTimeSpan": 12881997635,
            "isOperator": false,
			"hasPlayed": true
        },
        {
            "name": "kshade",
            "isOnline": false,
            "lastPlayed": "Never",
            "lastPlayedTimeSpan": 0,
            "isOperator": true,
			"hasPlayed": false
        }		
	],
	"Status": "SUCCESSFUL"
}

Example of how to parse the response

The following is an example of how to use JQuery to parse the JSON data.

var json = jQuery.parseJSON(msg.data);
			
if(json.Status == "SUCCESSFUL") {
	$('#totalOfflinePlayers').text(json.OfflinePlayers.length);
	
	if(json.OfflinePlayers.length > 0) {
		$('#offlinePlayers').text('');
		for(i = 0; i < json.OfflinePlayers.length; i++) {
			var onlineTime = 'now';
			if(!json.OfflinePlayers[i].isOnline) {
				onlineTime = 'Last Played: ' + json.OfflinePlayers[i].lastPlayed + '' 	
			}
		
			//Open the player element.
			var element = '<li><div class="playerElement">';

			//Show the mod icon if the user is a moderator.
			if(json.OfflinePlayers[i].isOperator) {
				element += '<div class="inline"><div title="Moderator" class="tiles modTile"></div></div>';
			}
			else {
				element += '<div class="inline"><div title="Player" class="tiles playerTile"></div></div>';
			}
			
			//Show the player's face.
			element += '<div id="test" class="inline"><canvas class="playersFace" id="canWH' + json.OfflinePlayers[i].name + '"></canvas></div>';		
			
			//Show the player's name with profile link.
			element += '<div class="inline">';
			
			element += '<strong><a class="playerName" href="#" data-name="';
			element += json.OfflinePlayers[i].name;
			element += '" data-environment="';
			element += "normal"
			element += '" click="javascript:return false;">';
			element += json.OfflinePlayers[i].name;
			element += '</a></strong>';
			
			element += '</div>';
			
			//Show the amount of time it has been since the player was online.
			element += '<div class="inline">(' + onlineTime + ')</div>';
			
			//Close the player element.
			element += '</div></li>';
			
			$('#offlinePlayers').append(element);
			
			//Resize the player's face.
			$('#offlinePlayers').append('<script>drawPlayersFace("canWH' + json.OfflinePlayers[i].name + '", "' + json.OfflinePlayers[i].name + '");</script>');						
		}
		//END OF for(i = 0; i < json.OfflinePlayers.length; i++) {...
	}
	else  {
		$('#OfflinePlayers').text('').append('<li>No offline player info available.</li>');
	}
	//END OF if(json.OfflinePlayers.length > 0) {...
}
//END OF if(json.Status == "SUCCESSFUL") {...