// ==UserScript==
// @name Adventure of Chaos helper
// @namespace http://www.x4code.com
// @version 0.2
// @author Manro
// @match http://cdn1.x4code.com/game/*
// @match http://cdn2.x4code.com/game/*
// @match http://cdn3.x4code.com/game/*
// @match http://cdn4.x4code.com/game/*
// @match http://cdn5.x4code.com/game/*
// @match http://cdn6.x4code.com/game/*
// @grant none
// @description helper for AOC
// ==/UserScript==
(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="InfoTip2"></div>').hide().appendTo('body');
}
var $InfoTip = $("#InfoTip");
var $InfoTip2 = $('.InfoTip2').css({
'position': 'absolute',
'z-index': '10000',
'border-radius': '4px',
'border-width': '3px',
'border-style': 'ridge',
'min-width': '160px',
'max-width': '200px',
'padding': '5px 10px'
});
var equips = $('#equips button').map(function(index, elem) {
return $(elem).data('info');
});
this.bind('mouseover mouseout mousemove', function(event) {
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();
$InfoTip2.removeClass().removeData().empty().hide();
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 += "<li>"+tags[0]+":"+addinfo[key]+tags[1]+"<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);