hearthstone deckcode

hs deckcode

От 19.06.2019. Виж последната версия.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name        hearthstone deckcode
// @version     1.97
// @description hs deckcode
// @match *://bbs.nga.cn/read.php*
// @author      fbigame
// @namespace https://hs.fbigame.com
// ==/UserScript==


var fbi_postcontent0 = document.getElementById('postcontent0').innerHTML;
if (fbi_postcontent0 != undefined) {
	var deck_code_all = [];
    deck_codes = fbi_postcontent0.split('<br>');
    deck_codes.forEach(function(value, index, arr) {
        if (value.substring(0, 3) == 'AAE') {
            deck_code_all.push(value);
        }
    });
	var fbi_userinfo = document.getElementById('posterinfo0');
	var fbi_userinfo_divs = fbi_userinfo.childNodes;
	var fbi_deck_div = null;
	for (var i = 0; i < fbi_userinfo_divs.length; i++) {
		if (fbi_userinfo_divs[i].className == "stat_spacer") {
			fbi_deck_div = fbi_userinfo_divs[i];
		} else if (fbi_userinfo_divs[i].className == "stat") {
			var fbi_user_stat_div = fbi_userinfo_divs[i].childNodes;
			for (var j = 0; j < fbi_user_stat_div.length; j++) {
				if (fbi_user_stat_div[j].className == "stat_spacer") {
					fbi_deck_div = fbi_user_stat_div[j];
				}
			}
		}
	}
	if (fbi_deck_div !== null) {
		var ele = document.createElement("div");
		ele.innerHTML = '<style>.forumbox .postrow .stat_spacer{width:auto;}.cards_rebuild li{list-style:none}.deck_containter{padding-top:7px;width:200px;z-index:1001;font-size:14px!important;font-family:"Microsoft YaHei",Arial,Helvetica,sans-serif;margin:auto;}.deck_containter .deck_hero{width:200px;height:65px}.card-tile{padding-top:2px;color:#fff;position:relative;text-align:left;cursor:pointer;margin-top:1px;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000;height:34px;line-height:34px}.card-tile .card-gem{height:100%;float:left;position:relative;border-style:solid;border-color:black;border-width:1px 0 1px 1px;width:34px}.card-tile .card-cost{position:absolute;font-weight:bold;text-align:center;width:100%}.card-tile .rarity-common,.rarity-free{background:#858585}.card-tile .rarity-common,.rarity-rare{background:#315376}.card-tile .rarity-common,.rarity-epic{background:#644c82}.card-tile .rarity-common,.rarity-legendary{background:#855c25}.card-tile .card-frame{position:relative;border:solid 1px black;height:100%;overflow:hidden}.card-tile .card-frame .card-fade-countbox{position:absolute;width:100%;height:100%;background:linear-gradient(65deg,rgba(49,49,9,1) 0,rgba(49,49,49,1) calc(100% - 120px),rgba(49,49,49,0) calc(100% - 50px),rgba(49,49,49,0) 100%)}.card-tile .card-frame .card-fade-no-countbox{position:absolute;width:100%;height:100%;background:linear-gradient(65deg,rgba(49,49,9,1) 0,rgba(49,49,49,1) calc(100% - 96px),rgba(49,49,49,0) calc(100% - 26px),rgba(49,49,49,0) 100%)}.card-tile .card-frame .card-name{position:absolute;font-weight:bold;left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-tile .card-frame .card-asset{position:absolute;height:100%;background-color:#313131}.card-tile .card-countbox{float:right;position:relative;background-color:#313131;border-left:solid 1px black;height:100%}.card-tile .card-legendicon{position:absolute;top:-1px}.card-tile .card-count{position:absolute;width:100%;color:#f4d442;font-weight:bold;text-align:center}.card-tile .card-image{position:fixed;z-index:1000}.card-tile .predicted{opacity:.4;filter:grayscale(1)}.card-tile .predicted :hover{filter:grayscale(0)}.card-tile .predicted .craftable{opacity:.6}.card-tile .predicted .craftable a:hover,.card-tile .predicted .craftable a:focus{opacity:.8}.card-tile .predicted .craftable a:hover,.card-tile .predicted .craftable a:focus{cursor:pointer}.card-tile .predicted .craftable.card-image{filter:none}#card-tooltip .card-image-container{position:relative}#card-tooltip .card-image-subtitle{position:absolute;width:100%;left:0;text-align:center;bottom:5%;font-weight:bold;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000}.card-tooltip{background-color:rgba(0,0,0,0.95);border-radius:4px;border:1px rgba(255,255,255,0.25) solid;color:white;font-family:"Noto Sans",sans-serif;font-size:14px;font-weight:normal;margin-top:10px;min-width:250px;max-width:300px;padding:8px 8px;position:fixed;white-space:normal;pointer-events:none;z-index:1000}.no-background{background:transparent;border:unset}.card-image{position:absolute;z-index:1000;width:256px}</style><div id="tooltip-container"></div>';
		fbi_deck_div.appendChild(ele);
		
		var deck_index;
		var fbi_ajax = [];
		
		for (deck_index = 0; deck_index < deck_code_all.length; deck_index ++) {
			console.log('deck_index: ' + deck_index);
			console.log('deck_code_all.length: ' + deck_code_all.length);
			var deck_code = deck_code_all[deck_index];
			var const_index = deck_index;
			if (deck_code != '') {
				var ele = document.createElement("div");
				ele.innerHTML = '<div class="deck_containter"><div id="cards_rebuild_' + deck_index + '" class="cards_rebuild"></div><div class="deck_wrap"><div id="cards_list_' + deck_index + '" class="cards_list"></div></div></div>';
				fbi_deck_div.appendChild(ele);
				
				
				fbi_ajax[deck_index] = new XMLHttpRequest();
				
				fbi_ajax[deck_index].open('get', 'https://hs.fbigame.com/ajax.php?mod=deck_decode&index=' + const_index + '&source=nga&deck_code=' + encodeURIComponent(deck_code));
				fbi_ajax[deck_index].send();
				fbi_ajax[deck_index].onreadystatechange = function() {
					if (fbi_ajax[deck_index].readyState == 4 && fbi_ajax[deck_index].status == 200) {
						var fbi_json = JSON.parse(fbi_ajax[deck_index].responseText);
						if (fbi_json.ec == 0) {
							if (fbi_json.deck) {
								rebuild_deck_code(fbi_json.deck, fbi_json.index);
							} else {
								console.log('cant find deck');
							}
						} else {
							console.log(fbi_json.em);
						}
					}
				}
			
			} else {
				console.log('deck code empty');
			}
		}
	} else {
		console.log('cant find stat div');
	}
		
}
	
	
function rebuild_deck_code(deck, fbi_json_index) {
	var select_class = '';
	var class_name = '';

	window.all_cards = [];
	var decode_all_cards = '';
	for (var index in deck.cards) {
		for (var i = 0; i < deck.cards[index]; i ++ ) {
			if (decode_all_cards == '') {
				decode_all_cards += index;
			} else {
				decode_all_cards += '|' + index;
			}
		}
	};
	if (decode_all_cards != '') {
		var fbi_ajax = new XMLHttpRequest();
		fbi_ajax.open('get', 'https://hs.fbigame.com/ajax.php?mod=get_cards_detail&source=nga&cards=' + decode_all_cards);
		fbi_ajax.send();
		fbi_ajax.onreadystatechange = function() {
			if (fbi_ajax.readyState == 4 && fbi_ajax.status == 200) {
				var fbi_json = JSON.parse(fbi_ajax.responseText);
				if (fbi_json.ec == 0) {
					if (fbi_json.num > 0) {
						var all_cards = '';
						
						fbi_json.list.forEach(function(value, index, arr) {
							var datas = '';
							datas += 'data-CardID="' + value.CardID + '" ';
							datas += 'id="card_' + value.Id + '" ';
							datas += 'data-CARDNAME="' + value.CARDNAME + '" ';
							datas += 'data-COST="' + value.COST + '" ';
							datas += 'data-RARITY="' + value.RARITY + '" ';
							datas += 'data-auth_key="' + value.auth_key + '" ';
							all_cards += '<li ' + datas + '></li>';
						});
						console.log('cards_rebuild_' + fbi_json_index);
						document.getElementById('cards_rebuild_' + fbi_json_index).innerHTML = all_cards;
						for (var index in deck.cards) {
							for (var i = 0; i < deck.cards[index]; i ++ ) {
								add_to_deck(index, fbi_json_index);
							}
						}
					}
				}
			}
		}
	}
	return true;
}
function add_to_deck(id, index) {
	var card = document.getElementById('card_' + id);
	var cardid = card.attributes["data-cardid"].nodeValue;
	var name = card.attributes["data-cardname"].nodeValue;
	var cost = card.attributes["data-cost"].nodeValue;
	var card_rarity = card.attributes["data-rarity"].nodeValue;
	var auth_key = card.attributes["data-auth_key"].nodeValue;
	
	var rarity = '';
	switch (card_rarity) {
	case '1':
		rarity = 'rarity-free';
		break;
	case '2':
		rarity = 'rarity-free';
		break;
	case '3':
		rarity = 'rarity-rare';
		break;
	case '4':
		rarity = 'rarity-epic';
		break;
	case '5':
		rarity = 'rarity-legendary';
		break;
	}

	if (window.all_cards['"' + id + '"'] > 0) {
		window.all_cards['"' + id + '"'] = window.all_cards['"' + id + '"'] + 1;
		document.getElementById('card_count_' + id).innerHTML = window.all_cards['"' + id + '"'];
		removeClass(document.getElementById('card_countbox_' + id), 'hide');
		addClass(document.getElementById('card-fade-no-countbox_' + id), 'card-fade-countbox');
		removeClass(document.getElementById('card-fade-no-countbox_' + id), 'card-fade-no-countbox');
		document.getElementById('card_asset_' + id).setAttribute('style', 'right: 22px !important');
	} else {
		window.all_cards['"' + id + '"'] = 1;
		if (card_rarity == 5) {
			var num_show = '★';
			var count_box_hide = '';
			var card_fade_countbox = 'card-fade-countbox';
			var card_assets_style = 'right: 22px;';
		} else {
			var num_show = window.all_cards['"' + id + '"'];
			var count_box_hide = 'hide';
			var card_fade_countbox = 'card-fade-no-countbox';
			var card_assets_style = 'right: 0px;';
		}
		var cardinfo = '';
		cardinfo += '<div class="card-tile" name="card_tile" aria-label="' + name + '" data-cardid="' + cardid + '" data-id="' + id + '" data-cost="' + cost + '" data-rarity="' + rarity + '" data-auth_key="' + auth_key + '">';
		cardinfo += '<div class="card-gem ' + rarity + '">';
		cardinfo += '<span class="card-cost" style="font-size: 1.25em;">' + cost + '</span>';
		cardinfo += '</div>';
		cardinfo += '<div class="card-frame">';
		cardinfo += '<img id="card_asset_' + id + '" class="card-asset" src="https://hs.fbigame.com/static/images/tiles/' + cardid + '.png" alt="' + name + '" style="' + card_assets_style + '">';
		cardinfo += '<div id="card_countbox_' + id + '" class="card-countbox ' + count_box_hide + '" style="width: 24px;">';
		cardinfo += '<span id="card_count_' + id + '" class="card-count" data-id="' + id + '" style="font-size: 1.15em; top: 0px;">' + num_show + '</span>';
		cardinfo += '</div>';
		cardinfo += '<span id="' + card_fade_countbox + '_' + id + '" class="' + card_fade_countbox + '" data-id="' + id + '"></span>';
		cardinfo += '<span class="card-name" style="width: calc(100% - 28px);">' + name + '</span>';
		cardinfo += '</div>';
		cardinfo += '</div>';
		
		var ele = document.createElement("div");
		ele.innerHTML = cardinfo;
		document.getElementById('cards_list_' + index).appendChild(ele);
	}
	var card_tiles = document.getElementsByName('card_tile');
	var arr = [];
	for (var i = 0; i < card_tiles.length; i++) {
		arr.push(card_tiles[i]);
		card_tiles[i].addEventListener("mousemove",function(e){
			var iDiffX = e.pageX - this.offsetLeft;
			var iDiffY = e.pageY - this.offsetTop;
			var x = e.clientX - iDiffX + 70;
			var y = e.clientY - iDiffY - 191;
			show_tooltip(this.attributes["data-cardid"].nodeValue, this.attributes["data-auth_key"].nodeValue, x, y);
		},false);
		card_tiles[i].addEventListener("mouseout",function(e){
			hide_tooltip();
		},false);
	}
	arr.sort(function(a,b){
		return a.getAttribute('data-cost') - b.getAttribute('data-cost')
	});
	for(var i = 0; i < arr.length; i ++) {
		document.getElementById('cards_list_' + index).appendChild(arr[i]);
	}
}


function show_tooltip(cardid, auth_key, x, y) {
	var content = '';
	content += '<div id="card-tooltip" class="card-tooltip no-background" role="tooltip" style="left: 506px; top: 118px;">';
	content += '<img class="card-image" src="https://res.fbigame.com/hs/v9/' + cardid + '.png?auth_key=' + auth_key + '">';
	content += '</div>';
	document.getElementById('tooltip-container').innerHTML = content;
	document.getElementById('card-tooltip').setAttribute('style', 'left: ' + x + 'px !important;top: ' + y + 'px !important');
	document.getElementById('tooltip-container').setAttribute('style', 'display:block');
}
function hide_tooltip() {
	document.getElementById('tooltip-container').setAttribute('style', 'display:none');
}

function addClass(obj, cls) {
    var obj_class = obj.className,
    blank = (obj_class != '') ? ' ': '';
    added = obj_class + blank + cls;
    obj.className = added;
}

function removeClass(obj, cls) {
    var obj_class = ' ' + obj.className + ' ';
    obj_class = obj_class.replace(/(\s+)/gi, ' '),
    removed = obj_class.replace(' ' + cls + ' ', ' ');
    removed = removed.replace(/(^\s+)|(\s+$)/g, '');
    obj.className = removed;
}

function hasClass(obj, cls) {
    var obj_class = obj.className,
    obj_class_lst = obj_class.split(/\s+/);
    x = 0;
    for (x in obj_class_lst) {
        if (obj_class_lst[x] == cls) {
            return true;
        }
    }
    return false;
}