NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name TO War plugin // @include https://war.tankionline.com/* // @version 0.5 // @description No description // @author Mishin870 // @match https://tampermonkey.net/installed.php?version=4.7&ext=dhdg&updated=true // @require http://code.jquery.com/jquery-1.12.4.min.js // @license MIT // ==/UserScript== var zoneDefs = { "ru": ["Оса","Трибьют","Соликамск","Колхоз","Холм","Подземка","РедАлерт","СтолицаМедведей","Дюссельдорф","Монте-Карло","Перекрёсток","Пустыня","Бойня","Форест","Остров","Молотов","Осада","Перевал","Гравити","Полигон","Кураж","Арена","Атра","Рио","Парма","Новэл","Пинг-Понг","Фабрика","Год2042","Барда","Берлин","Зона","Долина","Волна","Палуба9","Бобруйск","Жаворонки","Магистраль","Лагерь","Иран","Кунгур","Гардер","Мосты","Эспланада","Эдинбург","Дуалити","СтолицаЛьвов","Губаха","Брест","Кёльн","Простор","СтолицаВолков","Ферма","Плато","Дуэль","Бумбокс","Каньон","Ущелье","ФортНокс","Стадион","Станция","Магадан","Тишина","Сандал","Шоссе","Серпухов","Чернобыль","Будущее","Песочница"], "en": ["Osa","Tribute","Solikamsk","Kolhoz","Hill","Subway","RedAlert","BearsCapital","Dusseldorf","MonteCarlo","Cross","Desert","Massacre","Forest","Island","Molotov","Siege","Pass","Gravity","Polygon","Courage","Arena","Atra","Rio","Parma","Novel","Ping-Pong","Factory","Year2042","Barda","Berlin","Zone","Valley","Wave","Deck-9","Bobruisk","Skylark","Magistral","Camp","Iran","Kungur","Garder","Bridges","Esplanade","Edinburgh","Duality","LionsCapital","Gubakha","Brest","Cologne","Scope","WolvesCapital","Farm","Highland","Duel","Boombox","Canyon","Rift","FortKnox","Stadium","Station","Magadan","Silence","Sandal","Highways","Serpuhov","Chernobyl","Future","Sandbox"], "de": ["Osa","Tribut","Solikamsk","Kolchose","Erdhügel","U-Bahn","RedAlert","HauptstadtderBären","Düsseldorf","Monte-Carlo","Kreuzung","Wüste","Massaker","Forest","Insel","Molotow","Belagerung","Pass","Gravity","Schießplatz","Courage","Arena","Atra","Rio","Parma","Novel","Ping-Pong","Fabrik","Jahr2042","Barda","Berlin","Zone","Doline","Welle","Deck9","Bobruisk","Lerchen","Magistrale","Lager","Iran","Kungur","Garder","Brücken","Esplanade","Edinburgh","Duality","HauptstadtderLöwen","Gubacha","Brest","Köln","Weite","HauptstadtderWölfe","Bauernhof","Hochebene","Duell","Boombox","Canyon","Kluft","FortKnox","Stadion","Station","Magadan","Stille","Sandal","Highway","Serpuchow","Tschernobyl","Zukunft","Sandkasten"], "pl": ["Osa","Trybut","Solikamsk","Kołchoz","Wzgórze","Metro","RedAlert","StolicaNiedźwiedzi","Düsseldorf","MonteCarlo","Krzyż","Pustynia","Rzeź","Las","Wyspa","Mołotow","Oblężenie","Przełęcz","Grawitacja","Poligon","Odwaga","Arena","Atra","Rio","Parma","Novel","Ping-Pong","Fabryka","Rok2042","Barda","Berlin","Strefa","Dolina","Fala","Pokład9","Bobruisk","Skylark","Magistrala","Obóz","Iran","Kungur","Garder","Mosty","Esplanada","Edynburg","Dwoistość","StolicaLwów","Gubakha","Brest","Kolonia","Scope","StolicaWilków","Farma","Góry","Pojedynek","Boombox","Kanion","Wyłom","FortKnox","Stadion","Stacja","Magadan","Cisza","Sandał","Autostrady","Serpuhov","Czarnobyl","Przyszłość","Sandbox"], }; var mapName = { "ru": ["Карта", "Карта (будущее)"], "en": ["Map", "Map (future)"], "de": ["Karte", "Karte (zukunft)"], "pl": ["Mapa", "Mapa (przyszłość)"], }; var futureButtonName = { "ru": ["В будущее", "Назад"], "en": ["To the future", "Back"], "de": ["In der Zukunft", "Zurück"], "pl": ["W przyszłości", "Wróć"], }; var oldZones = {}; var newZones = {}; var oldPoints = {}; var newPoints = {}; var wolvesPoints = null; var bearsPoints = null; var lionsPoints = null; var future = false; var initialized = false; var lang = "ru"; function toggle() { if (!initialized) { init(); return; } future = !future; var zones = future ? newZones : oldZones; $(".map-territory").each(function() { var obj = $(this); var name = obj.text().replace(/\s/g, ''); obj.removeClass("bears"); obj.removeClass("lions"); obj.removeClass("wolves"); if (zones[name] == 0) { obj.addClass("bears"); } else if (zones[name] == 1) { obj.addClass("lions"); } else if (zones[name] == 2) { obj.addClass("wolves"); } }); $(".screen-switcher > .button-tab.active").html(future ? mapName[lang][1] : mapName[lang][0]); $(".screen-map").css("background-image", future ? "none" : "url(/assets/images/bg_map.jpg)"); $(".screen-map").css("background-color", future ? "#000000" : "#63635b"); var points = future ? newPoints : oldPoints; $(".faction-points > .faction.wolves").parent().find("span").html(points["wolves"] + '<span class="max"> / 300'); $(".faction-points > .faction.bears").parent().find("span").html(points["bears"] + '<span class="max"> / 300'); $(".faction-points > .faction.lions").parent().find("span").html(points["lions"] + '<span class="max"> / 300'); $("#futureButton").html(futureButtonName[lang][future ? 1 : 0]); } $('body').on('click', '.button-tab', function (){ if ($(this).is(':last-child') && !$(this).hasClass("active")) { initialized = false; preInit(); } }); if (getLastUrlPart() == "map") { $(document).ready(preInit); } function getLastUrlPart() { var url = window.location.href; var parts = url.split("/"); return (url.lastIndexOf('/') !== url.length - 1 ? parts[parts.length - 1] : parts[parts.length - 2]); } function realPreInit() { if (getLastUrlPart() != "map") { return; } $("nav > .screen-switcher").prepend("<a id='futureButton' class='button-tab' href='javascript:void(0)'></a>"); $("#futureButton").html(futureButtonName[lang][0]); $("#futureButton").click(toggle); } function preInit() { if ($('nav > .screen-switcher').is(':visible')) { setTimeout(realPreInit, 3000); } else { setTimeout(preInit, 50); } } function init() { lang = $("html").attr("lang"); $.ajax({ 'method': 'GET', 'url': 'https://war.tankionline.com/api/data', 'success': function(data) { var json = JSON.parse(data).response; var zones = {}; var attacks = [json.attackFractionA, json.attackFractionB, json.attackFractionC]; var defends = [json.defendFractionA, json.defendFractionB, json.defendFractionC]; var i; for (i = 0; i < attacks.length; i++) { Object.keys(attacks[i]).forEach(function(key) { if (!(key in zones)) { var obj = [0, 0, 0]; zones[key] = obj; } zones[key][i] += attacks[i][key].countPoints; }); } for (i = 0; i < defends.length; i++) { Object.keys(defends[i]).forEach(function(key) { if (!(key in zones)) { var obj = [0, 0, 0]; zones[key] = obj; } zones[key][i] += defends[i][key].countPoints; }); } wolvesPoints = $(".faction-points > .faction.wolves").parent().find("span"); bearsPoints = $(".faction-points > .faction.bears").parent().find("span"); lionsPoints = $(".faction-points > .faction.lions").parent().find("span"); oldPoints["wolves"] = parseInt(wolvesPoints.html().split('<span class="max">')[0]); oldPoints["bears"] = parseInt(bearsPoints.html().split('<span class="max">')[0]); oldPoints["lions"] = parseInt(lionsPoints.html().split('<span class="max">')[0]); newPoints["wolves"] = 0; newPoints["bears"] = 0; newPoints["lions"] = 0; console.log(wolvesPoints.html().split('<span class="max">')); $(".map-territory").each(function() { var obj = $(this); var name = obj.text().replace(/\s/g, ''); if (zoneDefs[lang].indexOf(name) == -1) { alert("Зона не найдена: " + name); } var level = obj.hasClass("level-1") ? 1 : ( obj.hasClass("level-2") ? 2 : ( obj.hasClass("level-3") ? 3 : -1 ) ); if (level == -1) { alert("Неизвестный уровень зоны у: " + name); } var zonePoints = 0; if (level == 1) { zonePoints = 1; } else if (level == 2) { zonePoints = 3; } else if (level == 3) { zonePoints = 5; } var index = zoneDefs[lang].indexOf(name); var points = zones[index + 1]; if (obj.hasClass("lions")) { oldZones[name] = 1; newPoints["lions"] += zonePoints; } else if (obj.hasClass("bears")) { oldZones[name] = 0; newPoints["bears"] += zonePoints; } else if (obj.hasClass("wolves")) { oldZones[name] = 2; newPoints["wolves"] += zonePoints; } if (points[0] > points[1]) { if (points[0] > points[2]) { newZones[name] = 0; } else { newZones[name] = 2; } } else { if (points[1] > points[2]) { newZones[name] = 1; } else { newZones[name] = 2; } } }); newPoints["bears"] += oldPoints["bears"]; newPoints["lions"] += oldPoints["lions"]; newPoints["wolves"] += oldPoints["wolves"]; initialized = true; toggle(); } }); }