Agar Server Selector

Modifies the agar.io server select page to be useful.

  1. // ==UserScript==
  2. // @name Agar Server Selector
  3. // @namespace
  4. // @version 1.0
  5. // @description Modifies the agar.io server select page to be useful.
  6. // @author Ununoctium118
  7. // @match http://agar.io
  8. // @grant none
  9. // ==/UserScript==
  10. // Clear the dialog box
  11. var selector = $('#region');
  12. // Load the server list
  13. var selected;
  14. var regionTable = {
  15. 'US-Atlanta': 'US East',
  16. 'US-Fremont': 'US West',
  17. 'EU-London': 'Europe',
  18. 'JP-Tokyo': 'Japan',
  19. };
  20. $.getJSON('http://m.agar.io/fullInfo', function(serverList) {
  21. var output = [];
  22. serverList.servers.sort(function (a, b) {
  23. var x = regionTable[a.region], y = regionTable[b.region];
  24. return ((x < y) ? - 1 : ((x > y) ? 1 : 0));
  25. });
  26. $.each(serverList.servers, function(index, server) {
  27. output.push('<option value="' + server.ip + '">' + regionTable[server.region] + ' (' + server.ip + ') (' + server.numPlayers + ' players)</option>');
  28. });
  29. selector.html(output.join(''));
  30. });
  31. // Add our extra onchangelistener
  32. selector.on('change', function() {
  33. selected = selector.val() + ':443';
  34. });
  35. // Intercept requests for m.agar.io and instead return our data.
  36. var realAjax = $.ajax;
  37. $.ajax = function() {
  38. if(arguments[0] == 'http://m.agar.io/') {
  39. var callback = arguments[1].success;
  40. // The selector callback probably hasn't run yet.
  41. // Really should use a promise or something here.
  42. setTimeout(function() {
  43. callback(selected);
  44. }, 10);
  45. } else {
  46. // Use irl ajax
  47. return realAjax.apply(this, arguments);
  48. }
  49. };