Regeneration [GW]

Более подробная информация о выздоровлении персонажа.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name             Regeneration [GW]
// @namespace
// @description      Более подробная информация о выздоровлении персонажа.
// @include          http://www.ganjawars.ru/me/*
// @version          1.01
// @author           W_or_M, modified by TWW for Chrome
// @namespace https://greasyfork.org/users/154957
// ==/UserScript==

(function() {

// НАСТРОЙКИ
//-----------------------------------    
var sound80  = 22;  // звуковое оповещение при 80%, для отключения 0
var sound100 = 22;  // звуковое оповещение при 100%, для отключения 0
var color    = 'blue'; // цвет надписи, формат - #XXXXXX (X - от 0 до F)
//-----------------------------------

var state;
var hp_current;
var hp_max;
var hp_speed;

// куки
function setCookie (name, value, expires, path, domain, secure) {
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function playSound(soundId) {
    
    // создаем контейнер, если еще не создан
    if (root.document.getElementById('flashcontent') == null) {
        
        var div = root.document.createElement('div');
        div.id = 'flashcontent';
        root.document.body.appendChild(div);
        
    }

    root.document.getElementById('flashcontent').innerHTML = '<embed height="1" width="1" flashvars="soundPath=/sounds/'+ soundId +'.mp3" allowscriptaccess="always" quality="high" bgcolor="#F5fff5" name="gr_server" id="gr_server" src="http://images.ganjawars.ru/i/play.swf" type="application/x-shockwave-flash"/>';
    
}

// установка состояния
function setState(stateId) {
    
    state = stateId;
    setCookie('regen_state', stateId, 0, '/');
    
}

var root = typeof unsafeWindow != 'undefined' ? unsafeWindow : window;

// мы на главной
if (root.location.href.indexOf('http://www.ganjawars.ru/me/') >= 0) {
    	
	var tmp = root.document.head.innerHTML;	
	var myArray2 = tmp.match(/<script[^>]*>([\s\S]*?)<\/script>/)[1];
	hp_speed = parseFloat(/var hp_speed=(.*)\;/i.exec(myArray2)[1]);

    // ищем "здоровье"
    var b = root.document.getElementsByTagName('b');
    for (var i = 0, l = b.length; i < l; i++) {
        
        // нашли
        if (b[i].innerHTML == 'Здоровье:' && b[i].parentNode.tagName == 'FONT') {
            
            var node = b[i].parentNode.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling;
			
			hp_current = parseInt(b[i].parentNode.nextSibling.nextSibling.innerHTML,10);
			var myArray = b[i].parentNode.nextSibling.nextSibling.parentNode.innerHTML;
			hp_max = parseInt(/\<\/div\>\&nbsp\;\/\&nbsp\;(\d+)\<br\>/ig.exec(myArray)[1],10);			
            break;
            
        }
        
    }
    
    
    if (node != 'undefined') {

        state = getCookie('regen_state')
        
        // выздоровление
        var p = root.document.createElement('p');
        p.id = 'regen_hp';
        p.style.margin = 0;
        p.style.padding = 0;
        p.style.color = color;
        //p.setAttribute('style', 'margin: 0;padding: 0;color: '+ color +';');
        p.innerHTML = ' &nbsp;» <span style="font-weight: bold">Выздоровление:</span> <span id="regen_hp_percent"></span>';
        node.parentNode.insertBefore(p, node);
        
        var regenHp = root.document.getElementById('regen_hp');

		updatehp();
    }
    
}

function updatehp()
{
	
	var obj = root.document.getElementById('regen_hp_percent');

	// старая функция
	hp_current = hp_current + hp_speed;
	var rnd = hp_speed > 1 ? 1 : 10;
	if (hp_current > hp_max) hp_current = hp_max;
	var res = Math.round(hp_current * rnd) / rnd;
	root.document.getElementById('hpdiv').innerHTML = res;
	
	// текущее хп в процентах
	var hpPercent = (hp_current / hp_max) * 100;
	hpPercent = hpPercent >= 100 ? 100 : hpPercent;
	obj.innerHTML = Math.floor(hpPercent) +'%';
	
	// время
	if (hpPercent < 80) {
		var sec = Math.floor(((hp_max * 0.8) - hp_current) / hp_speed);
		var date = new Date(sec * 1000);
		var split = date.getSeconds() < 10 ? ':0' : ':';
		var timeZone = Math.floor(date.getTimezoneOffset() / 60);
		obj.innerHTML += ', <span style="font-weight: bold">'+ ((date.getHours() + timeZone) > 0 ? date.getHours() + timeZone + ':' : '') + date.getMinutes() + split + date.getSeconds()  + '</span> (до 80%)';
	}

	if (hpPercent < 100) {
		var sec = Math.floor(((hp_max) - hp_current) / hp_speed);
		var date = new Date(sec * 1000);
		var split = date.getSeconds() < 10 ? ':0' : ':';
		var timeZone = Math.floor(date.getTimezoneOffset() / 60);
		obj.innerHTML += ', <span style="font-weight: bold">'+ ((date.getHours() + timeZone) > 0 ? date.getHours() + timeZone + ':' : '') + date.getMinutes() + split + date.getSeconds()  + '</span> (до 100%)';
		
	}

	if (hpPercent < 100 && hpPercent  >= 80 && (state == 0 || state == null)) {
		
		setState(1);
		
	}
	
	if (hpPercent >= 100 && state == 3) {
		
		setState(2);
		
	}

	// состояния
	// 0 - пустое
	// 1 - получили 80%
	// 2 - получили 100%
	// 3 - получили 80%, но еще не получили 100%
	// 4 - финиш
	if (state == null && state == 0) {
		
		
		
	} else if (state == 1 && sound80 > 0) {
		
		playSound(sound80);
		setState(3);
		
	} else if (state == 2 && sound100 > 0) {
		
		playSound(sound100);
		setState(4);
		
	} else if (state >= 3 && hpPercent < 100) {
		
		state = hpPercent < 80 ? 0 : 3;
		setState(state);
		
	}

	setTimeout(function(){updatehp()}, 1000);
}

})();