GN_ShowLastTask

Показ последнего задания такого типа

当前为 2016-01-14 提交的版本,查看 最新版本

// ==UserScript==
// @name        GN_ShowLastTask
// @namespace   Gradient
// @description Показ последнего задания такого типа
// @include     /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/mercenary_guild\.php/
// @version     1.0.1
// ==/UserScript==

"use strict";

//----------------------------------------------------------------------------//

(function(){ // wrapper start

//----------------------------------------------------------------------------//
// UnifiedLibrary 1.5.0 start
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
// SysUtils
//----------------------------------------------------------------------------//

var GN_SysUtils = new SysUtils();
var SU = GN_SysUtils;

//----------------------------------------------------------------------------//

function SysUtils(){  // wrapper start

//----------------------------------------------------------------------------//
  
this.show_error = function(error_string){
  throw new Error(error_string);
};
  
//----------------------------------------------------------------------------//  

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;

this.current_id = function(){
  return current_id;
};

//----------------------------------------------------------------------------//

this.check_login = function(){
  var re = /.*?pl_id=(\d+)[^\d]*?/gmi;
  var matches = re.exec(document.cookie.toString());
  
  if(!matches)
    this.show_error('Пользователь не авторизован');
    
  current_id = +matches[1];
};

//----------------------------------------------------------------------------//

this.check_login();

//----------------------------------------------------------------------------//  
  
} // wrapper end

//----------------------------------------------------------------------------//
// UnifiedLibrary end
//----------------------------------------------------------------------------//
  
var current_user_id = SU.current_id();
var completed_tasks = JSON.parse(SU.load_value('GN_ShowLastTask_Tasks' + current_user_id, '[]'));

var merc_table = document.querySelector('table[width="970"] table.wbwhite td[valign="top"][align="left"]');
var b = merc_table.querySelectorAll('b');
var tasks = [];
  
for(var i = 0; i < b.length; ++i)
  if(/.+?\s{\d+}/.test(b[i].innerHTML))
    tasks.push(b[i]);

for(var i = 0; i < tasks.length; ++i){
  var task = tasks[i];
  var str  = /(.+)\s{\d+}/.exec(task.innerHTML)[1];

  for(var j = 0; j < completed_tasks.length; ++j){
    var c_task = completed_tasks[j];
    
    if(c_task.str == str){
      var a = document.createElement('a');
      a.href = '/war.php?lt=-1&warid=' + c_task.battle;
      a.textContent = ' (пред. бой, уровень ' + c_task.lvl + ')';
      task.parentNode.insertBefore(a, task.nextSibling);
    }
  }
}
  
//----------------------------------------------------------------------------//
  
}()); // wrapper end

//----------------------------------------------------------------------------//