// ==UserScript== // @name hearthstone deckcode // @version 2.30 // @description hs deckcode // @match *://bbs.nga.cn/read.php* // @author fbigame // @namespace https://hs.fbigame.com // @downloadURL https://update.greasyfork.icu/scripts/386541/hearthstone%20deckcode.user.js // @updateURL https://update.greasyfork.icu/scripts/386541/hearthstone%20deckcode.meta.js // ==/UserScript== var img_ver = 13; var fbi_postcontent0 = document.getElementById('postcontent0').innerHTML; if (fbi_postcontent0 != undefined) { var deck_code_all = []; deck_codes = fbi_postcontent0.split('
'); 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 = '
'; fbi_deck_div.appendChild(ele); var deck_index; var fbi_ajax = []; var ajax_status = false; var const_index = 0; for (deck_index = 0; deck_index < 1; 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]; if (ajax_status == true){ const_index = deck_index; } if (deck_code != '') { var ele = document.createElement("div"); ele.innerHTML = '
'; fbi_deck_div.appendChild(ele); fbi_ajax[const_index] = new XMLHttpRequest(); fbi_ajax[const_index].open('get', 'https://hs.fbigame.com/ajax.php?mod=deck_decode&index=' + const_index + '&source=nga&deck_code=' + encodeURIComponent(deck_code)); fbi_ajax[const_index].send(); fbi_ajax[const_index].onreadystatechange = function() { if (fbi_ajax[const_index].readyState == 4 && fbi_ajax[const_index].status == 200) { ajax_status = true; var fbi_json = JSON.parse(fbi_ajax[const_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 += '
  • '; }); 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 += '
    '; cardinfo += '
    '; cardinfo += '' + cost + ''; cardinfo += '
    '; cardinfo += '
    '; cardinfo += '' + name + ''; cardinfo += '
    '; cardinfo += '' + num_show + ''; cardinfo += '
    '; cardinfo += ''; cardinfo += '' + name + ''; cardinfo += '
    '; cardinfo += '
    '; 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 + 90; 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 += ''; 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; }