NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Bot for Forge of Empires // @namespace https://foe.botsoft.org // @description Bot for Forge of Empires // @author green elephant // @updateUrl https://foe.botsoft.org/foe.user.js // @version 1.1.8.4 // @license MIT // @run-at document-end // @include /^(http|https)://[a-z]+[0-9]+\.forgeofempires\.com/game/.*/ // @connect /^[a-z]+[0-9]+\.forgeofempires\.com/ // @connect innogamescdn.com // @connect foe.botsoft.org // @grant GM.xmlHttpRequest // ==/UserScript== (function(){ var hash = Math.random().toString(36).substr(2), eventRequest = hash + "request", eventResponse = hash + "response"; var init = { url : "https://foe.botsoft.org/ajax/", method: "POST", data : JSON.stringify({ method: "bot:hash", data : {hash: hash} }), onload: function(response){ [ "//foe.botsoft.org/bot.js" ].forEach(function(src){ var script = document.createElement("script"); script.type = "text/javascript"; script.src = src; document.getElementsByTagName("head")[0].appendChild(script); }); } } GM.xmlHttpRequest(init); document.addEventListener(eventRequest, function(e){ var params = (typeof e.detail=="object") ? e.detail : JSON.parse(e.detail); params.onload = function(response){ var out = { id : params.id, status: response.status, text : response.responseText }; var cloned = (typeof cloneInto=="function") ? cloneInto(out, document) : out; var e2 = new CustomEvent(eventResponse, {detail: cloned, bubblies: true}); document.dispatchEvent(e2); }; if (typeof e.detail.headers=="object") params.headers = e.detail.headers; GM.xmlHttpRequest(params); }); }());