Agar.io Connector

Working agar.io server connector (tested 20.06.2015)

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Agar.io Connector
// @namespace    http://your.homepage/
// @version      0.1
// @description  Working agar.io server connector (tested 20.06.2015)
// @author       shardragon
// @match        http://agar.io/
// @grant        none
// ==/UserScript==

var _XMLHttpRequest = window.XMLHttpRequest;
window.XMLHttpRequest = function(params)
{
    var request = new _XMLHttpRequest(params);
    request.open = function(method, url, async, user, password)
    {
        console.log(url);
        
        if(url === "http://m.agar.io/") {
            request.addEventListener("load", function()
            {
                document.getElementById("serverInput").value = request.responseText.split("\n")[0];
            });
        }
        
        return _XMLHttpRequest.prototype.open.call(this, method, url, async, password);
    }
    return request;
}


window._connectToRequest = null;
window.connectToTries   = 100;
window.connectToAddress = function(address, count)
{
    count = (typeof(count) === "number") ? count : 0;
    
    // Stop previous connection attempt
    if(window._connectToRequest) {
       window._connectToRequest.abort();
    }
    
    if(count > window.connectToTries) {
        $("#connectResponse").text("Exceeded number of tries to retrieve server token");
        return;
    } else {
        $("#connectResponse").text("Searching for server (try " + count + "/" + window.connectToTries + ")" + " ...");
    }
    
    var request = new _XMLHttpRequest();
    request.open("POST", "http://m.agar.io/", true);
    request.addEventListener("load", function()
    {
        window._connectToRequest = null;
        
        var response = request.responseText.split("\n");
        
        var response_address = response[0];
        var response_token   = response[1];
        
        if(response_address === address) {
            connect("ws://" + response_address, response_token);
            
            $("#connectResponse").text("Connection to server established");
        } else {
            connectToAddress(address, (count + 1));
        }
    });
    
    window._connectToRequest = request;
    
    request.send($("#region").val() + $("#gamemode").val());
}

$(document).ready(function() {
    var new_entry = $("#region");
    if (new_entry.length) {
        $("<div class=\"form-group\"><span id=\"connectResponse\"></span></div>").insertAfter("#helloDialog > form > div:nth-child(3)");
        $("<div class=\"form-group\"><input id=\"serverInput\" class=\"form-control\" placeholder=\"255.255.255.255:443\" maxlength=\"20\"></input></div>").insertAfter($("#connectResponse").parent());
        $("<div class=\"form-group\"><button disabled type=\"button\" id=\"connectBtn\" class=\"btn btn-warning btn-needs-server\" onclick=\"connectToAddress($('#serverInput').val());\" style=\"width: 100%\">Connect</button></div>").insertAfter($("#serverInput").parent());
    }
});