-
Notifications
You must be signed in to change notification settings - Fork 4
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.
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.
You can query the offline players service by invoking the service name offlinePlayers.
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'); };
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 }
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" }
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") {...