// ==UserScript== // @include http://nl*.tribalwars.nl/game.php* // @include http://nl*.tribalwars.nl/public_report/* // @include http://zz*.tribalwars.net/game.php* // @include http://zz*.tribalwars.net/public_report/* // @name TBR map // @version 3.2.25 // @namespace http://tbrmap.twscripters.wyk.nl/ // @description TBR Map v3.2.25 voor Tribalwars.nl / beta.tribalwars.net // ==/UserScript== /** * * TBR Map V3 Copyright (C) 2008, 2009, 2010 Mark Vink (info@markvink.nl), Joost Klootwijk (jk@twscripters.wyk.nl) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. (See http://www.gnu.org/licenses/gpl.txt) * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * v3.1.3 Opera version * v3.1.4 First public working v6.0 script * v3.1.4.1 Modified for tribalwars v6.2, replacing xml+GM_set for game_data * Firefox fox: use of innerHTML & unsageWindow.game_data * v3.1.4.2 bugfix: legenda & vacation mode, preparation for localStorage * v3.1.4.9 Added publicreports beta * v3.1.4.9.2 Various bugfixes, initial lang support, error msg on map. * Eenheden onbekend gefixed * v3.1.4.9.3 First testing on beta, english version (v6.3) * v3.1.4.9.4 New layout for village_info (notes inline) * v3.1.4.9.5 New xmlRequest implementation * v3.1.5 More state changes and synchronized Opera/Firefox version * v3.1.5.1 Corrected for tw subversion 8575 6.3 new event in map) * v3.1.5.2 Updated security check of onmessage function, fixing firefox & Opera v9 * v3.1.5.3 No tbr without tribe, no troopinfo for own villages (cleanup) * v3.1.5.4 Added error for offline server, error placed on map * v3.1.5.5 Removed notes from all villages * v3.2.0.0 debug xhr reinstated * v3.2.0.1 Update to API towards server, support for farmrule worlds, initial gathering of settings, * bug fix for public reports, compatible trim for Opera <10.50, support for seconds in reports * changed state to text (due to problems with some quickbar scripts) * legend colors corrected * v3.2.1.1 first support tw v7.0 * v3.2.1.2 compatible with sangu package, debugged for v7.0 * v3.2.1.3 injected version * v3.2.1.4 more strict date selector, fixes some ad-related bugs * v3.2.1.5 fixed map for x<100 * v3.2.1.6 support for map-dragging, fully ajax style * v3.2.1.7 map fixed for tw v7.1, * integrated notes into tw's premium village notes **PREMIUM ONLY** * BB-codes for notes (no TW specific BB yet) * Map enhancements: age of report, villagecount of troops, new reporthighlight * Map info is cached local * v3.2.1.8 Tijdelijke fix door Tuam (Spelversie 8.0) * v3.2.1.9 grote kaart schuift weer mee met de kleine kaart (Tuam) * v3.2.20 Bug fix voor tw-update van 29 oktober 2012 waardoor het opslaan niet meer werkte * Bugfix voor opslag resources * Debug mode voor Ongeldige Datum (o.a. als de berichtenhernoemer wordt gebruikt) * v3.2.21 update jquery-jsonp van v2.1.4 naar 2.5.0 (ivm mogelijke fix 'error' bij opslaan) * debugmode voor ongeldige datum uitgebreid * v3.2.22 hersteld dorpsinfo voor non-premium spelers en voor spelers zonder stam * v3.2.23 pass debug mode and clearcookie request to server * v3.2.24 farmworld settings for nlc1 * v3.2.25 fix opslaan en verwijderen notities: melding 'Er is geen wereld aangegeven' */ if (location.href.match(/^http:\/\/((nl|zz|en).*\.tribalwars\.(nl|net)\/(game.php|public_report).*)/)) { (function (f) { var d = document, s = d.createElement('script'); s.setAttribute('type', 'application/javascript'); s.textContent = '(' + f.toString() + ')()'; (d.head || d.documentElement || d.body).appendChild(s); s.parentNode.removeChild(s) })(function () { /* default configuration, can be changed through UI. Clear storage to restore. */ var settings = { "active": "07", // mask: 1=report, 2=villageinfo, 4=map, 8=mapdetail (unused) "kleuren": ["#9900FF", "#FFFFFF", "#00FF00", "#FF7F50", "#FF0000", "#000000"], // (unused) "legenda": [5, 40000, 100000, 200000, 400000, 9999999], "legenda_farmrule": [0, 25, 50, 75, 100, 9999999], // percentage * max * 30; for farmrule worlds (unused) "useStorage": true, // for local caching, do not use yet "showAge": true, // show age of report with the thickness of the border "maxAge": 30, // show reports older than maxAge using thin lines (days) "showRecent": 0.2, // highlight the most recent reports (days) "showCount": true, // show number of troops in village, divided by 20000 "showType": false, // show type of troops in village "TypeList": 'AVZSE', // Letter to be used for, in order: {Attack, Defense, Heavy Cavalery, Scouts, Noble} "showNotes": true // show notes on map }, /* would be stored in cookie/localStorage */ config = { "opslaan": "http://tbrmap.twmerge.nl/opslaan.php?", "note": "http://tbrmap.twmerge.nl/note.php?", "info": "http://tbrmap.twmerge.nl/info.php?", "map": "http://tbrmap.twmerge.nl/map.php?", "version": "3.2.25", "farmrule": { "nl5": 1200, "nl10": 1800, "nl16": 2500, "nl24": 2500 } // used to calculate default legend }, nohide = false, debug = true, txtDB = { "nl": { /* textmessages, should be translated */ "err_no_attack": "Geen aanvals rapport", "err_unknown_def": "Verdediger onbekend, mogelijk een conflict met een ander script (18)?", /* NL specific, 18 refers to an allowed nl script */ "err_dump_own": "Dump op eigen dorp", "err_my_village": "Aanval op eigen dorp", "err_unknown_units": "Geen eenheden bekend!", "err_noinfo": "TBRmap info niet beschikbaar", "msg_prev_stored": "Al opgeslagen: %s op %s", "info_saving": "opslaan...", "err_no_gamedata": "No game_data available", "err_nosave": "Er is een fout opgetreden, niet opgeslagen", "err_offline": "TBR Map is tijdelijk niet beschikbaar", "btn_edit": "Bewerken", "btn_save": "Opslaan", "btn_del": "Verwijderen", /* debug messages */ "msg_settings": "Taal: %s\nStam: %s", "msg_load": "TBRMap: ophalen...", "msg_save": "Opslaan: ", "report_save": "Rapport opslaan: Reportid=%s\tDatum=%s\tOnderwerp=%s\nAanvaller=%s\tVerdediger=%s\tDoel=%s\tAantal=%s\tVerliezen=%s", "report_extras": " extras : Grondstoffen=%s\tBuit=%s\tToestemming=%s\nGebouwen=%s", "hd_troopinfo": "Info over troepen", /* Fields / regular expressions, must be adjusted to the server language */ "attrep_re": /( valt .* aan| verovert )/, "subject": "Onderwerp", "send_at": "Verzonden", "attacker": "Aanvaller:", "defender": "Verdediger:", "target": "Doel:", "troops": "Aantal:", "losses": "Verliezen:", "village_re": /^(Dorp)/, "resources": "grondstoffen", "buildings": "Gebouwen", "haul": "Buit", "loyalty": "Toestemming", "player_map_re": /(.+)\s\([0-9.]+ punten\)/, "tribe_map_re": /(.+)\s\([0-9.]+ punten\)/, "expired": "Sessie afgelopen", /* TBRmap server responses, used to translate by client */ "msg_nonote": "Geen notitie.", "msg_no_troops_intel": "Geen info bekend.", "msg_save_ok": "Opgeslagen!", /* TBRmap related regular expressions - do not translate (see above for translation) */ "nonote_re": /Geen notitie./, "noinfo_re": /Geen info bekend./, "saveok_re": /Opgeslagen!/, "offline_re": /(De website is tijdelijk offline|Not Found)/, "error_re": /(Teveel requests|De website is tijdelijk offline|Uw huidige TBR Map versie.^versie!|timeout|error)/, /* accepted standard errormessages */ /* misc */ "lang": "nederlands" }, "zz": { /* textmessages */ "err_no_attack": "Not a report of an attack", "err_unknown_def": "No defender found, possibly due to a conflicting script", /* NL specific, 18 refers to an allowed nl script */ "err_dump_own": "Dump of troops at your own village", "err_my_village": "Attack at your own village", "err_unknown_units": "Unknown defending units!", "err_noinfo": "TBRmap information not available", "msg_prev_stored": "Already stored: %s at %s", "info_saving": "saving...", "err_no_gamedata": "No game_data available", "err_nosave": "An error occured, report is not saved", "err_offline": "TBR Map is temporarily unavailable", "btn_edit": "Edit", "btn_save": "Save", "btn_del": "Remove", /* debug messages */ "msg_settings": "Language: %s\nStam: %s", "msg_load": "TBRMap: Loading...", "msg_save": "Saving: ", "report_save": "Srrt: Reportid=%s\tDatum=%s\tOnderwerp=%s\nAanvaller=%s\tVerdediger=%s\tDoel=%s\tAantal=%s\tVerliezen=%s", "report_extras": " extras : Grondstoffen=%s\tBuit=%s\tToestemming=%s\nGebouwen=%s", "hd_troopinfo": "Intelligence on troops", /* Fields / regular expressions */ "attrep_re": /( attacks | conquers )/, "subject": "Subject", "send_at": "Sent", "attacker": "Attacker:", "defender": "Defender:", "target": "Destination:", "troops": "Quantity:", "losses": "Losses:", "village_re": /^(Village:)/, "resources": "resources", "buildings": "Buildings", "haul": "Haul", "loyalty": "Loyalty", "player_map_re": /(.+)\s\([0-9.]+ Points\)/, "tribe_map_re": /(.+)\s\([0-9.]+ Points\)/, "expired": "Session expired", /* TBRmap server responses, used to translate by client */ "msg_nonote": "No note.", "msg_no_troops_intel": "No troops known", "msg_save_ok": "Stored!", /* TBRmap related regular expressions - do not translate (see above for translation) */ "nonote_re": /Geen notitie./, "noinfo_re": /Geen info bekend./, "saveok_re": /Opgeslagen!/, "offline_re": /(De website is tijdelijk offline|Not Found)/, "error_re": /(Teveel requests|De website is tijdelijk offline|Uw huidige TBR Map versie.^versie!)/, /* accepted standard errormessages */ /* misc */ "lang": "english - beta" } }; txtDB.en = txtDB.zz; // copy from zz txtDB.en.lang = "english"; // jquery.jsonp 2.4.0 (2012-08-21) (c) 2012 Julian Aubourg // https://github.com/jaubourg/jquery-jsonp (function(e){function t(){}function n(e){C=[e]}function r(e,t,n){return e&&e.apply(t.context||t,n)}function i(e){return/\?/.test(e)?"&":"?"}function O(c){function Y(e){if(!(z++)){W();j&&(T[I]={s:[e]});D&&(e=D.apply(c,[e]));r(O,c,[e,b,c]);r(_,c,[c,b])}}function Z(e){if(!(z++)){W();j&&e!=w&&(T[I]=e);r(M,c,[c,e]);r(_,c,[c,e])}}c=e.extend({},k,c);var O=c.success,M=c.error,_=c.complete,D=c.dataFilter,P=c.callbackParameter,H=c.callback,B=c.cache,j=c.pageCache,F=c.charset,I=c.url,q=c.data,R=c.timeout,U,z=0,W=t,X,V,J,K,Q,G;S&&S(function(e){e.done(O).fail(M);O=e.resolve;M=e.reject}).promise(c);c.abort=function(){!(z++)&&W()};if(r(c.beforeSend,c,[c])===!1||z){return c}I=I||u;q=q?typeof q=="string"?q:e.param(q,c.traditional):u;I+=q?i(I)+q:u;P&&(I+=i(I)+encodeURIComponent(P)+"=?");!B&&!j&&(I+=i(I)+"_"+(new Date).getTime()+"=");I=I.replace(/=\?(&|$)/,"="+H+"$1");if(j&&(U=T[I])){U.s?Y(U.s[0]):Z(U)}else{E[H]=n;K=e(y)[0];K.id=l+N++;if(F){K[o]=F}L&&L.version()<11.6?(Q=e(y)[0]).text="document.getElementById('"+K.id+"')."+p+"()":K[s]=s;if(A){K.htmlFor=K.id;K.event=h}K[d]=K[p]=K[v]=function(e){if(!K[m]||!/i/.test(K[m])){try{K[h]&&K[h]()}catch(t){}e=C;C=0;e?Y(e[0]):Z(a)}};K.src=I;W=function(e){G&&clearTimeout(G);K[v]=K[d]=K[p]=null;x[g](K);Q&&x[g](Q)};x[f](K,J=x.firstChild);Q&&x[f](Q,J);G=R>0&&setTimeout(function(){Z(w)},R)}return c}var s="async",o="charset",u="",a="error",f="insertBefore",l="_jqjsp",c="on",h=c+"click",p=c+a,d=c+"load",v=c+"readystatechange",m="readyState",g="removeChild",y="