// ==UserScript==
// @name GN_TradeHelper
// @namespace Gradient
// @description Помощник для выставления лотов/скрытия ненужных
// @include /^https{0,1}:\/\/(www\.heroeswm\.ru|178\.248\.235\.15)\/auction_new_lot\.php/
// @version 1.0.6
// ==/UserScript==
"use strict";
//----------------------------------------------------------------------------//
var script_name = 'GN_TradeHelper'; // 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'));
};
//----------------------------------------------------------------------------//
var current_id = null;
//----------------------------------------------------------------------------//
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://greasyfork.org/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);
}
};
//----------------------------------------------------------------------------//
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
//----------------------------------------------------------------------------//
// market categories
this.enum_amc = { // sync?
no_sell: 0,
helm: 1,
necklace: 2,
cuirass: 3,
cloack: 4,
weapon: 5,
shield: 6,
boots: 7,
ring: 8,
other: 9,
thief: 10,
tactic: 11,
verb: 12,
medals: 13,
relict: 14,
backpack: 15
};
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;
};
//----------------------------------------------------------------------------//
// Basic resources
//----------------------------------------------------------------------------//
this.basic_resources = JSON.parse(SU.load_value('GN_CommonValues_BasicResources', '[]'));
//----------------------------------------------------------------------------//
this.get_basic_resource = function(id){
for(var i = 0; i < this.basic_resources.length; ++i)
if(this.basic_resources[i].id == id)
return this.basic_resources[i];
return null;
};
//----------------------------------------------------------------------------//
} // wrapper end
//----------------------------------------------------------------------------//
// UnifiedLibrary end
//----------------------------------------------------------------------------//
var show_error = SU.show_error;
var compare = SU.compare;
var load_value = SU.load_value;
var save_value = SU.save_value;
var number_input = SU.number_input;
var CV = GN_CommonValues;
var enum_amc = CV.enum_amc;
var enum_ot = {
any: 0,
res: 1,
el : 2,
art: 3,
cert: 4,
part: 5
};
var all_options = []; // { value, name, hide, type }
var showed_lots = 4;
var settings = load_settings();
//----------------------------------------------------------------------------//
start_work();
//----------------------------------------------------------------------------//
function start_work(){
if(document.querySelector('select[name="itemfake"]')) // confirm trade mode
return;
var header_sign = document.querySelector('select[name="item"]');
if(!header_sign)
show_error('Не найден элемент привязки для таблицы настроек');
fill_all_options(header_sign);
draw_elements(header_sign);
extend_standard_elements(header_sign);
set_settings();
set_options();
}
//----------------------------------------------------------------------------//
function fill_all_options(select){
for(var i = 0; i < select.options.length; ++i){
var option = select.options[i];
if(!option.value)
continue;
var el_re = /^EL_\d+$/;
var art_re = /^.+@\d+$/;
var cert_re = /^CERT_(\d+)$/;
var part_re = /^ARTPART_(.+)$/;
if(el_re.exec(option.value)){
all_options.push({value: option.value, name: option.textContent, hide: false, type: enum_ot.el});
continue;
}
if(art_re.exec(option.value)){
all_options.push({value: option.value, name: option.textContent, hide: false, type: enum_ot.art});
continue;
}
var matches = [];
if(matches = cert_re.exec(option.value)){
var append_zero = +matches[1] < 10;
all_options.push({value: append_zero ? 'CERT_0' + matches[1] : option.value, name: option.textContent, hide: false, type: enum_ot.cert});
continue;
}
var basic_resource = CV.get_basic_resource(option.value);
if(basic_resource){
all_options.push({value: option.value, name: option.textContent, hide: false, type: enum_ot.res});
continue;
}
if(part_re.exec(option.value)){
all_options.push({value: option.value, name: option.textContent, hide: false, type: enum_ot.part});
continue;
}
all_options.push({value: option.value, name: option.textContent, hide: false, type: enum_ot.any});
}
}
//----------------------------------------------------------------------------//
function set_options(){
var sell_select = document.querySelector('select[name="item"]');
var hide_select = document.getElementById(script_name + 'HidedSelect');
var sell_options = all_options.filter(function(current){
return !current.hide;
});
var hide_options = all_options.filter(function(current){
return current.hide;
});
insert_options(sell_select, sell_options);
insert_options(hide_select, hide_options);
set_selected_item(sell_select);
set_selected_item(hide_select);
}
//----------------------------------------------------------------------------//
function insert_options(select, options){
while(select.firstChild)
select.removeChild(select.firstChild);
select.appendChild(new_option({ value: '', name: ''}));
if(!options.length)
return;
if(options.length == 1){
select.appendChild(new_option(options[0]));
return;
}
for(var i = 0; i < options.length - 1; ++i){
var curr_option = options[i];
var next_option = options[i + 1];
select.appendChild(new_option(curr_option));
if(curr_option.type != next_option.type)
select.appendChild(line_option());
if(i + 1 == options.length - 1)
select.appendChild(new_option(next_option));
}
}
//----------------------------------------------------------------------------//
function new_option(obj){
var option = document.createElement('option');
option.setAttribute('value', obj.value);
option.appendChild(document.createTextNode(obj.name));
return option;
}
//----------------------------------------------------------------------------//
function line_option(){
var line_option = document.createElement('option');
line_option.setAttribute('value', '');
line_option.appendChild(document.createTextNode('----------'));
return line_option;
}
//----------------------------------------------------------------------------//
function get_option(value){
for(var i = 0; i < all_options.length; ++i)
if(all_options[i].value == value)
return all_options[i];
return null;
}
//----------------------------------------------------------------------------//
function set_selected_item(select){
if(select.options.length)
select.selectedIndex = 0;
remove_table();
var count = document.querySelector('input[name="count"]');
count.value = 0;
var price_el = document.querySelector('input[name="price"]');
price_el.value = 0;
}
//----------------------------------------------------------------------------//
function draw_elements(prev_sibling){
var parent = prev_sibling.parentNode;
var select = document.createElement('select');
select.id = script_name + 'HidedSelect';
select.style.width = prev_sibling.offsetWidth;
select.title = 'Скрытые с продажи лоты, выбираются через ПКМ в выставляемых на продажу';
parent.insertBefore(document.createElement('br'), select.nextSibling);
parent.insertBefore(select, prev_sibling.nextSibling);
parent.insertBefore(document.createElement('br'), prev_sibling.nextSibling);
parent.insertBefore(document.createTextNode('Скрыть с продажи:'), prev_sibling.nextSibling);
parent.insertBefore(document.createElement('br'), prev_sibling.nextSibling);
parent.insertBefore(document.createElement('br'), prev_sibling.nextSibling);
var chb = document.createElement('input');
chb.type = 'checkbox';
chb.title = 'Режим показа/скрытия артефактов';
chb.id = script_name + 'SHChb';
var label = document.createElement('label');
label.for = script_name + 'SHChb';
label.appendChild(document.createTextNode('Включить режим показа/скрытия артефактов'));
parent.insertBefore(document.createElement('br'), parent.firstChild);
parent.insertBefore(document.createElement('br'), parent.firstChild);
parent.insertBefore(label, parent.firstChild);
parent.insertBefore(chb, parent.firstChild);
}
//----------------------------------------------------------------------------//
function extend_standard_elements(anchor){
var parent = anchor.parentNode;
var inputs = parent.querySelectorAll('input');
for(var i = 0; i < inputs.length; ++i){
inputs[i].onkeypress = number_input;
inputs[i].addEventListener('change', function(e){
save_settings();
});
}
var select = document.querySelector('select[name="atype"]');
select.addEventListener('change', function(e){
save_settings();
});
select = document.querySelector('select[name="duration"]');
select.addEventListener('change', function(e){
save_settings();
});
anchor.addEventListener('change', function(e){
e.preventDefault();
var option = this.options[this.selectedIndex];
var change_visibility_checked = document.getElementById(script_name + 'SHChb').checked;
if(change_visibility_checked){
change_option_visibility(option);
return false;
}
else
return buy_by_option(option);
});
select = document.getElementById(script_name + 'HidedSelect');
select.addEventListener('change', function(e){
e.preventDefault();
var option = this.options[this.selectedIndex];
var change_visibility_checked = document.getElementById(script_name + 'SHChb').checked;
if(change_visibility_checked){
change_option_visibility(option);
return false;
}
else
return buy_by_option(option);
});
}
//----------------------------------------------------------------------------//
function change_option_visibility(option){
if(!option.value)
return;
var obj = get_option(option.value);
var now_hided = obj.hide;
if(!confirm('Переместить "' + option.textContent + '" в ' + (now_hided ? 'показываемые' : 'скрываемые') + '?'))
return;
obj.hide = !obj.hide;
set_options();
if(now_hided)
settings.hided = settings.hided.filter(value => value !== option.value);
save_settings();
}
//----------------------------------------------------------------------------//
function buy_by_option(option){
if(!option.value)
return false;
var obj = get_option(option.value);
if(obj.type == enum_ot.any){
alert('Неизвестный тип предмета, обратитесь к разработчику');
return false;
}
if(obj.type == enum_ot.art && !CV.get_artefact(/([^@]+)@\d+/.exec(obj.value)[1])){
alert('Неизвестный артефакт, обратитесь к разработчику');
return false;
}
get_obj_prices(obj);
return true;
}
//----------------------------------------------------------------------------//
function get_obj_prices(obj){
document.body.style.cursor = 'wait';
var xhr = new XMLHttpRequest();
xhr.open('GET', compose_url(obj), true);
xhr.overrideMimeType('text/plain; charset=windows-1251');
xhr.onreadystatechange = function(){
if(xhr.readyState == 4)
if(xhr.status == 200){
var objects = parse_page(xhr.response, obj.type);
if(!objects.length)
remove_table();
else{
draw_lot_table(objects, obj.type);
set_form_values(objects, obj);
}
document.body.style.cursor = 'default';
}
};
xhr.send(null);
}
//----------------------------------------------------------------------------//
function compose_url(obj){
var base = '/auction.php?';
switch(obj.type){
case enum_ot.res:
return base + compose_res_url(obj);
case enum_ot.el:
return base + compose_el_url(obj);
case enum_ot.art:
return base + compose_art_url(obj);
case enum_ot.cert:
return base + compose_cert_url(obj);
case enum_ot.part:
return base + compose_part_url(obj);
}
throw 'Logic error: compose_url switch';
}
//----------------------------------------------------------------------------//
function compose_res_url(obj){
var basic_resource = CV.get_basic_resource(obj.value);
return ['cat=res', 'sort=4', 'type=' + basic_resource.market_type, 'art_type=', 'sbn=1', 'sau=0', 'snew=0'].join('&');
}
//----------------------------------------------------------------------------//
function compose_el_url(obj){
var elements_accordance = {
'EL_42' : 'abrasive',
'EL_43' : 'snake_poison',
'EL_46' : 'tiger_tusk',
'EL_44' : 'ice_crystal',
'EL_45' : 'moon_stone',
'EL_40' : 'fire_crystal',
'EL_37' : 'meteorit',
'EL_41' : 'witch_flower',
'EL_39' : 'wind_flower',
'EL_78' : 'fern_flower',
'EL_38' : 'badgrib'
};
return ['cat=elements', 'sort=4', 'type=0', 'art_type=' + elements_accordance[obj.value], 'sbn=1', 'sau=0', 'snew=0'].join('&');
}
//----------------------------------------------------------------------------//
function compose_art_url(obj){
var cat = function(id){
switch(id){
case enum_amc.helm: return 'helm';
case enum_amc.necklace: return 'necklace';
case enum_amc.cuirass: return 'cuirass';
case enum_amc.cloack: return 'cloack';
case enum_amc.weapon: return 'weapon';
case enum_amc.shield: return 'shield';
case enum_amc.boots: return 'boots';
case enum_amc.ring: return 'ring';
case enum_amc.other: return 'other';
case enum_amc.thief: return 'thief';
case enum_amc.tactic: return 'tactic';
case enum_amc.verb: return 'verb';
case enum_amc.medals: return 'medals';
case enum_amc.relict: return 'relict';
case enum_amc.backpack: return 'backpack';
}
throw 'Logic error: compose_art_url switch';
};
var artefact = CV.get_artefact(/([^@]+)@\d+/.exec(obj.value)[1]);
return ['cat=' + cat(artefact.market_cat), 'sort=4', 'type=0', 'art_type=' + artefact.id, 'sbn=1', 'sau=0', 'snew=0'].join('&');
}
//----------------------------------------------------------------------------//
function compose_cert_url(obj){
var num = /CERT_(\d+)/.exec(obj.value)[1];
return ['cat=cert', 'sort=4', 'type=0', 'art_type=sec_' + num, 'sbn=1', 'sau=0', 'snew=0'].join('&');
}
//----------------------------------------------------------------------------//
function compose_part_url(obj){
var part = /ARTPART_(.+)/.exec(obj.value)[1];
return ['cat=part', 'sort=4', 'type=0', 'art_type=part_' + part, 'sbn=1', 'sau=0', 'snew=0'].join('&');
}
//----------------------------------------------------------------------------//
function parse_page(response, type){
var objects = get_raw_objects(response);
switch(type){
case enum_ot.res:
return get_res_el_objects(objects);
case enum_ot.el:
return get_res_el_objects(objects);
case enum_ot.art:
return get_art_objects(objects);
case enum_ot.cert:
return get_cert_part_objects(objects);
case enum_ot.part:
return get_cert_part_objects(objects);
}
throw 'Logic error: parse_page switch';
}
//----------------------------------------------------------------------------//
function get_raw_objects(response){
var objects = [];
response = response.replace(/(\n(\r)?)/g, ' ');
if(response.indexOf('Купить сразу!') == -1)
{
alert('Таких предметов на рынке не найдено');
return objects;
}
var re = /.*?(<tr bgcolor='#(?:ffffff|eeeeee)' class=wb>.+?gold.png.+?show_js_button.+?<\/tr>).*?/gmi;
var matches = [];
while(matches = re.exec(response))
objects.push(matches[1]);
return objects;
}
//----------------------------------------------------------------------------//
function get_res_el_objects(objects){
var cleared_objects = [];
objects.forEach(function(current){
var re = /.+?auction_lot_protocol\.php\?id=\d+.+?(\d+) шт\.<\/b>.+?Купить сразу!.+?<.+?gold\.png.+?<td>([0-9,]+?)<\/td>.+?<td>([^>]+?мин. )<\/td>.+?pl_info\.php\?id=(\d+).><b>(.+?)<\/b>.+?onclick="javascript: show_js_button.+?return false;".+?/gmi;
var matches = re.exec(current);
if(matches)
cleared_objects.push({
count: +matches[1],
price: +(matches[2].replace(/,/g, '')),
duration: matches[3],
pl_id: +matches[4],
nick: matches[5]
});
});
return cleared_objects;
}
//----------------------------------------------------------------------------//
function get_art_objects(objects){
var cleared_objects = [];
objects.forEach(function(current){
var re = /.+?auction_lot_protocol\.php\?id=\d+.+?<br>Прочность: (?:<font color=red><b>(\d+?)<\/b><\/font>|(\d+?))\/(?:<font color=red><b>(\d+?)<\/b><\/font>|(\d+?))<.+?Купить сразу!.+?<.+?gold\.png.+?<td>([0-9,]+?)<\/td>.+?<td>([^>]+?мин. )<\/td>.+?pl_info\.php\?id=(\d+).><b>(.+?)<\/b>.+?onclick="javascript: show_js_button.+?return false;".+?/gmi;
var matches = re.exec(current);
if(matches){
var obj = {
cur_dur: matches[1] ? +matches[1] : +matches[2],
max_dur: matches[3] ? +matches[3] : +matches[4],
price: +(matches[5].replace(/,/g, '')),
duration: matches[6],
pl_id: +matches[7],
nick: matches[8]
};
obj.ppb = +(obj.price/obj.cur_dur).toFixed(2);
var count_re = /.*<b>(\d+?) шт.<\/b>/i;
var c_matches = count_re.exec(current);
obj.count = c_matches ? +c_matches[1] : 1;
cleared_objects.push(obj);
}
});
return cleared_objects;
}
//----------------------------------------------------------------------------//
function get_cert_part_objects(objects){
var cleared_objects = [];
objects.forEach(function(current){
var re = /.+?auction_lot_protocol\.php\?id=\d+.+?Купить сразу!.+?<.+?gold\.png.+?<td>([0-9,]+?)<\/td>.+?<td>([^>]+?мин. )<\/td>.+?pl_info\.php\?id=(\d+).><b>(.+?)<\/b>.+?onclick="javascript: show_js_button.+?return false;".+?/gmi;
var matches = re.exec(current);
if(matches)
cleared_objects.push({
price: +(matches[1].replace(/,/g, '')),
duration: matches[2],
pl_id: +matches[3],
nick: matches[4]
});
});
return cleared_objects;
}
//----------------------------------------------------------------------------//
function draw_lot_table(objects, type){
switch(type){
case enum_ot.res:
case enum_ot.el:
draw_res_el_lot_table(objects);
break;
case enum_ot.art:
draw_art_lot_table(objects);
break;
case enum_ot.cert:
case enum_ot.part:
draw_cert_part_lot_table(objects);
break;
default:
throw 'Logic error: draw_lot_table switch';
}
}
//----------------------------------------------------------------------------//
function draw_res_el_lot_table(objects){
objects.sort(function(a, b){
return compare(a.price, b.price);
});
var table = recreate_table('4');
draw_row(table, ['Цена', 'Кол-во', 'Время', 'Владелец']);
for(var i = 0; i < objects.length && i < showed_lots; ++i)
draw_row(table, [objects[i].price, objects[i].count, objects[i].duration, objects[i].nick]);
var parent = table.parentNode;
parent.insertBefore(document.createElement('br'), parent.firstChild);
parent.insertBefore(table, parent.firstChild);
}
//----------------------------------------------------------------------------//
function draw_art_lot_table(objects){
objects.sort(function(a, b){
return compare(a.ppb, b.ppb);
});
var select = document.querySelector('select[name="item"]');
var option = select.options[select.selectedIndex];
var artefact = CV.get_artefact(/(.+)@.+/.exec(option.value)[1]);
var has_ppb = !!artefact.ppb;
var table = recreate_table('6');
draw_row(table, ['Стоимость за бой', 'Цена', 'Прочность', 'Кол-во', 'Время', 'Владелец']);
for(var i = 0; i < objects.length && i < showed_lots; ++i){
var ppb = has_ppb ? objects[i].ppb + '[' + (objects[i].ppb - artefact.ppb).toFixed(2) + ']' : objects[i].ppb;
draw_row(table, [ppb, objects[i].price, objects[i].cur_dur + '/' + objects[i].max_dur, objects[i].count, objects[i].duration, objects[i].nick]);
}
var parent = table.parentNode;
parent.insertBefore(document.createElement('br'), parent.firstChild);
parent.insertBefore(table, parent.firstChild);
}
//----------------------------------------------------------------------------//
function draw_cert_part_lot_table(objects){
objects.sort(function(a, b){
return compare(a.price, b.price);
});
var table = recreate_table('3');
draw_row(table, ['Цена', 'Время', 'Владелец']);
for(var i = 0; i < objects.length && i < showed_lots; ++i)
draw_row(table, [objects[i].price, objects[i].duration, objects[i].nick]);
var parent = table.parentNode;
parent.insertBefore(document.createElement('br'), parent.firstChild);
parent.insertBefore(table, parent.firstChild);
}
//----------------------------------------------------------------------------//
function recreate_table(colspan){
remove_table();
return create_table(colspan);
}
//----------------------------------------------------------------------------//
function remove_table(){
var parent = document.querySelector('form.global_input');
var table = document.getElementById(script_name + 'LotTable');
if(table){
parent.removeChild(table);
parent.removeChild(parent.firstChild);
}
}
//----------------------------------------------------------------------------//
function create_table(colspan){
var parent = document.querySelector('form.global_input');
var table = document.createElement('table');
table.id = script_name + 'LotTable';
parent.appendChild(table);
var tr = document.createElement('tr');
table.appendChild(tr);
var td = document.createElement('td');
td.setAttribute('colspan', colspan);
td.appendChild(document.createElement('b'));
td.firstChild.appendChild(document.createTextNode('Лоты конкурентов:'));
tr.appendChild(td);
return table;
}
//----------------------------------------------------------------------------//
function draw_row(table, args){
var tr = document.createElement('tr');
table.appendChild(tr);
for(var i = 0; i < args.length; ++i){
var td = document.createElement('td');
td.setAttribute('align', 'center');
td.textContent = args[i];
tr.appendChild(td);
}
}
//----------------------------------------------------------------------------//
function set_form_values(objects, obj){
if(obj.type == enum_ot.any)
throw 'Logic error: set_form_values';
if(!objects.length)
throw 'Logic error: set_form_values (length)';
var count = document.querySelector('input[name="count"]');
count.value = 1;
if(settings.last_type == 1){ // sell now
var max_count = 1;
var matches = /.+\((\d+)\)/.exec(obj.name);
if(matches)
max_count = +matches[1];
switch(obj.type){
case enum_ot.res:
count.value = max_count <= 50 ? max_count : 50;
break;
case enum_ot.el:
count.value = max_count <= 10 ? max_count : 10;
break;
case enum_ot.art:
count.value = max_count <= 3 ? max_count : 3;
break;
}
}
var price_el = document.querySelector('input[name="price"]');
switch(obj.type){
case enum_ot.res:
case enum_ot.el:
case enum_ot.cert:
case enum_ot.part:
price_el.value = objects[0].price - 2;
break;
case enum_ot.art:
var select = document.querySelector('select[name="item"]');
var option = select.options[select.selectedIndex];
var cur_toughness = +/(\d+)\/\d+/.exec(option.textContent)[1];
price_el.value = (cur_toughness*(objects[0].ppb - 0.01)).toFixed() - 2;
break;
}
document.querySelector('input[id="first_submit_button"]').removeAttribute('disabled');
}
//----------------------------------------------------------------------------//
function load_settings(){
var settings_ = load_value(script_name + 'Settings');
if(settings_)
return JSON.parse(settings_);
settings_ = {
last_type: 1,
last_time: 1,
hided: []
};
return settings_;
}
//----------------------------------------------------------------------------//
function save_settings(){
var select = document.querySelector('select[name="atype"]');
settings.last_type = +select.options[select.selectedIndex].value;
select = document.querySelector('select[name="duration"]');
settings.last_time = +select.options[select.selectedIndex].value;
var hided = all_options.filter(function(current){
return current.hide;
});
hided.forEach(function(current){
settings.hided.push(current.value);
});
settings.hided.filter((value, index, self) => self.indexOf(value) === index);
save_value(script_name + 'Settings', JSON.stringify(settings));
}
//----------------------------------------------------------------------------//
function set_settings(){
var el = document.querySelector('select[name="atype"]');
for(var i = 0; i < el.options.length; ++i)
if(el.options[i].value == settings.last_type){
el.options[i].selected = true;
break;
}
el = document.querySelector('select[name="duration"]');
for(var i = 0; i < el.options.length; ++i)
if(el.options[i].value == settings.last_time){
el.options[i].selected = true;
break;
}
all_options.forEach(function(current){
for(var i = 0; i < settings.hided.length; ++i)
if(current.value == settings.hided[i]){
current.hide = true;
break;
}
});
}
//----------------------------------------------------------------------------//
} catch(e){
alert('Ошибка в скрипте ' + script_name + ', обратитесь к разработчику:\n' + e);
throw e;
}}()); // wrapper end
//----------------------------------------------------------------------------//