您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
helper for AOC
// ==UserScript== // @name Adventure of Chaos helper // @namespace http://www.x4code.com // @version 1.9 // @author Manro & feiyu // @match http://www.x4code.com/game/* // @grant none // @description helper for AOC // ==/UserScript== //impl script !function(a){"use strict";var b=function(a,c){var d=/[^\w\-\.:]/.test(a)?new Function(b.arg+",tmpl","var _e=tmpl.encode"+b.helper+",_s='"+a.replace(b.regexp,b.func)+"';return _s;"):b.cache[a]=b.cache[a]||b(b.load(a));return c?d(c,b):function(a){return d(a,b)}};b.cache={},b.load=function(a){return document.getElementById(a).innerHTML},b.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,b.func=function(a,b,c,d,e,f){return b?{"\n":"\\n","\r":"\\r"," ":"\\t"," ":" "}[b]||"\\"+b:c?"="===c?"'+_e("+d+")+'":"'+("+d+"==null?'':"+d+")+'":e?"';":f?"_s+='":void 0},b.encReg=/[<>&"'\x00]/g,b.encMap={"<":"<",">":">","&":"&",'"':""","'":"'"},b.encode=function(a){return(null==a?"":""+a).replace(b.encReg,function(a){return b.encMap[a]||""})},b.arg="o",b.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return b}):a.tmpl=b}(this); (function($) { $.fn.tips = function(options) { var opts = $.extend({}, $.fn.showinfo.defaults, options); if ($("#ToolsTip").size() == 0) $('<div id="ToolsTip"></div>').hide().appendTo('body'); var $ToolsTip = $("#ToolsTip"); this.bind('mouseover mousemove mouseout', function(event) { var TarData = $(this).attr('title') || $(this).data('title'); $(this).removeAttr('title'); $(this).data('title',TarData); switch (event.type){ case 'mousemove': var top = event.pageY + 12, left = event.pageX + 12; if ($ToolsTip.innerHeight() + top + 12 > $(document).height()) top = $(document).height() - $ToolsTip.innerHeight() - 20; $ToolsTip.css({top: top, left: left}).show(); case 'mouseover': $ToolsTip.html(TarData); break; case 'mouseout': $ToolsTip.removeClass().removeData().empty().hide(); break; } }); } $.fn.showinfo = function(options) { var opts = $.extend({}, $.fn.showinfo.defaults, options); if ($("#InfoTip").size() == 0) { // $('<div id="InfoTip"></div>').hide().appendTo('body'); $('<div id="InfoTip" class="iteminfo self"></div>').hide().appendTo('body'); } if ($('[infotip]').size() == 0) { $('<div id="InfoTip" infotip></div>').hide().appendTo('body'); // $('<div id="InfoTip" class="iteminfo self"></div>').hide().appendTo('body'); } var $InfoTip = $("#InfoTip"); var $InfoTip2 = $('[infotip]').css({ 'position': 'absolute', 'padding': '2px', 'z-index': '10000', 'border-radius': '4px', 'border-width': '3px', 'border-style': 'ridge', 'min-width': '160px', 'max-width': '200px', 'padding': '5px 10px', 'font': '12px/18px Tahoma, Arial, sans-serif', }); this.bind('mouseover mouseout mousemove', function(event) { var equips = $('#equips button').map(function(index, elem) { return $(elem).data('info'); }); var TarData = $(this).data('info'); var showCompare = this.tagName != 'BUTTON'; var compareData = null; var tarType = TarData.type.substr(0,1); for (var i = 0; i < equips.length; i++) { var equip = equips[i]; if (equip.type.substr(0,1) == tarType) { compareData =equip; break; } } var showid = '_'; if (TarData.eid) showid += TarData.eid+"_"; if (TarData.tid) showid += TarData.tid; switch (event.type){ case 'mousemove': var top = event.pageY + 12, left = event.pageX + 12; if ($InfoTip.innerHeight() + top + 12 > $(document).height()) top = $(document).height() - $InfoTip.innerHeight() - 12; if ($InfoTip.innerWidth() + left + 12 > $(document).width()) left = event.pageX - $InfoTip.innerWidth() - 12; $InfoTip.css({top: top, left: left}).show(); if (showCompare && compareData) { $InfoTip2.css({top: top, left: left+$InfoTip.innerWidth()+ 5}).show(); } if ($InfoTip.data('show') == showid) { return false; } $InfoTip.data('show',showid); case 'mouseover': // console.log(TarData.pz); $InfoTip.addClass('pz'+TarData.epz); var TipData = $.fn.showinfo.ext(TarData,showCompare&&compareData?compareData:null); $InfoTip.html(TipData); if (showCompare) { $InfoTip2.addClass('pz'+compareData.epz); var TipData2 = $.fn.showinfo.ext(compareData); $InfoTip2.html(TipData2); } break; case 'mouseout': $InfoTip.removeClass().removeData().empty().hide().addClass('iteminfo'); $InfoTip2.removeClass().removeData().empty().hide().addClass('iteminfo self'); break; } }); } $.fn.showinfo.ext = function(v,compare) { var rtHtml = v.lv > 0 ? "<span class='lv'>Lv:"+v.lv+"</span>":""; rtHtml += "<h3>"+v.name; if (v.qlv > 0) { rtHtml += " +"+v.qlv; }; rtHtml += "</h3>"; var info = v.info ? $.parseJSON(v.info) : {}; var addinfo = v.addinfo ? $.parseJSON(v.addinfo) : {}; var compreAddinfo = null; if (compare) { compreAddinfo = compare.addinfo ? $.parseJSON(compare.addinfo) : null; } var colorkey = []; if (Object.keys(addinfo).length){ for(var key in addinfo){ if(info.hasOwnProperty(key)) { info[key] = info[key] + addinfo[key]; colorkey[key] = 1; } } } rtHtml += "<p>"; if (v.rank != 0 && v.rank) rtHtml += "["+$.fn.showinfo.rankstr(v.rank)+"] "; rtHtml += '['+$.fn.showinfo.typestr(v.type)+'] '; if (v.job != 0) rtHtml += "["+$.fn.showinfo.jobstr(v.job)+"]"; rtHtml += "</p>"; if (info.att_min+info.att_max > 0) { rtHtml += "攻击力:<b>"; rtHtml += colorkey.att_min ? "<i>"+info.att_min+"</i> - " : info.att_min + " - "; rtHtml += colorkey.att_max ? "<i>"+info.att_max+"</i></b>" : info.att_max+"</b>"; }; if (info.att_min) { delete info.att_min; } if (info.att_max) { delete info.att_max; } // console.log(info.length); if (Object.keys(info).length){ rtHtml += "<ul class='info'>"; for(var key in info){ // console.log(key+' : '+info[key]); var tags = $.fn.showinfo.extinfo(key); rtHtml += "<li>"+tags[0]+":<b>"; rtHtml += colorkey[key] ? "<i>"+info[key]+tags[1]+"</i></b></li>" : info[key]+tags[1]+"</b></li>"; } rtHtml += "</ul>" } if (Object.keys(addinfo).length){ rtHtml += "<ul class='addinfo'>[附加属性]"; for(var key in addinfo){ // console.log(key+' : '+info[key]); var tags = $.fn.showinfo.extinfo(key); var compareString = ''; if (compreAddinfo && compreAddinfo.hasOwnProperty(key)) { compareString = parseInt(addinfo[key]) - parseInt(compreAddinfo[key]); } rtHtml += (key == v.ckey) ? '<li class="c">':"<li>"; rtHtml += tags[0]+":"+addinfo[key]+tags[1]; rtHtml += "<span class='pull-right'>"+compareString+"</span></li>"; } rtHtml += "</ul>" } rtHtml += v.num ? "<p>数量:"+v.num+"</p>" : ""; rtHtml += v.about ? "<p><q>"+v.about+"</q></p>" : ""; // if (v.eid) { rtHtml += "<p>"+v.eid+"</p>" }; return rtHtml; } $.fn.showinfo.extinfo = function(key){ var data = { 'hp' : ['生命值',''], 'pow' : ['强度',''], 'dex' : ['敏捷',''], 'con' : ['体质',''], 'att_min' : ['最小攻击',''], 'att_max' : ['最大攻击',''], 'def' : ['防御',''], 'eva' : ['闪避机率',' %'], 'arm' : ['护甲',''], 'dmgeff' : ['伤害减免',' %'], 'hit' : ['命中机率',' %'], 'cri' : ['暴击机率',' %'], 'cridmg' : ['暴击伤害',' %'], 'rec' : ['恢复',' %'], 'add_hp' : ['生命值',' %'], 'add_att' : ['攻击力',' %'], 'add_def' : ['防御增强',' %'], 'add_eva' : ['闪避机率',' %'], 'add_arm' : ['护甲增强',' %'], 'add_dmgeff' : ['伤害减免',' %'], 'add_hit' : ['命中机率',' %'], 'add_cri' : ['暴击机率',' %'], 'add_cridmg' : ['暴击伤害',' %'], 'add_rec' : ['恢复',' %'], }; return data[key]; } $.fn.showinfo.typestr = function(type){ var data = { "_1" : "普通武器", "_2" : "普通防具", "_3" : "戒指", "_4" : "护符", "_5" : "材料", "_11" : "剑", "_12" : "匕首", "_13" : "锤", "_14" : "弓", "_15" : "弩", "_16" : "斧", "_17" : "法杖", "_18" : "魔杖", "_19" : "权杖", "_21" : "轻甲", "_22" : "中甲", "_23" : "重甲", "_50" : "材料" }; return data['_'+type]; } $.fn.showinfo.rankstr = function(type){ // 难度装备 var data = { "_0" : "", "_1" : "困难", "_2" : "专家", "_3" : "大师", "_4" : "苦痛I", "_5" : "苦痛II", "_6" : "苦痛III", "_7" : "苦痛IV", "_8" : "苦痛V", "_9" : "苦痛VI" }; return data['_'+type]; } $.fn.showinfo.jobstr = function(jid){ var data = { '_0' : '冒险者', '_1' : '护卫', '_2' : '信徒', '_3' : '学徒', '_11' : '骑士', '_12' : '斗士', '_21' : '牧师', '_22' : '魔法师', '_31' : '斥候', '_32' : '猎人', '_111' : '领主', '_112' : '至尊骑士','_121' : '战狂', '_122' : '圣武士', '_211' : '主教', '_212' : '贤者', '_221' : '巫师', '_222' : '先知', '_311' : '刺客', '_312' : '侠盗', '_321' : '游侠', '_322' : '神射手' }; return data['_'+jid]; } // 插件的defaults $.fn.showinfo.defaults = { }; // 闭包结束 })(jQuery); /********************装备比较结束**************************/ window.showmain = function(type){ $('.col-main > div').hide(); if (type == 'fight') { showleft('rolestats'); $('.window-fight').show(); var fixheight = $('#enemys').innerHeight() > $('#friends').innerHeight() ? $('#enemys').innerHeight() : $('#friends').innerHeight(); $('.battlelog').height(476 - fixheight); }else{ $('.window-other').empty().append('<span class="boxloading"><img src="src/image/load2.gif" /> <br />载入中...</span>').show(); $.get('box/'+type, function(result) { $('.window-other').empty().html(result); $('*[title]').tips(); if (type == 'item') { attachItemEnhance('#bag'); } }); } }; // 打开银行 function openbank() { $('#bank').removeClass('hidden'); $('#bag').css('height','49%'); $('#bag .items').css('height','160'); $('#bank').empty().append('<span class="boxloading"><img src="src/image/load2.gif" /> <br />载入中...</span>').show(); $.get(base_url+'box/bank', function(data) { $('#bank').html(data); $('*[title]').tips(); $('.box-checkbox, .equip').showinfo(); }); } //仓库功能; window.usebank = function(type) { if ($('#bank').hasClass('hidden')) { $('#bank').removeClass('hidden'); $('#bag').css('height','49%'); $('#bag .items').css('height','160'); $('#bank').empty().append('<span class="boxloading"><img src="src/image/load2.gif" /> <br />载入中...</span>').show(); $.get(base_url+'box/bank', function(data) { $('#bank').html(data); bankfun(type); $('*[title]').tips(); $('.box-checkbox, .equip').showinfo(); }); }else{ bankfun(type); } }; /************************ fight ********************/ window.battlesetup = function() { showmain('fight'); if (window.battenow) { window.battenow = false; $('input[name=btype]').removeAttr('disabled'); $('#battlebtn').removeClass('btn-danger').addClass('btn-primary').addClass('disabled'); var Num = 15; $('#battlebtn').text('[ '+Num+' ]'); var timer = setInterval(function() { Num --; $('#battlebtn').text('[ '+Num+' ]').addClass('disabled'); if (Num <= 0) { clearInterval(timer); $('#battlebtn').text('开始战斗').removeClass('disabled'); }; }, 1000); }else{ BattleInfo.init(); window.battenow = true; battle(); $('#battlebtn').removeClass('btn-primary').addClass('btn-danger').addClass('disabled'); var Num = 15; $('#battlebtn').text('[ '+Num+' ]'); var timer = setInterval(function() { Num --; $('#battlebtn').text('[ '+Num+' ]').addClass('disabled'); if (Num <= 0) { clearInterval(timer); $('#battlebtn').text('停止战斗').removeClass('disabled'); if (!window.battenow) $('#battlebtn').text('开始战斗').removeClass('btn-danger').addClass('btn-primary'); } }, 1000); } }; window.battle = function(){ //保存自动出售设置 if(window.localStorage){ localStorage["s11"] = $('#autosell1').prop("checked") ? 1 : 0; localStorage["s22"] = $('#autosell2').prop("checked") ? 1 : 0; localStorage["s33"] = $('#autosell3').prop("checked") ? 1 : 0; localStorage["bty"] = $('#battletype input:checked').val(); } if (!battenow) return false; var autosell1 = $('#autosell1').prop('checked') ? 1 : 0; var autosell2 = $('#autosell2').prop('checked') ? 1 : 0; var autosell3 = $('#autosell3').prop('checked') ? 1 : 0; var fighttype = $('#battletype input:checked').val(); $.ajax({ url : base_url+'fight/battle', data : {'t':fighttype,'s1':autosell1,'s2':autosell2,'s3':autosell3}, type : "POST", dataType : 'text', timeout : 3000, success:function(data){ if (data=='非法请求') { setTimeout(function(){ battle(); }, 2000); }else{ checkBattle(data); BattleInfo.resolve(data); } }, complete : function(XMLHttpRequest,status){ var error = ''; if (status=='timeout') { error = '连接服务器超时..'; }else if (status == 'error') { error = '服务器暂时无响应..'; }else if (status == 'success') { game_err = 0; } if (error) { game_err ++; // if (game_err > 50) window.location.reload(); viewLog({text:'<span class="text-red">'+error+'</span>'},5000,function(){ battle(); }); }; } }); } window.BattleInfo = { data:{}, init:function() { this.data = { startTime: new Date(), winCount:0, battleCount:0, teamInfo:{} }; var $container = $('<div id="battleInfoContainer"><div class="tableContainer"></div><span>战斗统计</span></div>').appendTo('body'); }, resolve:function(data) { var SDATA = { "_9001" : {"n":"冷血"}, "_9002" : {"n":"狡诈"}, "_9003" : {"n":"傲慢"}, "_9004" : {"n":"凶残"}, "_9005" : {"n":"贪婪"}, "_9006" : {"n":"仁爱"}, "_9007" : {"n":"热情"}, "_9008" : {"n":"谦和"}, "_9009" : {"n":"慷慨"}, "_9010" : {"n":"公正"}, "_0" : {"n":"攻击"}, "_1000" : {"n":"猛击"}, "_1001" : {"n":"英勇打击"}, "_2001" : {"n":"魔法弹"}, "_3001" : {"n":"二连击"}, "_1101" : {"n":"惩罚"}, "_1102" : {"n":"英勇信念"}, "_1103" : {"n":"嘲讽"}, "_1201" : {"n":"顺劈斩"}, "_1202" : {"n":"压制"}, "_1203" : {"n":"战斗怒吼"}, "_2101" : {"n":"祈祷圣言"}, "_2102" : {"n":"祝福圣言"}, "_2103" : {"n":"治疗祷言"}, "_2201" : {"n":"冰球术"}, "_2202" : {"n":"火球术"}, "_2203" : {"n":"魔法驱散"}, "_3101" : {"n":"潜伏"}, "_3102" : {"n":"下毒"}, "_3103" : {"n":"侦测透析"}, "_3201" : {"n":"陷阱"}, "_3202" : {"n":"钉刺"}, "_3203" : {"n":"标记"}, "_1111" : {"n":"风暴打击"}, "_1112" : {"n":"突击"}, "_1113" : {"n":"盘石之甲"}, "_1114" : {"n":"斩杀"}, "_1121" : {"n":"奉献"}, "_1122" : {"n":"最终审判"}, "_1123" : {"n":"生命礼赞"}, "_1124" : {"n":"反击风暴"}, "_1211" : {"n":"痛击"}, "_1212" : {"n":"狂暴之心"}, "_1213" : {"n":"狂暴打击"}, "_1214" : {"n":"飓风冲撞"}, "_1221" : {"n":"旋风斩"}, "_1222" : {"n":"忘却痛苦"}, "_1223" : {"n":"切割之刃"}, "_1224" : {"n":"胁迫"}, "_2111" : {"n":"心灵风暴"}, "_2112" : {"n":"迷惑"}, "_2113" : {"n":"神恩感化"}, "_2114" : {"n":"神迹回复"}, "_2121" : {"n":"高阶祈祷术"}, "_2122" : {"n":"治愈之手"}, "_2123" : {"n":"神圣意志"}, "_2124" : {"n":"护佑"}, "_2211" : {"n":"群体变形"}, "_2212" : {"n":"流星火雨"}, "_2213" : {"n":"冰风暴"}, "_2214" : {"n":"眩目之光"}, "_2221" : {"n":"引雷术"}, "_2222" : {"n":"知己知彼"}, "_2223" : {"n":"狂风骤雨"}, "_2224" : {"n":"闪避圣言"}, "_3111" : {"n":"疾步风"}, "_3112" : {"n":"刀扇"}, "_3113" : {"n":"黑暗之刃"}, "_3114" : {"n":"背刺"}, "_3121" : {"n":"无敌斩"}, "_3122" : {"n":"肾击"}, "_3123" : {"n":"新星之毒"}, "_3124" : {"n":"挑寡"}, "_3211" : {"n":"万兽奔袭"}, "_3212" : {"n":"洞悉弱点"}, "_3213" : {"n":"急速飞弹"}, "_3214" : {"n":"瞄准射击"}, "_3221" : {"n":"急速射击"}, "_3222" : {"n":"多重射击"}, "_3223" : {"n":"箭雨"}, "_3224" : {"n":"凝神"}, "_321" : {"n":"冻结箭矢"}, "_221" : {"n":"霜冻之心"}, "_312" : {"n":"濒死本能"}, "_212" : {"n":"生命回溯"} }; var GDATA = { "_111" : {"n":"队伍光环技:列阵 技能发动!友方全体攻击+15%,暴击+5%,爆伤+50%"}, "_112" : {"n":"队伍光环技:传道 技能发动!敌方全体防御力-15%,伤害减免-10%"}, "_121" : {"n":"队伍光环技:恐吓 技能发动!敌方全体攻击-15%,暴击-5%,命中-5%"}, "_122" : {"n":"队伍光环技:谨慎 技能发动!友方全体伤害减免+8%,闪避+5%,命中+5%"}, "_211" : {"n":"队伍光环技:生命祝福 技能发动!友方生命值上限+50%,伤害减免+5%"}, "_222" : {"n":"队伍光环技:预言术 技能发动!敌方全体生命值上限-10%,防御力-30%"}, }; var TDATA = { "_111" : {"n":"醒悟(特质)"}, "_112" : {"n":"虔诚之心(特质)"}, "_121" : {"n":"暴怒特质(特质)"}, "_122" : {"n":"全力以赴(特质)"}, "_211" : {"n":"渐隐术(特质)"}, "_212" : {"n":"生命回溯(特质)"}, "_221" : {"n":"霜冻之心(特质)"}, "_222" : {"n":"怜悯之心(特质)"}, "_311" : {"n":"精准直觉(特质)"}, "_312" : {"n":"濒死本能(特质)"}, "_321" : {"n":"冻结箭矢(特质)"}, "_322" : {"n":"分裂箭矢(特质)"} }; var GameLog = $.parseJSON(data); if ($.isArray(GameLog.p)) { console.log('123213213'+GameLog.p); for (var i = 0; i < GameLog.p.length; i++) { var role = GameLog.p[i]; if (!this.data.teamInfo['p'+i]) { this.data.teamInfo['p'+i] = this.getNewRole(); } this.data.teamInfo['p'+i].lv= role.v; this.data.teamInfo['p'+i].name= role.n; } } if (GameLog.exp && $.isArray(GameLog.exp)) { for (var j = 0; j < GameLog.exp.length; j++) { var expObj = GameLog.exp[j]; this.data.teamInfo[expObj[0]].exp += expObj[1]; } } if (GameLog.gold && $.isArray(GameLog.gold)) { for (var k = 0; k < GameLog.gold.length; k++) { var goldObj = GameLog.gold[k]; this.data.teamInfo[goldObj[0]].gold += goldObj[1]; } } if (GameLog.log) { this.data.battleCount ++; for (var l = 0; l < GameLog.log.length; l++) { var TempLog = GameLog.log[l]; var temp = TempLog[0].split('|'); if (temp[0].indexOf('p') != -1) { var pid = temp[0]; var skillName = SDATA['_'+temp[1]].n; this.data.teamInfo[pid].skillCount +=1; if (temp[2] != '') { var skilltz = TDATA['_'+temp[2]].n if (this.data.teamInfo[pid].skills[skilltz]) { this.data.teamInfo[pid].skills[skilltz] +=1; }else{ this.data.teamInfo[pid].skills[skilltz] = 1; } } if (this.data.teamInfo[pid].skills[skillName]) { this.data.teamInfo[pid].skills[skillName] +=1; }else{ this.data.teamInfo[pid].skills[skillName] = 1; } for(var m in TempLog[1]){ var hitLog = TempLog[1][m]; if (hitLog instanceof Array && hitLog[1].length >0) { this.data.teamInfo[pid].hitCount++; var hitInfos = hitLog[1].split('|'); if (hitInfos[0] == '1') { this.data.teamInfo[pid].rightHitCount ++; } else if(hitInfos[0] == 'h'){this.data.teamInfo[pid].rightHitCount ++;} if (hitInfos[1] == '1') { this.data.teamInfo[pid].criCount ++; } } } } } } if (GameLog.flag == 'win') { this.data.winCount++; } this.render(); }, render:function() { $("#battleInfoContainer .tableContainer").html(tmpl(this.template,[this.data])); }, getNewRole: function() { return { name:'', lv:'', exp:0, gold:0, skills:{}, skillCount: 0, hitCount:0, rightHitCount:0, criCount:0, }; }, toFix: function(value) { return value.toFixed(2); }, valuePerHour: function(value, startTime) { var factor = 60 * 60 / (new Date() - startTime) * 1000; return (value * factor).toFixed(2); }, template:'{% for(var i=0; i<o.length;i++){ %}'+ '<table border="1" style="border-collapse:collapse">'+ '<tr>'+ '<td>开始时间:</td>'+ '<td>{%=o[i].startTime.toLocaleString()%}</td>'+ '</tr>'+ '<tr>'+ '<td>持续时间:</td>'+ '<td>{%=BattleInfo.toFix((new Date() - o[i].startTime)/1000) %} 秒</td>'+ '</tr>'+ '<tr>'+ '<td>胜场|总场|胜率</td>'+ '<td>{%=o[i].winCount%}|{%=o[i].battleCount%}|{%=BattleInfo.toFix(o[i].winCount/o[i].battleCount*100)%}%</td>'+ '</tr>'+ '{% for(var k in o[i].teamInfo) { var role = o[i].teamInfo[k];%}'+ '<tr>'+ '<td colspan="2">'+ '<table border="0" width="100%" style="border-collapse:collapse;">'+ '<tr>'+ '<td>角色名:</td>'+ '<td>{%=role.name%}</td>'+ '</tr>'+ '</tr>'+ '<td>Lv:</td>'+ '<td>{%=role.lv%}</td>'+ '</tr>'+ '<tr>'+ '<td>获得经验:</td>'+ '<td>{%=role.exp%}</td>'+ '</tr>'+ '</tr>'+ '<td>经验/小时:</td>'+ '<td>{%=BattleInfo.valuePerHour(role.exp,o[i].startTime)%}</td>'+ '</tr>'+ '<tr>'+ '<td>获得gold:</td>'+ '<td>{%=role.gold%}</td>'+ '</tr>'+ '</tr>'+ '<td>gold/小时:</td>'+ '<td>{%=BattleInfo.valuePerHour(role.gold,o[i].startTime)%}</td>'+ '</tr>'+ '<tr>'+ '<td>命中率:</td>'+ '<td>{%=BattleInfo.toFix(role.rightHitCount/role.hitCount*100)%}%</td>'+ '</tr>'+ '</tr>'+ '<td>暴击率:</td>'+ '<td>{%=BattleInfo.toFix(role.criCount/role.hitCount*100)%}%</td>'+ '</tr>'+ '<tr>'+ '<td>技能:</td>'+ '<td>'+ '{% var skills = role.skills;%}'+ '<table width="100%" style="border-collapse:collapse;">'+ '{% for(var j in skills){ %}'+ '<tr>'+ '<td>'+ '{%=j%}'+ '</td>'+ '<td>'+ '{%=skills[j]%} ({%=BattleInfo.toFix(skills[j]/role.skillCount*100)%}%)'+ '</td>'+ '</tr>'+ '{% } %}'+ '</table>'+ '</td>'+ '</tr>'+ '</table>'+ '</td>'+ '</tr>'+ '{% }%}'+ '</table>'+ '{% } %}', }; //styles function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } addGlobalStyle("\ #battleInfoContainer{\ position:absolute;\ top:0;\ left:0;\ z-index:100;\ padding:10px;\ background-color:#fff;\ transform: translate(-100%,0);\ transition: 300ms;\ }\ #battleInfoContainer:hover{\ transform: translate(0,0);\ }\ #battleInfoContainer span{\ color:#fff;\ background-color:#049fd9;\ position: absolute;\ top: 0px;\ padding:5px 0px;\ width:20px;\ right: -20px;\ text-align:center;\ display:inline-block;\ }\ .gamewindow{\ width:1000px;\ }\ ");