您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name 梦幻西游装备属性计算工具 // @namespace https://github.com/dongliangzxc/xyqhelp // @version 0.4 // @description try to take over the world! // @author Jason Dong // @match *://xyq.cbg.163.com/cgi-bin/query.py?* // @include *://xyq.cbg.163.com/cgi-bin/equipquery.py?act=show_overall_search_equip // @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js // ==/UserScript== (function() { 'use strict'; var bolZhuangbei = 0; // Your code here... var zhongzu = localStorage.TM_zhongzu; var leixing = localStorage.TM_leixing; if(!zhongzu){ zhongzu = "ren"; localStorage.TM_zhongzu = "ren"; } if(!leixing){ leixing = "fa"; localStorage.TM_leixing = "fa"; } var url = document.URL; if(url == "https://xyq.cbg.163.com/cgi-bin/equipquery.py?act=show_overall_search_equip"){ bolZhuangbei = 1; }else{ var getJueSezhuangbeiStr = document.getElementsByName('equip_kind')[0].labels[0].innerText; if(getJueSezhuangbeiStr == "角色装备"){ bolZhuangbei = 1; } } if(bolZhuangbei == 1){ $(document).ready(function(){ var newElement = "<tr>"; newElement += "<td colspan='10' align='right'> 种族:"; newElement += "<input type='text' class='txt1' size='3' id='txt_zhongzu' value="+zhongzu+">"; newElement += " 是否法系:"; newElement += "<input type='text' class='txt1' size='6' id='txt_leixing' value="+leixing+">"; newElement += " <input type='button' id='helperBtn' class='btn1' value='计算'></td>"; newElement += "</tr>"; $("tbody")[0].lastChild.after($(newElement)[0]); addBtnEvent("helperBtn"); }); } function isQuanFu(){ return document.URL == "https://xyq.cbg.163.com/cgi-bin/equipquery.py?act=show_overall_search_equip"; } var objPrev = {'zhongzu':null, 'leixing':null}; function addBtnEvent(id){ $("#"+id).bind("click", function(){ var obj = getInput(); newPriceList(obj.zhongzu, obj.leixing); objPrev = obj; }); } function isFinish(obj){ var temp1 = $("input:text[id='txt_zhongzu']").val(); var temp2 = $("input:text[id='txt_leixing']").val(); if(temp1 == obj.zhongzu && temp2 == obj.leixing){ return true; }else{ return false; } } function getInput(){ var zhongzu = null; var leixing = null; var reg = /(^ren$)|(^mo$)|(^xian$)/; let temp = $("input:text[id='txt_zhongzu']").val(); if(temp == ""){ zhongzu = localStorage.TM_zhongzu; }else{ if(reg.test(temp) == true){ zhongzu = temp; localStorage.TM_zhongzu = zhongzu; }else{ alert("请输入:ren mo xian 随机一个"); return false; } } temp = $("input:text[id='txt_leixing']").val(); leixing = temp; localStorage.TM_leixing = leixing; return { 'zhongzu' : zhongzu, 'leixing' : leixing } } function newPriceList(zhongzu, leixing){ var list = document.getElementById('soldList').getElementsByTagName('tr'); for(var i = 0; i < list.length; i++){ if(list[i].id == 'order_menu'){ continue; } var price = calPrice(list[i], zhongzu, leixing); addCalPrice(list[i], price); } } function addCalPrice(role, price){ var priceClass = ['p100','p1000','p10000','p100000','p1000000']; var key = 1; if(isQuanFu()){ key = 12; } for (var i=0;i<priceClass.length;i++){ var oldPrice=role.getElementsByClassName(priceClass[i]); if(oldPrice.length > 0 ){ if(!oldPrice[0].parentNode.children[1] || oldPrice[0].parentNode.children[1].nodeName != "SPAN"){ //判断是否存在计算价格 let newElement = document.createElement('span'); newElement.innerHTML = "【"+price+"】"; for(let j=4;j>-1;j--){ if(price<Math.pow(10,j+2)) newElement.className = priceClass[j]; //可以改变计算价格的显示颜色 } oldPrice[0].parentNode.insertBefore(newElement, oldPrice[0].nextSibling); //售价后添加计算值 break; //添加价格后立即退出循环 } else { let newElement = document.createElement('span'); newElement.innerHTML = "【"+price+"】"; for(let j=4;j>-1;j--){ if(price<Math.pow(10,j+2)) newElement.className = priceClass[j]; } oldPrice[0].parentNode.replaceChild(newElement,oldPrice[0].parentNode.children[1]); //售价后添加计算值 break; } } } } function getXiangqianBaoshi(str){ var baoshi = str.match(/镶嵌宝石 (\S+)#r/); if(baoshi){ return baoshi[1]; } return ""; } function calFangju(equipObj, zhongzu, leixing){ var shuxingzhuanhuan = { fa:{ 防御: 4 / 10.5, 气血: 3 / 7 / 5, 敏捷: 1, 灵力: 1 / 0.7, 速度: 1 / 0.7, 体质: 1, 魔力: 1, 力量: 5 / 7, 耐力: 1, }, wu:{ 防御: 1 / 1.5, 气血: 1 / 5, 敏捷: 1, 灵力: 1 / 0.7, 速度: 1 / 0.7, 体质: 1, 魔力: 1 / 7, 力量: 1, 耐力: 1, }, other:{ 防御: 6 / 7 / 1.5, 气血: 6 / 7 / 1.5, 敏捷: 1, 灵力: 1 / 0.7, 速度: 1 / 0.7, 体质: 1, 魔力: 1 / 7, 力量: 1 / 7, 耐力: 1, } }; var xiuzheng = { ren:{ 防御:1, 气血:1, 敏捷:1, 灵力:1, 速度:1, 体质:1, 魔力:1, 力量:1, 耐力:1, }, mo:{ 防御:1.5 / 1.4, 气血: 5 / 6, 敏捷:1, 灵力:1, 速度:1, 体质:1, 魔力:1, 力量:1, 耐力:1, }, xian:{ 防御:1.5 / 1.6, 气血: 5 / 4.5, 敏捷:1, 灵力:1, 速度:1, 体质:1, 魔力:1, 力量:1, 耐力:1, } } var shuxing = { 防御:0, 气血:0, 敏捷:0, 灵力:0, 速度:0, 体质:0, 魔力:0, 力量:0, 耐力:0, }; var baoshi_shuxing_map = { 黑宝石:'速度', 月亮石:'防御', 舍利子:'灵力', 光芒石:'气血', }; var baoshi_number = { 黑宝石:8, 月亮石:12, 舍利子:6, 光芒石:40, } for(var i = 0; i < equipObj.main_attrs.length; i++){ if(shuxing[equipObj.main_attrs[i][0]] >= 0){ shuxing[equipObj.main_attrs[i][0]] += parseInt(equipObj.main_attrs[i][1]); } } var arrMatch = []; if(equipObj.add_melt_attrs){ for(i = 0; i < equipObj.add_melt_attrs.length; i++){ arrMatch = equipObj.add_melt_attrs[i].match(/(\S+) ([+|-]\d+)/); if(arrMatch){ shuxing[arrMatch[1]] += parseInt(arrMatch[2]); } } } if(equipObj.gem_level != 0){ var strBaoshi = getXiangqianBaoshi(equipObj.desc); if(baoshi_number[strBaoshi]){ shuxing[baoshi_shuxing_map[strBaoshi]] -= baoshi_number[strBaoshi] * equipObj.gem_level; } } var shuxingdian = 0; for(i in shuxing){ shuxingdian += shuxingzhuanhuan[leixing][i] * xiuzheng[zhongzu][i] * shuxing[i]; } return shuxingdian.toFixed(2) + '属性点'; } function calPrice(role, zhongzu , leixing){ var shuxingzhuanfashang = { 体质:0.3, 敏捷:0, 耐力:0.2, 魔力:0.7, 力量:0.4, }; var equipInfo = role.getElementsByTagName("textarea"); var equipObj = JSON.parse(equipInfo[0].value); //先计算武器 var type_wuqi = ['剑']; var type_fangju = ['男衣', '女衣', '女头', '男头', '腰带', '鞋子', '饰品']; var kind_fangju = [18, 59, 17, 58, 20, 19, 21]; var equipType; if(isQuanFu()){ equipType = parseInt(role.getElementsByTagName("img")[0].attributes[14].value); }else{ equipType = parseInt(role.getElementsByTagName("img")[0].attributes[16].value); } // var equipType = document.getElementById('s_role_type').selectedOptions[0].outerText; var defaultShuxing = 0; if(kind_fangju.indexOf(equipType) >= 0){ return calFangju(equipObj, zhongzu, leixing); } if(equipObj.gem_level != 0){ var test = equipObj.desc.match(/镶嵌宝石 (\S+)#r/); if(test){ if(test[1] == '太阳石'){ defaultShuxing -= equipObj.gem_level * 2; } } } //计算属性 for(var i = 0; i < equipObj.main_attrs.length; i++){ if(equipObj.main_attrs[i][0] == '伤害'){ defaultShuxing += parseInt(equipObj.main_attrs[i][1])/4; } } if(equipObj.vice_attrs){ for(i = 0; i < equipObj.vice_attrs.length; i++){ var temp = equipObj.vice_attrs[i]; defaultShuxing += parseFloat(shuxingzhuanfashang[temp[0]]) * parseInt(temp[1]); } } if(equipObj.melt_attrs){ for(i = 0; i < equipObj.melt_attrs.length; i++){ temp = equipObj.melt_attrs[i]; defaultShuxing += parseFloat(shuxingzhuanfashang[temp[0]]) * parseInt(temp[1]); } } return defaultShuxing.toFixed(2) + "法伤"; // return defaultShuxing; } })();