// ==UserScript== // @name iYdxx // @version 0.1.4 // @description Min version, not pro. For YunDingXX, text MUD // @match http://joucks.cn:3344/ // @match http://yundingxx.com:3344/ // @grant unsafeWindow // @require https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js // @require https://unpkg.com/element-ui@2.13.0/lib/index.js // @namespace http://tampermonkey.net/ // @author gIrl1990 // @supportURL https://github.com/gMan1990/userscripts/issues // ==/UserScript== /* Element (min) https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css https://unpkg.com/element-ui@2.13.0/lib/index.js */ jQuery(function($) { document.getElementById("user-task").previousElementSibling.onclick = getUserTaskFunc; document.body.onselectstart = null; document.body.style.overflowY = "overlay"; $(document.head).append(''); let notify = function(message, type, duration, dangerouslyUseHTMLString) { Vue.prototype.$notify({ message , type , duration , dangerouslyUseHTMLString , position : "bottom-right" }); }, $options = $("#sellGoodsType>option"); if (!$options.length) { return notify("插件注入失败: #sellGoodsType", "error", 0); } let sellGoodsT2, /* Key-goods2 Map-order Val-goods2 */ sellGoodsType = new Map([ [ $options[0].value, { t : $.text($options[0]), i : 0 } ], [ "2", sellGoodsT2 = { t : "-", i : 1 } ], [ "5db663ba4682c5567589308c", { t : "_鉴-武器", i : 2, p : sellGoodsT2 } ], [ "5db663be0d0236567c02b9b2", { t : "_鉴-防具", i : 3, p : sellGoodsT2 } ] ]); for (let i = 1; i < $options.length; i++) { let v = sellGoodsType.get($options[i].value); v ? (v.t = $.text($options[i])) : sellGoodsType.set($options[i].value, { t : $.text($options[i]), i : sellGoodsType.size }); } /* 礼包-5df6e062a477cd1f36784c46 */ for (let v of [ "5e104150b0a1a420d1b56f6c", "5dfe09520162325366178d48", "5db663ad4682c5567589308a", "5df30563f551bc6dc6cdfc7b" ]) { sellGoodsType.has(v) || sellGoodsType.set(v, { t : v, i : sellGoodsType.size }); } let tableColumnExpand = ''; $("#myTab").append('
  • ^背包
  • ') .next().append(`
    刷新 {{userGoodsErr}} 数量 合成 使用
    买500活 买宝宝窝 买红药水
      已选 清空 {{$refs.t.store.states.selection.length}}
    • {{v.goods.name}}
      {{v.count}}
    `); let $log = $("#log"), eq_type = { "1" : "武", "2" : "甲", "3" : "头", "4" : "饰", /* 链 */ "5" : "腰", "6" : "靴" }; $._ydxx = { goods2 : new Vue({ el : "#goods2", data : { eq_type , price_type : { "0" : "竹", "1" : "银", "2" : "金" }, userGoodsSearch : "", userGoodsErr : " ", /* see loading */ userGoodsList : [], commGoodsNum : 1 }, methods : { userGoodsSearchInput : function(s) { this._userGoodsList && (this.userGoodsList = s ? this._userGoodsList.filter(function(d) { return this.test(d.goods.name); }, new RegExp(s)) : this._userGoodsList); }, userGoodsTypeFmt : function(row) { if (row.user_equipment) { return sellGoodsT2.t; } let v = sellGoodsType.get(row.goods.goods_type); return v ? v.t : row.goods.goods_type; }, /** * # 未知分类 * ## 分类编码 升序 * ### 名称 升序 * # 已知分类 * ## 分类序号 升序 * ### 装备 * #### 等级 升序 * ### 其它 * #### 名称 升序 */ userGoodsTypeSort : function(ra, rb) { if (ra.user_equipment) { if (rb.user_equipment) { return ra.user_equipment.wear_level - rb.user_equipment.wear_level; } else { return this._userGoodsTypeSort(ra, rb, sellGoodsT2, sellGoodsType.get(rb.goods.goods_type)); } } else { if (rb.user_equipment) { return this._userGoodsTypeSort(ra, rb, sellGoodsType.get(ra.goods.goods_type), sellGoodsT2); } else { return this._userGoodsTypeSort(ra, rb, sellGoodsType.get(ra.goods.goods_type), sellGoodsType.get(rb.goods.goods_type)); } } }, _userGoodsTypeSort : function(ra, rb, va, vb) { if (va) { if (vb) { if (va.i != vb.i) { return va.i - vb.i; } } else { return 1; } } else { if (vb) { return -1; } else { if (ra.goods.goods_type != rb.goods.goods_type) { return ra.goods.goods_type < rb.goods.goods_type ? -1 : 1; } } } return ra.goods.name == rb.goods.name ? 0 : (ra.goods.name < rb.goods.name ? -1 : 1); }, getUserGoods : function() { this.userGoodsErr = ""; /* lock */ this._userGoodsList = []; /* new array, !=ugl */ this._getUserGoods(1); }, _getUserGoods : function(page) { let vm = this; $.ajax({ data : { page }, url : "/api/getUserGoods", success : function(d, t, x) { if (200 == d.code) { for (let v of d.data) { if (!v.goods) { if (!v.user_equipment) { v.user_equipment = {}; } else if (v.user_equipment.status) { continue; } v.goods = v.user_equipment; } v._page = page; vm._userGoodsList.push(v); } if (page < d.pages) { vm._getUserGoods(++page); } else { vm._userGoodsList.sort(vm.userGoodsTypeSort); vm.userGoodsSearchInput(vm.userGoodsSearch); vm.userGoodsErr = " "; } } else { this.error(x, d.msg); } }, error : function(x, t, e) { vm.userGoodsList = vm._userGoodsList = []; vm.userGoodsErr = e || t; } }); }, /** @param r row or event. */ useGoodsToUser : function(r) { this.userGoodsErr = ""; /* lock */ r._id ? this._useGoodsToUser(r, 1) : this._useGoodsToUser(this.$refs.t.store.states.selection[0], this.commGoodsNum); }, /** @param lastIndex 1 or commGoodsNum. */ _useGoodsToUser : function(r, lastIndex) { let vm = this; $.ajax({ data : { ugid : r._id }, type : "POST", url : "/api/useGoodsToUser", success : function(d, t, x) { if (200 == d.code) { r.count--; $log.prepend(`

    使用 [${r.goods.name}] ${JSON.stringify(d.data)}

    `); notify(JSON.stringify(d), "success", 4500, true); if (1 < lastIndex) { setTimeout(vm._useGoodsToUser, 350, r, --lastIndex); } else { vm.userGoodsErr = " "; } } else { this.error(x, d.msg); } }, error : function(x, t, e) { notify(`useGoodsToUser: ${e || t}`, "error", 9000); vm.userGoodsErr = " "; } }); }, makeGoods : function() { this.userGoodsErr = ""; /* lock */ let vm = this; $.ajax({ data : { sell_json : JSON.stringify(vm.$refs.t.store.states.selection.map(v => ({ id : v._id, count : vm.commGoodsNum }))), sell_type : "make" }, type : "POST", url : "/api/makeGoods", success : function(d, t, x) { if (200 == d.code) { for (let v of vm.$refs.t.store.states.selection) { v.count -= vm.commGoodsNum; } $log.prepend(`

    合成 [${d.data.goods.name}] *${d.data.count}

    `); notify(JSON.stringify(d), "success"); vm.userGoodsErr = " "; } else { this.error(x, d.msg); } }, error : function(x, t, e) { notify(`makeGoods: ${e || t}`, "error", 9000); vm.userGoodsErr = " "; } }); }, wearUserEquipment : function(r) { this.userGoodsErr = ""; /* lock */ let vm = this; $.ajax({ data : { ueid : r.user_equipment._id, status : 0 }, type : "POST", url : "/api/wearUserEquipment", success : function(d, t, x) { if (200 == d.code) { r.count--; $log.prepend(`

    佩戴 [${d.data.name}]

    `); notify(JSON.stringify(d), "success"); vm.userGoodsErr = " "; } else { this.error(x, d.msg); } }, error : function(x, t, e) { notify(`wearUserEquipment: ${e || t}`, "error", 9000); vm.userGoodsErr = " "; } }); }, byGoodsToMyUser : function(gid) { this.userGoodsErr = ""; /* lock */ this._byGoodsToMyUser(gid, this.commGoodsNum); }, _byGoodsToMyUser : function(gid, lastIndex) { let vm = this; $.ajax({ data : { gid }, type : "POST", url : "/api/byGoodsToMyUser", success : function(d, t, x) { if (200 == d.code) { $log.prepend(`

    购得 [${d.data.name}] *1 单价=${d.data.price}${vm.price_type[d.data.price_type]}

    `); notify(JSON.stringify(d), "success"); if (1 < lastIndex) { setTimeout(vm._byGoodsToMyUser, 350, gid, --lastIndex); } else { vm.userGoodsErr = " "; } } else { this.error(x, d.msg); } }, error : function(x, t, e) { notify(`byGoodsToMyUser: ${e || t}`, "error", 9000); vm.userGoodsErr = " "; } }); } } }) }; });