Сортировка кланового склада
// ==UserScript==// @name GN_SortClanStorage// @namespace Gradient// @description Сортировка кланового склада// @include /^https{0,1}:\/\/(www\.heroeswm\.ru|178\.248\.235\.15)\/sklad_info\.php\?id=\d+&cat=[0-36]$/// @version 1.2.15// ==/UserScript=="use strict";//----------------------------------------------------------------------------//var script_name = 'GN_SortClanStorage'; // Enter your script name here//----------------------------------------------------------------------------//(function(){ try{ // wrapper start//----------------------------------------------------------------------------//// UnifiedLibrary 1.7.0 start//----------------------------------------------------------------------------////----------------------------------------------------------------------------//// SysUtils//----------------------------------------------------------------------------//var GN_SysUtils = new SysUtils(script_name);var SU = GN_SysUtils;//----------------------------------------------------------------------------//function SysUtils(name){ // wrapper start//----------------------------------------------------------------------------//this.show_error = function(error_string, use_alert){if(use_alert)alert(error_string);throw new Error(error_string);};if(arguments.length != 1)this.show_error('Wrong SysUtils arguments');if(!arguments[0])this.show_error('Empty SysUtils argument');//----------------------------------------------------------------------------//this.compare = function(a, b){return (a == b) ? 0 : (a > b ? 1 : -1);};//----------------------------------------------------------------------------//this.save_value = function(desc, value){var div = document.getElementById('GN_GM_Handler');div.setAttribute('desc', desc);div.setAttribute('value', value);div.setAttribute('operation', 'save');div.click();if(div.getAttribute('state') != 'complete')this.show_error('Ошибка при сохранении значения');};//----------------------------------------------------------------------------//this.load_value = function(value, def){var div = document.getElementById('GN_GM_Handler');div.setAttribute('desc', value);div.setAttribute('operation', 'load');div.click();if(div.getAttribute('state') != 'complete')this.show_error('Ошибка при загрузке значения');return (div.getAttribute('is_null') == 'true' ? def : div.getAttribute('value'));};//----------------------------------------------------------------------------//this.remove_value = function(value){var div = document.getElementById('GN_GM_Handler');div.setAttribute('desc', value);div.setAttribute('operation', 'remove');div.click();if(div.getAttribute('state') != 'complete')this.show_error('Ошибка при удалении значения');};//----------------------------------------------------------------------------//var current_id = null;this.current_id = function(){return current_id;};//----------------------------------------------------------------------------//function check_mandatory_scripts(alerter){var persistent_storage_sign = document.getElementById('GN_GM_Handler');var common_values_sign = document.getElementById('GN_CommonValuesSign');var alert_sign = document.getElementById('GN_AlertSign');if(!alert_sign){alert_sign = document.createElement('div');alert_sign.id = 'GN_AlertSign';alert_sign.setAttribute('alerted', 'false');document.body.appendChild(alert_sign);}var alerted = alert_sign.getAttribute('alerted') != 'false';if(!persistent_storage_sign){alert_sign.setAttribute('alerted', 'true');alerter('Скрипт ' + name + ' требует для своей работы скрипт управления данными (GN_PersistentStorage), который должен стоять первым в порядке выполнения скриптов.\n'+ 'Подробнее здесь: "https://gfork.dahi.icu/ru/scripts/14049-Как-устанавливать-скрипты-читать-здесь"', !alerted);}if(!common_values_sign){alert_sign.setAttribute('alerted', 'true');alerter('Скрипт ' + name + ' требует для своей работы скрипт, хранящий данные (GN_CommonValuesFiller), который должен стоять вторым в порядке выполнения скриптов.\n'+ 'Подробнее здесь: "https://greasyfork.org/ru/scripts/14049-Как-устанавливать-скрипты-читать-здесь"', !alerted);}}this.check_login = function(){var re = /.*?pl_id=(\d+)[^\d]*?/gmi;var matches = re.exec(document.cookie.toString());if(matches){current_id = +matches[1];check_mandatory_scripts(this.show_error);}};//----------------------------------------------------------------------------//this.show_el = function(el, visible){el.style.display = visible ? '' : 'none';};//----------------------------------------------------------------------------//this.reload_page = function(){document.location.href = document.location.href;};//----------------------------------------------------------------------------//function get_char(e){if(e.which && e.charCode){if(e.which < 32)return null;return String.fromCharCode(+e.which)}return null;}this.number_input = function(e){if(e.ctrlKey || e.altKey || e.metaKey)return false;var chr = get_char(e);return chr == null || (chr >= '0' && chr <= '9');};//----------------------------------------------------------------------------//this.check_login();//----------------------------------------------------------------------------//} // wrapper end//----------------------------------------------------------------------------//// CommonValues//----------------------------------------------------------------------------//var GN_CommonValues = new CommonValues();//----------------------------------------------------------------------------//function CommonValues(){ // wrapper start//----------------------------------------------------------------------------//// Artefacts//----------------------------------------------------------------------------//this.enum_as = { // sync?right_arm: 0,left_arm: 1,foots: 2,ring: 3,head: 4,neck: 5,rear: 6,body: 7,backpack: 8};this.artefacts = JSON.parse(SU.load_value('GN_CommonValues_Artefacts', '[]'));//----------------------------------------------------------------------------//this.get_artefact = function(id){for(var i = 0; i < this.artefacts.length; ++i)if(this.artefacts[i].id == id)return this.artefacts[i];return null;};//----------------------------------------------------------------------------//} // wrapper end//----------------------------------------------------------------------------//// UnifiedLibrary end//----------------------------------------------------------------------------//var show_error = SU.show_error;var load_value = SU.load_value;var save_value = SU.save_value;var remove_value = SU.remove_value;var compare = SU.compare;var show_el = SU.show_el;var reload_page = SU.reload_page;var number_input = SU.number_input;var current_user_id = SU.current_id();var CV = GN_CommonValues;var slot_type = CV.enum_as;slot_type.unknown = -1;slot_type.complect = -2;var options = [{ label: 'Показ только выбранных:', id: 'OnlyChoosedChb', title: 'Показывать только указанные внутри скрипта артефакты' },{ label: 'Сортировка по крафту/цене:', id: 'SortByPriceChb', title: 'Сортировать артефакты по цене, если цены одинаковы - по крафту' },//{ label: 'Сортировать по КПД:', id: 'SortByOptimumChb', title: 'Сортировка по КПД, где КПД - статы и крафт артефакта' }, //NB maybe later{ label: 'Одевать при аренде:', id: 'DressChb', title: 'Артефакты будут сразу одеваться на персонажа' },{ label: 'Перезагружать страницу:', id: 'ReloadChb', title: 'После каждой аренды страница будет перезагружаться' },{ label: 'Показ цен:', id: 'ShowPriceChb', title: 'Показ цен на кнопках' },{ label: 'Переаренда:', id: 'ReRentChb', title: 'Показ кнопки переаренды артефакта' }];//----------------------------------------------------------------------------//var settings = load_settings();var unknown_arts = [],right_arm_arts = [],left_arm_arts = [],head_arts = [],body_arts = [],foots_arts = [],neck_arts = [],rear_arts = [],ring_arts = [],backpack_arts = [],complect_arts = [];var choosed = ['cold_sword2014'];start_work();//----------------------------------------------------------------------------//function start_work(){var content = get_content_element();var childs = content.querySelectorAll('tr[bgcolor]');var elements = [];for(var i = 0; i < childs.length; ++i)elements.push(childs[i]);elements.forEach(function(current){insert_converted(convert_element(current));});while(content.firstChild)content.removeChild(content.firstChild);add_new_content(content);draw_header(content);draw_undress_button(content);if(settings.ReRentChb)add_rerent_links();}//----------------------------------------------------------------------------//function get_content_element(){var matches = /.*\?id=(\d+).*/.exec(document.location);var header_sign = document.querySelector('table > tbody > tr > td > a[href="sklad_info.php?id=' + matches[1] + '&cat=0"]');if(!header_sign)show_error('Не найден элемент для поиска заголовка таблицы');var prev_table = header_sign.parentNode.parentNode.parentNode.parentNode;if(!prev_table)show_error('Не найден заголовок таблицы');var parent_table = prev_table.nextSibling;if(!parent_table)show_error('Не найдена таблица с содержимым(1)');var content = parent_table.firstChild.querySelector('table > tbody');if(!content)show_error('Не найдена таблица с содержимым(2)');return content;}//----------------------------------------------------------------------------//function convert_element(element){//length = 20 - complects or 21 (artefact);var art_count = 21,complect_count = 20;var childs = element.childNodes;if(childs.length != art_count && childs.length != complect_count)return null;var is_c = childs.length == complect_count;var converted = {id: '',uids: [],name: '',craft: 0,price: 0,b_count: 0,lvl: 0,slot: slot_type.unknown,is_c: is_c,node: null,form: {depository: 0,sign: '',category: 0,inv_id: 0,set_id: 0}};var re = /uid=(\d+?)&/gmi;var matches = [];while(matches = re.exec(childs[0].innerHTML)){var uid = matches[1];if(converted.uids.indexOf(uid) == -1)converted.uids.push(uid);}if(!is_c){matches = /.+?art_info\.php\?id=([^&"]*)/.exec(childs[0].innerHTML);converted.id = matches[1];matches = /.+>'(.+)'.+/.exec(childs[1].innerHTML);converted.name = matches[1];matches = /.+\[(.+)]/.exec(converted.name);if(matches)converted.craft = craft_to_int(matches[1]);}matches = />(\d+)</.exec(childs[is_c ? 16 : 17].innerHTML);converted.price = +matches[1];matches = /.*(<option\svalue="(\d+)">).*/.exec(childs[is_c ? 17 : 18].innerHTML);converted.b_count = +matches[2];if(!is_c){var abstract = CV.get_artefact(converted.id);if(abstract){converted.lvl = abstract.lvl;converted.slot = abstract.slot;}}elseconverted.slot = slot_type.complect;converted.form.depository = childs[is_c ? 4 : 5].value;converted.form.sign = childs[is_c ? 6 : 7].value;converted.form.category = childs[is_c ? 8 : 9].value;converted.form.inv_id = childs[is_c ? 12 : 13].value;converted.form.set_id = childs[is_c ? 14 : 15].value;if(!converted.uids.length)converted.uids.push(converted.form.inv_id);convert_node(element, converted);return converted;}//----------------------------------------------------------------------------//function craft_to_int(mod){var count = 0;['A', 'D', 'E', 'F', 'I', 'N', 'W'].forEach(function(current){var r###lt = new RegExp(current + '(\\d+)').exec(mod);count += r###lt ? +r###lt[1] : 0;});return count;}//----------------------------------------------------------------------------//function convert_node(element, converted){//appendChild - live operationvar tr = document.createElement('tr');tr.appendChild(element.firstChild); //imgif(!converted.is_c)tr.appendChild(element.firstChild); //nametr.appendChild(element.childNodes[15]); //pricevar b_count = converted.b_count;tr.appendChild(b_count >= 1 ? create_button(1, converted) : create_empty_td());tr.appendChild(b_count >= 2 ? create_button(2, converted) : create_empty_td());tr.appendChild(b_count >= 3 ? create_button(3, converted) : create_empty_td());var select = create_select(b_count, converted.form.inv_id, converted.slot);tr.appendChild(select ? select : create_empty_td());tr.appendChild(select ? create_button(4, converted) : create_empty_td());converted.node = tr;}//----------------------------------------------------------------------------//function create_button(b_count, converted){var td = document.createElement('td');td.align = 'center';var button = document.createElement('button');button.textContent = 'На ' + b_count + (settings.ShowPriceChb ? '[' + Math.floor(+converted.price*1.01)*b_count + ']' : '');button.addEventListener('click', function(e){e.preventDefault();var form = converted.form;var url = 'sklad_info.php?id=' + form.depository +'&sign=' + form.sign +'&cat=' + form.category +'&action=rent&inv_id=' + form.inv_id +'&set_id=' + form.set_id +'&bcnt' + form.inv_id + '=' + b_count;settings.DressChb ? dress_artefact(url, converted) : send_async_get(url);});td.appendChild(button);return td;}//----------------------------------------------------------------------------//function create_empty_td(){var td = document.createElement('td');td.align = 'center';td.textContent = '';return td;}//----------------------------------------------------------------------------//function create_select(b_count, inv_id, slot){if(b_count < 4)return null;var td = document.createElement('td');td.align = 'center';var select = document.createElement('select');select.setAttribute('inv_id', inv_id);select.setAttribute('slot', slot);for(var i = 4, e = b_count; i <= e; ++i){var option = document.createElement('option');option.value = i;option.textContent = i;select.appendChild(option);}select.addEventListener('change', function(e){e.preventDefault();var select = e.target;var array_ = find_array_by_type(+select.getAttribute('slot'));if(!array_){alert('Внутренняя ошибка, обратитесь к разработчику [select handler1]');return;}var converted = find_converted(array_, +select.getAttribute('inv_id'));if(!converted){alert('Внутренняя ошибка, обратитесь к разработчику [select handler2]');return;}var btn = select.parentNode.nextSibling.firstChild;var new_btn = create_button(select.options[select.selectedIndex].value, converted);btn.parentNode.replaceChild(new_btn, btn);});td.appendChild(select);return td;}//----------------------------------------------------------------------------//function insert_converted(object_){if(!object_)return;if(object_.is_c)complect_arts.push(object_);elsefind_array_by_type(object_.slot).push(object_);}//----------------------------------------------------------------------------//function find_array_by_type(slot){switch(slot){case slot_type.unknown:return unknown_arts;case slot_type.complect:return complect_arts;case slot_type.right_arm:return right_arm_arts;case slot_type.ring:return ring_arts;case slot_type.head:return head_arts;case slot_type.body:return body_arts;case slot_type.foots:return foots_arts;case slot_type.neck:return neck_arts;case slot_type.rear:return rear_arts;case slot_type.left_arm:return left_arm_arts;case slot_type.backpack:return backpack_arts;}return null;}//----------------------------------------------------------------------------//function sort_all(){sort_artefacts(right_arm_arts);sort_artefacts(ring_arts);sort_artefacts(head_arts);sort_artefacts(body_arts);sort_artefacts(foots_arts);sort_artefacts(neck_arts);sort_artefacts(rear_arts);sort_artefacts(left_arm_arts);sort_artefacts(backpack_arts);sort_artefacts(unknown_arts);sort_artefacts(complect_arts);}//----------------------------------------------------------------------------//function sort_artefacts(array_){array_.sort(function(a, b){if(a.price == b.price){if(a.craft == b.craft){if(a.lvl == b.lvl)return compare(b.b_count, a.b_count);return compare(b.lvl, a.lvl);}return compare(b.craft, a.craft);}return compare(a.price, b.price);});}//----------------------------------------------------------------------------//function add_new_content(content){if(settings.SortByPriceChb)sort_all();var counter = { val: 0 };add_array_content(content, unknown_arts, slot_type.unknown, 'Неизвестные артефакты', counter);add_array_content(content, right_arm_arts, slot_type.right_arm, 'В правую руку', counter);add_array_content(content, ring_arts, slot_type.ring, 'Кольца', counter);add_array_content(content, head_arts, slot_type.head, 'Головные уборы', counter);add_array_content(content, body_arts, slot_type.body, 'Броня/одежда', counter);add_array_content(content, foots_arts, slot_type.foots, 'Обувь', counter);add_array_content(content, neck_arts, slot_type.neck, 'Ожерелья/амулеты', counter);add_array_content(content, rear_arts, slot_type.rear, 'Оружие на спину/плащи', counter);add_array_content(content, left_arm_arts, slot_type.left_arm, 'В левую руку', counter);add_array_content(content, backpack_arts, slot_type.backpack, 'В рюкзак', counter);add_array_content(content, complect_arts, slot_type.complect, 'Комплекты', counter);}//----------------------------------------------------------------------------//function add_array_content(content, array_, type, caption, counter){if(settings.OnlyChoosedChb){array_ = array_.filter(function(current){if(!current.id)return true;return choosed.indexOf(current.id) != -1;});}if(!array_.length)return;var e_color = '#eeeeee';var f_color = '#ffffff';//captionvar tr = document.createElement('tr');var td = document.createElement('td');td.class = 'wblight';td.align = 'center';var is_expanded = load_value(script_name + 'SlotExpand' + type, 'false') == 'true';var b = document.createElement('b');var a = document.createElement('a');a.textContent = caption + '[' + array_.length + ']';a.href = "#";a.style.textDecoration = 'none';a.setAttribute('expand', is_expanded ? 'true' : 'false');a.addEventListener('click', function(e){e.preventDefault();var expand = e.target.getAttribute('expand') == 'true';show_content_table(e.target, !expand);e.target.setAttribute('expand', expand ? 'false' : 'true');save_value(script_name + 'SlotExpand' + type, expand ? 'false' : 'true');});tr.appendChild(td);td.appendChild(b);b.appendChild(a);content.appendChild(tr);//end caption//contenttr = document.createElement('tr');td = document.createElement('td');var table = document.createElement('table');table.width="100%";for(var i = 0; i < array_.length; ++i){array_[i].node.bgColor = (counter.val % 2 === 0) ? e_color : f_color;table.appendChild(array_[i].node);++counter.val;}td.appendChild(table);tr.appendChild(td);content.appendChild(tr);//end contentshow_content_table(a, is_expanded);}//----------------------------------------------------------------------------//function show_content_table(element, visible){var tr = element.parentNode.parentNode.parentNode;var next = tr.nextSibling;show_el(next, visible);}//----------------------------------------------------------------------------//function find_converted(array_, inv_id){for(var i = 0, size = array_.length; i < size; ++i)if(inv_id == array_[i].form.inv_id)return array_[i];return null;}//----------------------------------------------------------------------------//function send_async_get(url){document.body.style.cursor = 'wait';var xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){document.body.style.cursor = 'default';if(settings.ReloadChb)reload_page();}};xhr.send(null);}//----------------------------------------------------------------------------//function dress_artefact(url, object_){document.body.style.cursor = 'wait';var counter = { counter: object_.uids.length };var xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200)send_dress_async_get('/inventory.php?dress=' + object_.uids[counter.counter - 1] + '&js=1&rand=' + Math.random()*1000000, object_, counter);};xhr.send(null);}//----------------------------------------------------------------------------//function send_dress_async_get(url, object_, counter){var xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){--counter.counter;if(counter.counter)send_dress_async_get('/inventory.php?dress=' + object_.uids[counter.counter - 1] + '&js=1&rand=' + Math.random()*1000000, object_, counter);else{document.body.style.cursor = 'default';if(settings.ReloadChb)reload_page();}}};xhr.send(null);}//----------------------------------------------------------------------------//function draw_header(parent){var header = document.createElement('tr');parent.insertBefore(header, parent.firstChild);var td = document.createElement('td');td.setAttribute('colspan', '6');header.appendChild(td);var table = document.createElement('table');table.style.width = '100%';td.appendChild(table);var tr = document.createElement('tr');table.appendChild(tr);var expander = document.createElement('td');expander.setAttribute('align', 'center');var is_expanded = load_value(script_name + 'SettingsExpand', 'false') == 'true';expander.setAttribute('expand', is_expanded ? 'true' : 'false');expander.textContent = is_expanded ? 'Скрыть настройки' : 'Показать настройки';expander.addEventListener('click', function(e){e.preventDefault();var expanded = expander.getAttribute('expand') == 'false';show_el(settings_table, expanded);save_value(script_name + 'SettingsExpand', expanded ? 'true' : 'false');expander.setAttribute('expand', expanded ? 'true' : 'false');expander.textContent = expanded ? 'Скрыть настройки' : 'Показать настройки';});tr.appendChild(expander);tr = document.createElement('tr');table.appendChild(tr);td = document.createElement('td');tr.appendChild(td);var settings_table = document.createElement('table');td.appendChild(settings_table);tr = document.createElement('tr');settings_table.appendChild(tr);td = document.createElement('td');tr.appendChild(td);table = document.createElement('table');td.appendChild(table);for(var i = 0; i < options.length; i += 4){tr = document.createElement('tr');table.appendChild(tr);for(var j = i; j < i + 4 && j < options.length; ++j){td = document.createElement('td');tr.appendChild(td);var text = document.createTextNode(options[j].label);td.appendChild(text);td = document.createElement('td');tr.appendChild(td);var chb = document.createElement('input');chb.type = 'checkbox';chb.title = options[j].title;chb.id = script_name + options[j].id;chb.checked = settings[options[j].id];td.appendChild(chb);}}tr = document.createElement('tr');settings_table.appendChild(tr);td = document.createElement('td');tr.appendChild(td);var text = document.createTextNode('UIN игрока: ');td.appendChild(text);var sign = document.createElement('input');sign.id = script_name + 'SignInput';sign.type = 'text';sign.style.width = 250;sign.value = settings.CurrentSignInput;sign.title = 'UIN игрока - уникальный номер вашего персонажа, состоит из 32 символов.\n' +'Необходим для формирования ссылки на переаренду артефакта.\n' +'Узнать его можно в магазине из ссылки "Купить" для любого артефакта.\n' +'Например: http://www.heroeswm.ru/shop.php?b=wood_sword&cat=weapon&sign=<...>, где оставшиеся символы - это нужный UIN';td.appendChild(sign);text = document.createTextNode(' Кол-во боев для переаренды: ');td.appendChild(text);var bcount = document.createElement('input');bcount.id = script_name + 'ReRentBattleCountInput';bcount.type = 'text';bcount.style.width = 30;bcount.value = settings.ReRentBattleCount;bcount.onkeypress = number_input;td.appendChild(bcount);tr = document.createElement('tr');settings_table.appendChild(tr);td = document.createElement('td');td.setAttribute('align', 'right');tr.appendChild(td);var saver = document.createElement('input');saver.type = 'button';saver.value = 'Применить';saver.addEventListener('click', function(e){e.preventDefault();save_settings();});td.appendChild(saver);show_el(settings_table, is_expanded);}//----------------------------------------------------------------------------//function draw_undress_button(content){var table = content.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.previousSibling;if(table.firstChild.childNodes.length < 4)return;var your_rent = table.firstChild.childNodes[2];var a = document.createElement('a');a.href = '';a.textContent = '(вернуть все)';your_rent.firstChild.appendChild(a);a.addEventListener('click', function(e){e.preventDefault();document.body.style.cursor = 'wait';var xhr = new XMLHttpRequest();xhr.open('GET', '/inventory.php?all_off=100', true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200)send_storage_async_get(document.location);};xhr.send(null);});}//----------------------------------------------------------------------------//function send_storage_async_get(url){var xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){var response = xhr.response;var re = /<a href="(inventory\.php\?art_return=.+?)">/gmi;var matches = [],links = [];while(matches = re.exec(response))links.push(matches[1]);var counter = { counter: links.length };if(counter.counter)send_return_async_get(links[counter.counter - 1], links, counter);}};xhr.send(null);}//----------------------------------------------------------------------------//function send_return_async_get(url, array_, counter){var xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){--counter.counter;if(counter.counter)send_return_async_get(array_[counter.counter - 1], array_, counter);else{document.body.style.cursor = 'default';if(settings.ReloadChb)reload_page();}}};xhr.send(null);}//----------------------------------------------------------------------------//function add_rerent_links(){if(!settings.CurrentSignInput){alert('Невозможно сформировать ссылки для переаренды, укажите UIN игрока');return;}var return_links = document.querySelectorAll('a[href*="inventory.php?art_return"]');var bcount = settings.ReRentBattleCount;var cases = [ 2, 0, 1, 1, 1, 2 ];var words = [ 'бой', 'боя', 'боев'];var bstr = words[ (bcount % 100 > 4 && bcount % 100 < 20) ? 2 : cases[ (bcount % 10 < 5) ? bcount % 10 : 5] ];for(var i = 0; i < return_links.length; ++i){var return_link = return_links[i].href;var rerent_obj = convert_into_rerent(return_link);var parent = return_links[i].parentNode;parent.appendChild(document.createElement('br'));var a = document.createElement('a');a.onclick = function(scope_return_link, scope_rerent_obj){return function() { rerent_artefact(scope_return_link, scope_rerent_obj); }}(return_link, rerent_obj);parent.appendChild(a);var font = document.createElement('font');font.style.fontSize = '9px';font.textContent = 'Переаренда на ' + bcount + ' ' + bstr;a.appendChild(font);}}//----------------------------------------------------------------------------//function convert_into_rerent(return_link){var re = /.+inventory\.php\?art_return=(\d+)&art=.+?&to=.+?&from_sklad=(\d+)&sklad_cat=([^&+])?&sklad_set=(\d+)/;var matches = re.exec(return_link);return {link:'sklad_info.php?id=' + matches[2] +'&sign=' + settings.CurrentSignInput +'&cat=' + matches[3] +'&action=rent&inv_id=' + matches[1] +'&set_id=' + matches[4] +'&bcnt' + matches[1] + '=' + settings.ReRentBattleCount,uid: matches[1]};}//----------------------------------------------------------------------------//function rerent_artefact(return_link, rerent_obj){document.body.style.cursor = 'wait';var xhr = new XMLHttpRequest();xhr.open('GET', return_link, true);xhr.overrideMimeType('text/plain; charset=windows-1251');xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){var obj = { uids: [rerent_obj.uid] };settings.DressChb ? dress_artefact(rerent_obj.link, obj) : send_async_get(rerent_obj.link);}};xhr.send(null);}//----------------------------------------------------------------------------//function load_settings(){var settings_ = load_value(script_name + 'Settings');if(settings_ == 'undefined'){ // error at 1.2.4 - 1.2.8remove_value(script_name + 'Settings');settings_ = null;}if(settings_){settings_ = JSON.parse(settings_);if(!settings_.CurrentUser){settings_.CurrentUser = current_user_id;settings_.CurrentSignInput = '';settings_.UINPairs = [ { id: current_user_id, uin: ''} ];settings_.ReRentBattleCount = 1;alert('В скрипте сортировки склада появился параметр "UIN игрока".\n' +'Если вы хотите использовать переаренду артефактов, необходимо указать его в настройках.\n' +'Подробнее во всплывающей подсказке поля ввода');save_value(script_name + 'Settings', JSON.stringify(settings_));}if(settings_.CurrentUser != current_user_id){var uin = get_uin(settings_, current_user_id);settings_.CurrentSignInput = uin;if(!uin)alert('В прошлый раз вы заходили другим персонажем, параметр "UIN игрока" для этого персонажа требуется ввести заново');}return settings_;}settings_ = {CurrentSignInput: '',CurrentUser: current_user_id,UINPairs: [ { id: current_user_id, uin: ''} ],ReRentBattleCount: 1};options.forEach(function(current){settings_[current.id] = false;});return settings_;}//----------------------------------------------------------------------------//function save_settings(){var errors = [];var sign = document.getElementById(script_name + 'SignInput').value;if(!sign.trim().length)errors.push('Не указан UIN игрока');var bcount = +document.getElementById(script_name + 'ReRentBattleCountInput').value;if(isNaN(bcount) || bcount < 1 || bcount > 20)errors.push('Количество боев для переаренды артефакта должно лежать между 1 и 20');if(errors.length){alert('Ошибки при сохранении:\n\n' + errors.join('\n'));return;}settings.CurrentSignInput = sign;settings.CurrentUser = current_user_id;settings.ReRentBattleCount = bcount;var uin = get_uin(settings, settings.CurrentUser);if(!uin)settings.UINPairs.push( { id: settings.CurrentUser, uin: settings.CurrentSignInput } );options.forEach(function(current){var chb = document.getElementById(script_name + current.id);settings[current.id] = chb.checked;});save_value(script_name + 'Settings', JSON.stringify(settings));reload_page();}//----------------------------------------------------------------------------//function get_uin(array_, id){var uin = '';array_.UINPairs.forEach(function(current){if(current.id == id)uin = current.uin;});return uin;}//----------------------------------------------------------------------------//} catch(e){alert('Ошибка в скрипте ' + script_name + ', обратитесь к разработчику:\n' + e);throw e;}}()); // wrapper end//----------------------------------------------------------------------------//