您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Поиск и установка на работу с любой страницы игры
当前为
- //
- // ==UserScript==
- // @name hwm_work_find
- // @author Pahan https://greasyfork.org/uk/users/18377-pahan
- // @namespace hwm_pahan
- // @description Поиск и установка на работу с любой страницы игры
- // @homepage https://greasyfork.org/uk/scripts/13911-hwm-work-find
- // @icon http://dcdn.heroeswm.ru/avatars/30/nc-5/30547.gif
- // @version 2.00
- // @encoding utf-8
- // @include http://www.heroeswm.ru/*
- // @include http://qrator.heroeswm.ru/*
- // @include http://178.248.235.15/*
- // @include http://www.lordswm.com/*
- // @exclude */rightcol.php*
- // @exclude */ch_box.php*
- // @exclude */chat*
- // @exclude */ticker.html*
- // @exclude */frames*
- // @exclude */brd.php*
- // @grant GM_deleteValue
- // @grant GM_getValue
- // @grant GM_listValues
- // @grant GM_setValue
- // @grant GM_addStyle
- // @grant GM_log
- // @grant GM_openInTab
- // ==/UserScript==
- var version = '1.53';
- var str_url = 'https://greasyfork.org/uk/scripts/13911-hwm-work-find';
- var str_script_name = 'Поиск и установка ГР';
- var str_url_aut = '/sms-create.php?mailto=Pahan&subject=Скрипт: '+str_script_name+' v'+version+'. Найдена ошибка:';
- if (typeof GM_deleteValue != 'function') {
- this.GM_getValue=function (key,def) {return localStorage[key] || def;};
- this.GM_setValue=function (key,value) {return localStorage[key]=value;};
- this.GM_deleteValue=function (key) {return delete localStorage[key];};
- this.GM_addStyle=function (key) {
- var style = document.createElement('style');
- style.textContent = key;
- document.querySelector("head").appendChild(style);
- }
- }
- if (typeof GM_listValues != 'function') {
- this.GM_listValues=function () {
- var values = [];
- for (var i=0; i<localStorage.length; i++) {
- values.push(localStorage.key(i));
- }
- return values;
- }
- }
- function addEvent(elem, evType, fn) {
- // elem["on" + evType] = fn;
- if (elem.addEventListener) {
- elem.addEventListener(evType, fn, false);
- }
- else if (elem.attachEvent) {
- elem.attachEvent("on" + evType, fn);
- }
- else {
- elem["on" + evType] = fn;
- }
- }
- function $(id) { return document.querySelector(id); }
- function URLAttrValueGet(attr_name, aurl)
- {
- attr_name = attr_name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
- var regexS = "[\\?&]" + attr_name + "=([^&#]*)";
- var regex = new RegExp( regexS );
- var results = regex.exec( aurl );
- if( results == null )
- return "";
- else
- return results[1];
- }
- function Ajax(AMethod, AURL, AParams, ACallBackFunc)
- {
- var LRequest = new XMLHttpRequest();
- LRequest.open(AMethod, AURL, true);
- LRequest.overrideMimeType('text/html; charset=windows-1251');
- LRequest.send(AParams);
- LRequest.onreadystatechange = function()
- {
- if (LRequest.readyState == 4)
- {
- ACallBackFunc(LRequest.responseText);
- }
- };
- }
- function Trim(AText)
- {
- return AText.replace(/^\s+|\s+$|^( )+|( )+$/g, '');
- }
- function DeleteCRLF(AText)
- {
- return AText.replace(/[\n\r]/g, ' ').replace(/\s{2,}/g, ' ');
- }
- //-----------------------------------
- // cX_Y координаты по карте
- var Pahan_locX =
- {
- c50_50: 1, //Empire Capital
- c51_50: 2, //East River
- c50_49: 3, //Tiger's Lake
- c51_49: 4, //Rogue's Wood
- c50_51: 5, //Wolf's Dale
- c50_48: 6, //Peaceful Camp
- c49_51: 7, //Lizard's Lowland
- c49_50: 8, //Green Wood
- c49_48: 9, //Eagle's Nest //Inferno portal 2
- c50_52: 10, //Portal Ruins //Inferno portal 1
- c51_51: 11, //Dragon's Caves
- c49_49: 12, //Shining Spring
- c48_49: 13, //Sunny City
- c52_50: 14, //Magma Mines
- c52_49: 15, //Bear' Mountain
- c52_48: 16, //Fairy Trees
- c53_50: 17, //Harbour City
- c53_49: 18, //Mythril Coast //Inferno portal 3
- c51_52: 19, //Great Wall
- c51_53: 20, //Titans' Valley
- c52_53: 21, //Fishing Village
- c52_54: 22, //Kingdom Castle
- c48_48: 23, //Ungovernable Steppe
- c51_48: 24, //Crystal Garden
- c49_52: 25, //Empty //East Island (Old Location)
- c49_52: 26, //The Wilderness
- c48_50: 27 //Sublime Arbor
- }
- // Массив локаций
- var Pahan_locArr = new Array(
- // 0i 1x 2y 3r 4ne 5nr
- [] ,
- [ 1 , 50 , 50 , 1 , 'Empire Capital' , 'Столица Империи' ] ,
- [ 2 , 51 , 50 , 1 , 'East River' , 'Восточная Река' ] ,
- [ 3 , 50 , 49 , 1 , 'Tiger\'s Lake' , 'Тигриное Озеро' ] ,
- [ 4 , 51 , 49 , 1 , 'Rogue\'s Wood' , 'Лес Разбойников' ] ,
- [ 5 , 50 , 51 , 1 , 'Wolf\'s Dale' , 'Долина Волков' ] ,
- [ 6 , 50 , 48 , 1 , 'Peaceful Camp' , 'Мирный Лагерь' ] ,
- [ 7 , 49 , 51 , 1 , 'Lizard\'s Lowland' , 'Равнина Ящеров' ] ,
- [ 8 , 49 , 50 , 1 , 'Green Wood' , 'Зелёный Лес' ] ,
- [ 9 , 49 , 48 , 1 , 'Eagle\'s Nest' , 'Орлиное Гнездо' ] ,
- [ 10 , 50 , 52 , 1 , 'Portal\'s ruins' , 'Руины Портала' ] ,
- [ 11 , 51 , 51 , 1 , 'Dragon\'s Caves' , 'Пещеры Драконов' ] ,
- [ 12 , 49 , 49 , 1 , 'Shining Spring' , 'Сияющий Родник' ] ,
- [ 13 , 48 , 49 , 1 , 'Sunny City' , 'Солнечный Город' ] ,
- [ 14 , 52 , 50 , 1 , 'Magma Mines' , 'Магма Шахты' ] ,
- [ 15 , 52 , 49 , 1 , 'Bear\' Mountain' , 'Медвежья Гора' ] ,
- [ 16 , 52 , 48 , 1 , 'Fairy Trees' , 'Магический Лес' ] ,
- [ 17 , 53 , 50 , 1 , 'Harbour City ' , 'Портовый Город' ] ,
- [ 18 , 53 , 49 , 1 , 'Mythril Coast' , 'Мифриловый Берег' ] ,
- [ 19 , 51 , 52 , 1 , 'Great Wall' , 'Великая Стена' ] ,
- [ 20 , 51 , 53 , 1 , 'Titans\' Valley' , 'Равнина Титанов' ] ,
- [ 21 , 52 , 53 , 1 , 'Fishing Village' , 'Рыбачье Село' ] ,
- [ 22 , 52 , 54 , 1 , 'Kingdom Castle' , 'Замок Королевства' ] ,
- [ 23 , 48 , 48 , 1 , 'Ungovernable Steppe' , 'Непокорная Степь' ] ,
- [ 24 , 51 , 48 , 1 , 'Crystal Garden' , 'Кристальный Сад' ] ,
- [] ,
- [ 26 , 49 , 52 , 1 , 'The Wilderness' , 'Дикие Земли' ] ,
- [ 27 , 48 , 50 , 1 , 'Sublime Arbor' , 'Великое Древо' ]
- )
- // location error
- // сначала путь берёт диагональ, а потом катет
- var Pahan_locP =
- {
- l1_14: 11 ,
- l1_17: 11 ,
- l1_26: 5 ,
- l1_27: 8 ,
- l2_14: 15 ,
- l2_17: 15 ,
- l2_18: 15 ,
- l2_21: 11 ,
- l2_22: 11 ,
- l2_27: 1 ,
- l3_14: 4 ,
- l3_16: 4 ,
- l3_17: 4 ,
- l3_26: 1 ,
- l3_27: 12 ,
- l4_14: 15 ,
- l4_16: 15 ,
- l4_17: 15 ,
- l4_21: 2 ,
- l4_22: 2 ,
- l4_26: 2 ,
- l4_27: 3 ,
- l5_14: 11 ,
- l5_17: 11 ,
- l5_19: 10 ,
- l5_20: 10 ,
- l5_21: 10 ,
- l5_22: 10 ,
- l5_27: 8 ,
- l6_2: 4 ,
- l6_16: 4 ,
- l6_26: 3 ,
- l6_27: 12 ,
- l7_13: 8 ,
- l7_14: 5 ,
- l7_17: 5 ,
- l7_23: 8 ,
- l7_26: 5 ,
- l8_14: 5 ,
- l8_17: 5 ,
- l8_26: 5 ,
- l9_16: 3 ,
- l9_26: 3 ,
- l10_27: 5 ,
- l11_3: 2 ,
- l11_6: 2 ,
- l11_9: 2 ,
- l11_21: 19 ,
- l11_22: 19 ,
- l11_26: 10 ,
- l11_27: 5 ,
- l12_14: 3 ,
- l12_16: 3 ,
- l12_17: 3 ,
- l12_26: 1 ,
- l13_14: 12 ,
- l13_16: 12 ,
- l13_17: 12 ,
- l14_1: 11 ,
- l14_2: 15 ,
- l14_3: 15 ,
- l14_4: 15 ,
- l14_6: 15 ,
- l14_8: 11 ,
- l14_9: 15 ,
- l14_12: 15 ,
- l14_13: 15 ,
- l14_18: 15 ,
- l14_21: 11 ,
- l14_22: 11 ,
- l14_23: 15 ,
- l14_24: 15 ,
- l14_27: 11 ,
- // l15_6: 4 ,
- // l15_9: 4 ,
- l15_23: 24 ,
- l15_26: 2 ,
- l15_27: 4 ,
- l16_1: 15 ,
- l16_2: 15 ,
- l16_3: 15 ,
- l16_4: 15 ,
- l16_5: 15 ,
- l16_6: 15 ,
- l16_7: 15 ,
- l16_8: 15 ,
- l16_9: 15 ,
- l16_10: 15 ,
- l16_11: 15 ,
- l16_12: 15 ,
- l16_13: 15 ,
- l16_19: 15 ,
- l16_20: 15 ,
- l16_23: 15 ,
- l16_24: 15 ,
- l16_26: 15 ,
- l16_27: 15 ,
- l17_2: 15 ,
- l17_5: 14 ,
- l17_7: 14 ,
- l17_10: 14 ,
- l17_11: 14 ,
- l17_19: 14 ,
- l17_20: 14 ,
- l17_21: 14 ,
- l17_22: 14 ,
- l17_26: 14 ,
- l17_27: 14 ,
- l18_1: 15 ,
- l18_2: 15 ,
- l18_5: 15 ,
- l18_6: 15 ,
- l18_7: 15 ,
- l18_8: 15 ,
- l18_9: 15 ,
- l18_10: 17 ,
- l18_11: 17 ,
- l18_14: 17 ,
- l18_19: 17 ,
- l18_20: 17 ,
- l18_21: 17 ,
- l18_22: 17 ,
- l18_23: 15 ,
- l18_24: 15 ,
- l18_26: 17 ,
- l18_27: 15 ,
- l19_1: 11 ,
- l19_3: 11 ,
- l19_5: 10 ,
- l19_6: 11 ,
- l19_7: 10 ,
- l19_8: 10 ,
- l19_9: 11 ,
- l19_12: 10 ,
- l19_13: 10 ,
- l19_14: 11 ,
- l19_15: 11 ,
- l19_16: 11 ,
- l19_17: 11 ,
- l19_18: 11 ,
- l19_23: 10 ,
- l19_27: 10 ,
- l20_14: 19 ,
- l20_15: 19 ,
- l20_16: 19 ,
- l20_17: 19 ,
- l20_18: 19 ,
- l20_27: 10 ,
- l21_14: 19 ,
- l21_15: 19 ,
- l21_16: 19 ,
- l21_17: 19 ,
- l21_18: 19 ,
- l21_27: 19 ,
- l22_17: 21 ,
- l22_18: 21 ,
- l22_27: 20 ,
- l23_16: 15 ,
- l23_26: 1 ,
- l23_27: 13 ,
- l24_16: 15 ,
- l24_21: 2 ,
- l24_22: 2 ,
- l24_26: 2 ,
- l24_27: 3 ,
- l26_7: 5 ,
- l26_8: 5 ,
- l26_9: 5 ,
- l26_11: 10 ,
- l26_12: 5 ,
- l26_13: 5 ,
- l26_14: 10 ,
- l26_17: 10 ,
- l26_20: 10 ,
- l26_21: 10 ,
- l26_22: 10 ,
- l26_23: 5 ,
- l26_24: 5 ,
- l26_27: 5 ,
- l27_1: 8 ,
- l27_2: 8 ,
- l27_3: 12 ,
- l27_4: 12 ,
- l27_5: 7 ,
- l27_6: 12 ,
- l27_9: 12 ,
- l27_10: 7 ,
- l27_11: 7 ,
- l27_14: 11 ,
- l27_15: 4 ,
- l27_16: 15 ,
- l27_17: 15 ,
- l27_18: 12 ,
- l27_19: 10 ,
- l27_20: 10 ,
- l27_21: 20 ,
- l27_22: 20 ,
- l27_23: 13 ,
- l27_24: 12 ,
- l27_26: 8
- }
- var Pahan_trtime = new Array( 120 , 84 , 60 , 36 , 24 , 12 ) ; // время перемещения по прямой
- var Pahan_trtimed = new Array( 169 , 118 , 84 , 50 , 33 , 16 ) ; // время перемещения по диагонали
- function getMoveTimeL( cz , mz , t ) {
- /* cz текущий сектор обсчёта
- mz конечный сектор обсчёта
- t сумма времени
- */
- if(mz == 25)
- alert(111);
- // если прибыли в конечный пункт
- if( mz == cz ) {
- // var myT = new Date(t*1000)
- // myTs = myT.getSeconds()
- // return myT.getMinutes() + ':' + ( myTs < 10 ? '0' : '' ) + myTs ;
- return t;
- }
- var nz = 0; // следующий сектор, к которому надо действительно двигаться
- var kC = Pahan_locArr[cz]; //координаты текущие
- if(kC == undefined) return 0;
- var kM = Pahan_locArr[mz]; //координаты назначения
- id1 = eval( 'Pahan_locP.l' + cz + '_' + mz ) //id исключение
- // если есть исключения, следующий сектор будет равен ид исключения
- if( id1 && id1 > 0 ) {
- nz = id1 ;
- }
- // если исключения, то переназначаем координаты назначения
- if( nz != 0 ) var kM = Pahan_locArr[nz] ;
- var tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 ) ;
- var ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 ) ;
- var nx = parseInt( kC[1] ) + tx ;
- var ny = parseInt( kC[2] ) + ty ;
- // t = ( ty == 0 || tx == 0 ) ? t + 120 : t + 169 ;
- t = ( ty == 0 || tx == 0 ) ? t + Pahan_trtime[0] : t + Pahan_trtimed[0] ;
- var id = eval( 'Pahan_locX.c' + nx + '_' + ny ) ;
- // t = t + ' ' + id + '(' + nz + ')' ;
- return getMoveTimeL( id , mz , t );
- }
- function GetCurrLocation(AHTML)
- {
- //!! var re = /<[^>]*href='([^']*)'[^>]*>»»»<\/a>/gim;
- var re = /<param[^>]*\/map.swf[^>]*>\s*<param[^>]*value="([^"]*)"[^>]*>/gim;
- var res;
- if ((res = re.exec(AHTML)) != null)
- {
- return res[1].split('=')[1].split(':')[1];
- }
- else
- return 1;
- }
- function GetSortedLocations(LCurrLocation)
- {
- var LLocs = new Array();
- for (var i = 0; i < Pahan_locArr.length; i++)
- {
- var LLoc = Pahan_locArr[i];
- if (LLoc && (LLoc.length == 6))
- {
- LLoc[6] = getMoveTimeL(LCurrLocation, LLoc[0], 0);
- // alert('i: ' + i + ', LCurrLocation: ' + LCurrLocation + ', LLoc: ' + LLoc);
- LLocs.push(LLoc);
- }
- }
- LLocs.sort(function(a, b) {
- return a[6] - b[6];
- });
- return LLocs;
- }
- //EnumLocations();
- //ShowFindWorkHTML('TEST!!!!!!!!!!!!!!!!', false, '');
- // ---------------------------------
- WorkResultFound = false;
- SortedLocations = null;
- GoldSumm = 0;
- WorkCountSumm = 0;
- function close_find_work_info()
- {
- bg = $('#bgOverlayFindWork') ;
- bgc = $('#bgCenterFindWork') ;
- if( bg ) {
- bg.style.display = bgc.style.display = 'none' ;
- }
- WorkResultFound = true;
- }
- function setCheck(ch) {
- if( GM_getValue( ch ) && GM_getValue( ch ) == 1 )
- GM_setValue( ch , 0 );
- else
- GM_setValue( ch , 1 );
- }
- function save_min_zp()
- {
- var LValue = parseInt($('#id_min_zp').value);
- GM_setValue('min_zp', LValue);
- }
- function save_max_loc_count()
- {
- var LValue = parseInt($('#id_max_loc_count').value);
- GM_setValue('max_loc_count', LValue);
- }
- function ShowFindWorkHTML(AFindWorkHTML, AIsResult, AAdditionInfo)
- {
- if (WorkResultFound)
- return;
- WorkResultFound = AIsResult;
- if (WorkResultFound)
- {
- GM_setValue('LastFindWorkHTML', AFindWorkHTML);
- }
- if (AAdditionInfo != '')
- {
- AAdditionInfo = '<tr><td><font color="red"><b>' + AAdditionInfo + '</b></font></td></tr>';
- }
- bg = $('#bgOverlayFindWork') ;
- bgc = $('#bgCenterFindWork') ;
- if( !bg ) {
- bg = document.createElement('div') ;
- bg.id = 'bgOverlayFindWork' ;
- document.body.appendChild( bg );
- bg.style.position = 'absolute' ;
- bg.style.left = '0';
- bg.style.width = '100%';
- bg.style.height = '100%';
- bg.style.background = "#000000";
- bg.style.opacity = "0.5";
- bg.addEventListener( "click", close_find_work_info , false );
- bgc = document.createElement('div') ;
- bgc.id = 'bgCenterFindWork' ;
- document.body.appendChild( bgc );
- bgc.style.position = 'absolute' ;
- bgc.style.width = '600px';
- bgc.style.background = "#F6F3EA";
- bgc.style.left = ( ( document.body.offsetWidth - 600 ) / 2 ) + 'px' ;
- bgc.style.zIndex = "1105";
- }
- bgc.innerHTML =
- '<div style="border:1px solid #abc;padding:5px;margin:2px;">' +
- ' <div style="float:right;border:1px solid #abc;width:15px;height:15px;text-align:center;cursor:pointer;" id="bt_closeFindWork" title="Закрыть">x</div>' +
- ' <center>' +
- ' <table>' +
- ' <tr>' +
- ' <td><b>'+str_script_name+' <font style="color:#0070FF;">'+version+'</font></b><hr/></td>' +
- ' </tr>' +
- ' ' + AAdditionInfo +
- ' <tr>' +
- ' <td>' + AFindWorkHTML + '</td>' +
- ' </tr>' +
- ' <tr><td><hr/></td></tr>' +
- ' <tr><td><b>Настройки:</b></td></tr>' +
- ' <tr>' +
- ' <td>' +
- ' <label style="cursor:pointer;"><input type="checkbox" id="id_return_after_work" title=""> Возвращатся на страницу после установки на работу</lable>' +
- ' </td>' +
- ' </tr>' +
- ' <tr>' +
- ' <td>' +
- ' <div><input type="text" style="width:40;" id="id_min_zp"> Минимальная зарплата, не предлагать меньшую </div>' +
- ' <div>Значение "0" - подходит любая зарплата</div>' +
- ' </td>' +
- ' </tr>' +
- ' <tr>' +
- ' <td>' +
- ' <label style="cursor:pointer;"><input type="checkbox" id="id_scan_other_locations" title=""> Искать на других локациях (только с транспортом)</lable>' +
- ' </td>' +
- ' </tr>' +
- ' <td>' +
- ' <div><input type="text" style="width:40;" id="id_max_loc_count"> Количество соседних локаций для сканирования</div>' +
- ' <div>Значение "0" - сканировать все локации на карте</div>' +
- ' </td>' +
- ' <tr><td><hr/></td></tr>' +
- ' <tr>' +
- ' <td style="font-weight:bold;font-size:10px;" >' +
- ' <a style="font-weight:bold;font-size:10px;" href="'+str_url+'">Проверить обновление скрипта.</a>' +
- ' <a style="font-weight:bold;font-size:10px;" href="'+str_url_aut+'">Сообщить автору о найденной ошибке.</a>' +
- ' </td>' +
- ' </tr>' +
- ' <tr>' +
- ' <td style="font-weight:bold;font-size:10px;" >' +
- ' Автор: <a style="font-weight:bold;font-size:10px;" href="http://www.heroeswm.ru/pl_info.php?id=30547">Pahan.</a>' +
- ' </td>' +
- ' </tr>' +
- ' </table>' +
- ' </center>' +
- '</div>';
- addEvent($("#bt_closeFindWork"), 'click', close_find_work_info);
- bg.style.top = (-document.body.scrollTop)+'px';
- bgc.style.top = ( document.body.scrollTop + 100 ) + 'px';
- bg.style.display = bgc.style.display = 'block' ;
- var check_return = $('#id_return_after_work');
- check_return.checked = GM_getValue('return_after_work', 0) == 1 ? 'checked' : '' ;
- addEvent(check_return, 'click', function(){setCheck('return_after_work')});
- var Lmin_zp = $("#id_min_zp");
- Lmin_zp.value = parseInt(GM_getValue('min_zp', '0'));
- Lmin_zp.addEventListener( "change", save_min_zp , false );
- Lmin_zp.addEventListener( "keyup", save_min_zp , false );
- Lmin_zp.addEventListener( "paste", save_min_zp , false );
- var check_other_locations = $('#id_scan_other_locations');
- check_other_locations.checked = GM_getValue('scan_other_locations', 0) == 1 ? 'checked' : '' ;
- addEvent(check_other_locations, 'click', function(){setCheck('scan_other_locations')});
- var Lmax_loc_count = $("#id_max_loc_count");
- Lmax_loc_count.value = parseInt(GM_getValue('max_loc_count', '0'));
- Lmax_loc_count.addEventListener( "change", save_max_loc_count , false );
- Lmax_loc_count.addEventListener( "keyup", save_max_loc_count , false );
- Lmax_loc_count.addEventListener( "paste", save_max_loc_count , false );
- }
- function GetObjectInfo(AObjHTML)
- {
- AObjHTML = DeleteCRLF(AObjHTML);
- var re = /(<table[^>]*><tr[^>]*><td[^>]*>Тип: .*)Список рабочих/gim;
- LInfo = (res = re.exec(AObjHTML)) ? res[1] : '';
- re = /Свободных мест: <b>\d+<\/b>/gim;
- LInfo += (res = re.exec(AObjHTML)) ? res[0] : '';
- return LInfo;
- }
- function ObjectProcess(ALocation, AObjHTML)
- {
- AObjHTML = DeleteCRLF(AObjHTML);
- if (ALocation == 0)
- {
- var re = /Вы уже устроены\./gim;
- var re2 = /Прошло меньше часа с последнего устройства на работу\. Ждите\./gim;
- var res;
- if (((res = re.exec(AObjHTML)) != null) || (res = re2.exec(AObjHTML)) != null)
- ShowFindWorkHTML(res[0], true, '');
- else
- {
- re = /Свободных мест\: <b>0<\/b>/gim;
- if ((res = re.exec(AObjHTML)) != null)
- {
- }
- else
- {
- // re = /<form[^>]*name="working"[^>]*>.*<\/form>/gim;
- re = /<form[^>]*name=working[^>]*>.*<\/form>/gim;
- if ((res = re.exec(AObjHTML)) != null)
- {
- GM_setValue('LastURL', location.href);
- LLastCode = GM_getValue('last_code', '');
- if (LLastCode != '')
- LLastCode = 'Последний введенный код: ' + LLastCode;
- ShowFindWorkHTML(GetObjectInfo(AObjHTML) + res[0], true, LLastCode);
- }
- }
- }
- }
- else
- {
- re = /Свободных мест\: <b>(\d+)<\/b>/gim;
- if ((res = re.exec(AObjHTML)) != null)
- {
- var LWorkCount = parseInt(res[1]);
- if (LWorkCount > 0)
- {
- re = /<tr><td>Баланс: <\/td><td><b><table[^>]*><tr><td><img[^>]*gold\.gif[^>]*><\/td><td><b>([\d,]+)<\/b><\/td><\/tr><\/table><\/b><\/td><\/tr>/gim;
- if ((res = re.exec(AObjHTML)) != null)
- {
- var LGold = parseInt(res[1].replace(/,/g, ''));
- if (LGold > 1000)
- {
- GoldSumm += LGold;
- WorkCountSumm += LWorkCount;
- }
- }
- }
- }
- }
- }
- function FindWorkObject(ALocation, APlaceIndex, AObjIndex, APlaceHTML)
- {
- var re = /<b>(\d+)<\/b> <\/td><td[^>]*> <a[^>]*href='([^']*)'[^>]*>»»»<\/a>/gim;
- var res;
- var LLink;
- var LZP, LMinZP;
- var LFindCount = 0;
- while ((res = re.exec(APlaceHTML)) != null)
- {
- LZP = parseInt(res[1]);
- LLink = res[2];
- LMinZP = parseInt(GM_getValue('min_zp', '0'));
- // alert('LZP: ' + LZP + ', LLink: ' + LLink);
- if ((LMinZP == 0) || (LZP >= LMinZP))
- {
- if (LFindCount == AObjIndex)
- {
- Ajax('GET', LLink, null,
- function(AObjHTML)
- {
- ObjectProcess(ALocation, AObjHTML);
- if (!WorkResultFound)
- FindWorkObject(ALocation, APlaceIndex, AObjIndex + 1, APlaceHTML);
- }
- );
- }
- LFindCount++;
- }
- }
- // $("#find_work").innerHTML = $("#find_work").innerHTML + '<br>' +
- // 'AObjIndex: ' + AObjIndex + ', LFindCount: ' + LFindCount;
- if (!WorkResultFound && (AObjIndex >= LFindCount))
- FindWorkProcess(ALocation, APlaceIndex + 1);
- }
- function FindWorkProcess(ALocation, APlaceIndex)
- {
- var PlaceCodes = ['sh', 'fc', 'mn'];
- var PlaceNames = ['Производства', 'Обработка', 'Добыча'];
- if (APlaceIndex < PlaceCodes.length)
- {
- if ((ALocation != 0) && (APlaceIndex == 0))
- {
- GoldSumm = 0;
- WorkCountSumm = 0;
- }
- var LLocXY = '';
- if (ALocation != 0)
- LLocXY = 'cx=' + SortedLocations[ALocation][1] + '&cy=' + SortedLocations[ALocation][2] + '&';
- var LURL = '/map.php?' + LLocXY + 'st=' + PlaceCodes[APlaceIndex];
- Ajax('GET', LURL, null,
- function(AHTML)
- {
- if (!SortedLocations)
- SortedLocations = GetSortedLocations(GetCurrLocation(DeleteCRLF(AHTML)));
- ShowFindWorkHTML('Сканирование локации ' + SortedLocations[ALocation][5] +
- ' ' + PlaceNames[APlaceIndex] + '...<br>', false, '');
- FindWorkObject(ALocation, APlaceIndex, 0, AHTML);
- }
- );
- }
- else
- {
- if ((ALocation > 0) && (GoldSumm > 2000) && (WorkCountSumm > 5))
- {
- var LURL = 'http://www.heroeswm.ru/move_sector.php?id=' + SortedLocations[ALocation][0];
- ShowFindWorkHTML('На локации ' + SortedLocations[ALocation][5] + ' найдено:<br>' +
- 'Рабочих мест: <b>' + WorkCountSumm + '</b><br>' +
- 'Доступное для зарплаты золото: <b>' + GoldSumm + '</b><br>' +
- 'Перейти: <a href="' + LURL + '">' + SortedLocations[ALocation][5] + '</a>', true, ''
- );
- }
- else
- {
- var LMaxLocCount = -1;
- if (GM_getValue('scan_other_locations', 0) == 1)
- LMaxLocCount = parseInt(GM_getValue('max_loc_count', '0'));
- ALocation++;
- if ((LMaxLocCount == 0) || (ALocation <= LMaxLocCount))
- FindWorkProcess(ALocation, 0);
- else
- ShowFindWorkHTML('Поиск работы завершен.<br>' +
- 'Все места заняты или недостаточно золота на объектах.<br>' +
- 'Смените локацию, или попробуйте позже.', true, ''
- );
- }
- }
- }
- function AddWorkFindHref()
- {
- var LLinks = document.querySelectorAll('a[href^="map.php"]');
- var LLink;
- if (LLinks)
- {
- for(i = 0; i < LLinks.length; i++)
- {
- LLink = LLinks[i];
- if (LLink.innerHTML == '<b>Карта</b>')
- {
- LNewHref = document.createElement('a');
- LNewHref.href = '#';
- LNewHref.style = "text-decoration: none;color: #f5c137;"
- LNewHref.innerHTML = '<b>ГР</b>';
- LNewHref.title = 'Найти место работы';
- LNewHref.id = 'find_work';
- LLink.parentNode.appendChild(LNewHref);
- addEvent($("#find_work"), "click",
- function()
- {
- WorkResultFound = false;
- GM_deleteValue('LastFindWorkHTML');
- GM_deleteValue('LastURL');
- ShowFindWorkHTML('Сканирование локации...<br>', false, '');
- FindWorkProcess(0, 0);
- }
- );
- }
- }
- }
- }
- function PrecessReturn()
- {
- var LLastFindWorkHTML = GM_getValue('LastFindWorkHTML', '');
- var LLastURL = GM_getValue('LastURL', '');
- if ((LLastFindWorkHTML != '') && (LLastURL != ''))
- {
- // <font color="red"><b>Введен неправильный код.</b></font>
- var re = /<font[^>]*><b>(Введен неправильный код\.)<\/b><\/font>/gim;
- var re2 = /<font[^>]*><b>(На объекте недостаточно золота\.)<\/b><\/font>/gim;
- var re3 = /<font[^>]*><b>(Нет рабочих мест\.)<\/b><\/font>/gim;
- var re4 = /<center>Вы устроены на работу\.<\/center>/gim;
- var res;
- var LCode = URLAttrValueGet('code', location.href);
- if ((res = re.exec(document.body.innerHTML)) != null)
- {
- var LStr = res[1] + '<br>Последний введенный код: ' + LCode;
- ShowFindWorkHTML(LLastFindWorkHTML, true, LStr);
- return;
- }
- if (((res = re2.exec(document.body.innerHTML)) != null)
- || ((res = re3.exec(document.body.innerHTML)) != null)
- ){
- GM_setValue('last_code', LCode);
- return;
- }
- GM_deleteValue('LastFindWorkHTML')
- GM_deleteValue('LastURL');
- GM_deleteValue('last_code');
- if ((GM_getValue('return_after_work', 0) == 1)
- && ((res = re4.exec(document.body.innerHTML)) != null)
- )
- {
- location.href = LLastURL;
- }
- }
- }
- function ProcessMain()
- {
- AddWorkFindHref();
- PrecessReturn();
- }
- ProcessMain();